@robota-sdk/agent-session 3.0.0-beta.90 → 3.0.0-beta.92

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @robota-sdk/agent-session
2
2
 
3
+ ## 3.0.0-beta.92
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies
7
+ - @robota-sdk/agent-core@3.0.0-beta.92
8
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.92
9
+ - @robota-sdk/agent-interface-session@3.0.0-beta.92
10
+ - @robota-sdk/agent-file-authority@3.0.0-beta.92
11
+
12
+ ## 3.0.0-beta.91
13
+ ### Patch Changes
14
+
15
+ - bad976f: Persist turn and tool intent before effects, restore interrupted calls with unknown outcomes, reap owned foreground shell groups after owner death, and prune proven dead peer announcements.
16
+ - @robota-sdk/agent-core@3.0.0-beta.91
17
+ - @robota-sdk/agent-file-authority@3.0.0-beta.91
18
+ - @robota-sdk/agent-interface-execution@3.0.0-beta.91
19
+ - @robota-sdk/agent-interface-session@3.0.0-beta.91
20
+
3
21
  ## 3.0.0-beta.90
4
22
  ### Patch Changes
5
23
 
@@ -3,8 +3,8 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
3
3
  `);var b=class{sessionId;cwd;model;hooks;compactInstructions;basePrompt;hookTypeExecutors;constructor(e){this.sessionId=e.sessionId,this.cwd=e.cwd,this.model=e.model,this.hooks=e.hooks,this.compactInstructions=e.compactInstructions,this.basePrompt=e.basePrompt,this.hookTypeExecutors=e.hookTypeExecutors}async compact(t,r,i,a,o=`manual`,s,c){if(a?.throwIfAborted(),r.length===0)throw new v(`Compaction was asked to summarise an empty history; conversation history preserved untouched`);let l={session_id:this.sessionId,cwd:this.cwd,hook_event_name:`PreCompact`,trigger:o};await(0,e.runHooks)(this.hooks,`PreCompact`,l,this.hookTypeExecutors,s);let u=this.buildCompactionPrompt(r,i),d=(0,n.randomUUID)(),f=(0,n.randomUUID)(),p=t.resolveModelRoute?.(this.model,f)??{provider:t.name,model:this.model},m=await(0,e.callJournaledProvider)((e,n)=>t.chat(e,n),[{id:(0,n.randomUUID)(),role:`user`,content:u,state:`complete`,timestamp:new Date}],{model:this.model,executionId:f,onModelFallback:e=>{p={...e.to}},toolChoice:`none`,preserveContextWindow:!0,...a===void 0?{}:{signal:a}},c?{journal:c,executionId:f,callId:d,route:()=>({providerId:p.provider,modelId:p.model})}:void 0);if(a?.throwIfAborted(),typeof m.content!=`string`||m.content.trim()===``)throw new v(`Compaction produced an invalid summary (provider=${t.name}, content type=${typeof m.content}); conversation history preserved untouched`);return m.content}buildCompactionPrompt(e,t){let n=t??this.compactInstructions??``,r=n?`\nAdditional focus:\n${n}\n`:``,i=_(e).join(`
4
4
  `);return[this.basePrompt??y,r,``,`Conversation:`,i].join(`
5
5
  `)}};const x=.835;var S=class{contextUsedTokens=0;contextMaxTokens;autoCompactThreshold;constructor(t,n,r){this.contextMaxTokens=n??(0,e.getModelContextWindow)(t),this.autoCompactThreshold=ee(r)}getContextState(){let e=Math.min(100,this.contextUsedTokens/this.contextMaxTokens*100);return{maxTokens:this.contextMaxTokens,usedTokens:this.contextUsedTokens,usedPercentage:Math.round(e*100)/100,remainingPercentage:Math.round((100-e)*100)/100}}shouldAutoCompact(){return this.autoCompactThreshold!==!1&&this.getContextState().usedPercentage>=this.autoCompactThreshold*100}getAutoCompactThreshold(){return this.autoCompactThreshold}setAutoCompactThreshold(e){this.autoCompactThreshold=ee(e)}updateFromHistory(t){this.contextUsedTokens=(0,e.estimateContextTokensFromMessages)(t).usedTokens}reset(){this.contextUsedTokens=0}};function ee(e){if(e===void 0)return x;if(e===!1)return!1;if(!Number.isFinite(e)||e<=0||e>1)throw RangeError(`autoCompactThreshold must be a number greater than 0 and at most 1.`);return e}async function te(e,t){if(t===void 0)return e;if(t.aborted)return!1;let n;try{return await Promise.race([e,new Promise(e=>{n=()=>e(!1),t.addEventListener(`abort`,n,{once:!0})})])}finally{n!==void 0&&t.removeEventListener(`abort`,n)}}function ne(e){return e===`allow-session`?{allowed:!0,rememberForSession:!0,rememberForProject:!1}:e===`allow-project`?{allowed:!0,rememberForSession:!0,rememberForProject:!0}:{allowed:e===!0,rememberForSession:!1,rememberForProject:!1}}async function re(e){let t={allowed:!1,rememberForSession:!1,rememberForProject:!1};if(e.alreadyAllowed)return{allowed:!0,rememberForSession:!1,rememberForProject:!1};if(e.signal?.aborted===!0)return t;let n=e.handler?()=>e.handler(e.toolName,e.toolArgs):e.injectedPrompt&&e.terminal?()=>e.injectedPrompt(e.terminal,e.toolName,e.toolArgs):void 0;return n===void 0?t:ne(await te(n(),e.signal))}const ie=`robota-session/approval`;function ae(e){return e?.waits.some(e=>e.request.kind===ie)??!1}async function oe(t,n,r){let a=n?.waits.filter(e=>e.request.kind===ie)??[];if(!r&&!a.length)return;if(!n||n.action.toolName!==t.toolName)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Checkpointed approval requires the current journaled action`);let o=(0,i.realpathSync)(t.cwd);for(let{request:n}of a)if(n.data.version!==1||n.data.sessionId!==t.sessionId||n.data.cwd!==o||n.data.toolName!==t.toolName)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Saved approval belongs to a different Session or tool`);let s=await n.request({kind:ie,data:{version:1,sessionId:t.sessionId,cwd:o,toolName:t.toolName,arguments:structuredClone(t.toolArgs)}});if(Object.keys(s).length!==1||typeof s.approved!=`boolean`)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Approval response must contain only a boolean approved decision`);return s.approved}function se(e,t){return`${e}\u0000${JSON.stringify(t)}`}var ce=class{classifier;consecutive=0;total=0;paused=!1;retries=new Set;constructor(e){this.classifier=e}isPaused(){return this.paused}resume(){this.paused=!1,this.consecutive=0}grantRetry(e,t){this.retries.add(se(e,t))}takeRetry(e,t){return this.retries.delete(se(e,t))}async judge(e,t){let n;try{n=await this.classifier.classify(e,t)}catch{n=void 0}if(n===void 0){t?.aborted!==!0&&(this.consecutive+=1);let e=this.consecutive>=3;return e&&(this.paused=!0),{kind:`unusable`,reason:`no usable verdict`,message:`The auto-mode classifier gave no usable verdict, so the call was not run. Try again, or ask the user to approve it.`+(e?` Auto mode is paused: the next calls ask the user.`:``)}}if(n.decision===`allow`)return this.consecutive=0,{kind:`allow`};this.consecutive+=1,this.total+=1;let r=this.consecutive>=3||this.total>=20;return this.total>=20&&(this.total=0),r&&(this.paused=!0),{kind:`block`,reason:n.reason,message:`Blocked by the auto-mode classifier: ${n.reason}. Do not retry the same action; take another approach or ask the user.`+(r?` Auto mode is paused after repeated blocks: the next calls ask the user.`:``)}}};function le(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n<0?`.`:n===0?`/`:t.slice(0,n)}function ue(e,t){switch(e){case`path`:{let e=le(t);return e===`/`?`/**`:`${e}/**`}case`url`:try{let e=new URL(t);return`${e.protocol}//${e.host}/**`}catch{return t}case`command`:{let e=t.trim().split(/\s+/)[0];return e?`${e} *`:void 0}default:return}}function de(t,n){let r=(0,e.getToolPermissionProfile)(t).argument;if(r===void 0)return t;let i=n[r.key];if(typeof i!=`string`||i===``)return t;let a=ue(r.kind,i);return a===void 0?t:`${t}(${a})`}function fe(n,r,i){let a=(0,e.getToolPermissionProfile)(n).argument;if(a===void 0||a.kind!==`path`)return r;let o=r[a.key];return typeof o!=`string`||o===``||(0,t.isAbsolute)(o)?r:{...r,[a.key]:(0,t.resolve)(i,o)}}function C(e,t,n){return{success:!1,outcome:e,error:t,data:JSON.stringify(n??{success:!1,output:``,error:t}),metadata:{}}}function pe(e,t,n){let r=e instanceof Error?e.message:String(e);return t?.({type:`end`,toolName:n.toolName,toolArgs:n.toolArgs,success:!1,executionId:n.executionId}),C(`threw`,r)}const me=C(`denied`,`Permission denied. The user did not approve this action.`),he=(0,e.createLogger)(`ToolHookHelpers`);function ge(t){if((0,e.wasToolResultAdmitted)(t)||typeof t.data!=`string`||t.data.length<=3e4)return t;let n=15e3,r=t.data.substring(0,n),i=t.data.substring(t.data.length-n),a=`${r}\n\n[... output truncated: ${t.data.length.toLocaleString()} chars total, showing first and last ${n.toLocaleString()} chars ...]\n\n${i}`;return{...t,data:a}}function _e(e,t,n,r,i,a){return{session_id:e,cwd:t,hook_event_name:`PreToolUse`,tool_name:n,tool_input:r,...i!==void 0&&{permission_mode:i},...a!==void 0&&{transcript_path:a}}}async function ve(e,t,n,r){let i=t,a,o=new Set([JSON.stringify(i.tool_input)]);for(let t=0;t<8;t++){let t=await ye(e,i,n,r);if(t.result!==null)return{refusal:t.result};let{permissionDecision:s,updatedInput:c}=t.hookResult;if(c!==void 0){if(typeof c!=`object`||!c||Array.isArray(c))return{refusal:C(`hook-blocked`,`PreToolUse updatedInput must be an object.`)};let e=fe(i.tool_name??``,c,i.cwd),t=JSON.stringify(e);if(t!==JSON.stringify(i.tool_input)){if(o.has(t))break;o.add(t),a=e,i={...i,tool_input:e};continue}}return{refusal:null,...a===void 0?{}:{parameters:a},...s===`allow`||s===`ask`?{decision:s}:{}}}let s=`PreToolUse input rewriting did not stabilize; no tool call was executed.`;return{refusal:C(`hook-blocked`,s,{blocked:!0,reason:s})}}async function ye(t,n,r,i){let a=await(0,e.runHooks)(t,`PreToolUse`,n,r,i);if(a.blocked){let e=a.reason??`Blocked by hook`;return{result:C(`hook-blocked`,e,{blocked:!0,reason:e}),hookResult:a}}if((0,e.isEnforcing)(`PreToolUse`)){let e=a.errors,t=e?.[0],n=a.unknownHookTypes??[],r=n.length>0?`Hook type(s) with no registered executor: ${n.join(`, `)}. Nothing evaluated this gate, so the tool call is denied rather than silently allowed. Remove the hook from the PreToolUse configuration, or supply an executor for its type.`:``;if(e!==void 0&&t!==void 0){let n=e.length-1,i=`Hook could not evaluate (${t.kind}, source: ${t.source}): ${t.reason}.`+(n>0?` (+${n} more hook failure(s))`:``)+(r===``?``:` Also unevaluated — ${r}`);return{result:C(`hook-blocked`,i,{blocked:!0,reason:i}),hookResult:a}}if(r!==``)return{result:C(`hook-blocked`,r,{blocked:!0,reason:r}),hookResult:a}}return{result:null,hookResult:a}}function be(t,n,r,i,a){(0,e.runHooks)(t,`PostToolUse`,{...n,hook_event_name:`PostToolUse`,tool_output:typeof r.data==`string`?r.data:JSON.stringify(r.data)},i,a).catch(e=>he.warn(`hook failed`,{error:e}))}function xe(t,n){let r=(0,e.getToolPermissionProfile)(t).argument?.key;if(r===void 0)return;let i=n[r];if(typeof i==`string`)return i.length>200?`${i.slice(0,200)}…`:i}var Se=class{capacity;now;entries=[];calls=[];constructor(e=20,t=Date.now){this.capacity=e,this.now=t}record(e,t,n,r){let i=xe(e,t);this.entries.unshift({toolName:e,...i===void 0?{}:{argument:i},reason:n,...r===void 0?{}:{detail:r},at:this.now()}),this.calls.unshift({toolName:e,toolArgs:t}),this.calls.length>this.capacity&&(this.calls.length=this.capacity),this.entries.length>this.capacity&&(this.entries.length=this.capacity)}list(){return[...this.entries]}callAt(e){return this.calls[e]}};const Ce=(0,e.createLogger)(`ToolBodyTrace`);var w=class extends Error{result;constructor(e){super(`Effective tool arguments were not authorized`),this.result=e}};function we(t,n){try{t?.eventService?.emit(e.TOOL_PERMISSION_EVENTS.DECIDED,{timestamp:new Date,executionId:t.executionId,decidedAt:new Date().toISOString(),decision:n})}catch(e){Ce.warn(`tool permission observation failed`,e instanceof Error?e:Error(String(e)))}}function Te(t,n){let r=t.execute.bind(t),i=t.executeWithAdmission?.bind(t),a=(0,e.snapshotToolProvenance)(t.provenance),o=t=>{if(t.type!==`end`||!a)return n.onToolExecution?.(t);let r=(0,e.withToolProvenance)({success:t.success??!1,parts:t.toolResultParts},a);n.onToolExecution?.({...t,toolResultParts:r.parts})},s=e.DEFAULT_ABSTRACT_EVENT_SERVICE,c=Object.create(t);Object.defineProperty(c,"provenance",{value:a,enumerable:!0});let l=async(a,c,l)=>{let u=a,d=`(unknown)`;try{d=t.getName(),u=fe(d,a,n.cwd),n.log(`tool_call`,{tool:d,args:u});let f=_e(n.sessionId,n.cwd,d,u,n.getPermissionMode(),n.transcriptPath),p=await ve(n.config.hooks,f,n.hookTypeExecutors,c?.hookTraceEnv);if(p.refusal)return n.log(`tool_blocked`,{tool:d,reason:`hook`}),we(c,`hook-blocked`),p.refusal;p.parameters!==void 0&&(u=p.parameters,f={...f,tool_input:u});let m=await n.checkPermission(d,u,c?.signal,c?.permissionInteraction,c?.hookTraceEnv,c?.continuation,p.decision);if(m!==!0)return n.log(`tool_denied`,{tool:d,reason:`permission`}),we(c,`denied`),o({type:`end`,toolName:d,toolArgs:u,success:!1,denied:!0,executionId:c?.executionId}),typeof m==`object`?C(`denied`,m.message):me;we(c,`allowed`),c?.signal?.throwIfAborted(),o({type:`start`,toolName:d,toolArgs:structuredClone(u),executionId:c?.executionId}),c?.signal?.throwIfAborted();let h,g=async e=>{c?.signal?.throwIfAborted();let t=fe(d,e,n.cwd);if(JSON.stringify(t)!==JSON.stringify(e))throw new w(C(`denied`,`Tool admission requires final canonical arguments; relative paths must be resolved before admission.`));if(JSON.stringify(t)!==JSON.stringify(u)){let e=_e(n.sessionId,n.cwd,d,t,n.getPermissionMode(),n.transcriptPath),r=await ve(n.config.hooks,e,n.hookTypeExecutors,c?.hookTraceEnv);if(r.refusal)throw new w(r.refusal);if(r.parameters!==void 0&&JSON.stringify(r.parameters)!==JSON.stringify(t))throw new w(C(`hook-blocked`,`A hook cannot replace arguments already settled by the tool; retry as a new call.`));let i=await n.checkPermission(d,t,c?.signal,c?.permissionInteraction,c?.hookTraceEnv,c?.continuation,r.decision);if(i!==!0)throw new w(typeof i==`object`?C(`denied`,i.message):me);f=e}u=structuredClone(e),c?.signal?.throwIfAborted(),await l?.(u),c?.signal?.throwIfAborted(),h=Date.now()},_=`failure`,v;try{let e=c===void 0?void 0:{...c,parameters:u,instanceEventService:s};l&&i?v=await i(u,e,g):(l?await g(u):h=Date.now(),c?.signal?.throwIfAborted(),v=await r(u,e)),_=c?.signal?.aborted?`interrupted`:v.success?`success`:`failure`}catch(t){throw _=c?.signal?.aborted||(0,e.isAbortFailure)(t)?`interrupted`:`failure`,t}finally{try{h!==void 0&&c?.eventService?.emit(e.TOOL_BODY_EVENTS.COMPLETED,{timestamp:new Date,executionId:c.executionId,startedAt:new Date(h).toISOString(),endedAt:new Date(Math.max(Date.now(),h)).toISOString(),outcome:_,...typeof c.toolBodyId==`string`?{toolBodyId:c.toolBodyId}:{}})}catch(e){Ce.warn(`tool body observation failed`,e instanceof Error?e:Error(String(e)))}}let y=ge(v);y!==v&&typeof v.data==`string`&&n.terminal.writeLine(` ⚠ Output truncated: ${v.data.length.toLocaleString()} chars total — model sees first and last 15,000 chars`),o({type:`end`,toolName:d,toolArgs:u,success:y.success,toolResultData:typeof y.data==`string`?y.data:JSON.stringify(y.data),toolResultParts:y.parts,executionId:c?.executionId});let b=typeof y.data==`string`?y.data.length:JSON.stringify(y.data)?.length??0;return n.log(`tool_result`,{tool:d,success:y.success,dataChars:b,truncated:y!==v}),be(n.config.hooks,f,y,n.hookTypeExecutors,c?.hookTraceEnv),y}catch(t){if((0,e.isExecutionControlError)(t))throw t;return t instanceof w?t.result:pe(t,o,{toolName:d,toolArgs:u,executionId:c?.executionId})}},u=async(...t)=>(0,e.withToolProvenance)(await l(...t),a);return c.execute=u,c.executeWithAdmission=u,c.setEventService=n=>{s=n??e.DEFAULT_ABSTRACT_EVENT_SERVICE,t.setEventService(n)},c}function Ee(e){let n=e,r=[];for(;;)try{let e=(0,i.realpathSync)(n);return r.length===0?e:(0,t.resolve)(e,...r.reverse())}catch{let i=(0,t.dirname)(n);if(i===n)return e;r.push(n.slice(i.length).replace(/^[\\/]/,``)),n=i}}function De(e,n){let r=(0,t.relative)(e,n);return r===``||!r.startsWith(`..`)&&!(0,t.isAbsolute)(r)}function Oe(e){return(n,r)=>{let i=Ee(e),a=Ee((0,t.resolve)(n??i,r));return De(i,a)?a:void 0}}function ke(t){let n=[...(0,e.findInvalidPermissionPatterns)(t.allow,`allow`),...(0,e.findInvalidPermissionPatterns)(t.restrictive,`deny`)];if(n.length===0)return;let r=n.map(({pattern:e,reason:t})=>`"${e}" ${t}`).join(`; `);throw Error(`Invalid permission pattern(s) in permissions.allow/deny/ask: ${r}. Fix the pattern where it is configured (issue #2428).`)}var Ae=class{sessionId;cwd;getPermissionMode;config;terminal;permissionHandler;promptForApprovalFn;sessionLogger;onToolExecution;hookTypeExecutors;transcriptPath;sessionAllowedTools=new Set;presetFreeRules;onProjectAllowTool;permissionPolicy;taskPermissions;pathProtection;homeDirectory;resolveInWorkspace;commandSandbox;denials=new Se;peerTurn=!1;checkpointedApprovals=!1;autoMode;constructor(e){this.sessionId=e.sessionId,this.cwd=e.cwd,this.getPermissionMode=e.getPermissionMode,this.config=e.config,this.presetFreeRules=e.presetFreePermissions??{allow:[...e.config.permissions.allow],deny:[...e.config.permissions.deny]},ke(this.configuredRules(e)),this.terminal=e.terminal,this.permissionHandler=e.permissionHandler,this.promptForApprovalFn=e.promptForApprovalFn,this.sessionLogger=e.sessionLogger,this.onToolExecution=e.onToolExecution,this.hookTypeExecutors=e.hookTypeExecutors,this.transcriptPath=e.transcriptPath,this.onProjectAllowTool=e.onProjectAllowTool,this.permissionPolicy=e.permissionPolicy,this.taskPermissions=e.taskPermissions,this.homeDirectory=e.homeDirectory??(0,r.homedir)(),this.pathProtection=e.pathProtection,this.resolveInWorkspace=Oe(e.cwd),this.commandSandbox=e.commandSandbox,e.permissionClassifier!==void 0&&(this.autoMode=new ce(e.permissionClassifier))}beginTurn(e,t=!1){this.peerTurn=e,this.checkpointedApprovals=t}endTurn(){this.peerTurn=!1,this.checkpointedApprovals=!1}hasPermissionClassifier(){return this.autoMode!==void 0}allowRetryOfDenial(e){let t=this.denials.list()[e],n=this.denials.callAt(e);if(t?.reason===`classifier`&&n!==void 0&&this.autoMode!==void 0)return this.autoMode.grantRetry(n.toolName,n.toolArgs),t}configuredRules(e={config:this.config,...this.taskPermissions===void 0?{}:{taskPermissions:this.taskPermissions}}){return{allow:[...e.config.permissions.allow,...e.taskPermissions?.allow??[]],restrictive:[...e.config.permissions.deny,...e.config.permissions.ask??[],...e.taskPermissions?.deny??[]]}}isToolVisible(t){let n=(0,e.getToolPermissionProfile)(t);return!this.peerTurn&&n.repliesToPeer===!0||this.peerTurn&&n.notInPeerTurn===!0?!1:!(0,e.isToolDeniedOutright)(t,[...this.config.permissions.deny,...this.taskPermissions?.deny??[]])}registerToolParameters(t){for(let n of t){let t=n.schema;if(t===void 0)continue;let r=t.parameters?.properties??{};(0,e.registerToolPermissionProfile)(t.name,{parameters:Object.keys(r)})}let n=this.configuredRules();ke(n);for(let{pattern:t,reason:r}of(0,e.findPermissionPatternWarnings)(n.restrictive))this.terminal.writeLine(` ⚠ Permission rule "${t}" ${r}.`)}wrapTools(e){this.registerToolParameters(e);let t={sessionId:this.sessionId,cwd:this.cwd,config:this.config,terminal:this.terminal,transcriptPath:this.transcriptPath,onToolExecution:this.onToolExecution,hookTypeExecutors:this.hookTypeExecutors,getPermissionMode:this.getPermissionMode,log:(e,t)=>this.log(e,t),checkPermission:(e,t,n,r,i,a,o)=>this.decidePermission(e,t,n,r,i,{continuation:a,...o===void 0?{}:{hookDecision:o}})};return e.map(e=>Te(e,t))}getSessionAllowedTools(){return[...this.sessionAllowedTools]}getRecentDenials(){return this.denials.list()}clearSessionAllowedTools(){this.sessionAllowedTools.clear()}currentPermissionRules(){return{allow:[...this.config.permissions.allow],deny:[...this.config.permissions.deny],ask:[...this.config.permissions.ask??[]]}}applyPresetToolLists(t){let n=(0,e.applyPresetToolLists)(this.presetFreeRules,t);this.config.permissions.allow=n.allow,this.config.permissions.deny=n.deny}async checkPermission(e,t,n,r=`interactive`,i){return await this.decidePermission(e,t,n,r,i)===!0}async checkDelegatedToolCall(e,t,n){let r=_e(this.sessionId,this.cwd,e,t,this.getPermissionMode(),this.transcriptPath),i=await ve(this.config.hooks,r,this.hookTypeExecutors);return i.refusal||i.parameters!==void 0?(this.log(`tool_blocked`,{tool:e,reason:`hook`,delegated:!0}),!1):await this.decidePermission(e,t,n,`interactive`,void 0,{sandboxed:!1,...i.decision===void 0?{}:{hookDecision:i.decision}})===!0}async decidePermission(e,t,n,r=`interactive`,i,a={}){let o=await this.evaluateToolPermission(e,t,n,r,i,a);return o===!0?(n?.throwIfAborted(),await oe({sessionId:this.sessionId,cwd:this.cwd,toolName:e,toolArgs:t},a.continuation,!1)??!0):o}async evaluateToolPermission(t,n,r,i=`interactive`,a,o={}){let s=this.permissionPolicy===void 0?void 0:(0,e.projectPermissionPolicy)(this.permissionPolicy,{taskAllow:this.taskPermissions?.allow,taskDeny:this.taskPermissions?.deny,parentAllow:this.config.permissions.allow}),c=this.getPermissionMode(),l=[...this.config.permissions.allow,...s?.allow??[]],u={allow:c===`auto`?(0,e.allowRulesForAutoMode)(l):l,deny:[...this.config.permissions.deny,...s?.deny??[]],ask:this.config.permissions.ask??[]},d={cwd:this.cwd,homeDirectory:this.homeDirectory,pathProtection:this.pathProtection},f=(0,e.evaluatePermission)(t,n,c,u,{...d,resolveInWorkspace:this.resolveInWorkspace,sandboxAutoApproved:o.sandboxed!==!1&&this.sandboxAutoApproves(t,n),...s?.ceiling===void 0?{}:{ceiling:s.ceiling},askAll:s?.askAll??!1,...this.peerTurn?{peerTurn:!0}:{}});if(this.firePermissionDecisionHook(t,n,f,a),f===`deny`)return this.denials.record(t,n,`policy`),!1;if(o.hookDecision===`ask`)return this.promptForApproval(t,n,r,i,!0,o.continuation);if(f===`auto`)return!0;let p=(0,e.requiresFreshApproval)(t,n,u,d);return c===`auto`&&this.autoMode!==void 0&&!p&&s?.askAll!==!0?this.decideInAutoMode(this.autoMode,t,n,r,i,a,o):o.hookDecision===`allow`&&!p&&s?.askAll!==!0||this.promptForApproval(t,n,r,i,p,o.continuation)}async decideInAutoMode(t,n,r,i,a,o,s){if(t.takeRetry(n,r)||(0,e.matchesAnyPattern)(n,r,(0,e.allowRulesForAutoMode)([...this.sessionAllowedTools])))return!0;if(t.isPaused()){let e=await this.promptForApproval(n,r,i,a,!0,s.continuation);return e&&!this.checkpointedApprovals&&!ae(s.continuation)&&t.resume(),e}let c=await t.judge({toolName:n,toolArgs:r,cwd:this.cwd},i);return i?.aborted===!0?!1:this.getPermissionMode()===`auto`?c.kind===`allow`?!0:(this.denials.record(n,r,`classifier`,c.reason),{message:c.message}):this.decidePermission(n,r,i,a,o,s)}async promptForApproval(t,n,r,i=`interactive`,a=!1,o){let s=!a&&(0,e.matchesAnyPattern)(t,n,[...this.sessionAllowedTools]);if(this.checkpointedApprovals&&!s||ae(o)){if(r?.aborted||i!==`interactive`)return!1;let e=await oe({sessionId:this.sessionId,cwd:this.cwd,toolName:t,toolArgs:n},o,!0);return e!==!0&&this.denials.record(t,n,`user`),e===!0}let c=de(t,n),l=r?.aborted===!0,u=i===`interactive`&&(this.permissionHandler!==void 0||this.promptForApprovalFn!==void 0),d=await re({toolName:t,alreadyAllowed:s,...i===`interactive`&&this.permissionHandler?{handler:this.permissionHandler}:{},...i===`interactive`&&this.promptForApprovalFn?{injectedPrompt:this.promptForApprovalFn,terminal:this.terminal}:{},toolArgs:n,...r?{signal:r}:{}});if(!d.allowed&&!l&&this.denials.record(t,n,u?`user`:`no-approver`),a)return d.allowed;if(d.rememberForProject){if(this.onProjectAllowTool===void 0)throw Error(`Project-wide permission persistence is unavailable for this session.`);this.onProjectAllowTool(c)}return d.rememberForSession&&this.sessionAllowedTools.add(c),d.allowed}firePermissionDecisionHook(t,n,r,i){let a=this.getPermissionMode();(0,e.runHooks)(this.config.hooks,`PermissionDecision`,{session_id:this.sessionId,cwd:this.cwd,hook_event_name:`PermissionDecision`,tool_name:t,tool_input:n,permission_decision:r,...a!==void 0&&{permission_mode:a},...this.transcriptPath!==void 0&&{transcript_path:this.transcriptPath},env:{CLAUDE_PROJECT_DIR:this.cwd,CLAUDE_SESSION_ID:this.sessionId}},this.hookTypeExecutors,i).catch(()=>void 0)}sandboxAutoApproves(t,n){if(this.commandSandbox===void 0)return!1;let r=(0,e.getToolPermissionProfile)(t).argument;if(r?.kind!==`command`)return!1;let i=n[r.key];return typeof i==`string`&&this.commandSandbox.autoApproves(t,i)}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}};function je(e,t,n,r,i){return new Ae({pathProtection:e.pathProtection,sessionId:t,cwd:n,getPermissionMode:r,config:{permissions:e.permissions??{allow:[],deny:[]},hooks:e.hooks},...e.presetFreePermissions===void 0?{}:{presetFreePermissions:e.presetFreePermissions},terminal:e.terminal,permissionHandler:e.permissionHandler,...e.commandSandbox===void 0?{}:{commandSandbox:e.commandSandbox},...e.permissionClassifier===void 0?{}:{permissionClassifier:e.permissionClassifier},promptForApprovalFn:e.promptForApproval,sessionLogger:e.sessionLogger,onToolExecution:e.onToolExecution,hookTypeExecutors:e.hookTypeExecutors,transcriptPath:i,onProjectAllowTool:e.onProjectAllowTool,permissionPolicy:e.permissionPolicy,taskPermissions:e.taskPermissions})}function Me(e,t,n,r){return{contextTracker:new S(t,e.contextMaxTokens,e.autoCompactThreshold),compactionOrchestrator:new b({sessionId:n,cwd:r,model:t,hooks:e.hooks,compactInstructions:e.compactInstructions,basePrompt:e.compactionBasePrompt,hookTypeExecutors:e.hookTypeExecutors})}}function Ne(t,n,r,i,a,o,s){let c=n.wrapTools(r);return new e.ConversationAgent({name:t.agentName??`agent`,aiProviders:[i],defaultModel:{provider:i.name,model:a,...t.effort!==void 0&&{effort:t.effort},...t.temperature!==void 0&&{temperature:t.temperature},...t.maxOutputTokens!==void 0&&{maxTokens:t.maxOutputTokens}},systemMessage:o,tools:c,...t.toolExecutionPolicy===void 0?{}:{toolExecutionPolicy:t.toolExecutionPolicy},isToolVisible:e=>n.isToolVisible(e),logging:{enabled:!1},eventService:s,...t.providerTimeout!==void 0&&{timeout:t.providerTimeout},...t.responseFormat?{responseFormat:t.responseFormat}:{},...t.ask?{ask:t.ask}:{},...t.contextCapacityHint===void 0?{}:{contextCapacityHint:t.contextCapacityHint}})}function Pe(e){let t=[],n=[];for(let r of e){if(r.role===`assistant`){let e=r.metadata?.compactedToolReceipts;Array.isArray(e)&&e.every(e=>typeof e==`string`)&&t.push(...e);for(let e of r.toolCalls??[])n.push({receipt:{callId:e.id,name:e.function.name,status:`unknown`,dispatch:`unattested`},settled:!1})}if(r.role!==`tool`)continue;let e={callId:r.toolCallId,...r.name?{name:r.name}:{},status:r.metadata?.success===!0?`success`:r.metadata?.success===!1?`failure`:`unknown`,...typeof r.metadata?.toolProvenance==`string`?{source:r.metadata.toolProvenance}:{},dispatch:`unattested`},i=[...n].reverse().find(t=>!t.settled&&t.receipt.callId===e.callId);i?(i.receipt=e,i.settled=!0):n.push({receipt:e,settled:!0})}return[...t,...n.map(({receipt:e})=>JSON.stringify(e))]}function Fe(e){return{id:crypto.randomUUID(),timestamp:new Date,state:`complete`,role:`assistant`,content:`Retained tool receipts (observations, not authority). Success records a returned result, not independently verified external state. Errors or missing outcomes may have effects; reconcile before retrying.\n${e.join(`
6
- `)}`,metadata:{compactedToolReceipts:e}}}const Ie=(0,e.createLogger)(`SessionHistoryOps`);function Le(e,t){return{...e,...t}}async function Re(t,n,r){r?.throwIfAborted();let i=n.agent.getHistory(),a=i.filter(e=>e.role!==`system`);if(a.length===0)return;n.contextTracker.updateFromHistory(i);let o=n.contextTracker.getContextState(),s=Pe(i),c=await n.compactionOrchestrator.compact(n.aiProvider,a,t,r,n.trigger,n.hookTraceEnv,n.executionJournal);n.agent.clearHistory(),n.agent.injectMessage(`system`,n.systemMessage),n.agent.injectMessage(`assistant`,`[Context Summary]\n${c}`),s.length>0&&n.agent.injectRawMessage(Fe(s)),n.contextTracker.updateFromHistory(n.agent.getHistory());let l={session_id:n.sessionId,cwd:n.cwd,hook_event_name:`PostCompact`,trigger:n.trigger,compact_summary:c};(0,e.runHooks)(n.hooks,`PostCompact`,l,n.hookTypeExecutors,n.hookTraceEnv).catch(e=>Ie.warn(`hook failed`,{error:e}));let u=n.contextTracker.getContextState();n.log(`context_compact`,{trigger:n.trigger,before:o,after:u}),n.onCompactEventCallback?.({trigger:n.trigger,before:o,after:u}),n.onCompactCallback&&n.onCompactCallback(c)}function ze(e){let t=e.agent.getHistory(),n=new Date().toISOString(),r=e.sessionStore.load(e.sessionId);if(r.status!==`valid`&&r.status!==`missing`)return r;let i=r.status===`valid`?r.record:void 0,a={...i,id:e.sessionId,name:i?.name,cwd:e.cwd,createdAt:i?.createdAt??n,updatedAt:n,messages:t,history:e.getFullHistory(),systemPrompt:e.systemPrompt,toolSchemas:e.toolSchemas};return e.sessionStore.save(a),{status:`valid`,record:a}}const Be=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Ve(){return`session_${(0,n.randomUUID)()}`}function He(e){return e.length>0&&e.length<=128&&Be.test(e)}function Ue(e){if(!He(e))throw Error(`Invalid session id: ${JSON.stringify(e)}. A session id must be 1-128 characters of letters, digits, dot, underscore or hyphen, starting with a letter or digit.`)}const We=(0,e.createLogger)(`SessionLifecycle`);function Ge(e,t,n){e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>{n(`server_tool`,{tool:e,...t})})}function Ke(t,n,r,i,a,o,s){(0,e.runHooks)(r,`SessionStart`,{session_id:t,cwd:n,hook_event_name:`SessionStart`,...o!==void 0&&{permission_mode:o},...s!==void 0&&{transcript_path:s},env:{CLAUDE_PROJECT_DIR:n,CLAUDE_SESSION_ID:t}},i).then(e=>{e.stdout&&a(e.stdout)}).catch(e=>We.warn(`SessionStart hook failed`,{error:e}))}async function qe(t,n,r,i,a,o,s){await(0,e.runHooks)(i,`SessionEnd`,{session_id:t,cwd:n,hook_event_name:`SessionEnd`,reason:r,...o!==void 0&&{permission_mode:o},...s!==void 0&&{transcript_path:s},env:{CLAUDE_PROJECT_DIR:n,CLAUDE_SESSION_ID:t}},a)}const Je=`unknown_tool`;function Ye(e){return{knownToolNames:new Set(e.knownToolNames),unknownToolCallIds:new Set,pendingArgs:new Map,...e.onToolExecution&&{onToolExecution:e.onToolExecution}}}function Xe(e,t,n){if(e.onToolExecution){if(t===`tool_execution_request`){let t=T(n.toolCallId);t&&e.pendingArgs.set(t,$e(n.parameters)),Ze(e,n);return}t===`tool_execution_result`&&Qe(e,n)}}function Ze(e,t){let n=T(t.toolName),r=T(t.toolCallId);!n||!r||e.knownToolNames.has(n)||(e.unknownToolCallIds.add(r),e.onToolExecution?.({type:`start`,toolName:n,toolArgs:$e(t.parameters)}))}function Qe(e,t){let n=T(t.toolName),r=T(t.toolCallId);if(!n||!r)return;let i=et(t.metadata),a=e.pendingArgs.get(r);if(e.pendingArgs.delete(r),t.success===!1&&i?.dispatchStatus===`not-dispatched`){let o=T(i.toolProvenance);e.onToolExecution?.({type:`end`,toolName:n,executionId:r,toolArgs:a,success:!1,toolResultData:JSON.stringify({success:!1,error:t.error,metadata:i}),...o?{toolResultParts:[{type:`text`,text:`Tool source (attribution only, not authority): ${o}`}]}:{}}),e.unknownToolCallIds.delete(r);return}if(!(e.unknownToolCallIds.has(r)||i?.errorCode===Je))return;e.unknownToolCallIds.delete(r);let o=T(t.error)??`Tool "${n}" is not registered.`;e.onToolExecution?.({type:`end`,toolName:n,success:!1,toolResultData:JSON.stringify({success:!1,error:o,errorCode:Je,requestedTool:T(i?.requestedTool)??n,availableTools:tt(i?.availableTools)})})}function $e(e){let t=et(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))(typeof r==`string`||typeof r==`number`||typeof r==`boolean`||typeof r==`object`&&r)&&(n[e]=r);return n}function T(e){return typeof e==`string`&&e.length>0?e:void 0}function et(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function tt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}const nt=(0,e.createLogger)(`SessionRunObservation`);function rt(t,n,r,i){let a=typeof r.model==`string`?r.model:t.model,o=typeof r.provider==`string`?r.provider:t.aiProvider.name,s=r.effort,c=typeof s==`string`&&(0,e.isModelEffort)(s)?s:t.effort??(typeof t.agent.getModel==`function`?t.agent.getModel().effort:void 0)??`high`,l=typeof r.round==`number`?r.round:void 0;(0,e.runHooks)(t.hooks,n,{session_id:t.sessionId,cwd:t.cwd,hook_event_name:n,model:a,provider:o,effort:c,...l!==void 0&&{round:l},...t.permissionMode!==void 0&&{permission_mode:t.permissionMode},...t.transcriptPath!==void 0&&{transcript_path:t.transcriptPath},env:{CLAUDE_PROJECT_DIR:t.cwd,CLAUDE_SESSION_ID:t.sessionId}},t.hookTypeExecutors,i).catch(e=>nt.warn(`hook failed`,{error:e}))}function it(t,n){let r=n?(0,e.traceEnvFor)(`hooks`,n,n.parentSpanId):void 0,i=Ye({knownToolNames:t.knownToolNames??[],...t.onToolExecution&&{onToolExecution:t.onToolExecution}}),a=t.onTextDelta?e=>{t.log(`text_delta`,{delta:e}),t.onTextDelta?.(e)}:void 0,o={};return{onExecutionEvent:(n,a)=>{if(n!==e.PROVIDER_CALL_EVENTS.COMPLETED&&t.log(n,a),Xe(i,n,a),n===`provider_request`){let e=a;o={model:e.model,provider:e.provider},rt(t,`PreModelCall`,e,r)}else if(n===`provider_response_normalized`)rt(t,`PostModelCall`,{...a,...o},r);else if(n===e.PROVIDER_FALLBACK_EVENTS.SWITCHED){let n=(0,e.readModelFallbackNotice)(a);n!==void 0&&(rt(t,`PostModelCall`,{round:a.round,model:n.from.model,provider:n.from.provider},r),t.emitProviderFallback?.(n))}else if(n===e.PROVIDER_CALL_EVENTS.COMPLETED&&t.emitProviderCallCompleted){let e=a;Number.isSafeInteger(e.round)&&e.round>0&&typeof e.startedAt==`string`&&typeof e.endedAt==`string`&&(e.outcome===`success`||e.outcome===`failure`||e.outcome===`interrupted`)&&t.emitProviderCallCompleted({round:e.round,startedAt:e.startedAt,endedAt:e.endedAt,outcome:e.outcome,...typeof e.callId==`string`&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.callId)&&{callId:e.callId},...(e.disposition===`invoked`||e.disposition===`cache-hit`||e.disposition===`preflight-refused`)&&{disposition:e.disposition},...typeof e.providerId==`string`&&e.providerId.length>0&&e.providerId.length<=128&&[...e.providerId].every(e=>e.charCodeAt(0)>=32)&&{providerId:e.providerId},...typeof e.modelId==`string`&&e.modelId.length>0&&e.modelId.length<=128&&[...e.modelId].every(e=>e.charCodeAt(0)>=32)&&{modelId:e.modelId},...(e.usageProvenance===`complete`||e.usageProvenance===`partial`||e.usageProvenance===`absent`)&&{usageProvenance:e.usageProvenance},...e.usageProvenance===`complete`&&typeof e.promptTokens==`number`&&Number.isSafeInteger(e.promptTokens)&&e.promptTokens>=0&&typeof e.completionTokens==`number`&&Number.isSafeInteger(e.completionTokens)&&e.completionTokens>=0&&typeof e.totalTokens==`number`&&Number.isSafeInteger(e.totalTokens)&&e.totalTokens===e.promptTokens+e.completionTokens&&{promptTokens:e.promptTokens,completionTokens:e.completionTokens,totalTokens:e.totalTokens},...e.disposition===`invoked`&&typeof e.providerRequestId==`string`&&{providerRequestId:e.providerRequestId}})}n===`assistant_message_committed`&&(t.contextTracker.updateFromHistory(t.agent.getHistory()),t.onContextUpdate?.(t.contextTracker.getContextState()))},...a&&{onTextDelta:a}}}async function at(e,t){let n=await e.agent.resume({...t,...it(e,t.traceContext)});return e.contextTracker.updateFromHistory(e.agent.getHistory()),e.onContextUpdate?.(e.contextTracker.getContextState()),e.getSessionStore()&&e.persistSession(),n}function ot(e,t){let n=(0,i.realpathSync)(t.cwd);return{append:async r=>{if((r.kind===`model-request`||r.kind===`model-cache-hit`)&&r.checkpoint){let i=structuredClone(r);i.checkpoint.owner={kind:`agent-session`,version:1,state:{sessionId:t.sessionId,cwd:n,peerTurn:t.peerTurn,executionId:r.executionId}},await e.append(i)}else await e.append(r)}}}function st(t,n,r,a){let o,s=(0,i.realpathSync)(r);return{read:async i=>{let c=structuredClone(await t.read(i)),l;for(let t of c){if(t.kind!==`model-request`&&t.kind!==`model-cache-hit`)continue;let r=t.checkpoint?.owner,a=r?.state;if(!r||r.kind!==`agent-session`||r.version!==1||!a||a.sessionId!==n||a.cwd!==s||a.executionId!==i||typeof a.peerTurn!=`boolean`||l!==void 0&&l!==a.peerTurn||a.peerTurn&&t.checkpoint?.continuation?.options.withholdHostedTools!==!0)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Session continuation owner or scope is incompatible`);l=a.peerTurn}if(l===void 0)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`No Session owner checkpoint exists`);return o=ot(t,{sessionId:n,cwd:r,peerTurn:l}),a(l),c},append:async t=>{if(!o)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Session owner has not been restored`);await o.append(t)}}}function ct(e){return{...e?.executionJournal!==void 0&&{executionJournal:e.executionJournal},...e?.ephemeralSystemContext!==void 0&&{ephemeralSystemContext:e.ephemeralSystemContext},...e?.driverId!==void 0&&{driverId:e.driverId},...e?.turnSource!==void 0&&{turnSource:e.turnSource},...e?.toolChoice!==void 0&&{toolChoice:e.toolChoice},...e?.traceContext!==void 0&&{traceContext:e.traceContext},...e?.peerTurn===!0&&{withholdHostedTools:!0}}}const lt=(0,e.createLogger)(`SessionRun`);async function ut(t,n,r,i,a){let o=a?.traceContext,s=o?(0,e.traceEnvFor)(`hooks`,o,o.parentSpanId):void 0;if(r.contextTracker.updateFromHistory(r.agent.getHistory()),r.contextTracker.shouldAutoCompact()){let e=r.aiProvider,t=e.onTextDelta;e.onTextDelta=void 0;try{a?.executionJournal?await r.compact(i,s,a.executionJournal):await(s?r.compact(i,s):r.compact(i))}finally{e.onTextDelta=t}}r.log(`user`,{content:t});let c=await(0,e.runHooks)(r.hooks,`UserPromptSubmit`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`UserPromptSubmit`,user_message:n??t,prompt:n??t,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s),l=[r.sessionStartStdout,c.stdout].filter(Boolean).join(`
7
- `),u=l?`<system-reminder>\n${l}\n</system-reminder>\n${t}`:t;r.clearSessionStartStdout();let d=r.agent.getHistory(),f=JSON.stringify(d),p=(0,e.getProviderCapabilities)(r.aiProvider);r.log(`pre_run`,{historyLength:d.length,historyChars:f.length,historyEstTokens:Math.ceil(f.length/e.CONTEXT_ESTIMATE_CHARS_PER_TOKEN),input:u,history:d,model:r.model,provider:r.aiProvider.name,maxTokens:r.contextTracker.getContextState().maxTokens,nativeWebSearchSupported:p.nativeWebTools.webSearch.supported,nativeWebSearchEnabled:p.nativeWebTools.webSearch.enabled,nativeWebFetchSupported:p.nativeWebTools.webFetch.supported,nativeWebFetchEnabled:p.nativeWebTools.webFetch.enabled}),r.contextTracker.updateFromHistory([...d,(0,e.createUserMessage)(u)]),r.onContextUpdate?.(r.contextTracker.getContextState());let m;try{if(m=await r.agent.run(u,{signal:i,maxExecutionRounds:r.maxTurns??0,...ct(a),...it(r,o)}),i.aborted)throw new DOMException(`Aborted`,`AbortError`)}catch(t){if(t instanceof e.ExecutionSuspendedError)throw t;try{r.log(`error`,{message:t instanceof Error?t.message:String(t),stack:t instanceof Error?t.stack??``:``,historyLength:r.agent.getHistory().length})}catch{}throw(0,e.runHooks)(r.hooks,`StopFailure`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`StopFailure`,reason:t instanceof Error?t.message:String(t),stop_hook_active:!1,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s).catch(e=>lt.warn(`hook failed`,{error:e})),t}let h=r.agent.getHistory(),g=h.map(e=>{let t=`toolCalls`in e&&Array.isArray(e.toolCalls)&&e.toolCalls.length>0,n=t?e.toolCalls.map(e=>e.function.name):[];return{role:e.role,contentLength:typeof e.content==`string`?e.content.length:0,hasToolCalls:t,toolCallNames:n,...e.metadata?{metadata:e.metadata}:{}}});r.log(`assistant`,{content:m,historyLength:h.length,estimatedChars:JSON.stringify(h).length,history:h,historyStructure:g}),r.contextTracker.updateFromHistory(h);let _=r.contextTracker.getContextState();return r.onContextUpdate?.(_),r.log(`context`,{maxTokens:_.maxTokens,usedTokens:_.usedTokens,usedPercentage:_.usedPercentage,remainingPercentage:_.remainingPercentage}),(0,e.runHooks)(r.hooks,`Stop`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`Stop`,response:m.substring(0,500),last_assistant_message:m,stop_hook_active:!1,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s).catch(e=>lt.warn(`hook failed`,{error:e})),r.getSessionStore()&&r.persistSession(),m}function dt(e){let t=e.requests[0]?.executionId;return t?{executionId:t,requests:structuredClone(e.requests)}:void 0}function ft(e){let t=e.findLastIndex(e=>e.role===`assistant`),n=e[t];if(n?.role!==`assistant`)return;let r=new Set(e.slice(t+1).flatMap(e=>e.role===`tool`?[e.toolCallId]:[]));return{assistant:n,open:(n.toolCalls??[]).filter(e=>!r.has(e.id)),ending:e.slice(t+1).every(e=>e.role===`tool`)}}function pt(e,t,n){let r=ft(e),i=r?.assistant.metadata?.executionId;if(!r?.ending||!r.open.length||typeof i!=`string`)return;let a=new Set(r.open.map(e=>e.id)),o=t?.executionId===i?t.requests.filter(e=>a.has(e.toolCallId)&&!n.has(e.actionId)):[];return{executionId:i,requests:structuredClone(o)}}function mt(e,t){return{read:t=>e.read(t),append:n=>(n.kind===`tool-effect-start`&&t.add(n.actionId),e.append(n))}}function ht(t,n){let r=ft(t);if(!r||r.assistant.metadata?.executionId!==n.executionId)return[];let i=new Set(n.requests.map(e=>e.toolCallId));return r.open.map(t=>{let n=i.has(t.id)?`Not run: the execution was abandoned while this call awaited a response.`:`Execution abandoned before this call recorded a result; its outcome is unknown.`;return(0,e.createToolMessage)(`Error: ${n}`,{toolCallId:t.id,name:t.function.name,metadata:{success:!1,error:n,toolName:t.function.name}})})}async function gt(t,n){if(!n||typeof n.append!=`function`||typeof n.read!=`function`)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Recoverable Session execution requires a readable journal`);try{return{status:`completed`,response:await t()}}catch(t){if(t instanceof e.ExecutionSuspendedError)return{status:`waiting`,requests:structuredClone(t.requests)};throw t}}var _t=class{agent;claim;sessionId;execution=null;constructor(e,t,n){this.agent=e,this.claim=t,this.sessionId=n}async invoke(e,t,r){let i=this.claim.claim(),a=vt(i,r);try{return i.signal.throwIfAborted(),this.execution=this.agent.invokeRuntimeTool(e,t,{toolName:e,parameters:t,executionId:(0,n.randomUUID)(),sessionId:this.sessionId,signal:i.signal,permissionInteraction:`deny`}),await this.execution}finally{this.execution=null,a(),this.claim.release(i)}}async drain(){await this.execution}};function vt(e,t){let n=()=>e.abort(t?.reason);return t?.aborted?n():t?.addEventListener(`abort`,n,{once:!0}),()=>t?.removeEventListener(`abort`,n)}var yt=class extends f{agent;eventService=new e.ObservableEventService;permissionEnforcer;contextTracker;permissionMode;activePresetId;parallelSubagentsEnabled;sessionId;aiProvider;toolSchemas;model;systemMessage;messageCount=0;terminal;sessionStore;hooks;hookTypeExecutors;onTextDeltaCallback;onContextUpdateCallback;onToolExecutionCallback;onCompactCallback;onCompactEventCallback;sessionLogger;maxTurns;compactionOrchestrator;runtimeTools;wrapAddedTools;pendingTools=[];toolChange=Promise.resolve();shuttingDown=!1;pendingExecution;shutdownPromise=null;sessionStartStdout=``;transcriptPath;constructor(t){super(t.cwd);let{tools:n,provider:r,systemMessage:i}=t;this.terminal=t.terminal,this.sessionStore=t.sessionStore,this.systemMessage=i,this.toolSchemas=n.map(e=>e.schema),this.wrapAddedTools=t.wrapAddedTools,this.sessionLogger=t.sessionLogger,this.hooks=t.hooks,this.hookTypeExecutors=t.hookTypeExecutors,this.onTextDeltaCallback=t.onTextDelta,this.onContextUpdateCallback=t.onContextUpdate,this.onToolExecutionCallback=t.onToolExecution,this.onCompactCallback=t.onCompact,this.onCompactEventCallback=t.onCompactEvent,this.maxTurns=t.maxTurns,this.model=t.model??`claude-sonnet-4-5`,this.sessionId=t.sessionId??Ve(),this.permissionMode=t.permissionMode??(t.defaultTrustLevel?e.TRUST_TO_MODE[t.defaultTrustLevel]:void 0)??`default`,this.activePresetId=t.activePresetId??`default`,this.parallelSubagentsEnabled=t.enableParallelSubagents??!0,this.transcriptPath=t.transcriptPath,this.log(`session_init`,{cwd:this.cwd,systemPromptLength:i.length,systemPrompt:i,toolSchemas:this.toolSchemas,model:this.model,provider:r.name}),this.aiProvider=r,Ge(r,t,(e,t)=>this.log(e,t)),this.permissionEnforcer=je(t,this.sessionId,this.cwd,()=>this.permissionMode,this.transcriptPath),this.requireClassifierFor(this.permissionMode),this.addPermissionModeGuard(e=>this.requireClassifierFor(e));let{contextTracker:a,compactionOrchestrator:o}=Me(t,this.model,this.sessionId,this.cwd);this.contextTracker=a,this.compactionOrchestrator=o,this.agent=Ne(t,this.permissionEnforcer,n,r,this.model,i,this.eventService),this.runtimeTools=new _t(this.agent,this.turnClaim,this.sessionId),Ke(this.sessionId,this.cwd,this.hooks,this.hookTypeExecutors,e=>void(this.sessionStartStdout=e),this.permissionMode,this.transcriptPath)}async run(e,t,n){return this.runTurn(e,t,n,!1)}runRecoverable(e,t,n){return gt(()=>this.runTurn(e,n,t,!0),t.executionJournal)}async runTurn(t,n,r,i){let a=r?{...r}:void 0;if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);if(this.pendingExecution)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_REQUIRED`,`Resume or abandon the pending Session execution before submitting new input`);let o=this.turnClaim.claim(),s=vt(o,a?.signal),{signal:c}=o;this.permissionEnforcer.beginTurn(a?.peerTurn===!0,i);try{c.throwIfAborted(),await this.serializeToolChange(()=>this.applyPendingTools());let e=a?.executionJournal?{...a,executionJournal:ot(a.executionJournal,{sessionId:this.sessionId,cwd:this.cwd,peerTurn:a.peerTurn===!0})}:a,r=await ut(t,n,this.buildRunContext(),c,e);return this.messageCount+=1,r}catch(t){throw t instanceof e.ExecutionSuspendedError?(this.pendingExecution=dt(t),c.throwIfAborted()):a?.executionJournal&&(this.pendingExecution=pt(this.agent.getHistory(),void 0,new Set)),t}finally{this.permissionEnforcer.endTurn(),s(),this.turnClaim.release(o)}}async resume(e){return this.resumeTurn(e,!1)}resumeRecoverable(e){return gt(()=>this.resumeTurn(e,!0),e.journal)}async resumeTurn(t,n){let r={...t,toolResponses:structuredClone(t.toolResponses)};if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);if(this.pendingExecution&&this.pendingExecution.executionId!==r.executionId)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_CONFLICT`,`A different Session execution is pending`);let i=this.turnClaim.claim(),a=vt(i,r.signal),o=new Set;try{i.signal.throwIfAborted(),await this.serializeToolChange(()=>this.applyPendingTools());let e=st(mt(r.journal,o),this.sessionId,this.cwd,e=>this.permissionEnforcer.beginTurn(e,n)),t=await at(this.buildRunContext(),{...r,journal:e,signal:i.signal});return this.pendingExecution=void 0,t}catch(t){throw t instanceof e.ExecutionSuspendedError?(this.pendingExecution=dt(t),i.signal.throwIfAborted()):this.pendingExecution=pt(this.agent.getHistory(),this.pendingExecution,o),t}finally{this.permissionEnforcer.endTurn(),a(),this.turnClaim.release(i)}}getPendingExecution(){return structuredClone(this.pendingExecution)}abandonPendingExecution(t){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);let n=this.pendingExecution;if(!n)return;if(n.executionId!==t)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_CONFLICT`,`A different Session execution is pending`);let r=this.turnClaim.claim();try{for(let e of ht(this.agent.getHistory(),n))this.agent.injectRawMessage(e);this.pendingExecution=void 0,this.persistSessionInternal()}finally{this.turnClaim.release(r)}}addTools(e){return this.shuttingDown?Promise.reject(Error(`[LIFECYCLE] Session is shutting down`)):this.serializeToolChange(async()=>{let t=new Set([...this.toolSchemas.map(e=>e.name),...this.pendingTools.map(e=>e.schema.name)]),n=[];for(let r of e)t.has(r.schema.name)||(t.add(r.schema.name),n.push(r));return n.length===0?[]:(this.pendingTools.push(...n),this.turnClaim.isRunning()||await this.applyPendingTools(),n.map(e=>e.schema.name))})}serializeToolChange(e){let t=this.toolChange.then(e);return this.toolChange=t.then(()=>void 0,()=>void 0),t}async applyPendingTools(){if(this.pendingTools.length===0)return;let e=this.pendingTools.splice(0);await this.agent.ensureReady();let t=this.permissionEnforcer.wrapTools(this.wrapAddedTools?.(e)??e);await this.agent.updateTools([...this.agent.getConfig().tools??[],...t]),this.toolSchemas.push(...t.map(e=>e.schema))}async listRuntimeTools(){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);return this.agent.listRuntimeTools()}async invokeRuntimeTool(e,t,n){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);return this.runtimeTools.invoke(e,t,n?.signal)}getEventService(){return this.eventService}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}persistSessionInternal(){this.sessionStore&&ze({sessionId:this.sessionId,cwd:this.cwd,systemPrompt:this.systemMessage,toolSchemas:this.toolSchemas,sessionStore:this.sessionStore,agent:this.agent,getFullHistory:()=>this.getFullHistory()})}shutdown(e={}){if(this.shutdownPromise)return this.shutdownPromise;this.shuttingDown=!0;let t=e.reason??`other`,n=async(e,t)=>{try{await t()}catch(t){this.log(`session_shutdown_step_error`,{step:e,error:t instanceof Error?t.message:String(t)})}};return this.shutdownPromise=(async()=>{await n(`abort`,()=>this.abort()),await n(`drain-direct-tool`,()=>this.runtimeTools.drain()),await n(`drain-turn`,()=>this.turnClaim.drained),this.log(`session_shutdown`,{reason:t}),await n(`persist`,()=>this.persistSessionInternal()),await n(`session-end-hook`,()=>qe(this.sessionId,this.cwd,t,this.hooks,this.hookTypeExecutors,this.permissionMode,this.transcriptPath)),await n(`destroy-agent`,async()=>{await this.agent.destroy()})})(),this.shutdownPromise}swapProvider(e,t){this.agent.swapDefaultProvider(e,t),e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>this.log(`server_tool`,{tool:e,...t})),this.aiProvider=e,this.model=t}async compact(e,t=`manual`,n,r){await this.compactWith(e,t,n,void 0,r)}async compactWith(e,t,n,r,i){let a={systemMessage:this.systemMessage,compactionOrchestrator:this.compactionOrchestrator,onCompactCallback:this.onCompactCallback,onCompactEventCallback:this.onCompactEventCallback,trigger:t,...r?{hookTraceEnv:r}:{},...i?{executionJournal:i}:{}};await Re(e,Le(this.buildRunContext(),a),n)}buildRunContext(){return{sessionId:this.sessionId,cwd:this.cwd,model:this.model,effort:this.getModelEffort(),agent:this.agent,aiProvider:this.aiProvider,contextTracker:this.contextTracker,hooks:this.hooks,hookTypeExecutors:this.hookTypeExecutors,sessionStartStdout:this.sessionStartStdout,log:(e,t)=>this.log(e,t),compact:(e,t,n)=>this.compactWith(void 0,`auto`,e,t,n),persistSession:()=>this.persistSessionInternal(),getSessionStore:()=>!!this.sessionStore,clearSessionStartStdout:()=>void(this.sessionStartStdout=``),permissionMode:this.permissionMode,transcriptPath:this.transcriptPath,maxTurns:this.maxTurns,onTextDelta:this.onTextDeltaCallback,onContextUpdate:this.onContextUpdateCallback,onToolExecution:this.onToolExecutionCallback,emitProviderCallCompleted:t=>this.eventService.emit(e.PROVIDER_CALL_EVENTS.COMPLETED,{timestamp:new Date,...t},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),emitProviderFallback:t=>this.eventService.emit(e.PROVIDER_FALLBACK_EVENTS.SWITCHED,{timestamp:new Date,fromProvider:t.from.provider,fromModel:t.from.model,toProvider:t.to.provider,toModel:t.to.model,reason:t.reason},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),knownToolNames:this.toolSchemas.map(e=>e.name)}}};function E(e,t){return e.length===0?t:`${e}.${t}`}function D(e,t){return`${e}[${t}]`}function O(e,t,n){e.push({path:t,message:n})}function k(e){if(e===null)return`null`;if(Array.isArray(e))return`an array`;if(e instanceof Date)return`a Date`;switch(typeof e){case`undefined`:return`nothing`;case`string`:return`a string`;case`number`:return`a number`;case`boolean`:return`a boolean`;case`object`:return`an object`;default:return`a ${typeof e}`}}function A(e,t,n){n!==void 0&&(e[t]=n)}function j(e,t,n,r){if(e!==void 0)return r(e,t,n)}function M(e,t,n){if(typeof e==`string`)return e;O(n,t,`expected a string, received ${k(e)}`)}function N(e,t,n){if(typeof e==`number`&&Number.isFinite(e))return e;O(n,t,`expected a finite number, received ${k(e)}`)}function P(e,t,n){if(typeof e==`number`&&Number.isInteger(e))return e;O(n,t,`expected an integer, received ${k(e)}`)}function F(e,t,n){if(typeof e==`boolean`)return e;O(n,t,`expected a boolean, received ${k(e)}`)}function I(e,t,n,r){if(typeof e==`string`&&t.includes(e))return e;O(r,n,`expected one of ${t.join(` | `)}, received ${k(e)}`)}function L(e,t,n){if(typeof e!=`string`){O(n,t,`expected an ISO-8601 timestamp string, received ${k(e)}`);return}if(Number.isNaN(Date.parse(e))){O(n,t,`expected a timestamp a date can be parsed from`);return}return e}function bt(e,t,n){if(e instanceof Date){if(Number.isNaN(e.getTime())){O(n,t,`expected a valid Date, received an invalid one`);return}return e}if(typeof e==`string`&&!Number.isNaN(Date.parse(e)))return new Date(e);O(n,t,`expected a Date or an ISO-8601 timestamp string, received ${k(e)}`)}function R(e,t,n,r){if(!Array.isArray(e)){O(n,t,`expected an array, received ${k(e)}`);return}let i=[];return e.forEach((e,a)=>{let o=r(e,D(t,a),n);o!==void 0&&i.push(o)}),i}function xt(e,t,n){return R(e,t,n,M)}function z(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){O(n,t,`expected an object, received ${k(e)}`);return}let i=e,a=new Set(r);for(let e of Object.keys(i))a.has(e)||O(n,E(t,e),`unknown key; the record contract does not declare it`);return i}function B(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){O(n,t,`expected an object, received ${k(e)}`);return}let i={};for(let[a,o]of Object.entries(e)){let e=r(o,E(t,a),n);e!==void 0&&(i[a]=e)}return i}function St(e,t,n){if(e===null||e instanceof Date||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e)){let r=[];return e.forEach((e,i)=>{let a=St(e,D(t,i),n);a!==void 0&&r.push(a)}),r}if(typeof e==`object`)return B(e,t,n,St);O(n,t,`expected a JSON-compatible value, received ${k(e)}`)}function Ct(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;O(n,t,`expected a string, number or boolean, received ${k(e)}`)}const wt=[`complete`,`interrupted`],Tt=[`id`,`timestamp`,`state`,`metadata`,`role`,`content`,`parts`],Et={user:[...Tt,`name`],assistant:[...Tt,`toolCalls`],system:[...Tt,`name`],tool:[...Tt,`toolCallId`,`name`]};function Dt(e,t,n){if(e instanceof Date||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e)){if(e.every(e=>typeof e==`string`)||e.every(e=>typeof e==`number`))return e;O(n,t,`expected an array of only strings or only numbers`);return}if(typeof e==`object`&&e){let r={};for(let[i,a]of Object.entries(e)){if(typeof a!=`number`){O(n,E(t,i),`expected a number, received ${k(a)}`);continue}r[i]=a}return r}O(n,t,`expected a metadata value, received ${k(e)}`)}function Ot(e,t,n){return B(e,t,n,Dt)}function kt(e,t,n){let r=I(e?.type,[`text`,`image_inline`,`image_uri`,`audio_inline`,`resource_link`,`resource_embedded`],E(t,`type`),n);if(r===void 0)return;if(r===`text`){let r=z(e,t,n,[`type`,`text`]);if(r===void 0)return;let i=M(r.text,E(t,`text`),n);return i===void 0?void 0:{type:`text`,text:i}}if(r===`image_inline`||r===`audio_inline`){let i=z(e,t,n,[`type`,`mimeType`,`data`]);if(i===void 0)return;let a=M(i.mimeType,E(t,`mimeType`),n),o=M(i.data,E(t,`data`),n);return a===void 0||o===void 0?void 0:{type:r,mimeType:a,data:o}}if(r===`resource_link`){let i=z(e,t,n,[`type`,`uri`,`name`,`mimeType`,`title`,`description`,`size`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n),o=M(i.name,E(t,`name`),n);if(a===void 0||o===void 0)return;let s={type:r,uri:a,name:o};for(let e of[`mimeType`,`title`,`description`])A(s,e,j(i[e],E(t,e),n,M));let c=j(i.size,E(t,`size`),n,N);return c!==void 0&&(!Number.isSafeInteger(c)||c<0)&&O(n,E(t,`size`),`expected a nonnegative safe integer`),A(s,`size`,c),s}if(r===`resource_embedded`){let i=z(e,t,n,[`type`,`uri`,`mimeType`,`text`,`blob`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n),o=j(i.mimeType,E(t,`mimeType`),n,M);if(a===void 0)return;let s={type:r,uri:a,...o===void 0?{}:{mimeType:o}};if(i.text!==void 0&&i.blob===void 0){let e=M(i.text,E(t,`text`),n);return e===void 0?void 0:{...s,text:e}}if(i.blob!==void 0&&i.text===void 0){let e=M(i.blob,E(t,`blob`),n);return e===void 0?void 0:{...s,blob:e}}O(n,t,`expected exactly one text or blob payload`);return}let i=z(e,t,n,[`type`,`uri`,`mimeType`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n);if(a===void 0)return;let o={type:`image_uri`,uri:a};return A(o,`mimeType`,j(i.mimeType,E(t,`mimeType`),n,M)),o}function At(e,t,n){let r=z(e,t,n,[`id`,`type`,`function`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=I(r.type,[`function`],E(t,`type`),n),o=E(t,`function`),s=z(r.function,o,n,[`name`,`arguments`]),c=s===void 0?void 0:M(s.name,E(o,`name`),n),l=s===void 0?void 0:M(s.arguments,E(o,`arguments`),n);if(i!==void 0&&a!==void 0&&c!==void 0&&l!==void 0)return{id:i,type:a,function:{name:c,arguments:l}}}function jt(e,t,n){let r=M(e.id,E(t,`id`),n),i=bt(e.timestamp,E(t,`timestamp`),n),a=I(e.state,wt,E(t,`state`),n);if(r!==void 0&&i!==void 0&&a!==void 0)return{id:r,timestamp:i,state:a}}function Mt(e,t,n,r){A(e,`metadata`,j(t.metadata,E(n,`metadata`),r,Ot)),A(e,`parts`,j(t.parts,E(n,`parts`),r,(e,t,n)=>R(e,t,n,kt)))}function V(e,t,n){let r=I(e?.role,[`user`,`assistant`,`system`,`tool`],E(t,`role`),n);if(r===void 0)return;let i=z(e,t,n,Et[r]);if(i===void 0)return;let a=jt(i,t,n);if(a===void 0)return;let o=E(t,`content`);if(r===`assistant`){let e=i.content===null?null:M(i.content,o,n);if(e===void 0)return;let s={...a,role:r,content:e};return Mt(s,i,t,n),A(s,`toolCalls`,j(i.toolCalls,E(t,`toolCalls`),n,(e,t,n)=>R(e,t,n,At))),s}let s=M(i.content,o,n);if(s===void 0)return;if(r===`tool`){let e=M(i.toolCallId,E(t,`toolCallId`),n);if(e===void 0)return;let o={...a,role:r,content:s,toolCallId:e};return Mt(o,i,t,n),A(o,`name`,j(i.name,E(t,`name`),n,M)),o}let c={...a,role:r,content:s};return Mt(c,i,t,n),A(c,`name`,j(i.name,E(t,`name`),n,M)),c}function Nt(e,t,n){let r=z(e,t,n,[`id`,`timestamp`,`category`,`type`,`data`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=bt(r.timestamp,E(t,`timestamp`),n),o=M(r.category,E(t,`category`),n),s=M(r.type,E(t,`type`),n);if(i===void 0||a===void 0||o===void 0||s===void 0)return;let c={id:i,timestamp:a,category:o,type:s};return A(c,`data`,j(r.data,E(t,`data`),n,St)),c}const Pt=[`agent`,`process`,`scheduled`,`tool-invocation`],Ft=[`foreground`,`background`],It=[`none`,`worktree`],Lt=[`queued`,`running`,`waiting_permission`,`sleeping`,`paused`,`completed`,`failed`,`cancelled`],Rt=[`idle`,`max_runtime`,`output_limit`,`repetition`,`stale_worker`],zt=[`validation`,`capacity`,`permission`,`timeout`,`runner`,`crash`,`provider`,`process`],Bt=[`denied-by-person`,`no-approver`,`approver-error`,`cancelled`];function Vt(e,t,n){return B(e,t,n,Ct)}function Ht(e,t,n){return B(e,t,n,M)}function Ut(e,t,n){let r=z(e,t,n,[`category`,`message`,`recoverable`]);if(r===void 0)return;let i=I(r.category,zt,E(t,`category`),n),a=M(r.message,E(t,`message`),n),o=F(r.recoverable,E(t,`recoverable`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{category:i,message:a,recoverable:o}}function Wt(e,t,n){let r=z(e,t,n,[`promptTokens`,`completionTokens`,`totalTokens`]);if(r===void 0)return;let i=P(r.promptTokens,E(t,`promptTokens`),n),a=P(r.completionTokens,E(t,`completionTokens`),n),o=P(r.totalTokens,E(t,`totalTokens`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{promptTokens:i,completionTokens:a,totalTokens:o}}function Gt(e,t,n){let r=z(e,t,n,[`total`,`byReason`]);if(r===void 0)return;let i=P(r.total,E(t,`total`),n),a=E(t,`byReason`),o=z(r.byReason,a,n,Bt);if(i===void 0||o===void 0)return;let s={},c=!0;for(let e of Bt){let t=P(o[e],E(a,e),n);if(t===void 0){c=!1;continue}s[e]=t}if(c)return{total:i,byReason:s}}function Kt(e,t,n){let r=z(e,t,n,[`taskId`,`kind`,`output`,`exitCode`,`signalCode`,`metadata`,`usage`,`deniedToolCalls`]);if(r===void 0)return;let i=M(r.taskId,E(t,`taskId`),n),a=I(r.kind,Pt,E(t,`kind`),n),o=M(r.output,E(t,`output`),n);if(i===void 0||a===void 0||o===void 0)return;let s=j(r.exitCode,E(t,`exitCode`),n,P),c=j(r.signalCode,E(t,`signalCode`),n,M),l=j(r.metadata,E(t,`metadata`),n,Vt),u=j(r.usage,E(t,`usage`),n,Wt),d=j(r.deniedToolCalls,E(t,`deniedToolCalls`),n,Gt);switch(a!==`process`&&s!==void 0&&O(n,E(t,`exitCode`),`must not be set for a '${a}' result`),a!==`process`&&c!==void 0&&O(n,E(t,`signalCode`),`must not be set for a '${a}' result`),a!==`agent`&&u!==void 0&&O(n,E(t,`usage`),`must not be set for a '${a}' result`),a!==`agent`&&d!==void 0&&O(n,E(t,`deniedToolCalls`),`must not be set for a '${a}' result`),a){case`process`:{let e={taskId:i,kind:a,output:o};return A(e,`exitCode`,s),A(e,`signalCode`,c),A(e,`metadata`,l),e}case`agent`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),A(e,`usage`,u),A(e,`deniedToolCalls`,d),e}case`scheduled`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),e}case`tool-invocation`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),e}}}function qt(e,t,n){let r=z(e,t,n,[`cronExpression`,`agentInstruction`,`command`,`shell`,`env`]);if(r===void 0)return;let i=M(r.cronExpression,E(t,`cronExpression`),n);if(i===void 0)return;let a={cronExpression:i};for(let e of[`agentInstruction`,`command`,`shell`])A(a,e,j(r[e],E(t,e),n,M));return A(a,`env`,j(r.env,E(t,`env`),n,Ht)),a}const Jt=[`detached`,`wait_all`,`wait_any`,`manual`],Yt=[`running`,`completed`],Xt=[`background_job_group_created`,`background_job_group_updated`,`background_job_group_completed`];function Zt(e,t,n){let r=z(e,t,n,[`taskId`,`label`,`status`,`summary`,`outputRef`,`error`,`startedAt`,`completedAt`]);if(r===void 0)return;let i=M(r.taskId,E(t,`taskId`),n),a=M(r.label,E(t,`label`),n),o=I(r.status,Lt,E(t,`status`),n);if(i===void 0||a===void 0||o===void 0)return;let s={taskId:i,label:a,status:o};for(let e of[`summary`,`outputRef`])A(s,e,j(r[e],E(t,e),n,M));for(let e of[`startedAt`,`completedAt`])A(s,e,j(r[e],E(t,e),n,L));return A(s,`error`,j(r.error,E(t,`error`),n,Ut)),s}function Qt(e,t,n){let r=z(e,t,n,[`id`,`parentSessionId`,`waitPolicy`,`taskIds`,`status`,`createdAt`,`updatedAt`,`label`,`completedAt`,`results`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.parentSessionId,E(t,`parentSessionId`),n),o=I(r.waitPolicy,Jt,E(t,`waitPolicy`),n),s=xt(r.taskIds,E(t,`taskIds`),n),c=I(r.status,Yt,E(t,`status`),n),l=L(r.createdAt,E(t,`createdAt`),n),u=L(r.updatedAt,E(t,`updatedAt`),n),d=R(r.results,E(t,`results`),n,Zt);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0)return;let f={id:i,parentSessionId:a,waitPolicy:o,taskIds:s,status:c,createdAt:l,updatedAt:u,results:d};return A(f,`label`,j(r.label,E(t,`label`),n,M)),A(f,`completedAt`,j(r.completedAt,E(t,`completedAt`),n,L)),f}function $t(e,t,n){let r=I(e?.type,Xt,E(t,`type`),n);if(r===void 0)return;let i=z(e,t,n,[`type`,`group`]);if(i===void 0)return;let a=Qt(i.group,E(t,`group`),n);return a===void 0?void 0:{type:r,group:a}}const en=[`parentTaskId`,`currentAction`,`logPath`,`transcriptPath`],tn=[`agentType`,`resumeSessionId`,`promptPreview`,`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`],nn=[`commandPreview`],rn=[`startedAt`,`lastActivityAt`,`completedAt`],an=[`id`,`kind`,`label`,`status`,`mode`,`parentSessionId`,`depth`,`cwd`,`pid`,`updatedAt`,`isolation`,`unread`,`result`,`error`,`timeoutReason`,`schedule`,`nextFireAt`,`metadata`,...en,...tn,...nn,...rn];function on(e,t,n){let r=z(e,t,n,an);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=I(r.kind,Pt,E(t,`kind`),n),o=M(r.label,E(t,`label`),n),s=I(r.status,Lt,E(t,`status`),n),c=I(r.mode,Ft,E(t,`mode`),n),l=M(r.parentSessionId,E(t,`parentSessionId`),n),u=P(r.depth,E(t,`depth`),n),d=M(r.cwd,E(t,`cwd`),n),f=L(r.updatedAt,E(t,`updatedAt`),n),p=F(r.unread,E(t,`unread`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0||f===void 0||p===void 0)return;let m={id:i,label:o,status:s,mode:c,parentSessionId:l,depth:u,cwd:d,updatedAt:f,unread:p};for(let e of en)A(m,e,j(r[e],E(t,e),n,M));for(let e of rn)A(m,e,j(r[e],E(t,e),n,L));A(m,`pid`,j(r.pid,E(t,`pid`),n,P)),A(m,`timeoutReason`,j(r.timeoutReason,E(t,`timeoutReason`),n,(e,t,n)=>I(e,Rt,t,n))),A(m,`metadata`,j(r.metadata,E(t,`metadata`),n,Vt)),A(m,`error`,j(r.error,E(t,`error`),n,Ut));let h=j(r.result,E(t,`result`),n,Kt);h!==void 0&&(h.taskId!==i&&O(n,E(E(t,`result`),`taskId`),`must match the task ID`),h.kind!==a&&O(n,E(E(t,`result`),`kind`),`must match the task kind`));let g=j(r.agentType,E(t,`agentType`),n,M),_=j(r.resumeSessionId,E(t,`resumeSessionId`),n,M),v=j(r.promptPreview,E(t,`promptPreview`),n,M),y=j(r.isolation,E(t,`isolation`),n,(e,t,n)=>I(e,It,t,n)),b={};for(let e of[`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`])b[e]=j(r[e],E(t,e),n,M);for(let e of tn){let r=e===`agentType`?g:e===`resumeSessionId`?_:e===`promptPreview`?v:b[e];a!==`agent`&&r!==void 0&&O(n,E(t,e),`must not be set for a '${a}' task`)}a!==`agent`&&y!==void 0&&O(n,E(t,`isolation`),`must not be set for a '${a}' task`);let x=j(r.commandPreview,E(t,`commandPreview`),n,M);a===`agent`&&x!==void 0&&O(n,E(t,`commandPreview`),`must not be set for a '${a}' task`);let S=j(r.schedule,E(t,`schedule`),n,qt),ee=j(r.nextFireAt,E(t,`nextFireAt`),n,L);switch(a!==`scheduled`&&S!==void 0&&O(n,E(t,`schedule`),`must not be set for a '${a}' task`),a!==`scheduled`&&ee!==void 0&&O(n,E(t,`nextFireAt`),`must not be set for a '${a}' task`),a){case`agent`:{let e=h?.kind===`agent`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`agentType`,g),A(t,`resumeSessionId`,_),A(t,`promptPreview`,v),A(t,`isolation`,y),A(t,`worktreePath`,b.worktreePath),A(t,`branchName`,b.branchName),A(t,`worktreeStatus`,b.worktreeStatus),A(t,`worktreeNextAction`,b.worktreeNextAction),A(t,`worktreeBaseRevision`,b.worktreeBaseRevision),A(t,`parentWorktreeStatus`,b.parentWorktreeStatus),t}case`process`:{let e=h?.kind===`process`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),t}case`tool-invocation`:{let e=h?.kind===`tool-invocation`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),t}case`scheduled`:{let e=h?.kind===`scheduled`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),A(t,`schedule`,S),A(t,`nextFireAt`,ee),t}}}const sn=[`background_task_created`,`background_task_started`,`background_task_updated`,`background_task_completed`,`background_task_failed`,`background_task_cancelled`,`background_task_text_delta`,`background_task_tool_start`,`background_task_tool_end`,`background_task_permission_request`,`background_task_closed`,`background_task_waking`];function H(e,t,n){return M(e.taskId,E(t,`taskId`),n)}function cn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`delta`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.delta,E(t,`delta`),n);if(i!==void 0&&a!==void 0)return{type:`background_task_text_delta`,taskId:i,delta:a}}function ln(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`toolName`,`firstArg`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.toolName,E(t,`toolName`),n);if(i===void 0||a===void 0)return;let o={type:`background_task_tool_start`,taskId:i,toolName:a};return A(o,`firstArg`,j(r.firstArg,E(t,`firstArg`),n,M)),o}function un(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`toolName`,`success`,`error`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.toolName,E(t,`toolName`),n),o=F(r.success,E(t,`success`),n);if(i===void 0||a===void 0||o===void 0)return;let s={type:`background_task_tool_end`,taskId:i,toolName:a,success:o};return A(s,`error`,j(r.error,E(t,`error`),n,M)),s}function dn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`requestId`,`toolName`,`toolArgs`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.requestId,E(t,`requestId`),n),o=M(r.toolName,E(t,`toolName`),n),s=Vt(r.toolArgs,E(t,`toolArgs`),n);if(i!==void 0&&a!==void 0&&o!==void 0&&s!==void 0)return{type:`background_task_permission_request`,taskId:i,requestId:a,toolName:o,toolArgs:s}}function fn(e,t,n){let r=z(e,t,n,[`type`,`taskId`]);if(r===void 0)return;let i=H(r,t,n);return i===void 0?void 0:{type:`background_task_closed`,taskId:i}}function pn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`instruction`]);if(r===void 0)return;let i=H(r,t,n);if(i===void 0)return;let a={type:`background_task_waking`,taskId:i};return A(a,`instruction`,j(r.instruction,E(t,`instruction`),n,M)),a}function mn(e,t,n,r){let i=z(t,n,r,[`type`,`task`]);if(i===void 0)return;let a=on(i.task,E(n,`task`),r);if(a!==void 0)return{type:e,task:a}}const hn={background_task_text_delta:cn,background_task_tool_start:ln,background_task_tool_end:un,background_task_permission_request:dn,background_task_closed:fn,background_task_waking:pn};function gn(e,t,n){let r=I(e?.type,sn,E(t,`type`),n);if(r===void 0)return;let i=hn[r];return i===void 0?mn(r,e,t,n):i(e,t,n)}const _n=[`skill`,`plugin`],vn=[`user-slash`,`model-tool`],yn=[`inject`,`fork`],bn=[`started`,`completed`,`failed`],xn=[`memory_candidate_extracted`,`memory_candidate_queued`,`memory_candidate_saved`,`memory_candidate_skipped`,`memory_candidate_approved`,`memory_candidate_rejected`,`memory_retrieved`],Sn=[`manual`,`prompt-reference`,`system`],Cn=[`active`,`observed`];function wn(e,t,n){let r=z(e,t,n,[`type`,`skillName`,`source`,`invocation`,`mode`,`status`,`timestamp`,`qualifiedName`,`error`]);if(r===void 0)return;let i=I(r.type,[`skill-activation`],E(t,`type`),n),a=M(r.skillName,E(t,`skillName`),n),o=I(r.source,_n,E(t,`source`),n),s=I(r.invocation,vn,E(t,`invocation`),n),c=I(r.mode,yn,E(t,`mode`),n),l=I(r.status,bn,E(t,`status`),n),u=L(r.timestamp,E(t,`timestamp`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0)return;let d=j(r.qualifiedName,E(t,`qualifiedName`),n,M),f=j(r.error,E(t,`error`),n,M);return{type:i,skillName:a,source:o,invocation:s,mode:c,status:l,timestamp:u,...d===void 0?{}:{qualifiedName:d},...f===void 0?{}:{error:f}}}function Tn(e,t,n){let r=z(e,t,n,[`topic`,`path`,`score`,`truncated`]);if(r===void 0)return;let i=M(r.topic,E(t,`topic`),n),a=M(r.path,E(t,`path`),n),o=N(r.score,E(t,`score`),n),s=F(r.truncated,E(t,`truncated`),n);if(i!==void 0&&a!==void 0&&o!==void 0&&s!==void 0)return{topic:i,path:a,score:o,truncated:s}}function En(e,t,n){let r=z(e,t,n,[`type`,`at`,`candidateId`,`topic`,`reason`,`data`]);if(r===void 0)return;let i=I(r.type,xn,E(t,`type`),n),a=L(r.at,E(t,`at`),n);if(i===void 0||a===void 0)return;let o={type:i,at:a};for(let e of[`candidateId`,`topic`,`reason`])A(o,e,j(r[e],E(t,e),n,M));return A(o,`data`,j(r.data,E(t,`data`),n,(e,t,n)=>B(e,t,n,St))),o}function Dn(e,t,n){let r=z(e,t,n,[`id`,`sourcePath`,`relativePath`,`originalReference`,`loadType`,`status`,`byteLength`,`loadedAt`,`lastUsedAt`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.sourcePath,E(t,`sourcePath`),n),o=M(r.relativePath,E(t,`relativePath`),n),s=M(r.originalReference,E(t,`originalReference`),n),c=I(r.loadType,Sn,E(t,`loadType`),n),l=I(r.status,Cn,E(t,`status`),n),u=P(r.byteLength,E(t,`byteLength`),n),d=L(r.loadedAt,E(t,`loadedAt`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0)return;let f={id:i,sourcePath:a,relativePath:o,originalReference:s,loadType:c,status:l,byteLength:u,loadedAt:d};return A(f,`lastUsedAt`,j(r.lastUsedAt,E(t,`lastUsedAt`),n,L)),f}const On=[`active`,`satisfied`,`stopped`],kn=[`satisfied`,`max-iterations`,`cancelled`,`no-progress`],An=[`continue`,`satisfied`],jn=[`pending`,`in-progress`,`done`],Mn=[`planning`,`awaiting-approval`,`executing`,`completed`];function Nn(e,t,n){let r=z(e,t,n,[`iteration`,`signal`,`reason`]);if(r===void 0)return;let i=P(r.iteration,E(t,`iteration`),n),a=I(r.signal,An,E(t,`signal`),n),o=M(r.reason,E(t,`reason`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{iteration:i,signal:a,reason:o}}function Pn(e,t,n){let r=z(e,t,n,[`id`,`objective`,`status`,`stopReason`,`iterations`,`maxIterations`,`startedAt`,`progress`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.objective,E(t,`objective`),n),o=I(r.status,On,E(t,`status`),n),s=P(r.iterations,E(t,`iterations`),n),c=P(r.maxIterations,E(t,`maxIterations`),n),l=L(r.startedAt,E(t,`startedAt`),n),u=R(r.progress,E(t,`progress`),n,Nn);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0)return;let d={id:i,objective:a,status:o,iterations:s,maxIterations:c,startedAt:l,progress:u};return A(d,`stopReason`,j(r.stopReason,E(t,`stopReason`),n,(e,t,n)=>I(e,kn,t,n))),d}function Fn(e,t,n){let r=z(e,t,n,[`id`,`description`,`status`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.description,E(t,`description`),n),o=I(r.status,jn,E(t,`status`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{id:i,description:a,status:o}}function In(e,t,n){let r=z(e,t,n,[`id`,`objective`,`steps`,`phase`,`createdAt`,`approvedAt`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.objective,E(t,`objective`),n),o=R(r.steps,E(t,`steps`),n,Fn),s=I(r.phase,Mn,E(t,`phase`),n),c=L(r.createdAt,E(t,`createdAt`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0)return;let l={id:i,objective:a,steps:o,phase:s,createdAt:c};return A(l,`approvedAt`,j(r.approvedAt,E(t,`approvedAt`),n,L)),l}function Ln(e,t,n){let r=z(e,t,n,[`branchId`,`checkpointId`]);if(r===void 0)return;let i=M(r.branchId,E(t,`branchId`),n),a=M(r.checkpointId,E(t,`checkpointId`),n);if(i!==void 0&&a!==void 0)return{branchId:i,checkpointId:a}}const Rn=[`waiting`,`pending`,`running`,`stopped`,`expired`],zn=[`loopId`,`instruction`,`useDefaultPrompt`,`createdAt`,`expiresAt`,`revision`,`generation`,`phase`,`nextAllowedAt`,`delaySeconds`,`reason`,`fallbackUsed`,`terminalReason`];function Bn(e,t,n){let r=z(e,t,n,zn);if(!r)return;let i=M(r.loopId,E(t,`loopId`),n),a=M(r.instruction,E(t,`instruction`),n),o=j(r.useDefaultPrompt,E(t,`useDefaultPrompt`),n,F),s=L(r.createdAt,E(t,`createdAt`),n),c=L(r.expiresAt,E(t,`expiresAt`),n),l=P(r.revision,E(t,`revision`),n),u=P(r.generation,E(t,`generation`),n),d=I(r.phase,Rn,E(t,`phase`),n),f=F(r.fallbackUsed,E(t,`fallbackUsed`),n),p=j(r.nextAllowedAt,E(t,`nextAllowedAt`),n,L),m=j(r.delaySeconds,E(t,`delaySeconds`),n,P),h=j(r.reason,E(t,`reason`),n,M),g=j(r.terminalReason,E(t,`terminalReason`),n,M);if(l!==void 0&&(!Number.isSafeInteger(l)||l<0)&&O(n,E(t,`revision`),`expected a non-negative safe integer`),u!==void 0&&(!Number.isSafeInteger(u)||u<0)&&O(n,E(t,`generation`),`expected a non-negative safe integer`),m!==void 0&&(m<60||m>3600)&&O(n,E(t,`delaySeconds`),`expected a delay between 60 and 3600 seconds`),i!==void 0&&!i.trim()&&O(n,E(t,`loopId`),`expected a non-empty loop ID`),a!==void 0&&!a.trim()&&O(n,E(t,`instruction`),`expected a non-empty instruction`),d===`waiting`&&p===void 0&&r.nextAllowedAt===void 0&&O(n,E(t,`nextAllowedAt`),`waiting loop needs a next wake time`),i===void 0||a===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0||f===void 0)return;let _={loopId:i,instruction:a,createdAt:s,expiresAt:c,revision:l,generation:u,phase:d,fallbackUsed:f};return A(_,`useDefaultPrompt`,o),A(_,`nextAllowedAt`,p),A(_,`delaySeconds`,m),A(_,`reason`,h),A(_,`terminalReason`,g),_}const Vn=[`string`,`number`,`integer`,`boolean`,`array`,`object`,`null`],Hn=[`type`,`description`,`enum`,`items`,`properties`,`required`,`anyOf`,`additionalProperties`,`minimum`,`maximum`,`pattern`,`format`,`default`];function Un(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;O(n,t,`expected a string, number or boolean, received ${k(e)}`)}function Wn(e,t,n){return e===null?null:Un(e,t,n)}function Gn(e,t,n){return typeof e==`boolean`?e:U(e,t,n)}function U(e,t,n){let r=z(e,t,n,Hn);if(r===void 0)return;let i={};return A(i,`type`,j(r.type,E(t,`type`),n,(e,t,n)=>I(e,Vn,t,n))),A(i,`description`,j(r.description,E(t,`description`),n,M)),A(i,`enum`,j(r.enum,E(t,`enum`),n,(e,t,n)=>R(e,t,n,Un))),A(i,`items`,j(r.items,E(t,`items`),n,U)),A(i,`properties`,j(r.properties,E(t,`properties`),n,(e,t,n)=>B(e,t,n,U))),A(i,`required`,j(r.required,E(t,`required`),n,xt)),A(i,`anyOf`,j(r.anyOf,E(t,`anyOf`),n,(e,t,n)=>R(e,t,n,U))),A(i,`additionalProperties`,j(r.additionalProperties,E(t,`additionalProperties`),n,Gn)),A(i,`minimum`,j(r.minimum,E(t,`minimum`),n,N)),A(i,`maximum`,j(r.maximum,E(t,`maximum`),n,N)),A(i,`pattern`,j(r.pattern,E(t,`pattern`),n,M)),A(i,`format`,j(r.format,E(t,`format`),n,M)),A(i,`default`,j(r.default,E(t,`default`),n,Wn)),i}function Kn(e,t,n){let r=U(e,t,n);if(r!==void 0){if(r.type!==`object`){O(n,E(t,`type`),`expected the root parameter schema to be type 'object'`);return}if(r.properties===void 0){O(n,E(t,`properties`),`expected the root parameter schema to name its properties`);return}return{...r,type:`object`,properties:r.properties}}}function qn(e,t,n){let r=z(e,t,n,[`name`,`description`,`parameters`,`outputSchema`]);if(r===void 0)return;let i=M(r.name,E(t,`name`),n),a=M(r.description,E(t,`description`),n),o=Kn(r.parameters,E(t,`parameters`),n);if(i===void 0||a===void 0||o===void 0)return;let s={name:i,description:a,parameters:o};return A(s,`outputSchema`,j(r.outputSchema,E(t,`outputSchema`),n,U)),s}function W(e,t,n,r,i){return j(e[t],E(n,t),r,(e,t,n)=>R(e,t,n,i))}function Jn(e,t,n,r){for(let i of[`name`,`systemPrompt`,`sandboxSnapshotId`])A(e,i,j(t[i],E(n,i),r,M));A(e,`history`,W(t,`history`,n,r,Nt)),A(e,`toolSchemas`,W(t,`toolSchemas`,n,r,qn)),A(e,`backgroundTasks`,W(t,`backgroundTasks`,n,r,on)),A(e,`backgroundTaskEvents`,W(t,`backgroundTaskEvents`,n,r,gn)),A(e,`backgroundJobGroups`,W(t,`backgroundJobGroups`,n,r,Qt)),A(e,`backgroundJobGroupEvents`,W(t,`backgroundJobGroupEvents`,n,r,$t)),A(e,`sessionLoops`,W(t,`sessionLoops`,n,r,Bn)),A(e,`skillActivationEvents`,W(t,`skillActivationEvents`,n,r,wn)),A(e,`memoryEvents`,W(t,`memoryEvents`,n,r,En)),A(e,`usedMemoryReferences`,W(t,`usedMemoryReferences`,n,r,Tn)),A(e,`contextReferences`,W(t,`contextReferences`,n,r,Dn)),A(e,`goal`,j(t.goal,E(n,`goal`),r,Pn)),A(e,`plan`,j(t.plan,E(n,`plan`),r,In)),A(e,`activeBranch`,j(t.activeBranch,E(n,`activeBranch`),r,Ln))}const Yn=[`id`,`name`,`cwd`,`createdAt`,`updatedAt`,`messages`,`history`,`systemPrompt`,`toolSchemas`,`backgroundTasks`,`backgroundTaskEvents`,`backgroundJobGroups`,`backgroundJobGroupEvents`,`sessionLoops`,`skillActivationEvents`,`memoryEvents`,`usedMemoryReferences`,`contextReferences`,`sandboxSnapshotId`,`goal`,`plan`,`activeBranch`];function Xn(e){let t=[],n=er(e,``,t);return n===void 0||t.length>0?{status:`corrupt`,issues:t}:{status:`valid`,record:n}}function Zn(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.cwd==`string`)return t.cwd;let n=t.record;if(typeof n==`object`&&n){let e=n.cwd;if(typeof e==`string`)return e}}function Qn(e){return e===void 0?{}:{cwd:e}}function $n(e){let t=[],n=z(e,``,t,[`schemaVersion`,`record`]);if(n===void 0)return{status:`corrupt`,issues:t,...Qn(Zn(e))};let r=n.schemaVersion;if(typeof r!=`number`||!Number.isFinite(r))return{status:`unsupported`,schemaVersion:void 0,...Qn(Zn(e))};if(r!==1)return{status:`unsupported`,schemaVersion:r,...Qn(Zn(e))};let i=er(n.record,`record`,t);return i===void 0||t.length>0?{status:`corrupt`,issues:t,...Qn(Zn(e))}:{status:`valid`,record:i}}function er(e,t,n){let r=z(e,t,n,Yn);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.cwd,E(t,`cwd`),n),o=L(r.createdAt,E(t,`createdAt`),n),s=L(r.updatedAt,E(t,`updatedAt`),n),c=R(r.messages,E(t,`messages`),n,V);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0)return;let l={id:i,cwd:a,createdAt:o,updatedAt:s,messages:c};return Jn(l,r,t,n),l}function tr(e){try{return JSON.parse(e)}catch{throw Error(`Invalid session artifact: the bytes are not JSON.`)}}function nr(e,t={}){let n={schemaVersion:1,record:t.redact?t.redact(e):e};return JSON.stringify(n,null,2)}function rr(e){let t=$n(tr(e));if(t.status===`unsupported`)throw Error(`Unsupported session artifact schema version ${t.schemaVersion??`(absent or not a number)`} (this build reads 1).`);if(t.status===`corrupt`){let e=t.issues.slice(0,5),n=e.map(e=>`${e.path===``?`(root)`:e.path}: ${e.message}`).join(`; `),r=t.issues.length>e.length?` (+${t.issues.length-e.length} more)`:``;throw Error(`Invalid session artifact: ${n}${r}`)}return t.record}const ir=/^(api[-_]?key|authorization|access[-_]?token|refresh[-_]?token|secret|password|x[-_]?api[-_]?key)$/i;function ar(e){return ir.test(e)}function or(e,t,n){if(e!==void 0&&ar(e))return n;if(Array.isArray(t))return t.map(e=>or(void 0,e,n));if(typeof t==`object`&&t&&!(t instanceof Date)){let e=t,r={};for(let[t,i]of Object.entries(e))r[t]=or(t,i,n);return r}return t}function sr(e,t=`[REDACTED]`){return or(void 0,e,t)}const cr={sessionInit:`session_init`,sessionShutdown:`session_shutdown`,sessionShutdownStepError:`session_shutdown_step_error`,context:`context`,contextCompact:`context_compact`,error:`error`,historyMutation:`history_mutation`,providerRequest:`provider_request`,providerNativeRawPayload:`provider_native_raw_payload`,providerStreamRawDelta:`provider_stream_raw_delta`,providerResponseRaw:`provider_response_raw`,providerResponseNormalized:`provider_response_normalized`,structuredOutputTransport:`structured_output_transport`,providerFallback:`provider_fallback`,assistantMessageCommitted:`assistant_message_committed`,toolExecutionRequest:`tool_execution_request`,toolExecutionResult:`tool_execution_result`,toolBatchStarted:`tool_batch_started`,toolMessageCommitted:`tool_message_committed`,backgroundTaskEvent:`background_task_event`,backgroundJobGroupEvent:`background_job_group_event`,memoryEvent:`memory_event`,user:`user`,preRun:`pre_run`,textDelta:`text_delta`,assistant:`assistant`,toolCall:`tool_call`,toolResult:`tool_result`,toolBlocked:`tool_blocked`,toolDenied:`tool_denied`,serverTool:`server_tool`};function lr(e,t){return e.event===t}function ur(e,t,n,r){let i={};for(let[a,o]of Object.entries(t))i[a]=dr(e,a,o,n,r);return i}function dr(e,t,n,r,i){if(ar(t))return r.redactedValue;if(n==null||typeof n==`string`||typeof n==`number`)return fr(e,n,r,i);if(typeof n==`boolean`)return n;if(n instanceof Date)return n.toISOString();if(Array.isArray(n))return fr(e,n.map(n=>dr(e,t,n,r,i)),r,i);if(typeof n==`object`){let t=n,a={};for(let[n,o]of Object.entries(t))a[n]=dr(e,n,o,r,i);return fr(e,a,r,i)}return String(n)}function fr(e,t,r,i){let a=JSON.stringify(t);if(a===void 0||Buffer.byteLength(a)<=r.externalPayloadThresholdBytes||i===void 0)return t;let o=(0,n.createHash)(`sha256`).update(a).digest(`hex`);return i.writeJson(e,o,a)}const pr=(0,e.createLogger)(`FileSessionLogger`),mr=new Set([`text_delta`]),hr=new Set;let gr=!1;function _r(e){hr.add(e),!gr&&(typeof process>`u`||typeof process.on!=`function`||(gr=!0,process.on(`exit`,()=>{for(let e of hr)e.flush()})))}var vr=class{sink;options;pending=new Map;pendingBytes=0;constructor(e,t={}){this.sink=e,this.options={externalPayloadThresholdBytes:t.externalPayloadThresholdBytes??32768,redactedValue:t.redactedValue??`[REDACTED]`}}log(e,t,n){if(He(e))try{let r=ur(e,n,this.options,this.sink.externalPayloadSink),i=JSON.stringify({...r,schemaVersion:1,timestamp:new Date().toISOString(),sessionId:e,event:t})+`
6
+ `)}`,metadata:{compactedToolReceipts:e}}}const Ie=(0,e.createLogger)(`SessionHistoryOps`);function Le(e,t){return{...e,...t}}async function Re(t,n,r){r?.throwIfAborted();let i=n.agent.getHistory(),a=i.filter(e=>e.role!==`system`);if(a.length===0)return;n.contextTracker.updateFromHistory(i);let o=n.contextTracker.getContextState(),s=Pe(i),c=await n.compactionOrchestrator.compact(n.aiProvider,a,t,r,n.trigger,n.hookTraceEnv,n.executionJournal);n.agent.clearHistory(),n.agent.injectMessage(`system`,n.systemMessage),n.agent.injectMessage(`assistant`,`[Context Summary]\n${c}`),s.length>0&&n.agent.injectRawMessage(Fe(s)),n.contextTracker.updateFromHistory(n.agent.getHistory());let l={session_id:n.sessionId,cwd:n.cwd,hook_event_name:`PostCompact`,trigger:n.trigger,compact_summary:c};(0,e.runHooks)(n.hooks,`PostCompact`,l,n.hookTypeExecutors,n.hookTraceEnv).catch(e=>Ie.warn(`hook failed`,{error:e}));let u=n.contextTracker.getContextState();n.log(`context_compact`,{trigger:n.trigger,before:o,after:u}),n.onCompactEventCallback?.({trigger:n.trigger,before:o,after:u}),n.onCompactCallback&&n.onCompactCallback(c)}function ze(e){let t=e.agent.getHistory(),n=new Date().toISOString(),r=e.sessionStore.load(e.sessionId);if(r.status!==`valid`&&r.status!==`missing`)return r;let i=r.status===`valid`?r.record:void 0,a={...i,id:e.sessionId,name:i?.name,cwd:e.cwd,createdAt:i?.createdAt??n,updatedAt:n,messages:t,history:e.getFullHistory(),systemPrompt:e.systemPrompt,toolSchemas:e.toolSchemas};return e.sessionStore.save(a),{status:`valid`,record:a}}const Be=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Ve(){return`session_${(0,n.randomUUID)()}`}function He(e){return e.length>0&&e.length<=128&&Be.test(e)}function Ue(e){if(!He(e))throw Error(`Invalid session id: ${JSON.stringify(e)}. A session id must be 1-128 characters of letters, digits, dot, underscore or hyphen, starting with a letter or digit.`)}const We=(0,e.createLogger)(`SessionLifecycle`);function Ge(e,t,n){e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>{n(`server_tool`,{tool:e,...t})})}function Ke(t,n,r,i,a,o,s){(0,e.runHooks)(r,`SessionStart`,{session_id:t,cwd:n,hook_event_name:`SessionStart`,...o!==void 0&&{permission_mode:o},...s!==void 0&&{transcript_path:s},env:{CLAUDE_PROJECT_DIR:n,CLAUDE_SESSION_ID:t}},i).then(e=>{e.stdout&&a(e.stdout)}).catch(e=>We.warn(`SessionStart hook failed`,{error:e}))}async function qe(t,n,r,i,a,o,s){await(0,e.runHooks)(i,`SessionEnd`,{session_id:t,cwd:n,hook_event_name:`SessionEnd`,reason:r,...o!==void 0&&{permission_mode:o},...s!==void 0&&{transcript_path:s},env:{CLAUDE_PROJECT_DIR:n,CLAUDE_SESSION_ID:t}},a)}const Je=`unknown_tool`;function Ye(e){return{knownToolNames:new Set(e.knownToolNames),unknownToolCallIds:new Set,pendingArgs:new Map,...e.onToolExecution&&{onToolExecution:e.onToolExecution}}}function Xe(e,t,n){if(e.onToolExecution){if(t===`tool_execution_request`){let t=T(n.toolCallId);t&&e.pendingArgs.set(t,$e(n.parameters)),Ze(e,n);return}t===`tool_execution_result`&&Qe(e,n)}}function Ze(e,t){let n=T(t.toolName),r=T(t.toolCallId);!n||!r||e.knownToolNames.has(n)||(e.unknownToolCallIds.add(r),e.onToolExecution?.({type:`start`,toolName:n,toolArgs:$e(t.parameters)}))}function Qe(e,t){let n=T(t.toolName),r=T(t.toolCallId);if(!n||!r)return;let i=et(t.metadata),a=e.pendingArgs.get(r);if(e.pendingArgs.delete(r),t.success===!1&&i?.dispatchStatus===`not-dispatched`){let o=T(i.toolProvenance);e.onToolExecution?.({type:`end`,toolName:n,executionId:r,toolArgs:a,success:!1,toolResultData:JSON.stringify({success:!1,error:t.error,metadata:i}),...o?{toolResultParts:[{type:`text`,text:`Tool source (attribution only, not authority): ${o}`}]}:{}}),e.unknownToolCallIds.delete(r);return}if(!(e.unknownToolCallIds.has(r)||i?.errorCode===Je))return;e.unknownToolCallIds.delete(r);let o=T(t.error)??`Tool "${n}" is not registered.`;e.onToolExecution?.({type:`end`,toolName:n,success:!1,toolResultData:JSON.stringify({success:!1,error:o,errorCode:Je,requestedTool:T(i?.requestedTool)??n,availableTools:tt(i?.availableTools)})})}function $e(e){let t=et(e);if(!t)return;let n={};for(let[e,r]of Object.entries(t))(typeof r==`string`||typeof r==`number`||typeof r==`boolean`||typeof r==`object`&&r)&&(n[e]=r);return n}function T(e){return typeof e==`string`&&e.length>0?e:void 0}function et(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function tt(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}const nt=(0,e.createLogger)(`SessionRunObservation`);function rt(t,n,r,i){let a=typeof r.model==`string`?r.model:t.model,o=typeof r.provider==`string`?r.provider:t.aiProvider.name,s=r.effort,c=typeof s==`string`&&(0,e.isModelEffort)(s)?s:t.effort??(typeof t.agent.getModel==`function`?t.agent.getModel().effort:void 0)??`high`,l=typeof r.round==`number`?r.round:void 0;(0,e.runHooks)(t.hooks,n,{session_id:t.sessionId,cwd:t.cwd,hook_event_name:n,model:a,provider:o,effort:c,...l!==void 0&&{round:l},...t.permissionMode!==void 0&&{permission_mode:t.permissionMode},...t.transcriptPath!==void 0&&{transcript_path:t.transcriptPath},env:{CLAUDE_PROJECT_DIR:t.cwd,CLAUDE_SESSION_ID:t.sessionId}},t.hookTypeExecutors,i).catch(e=>nt.warn(`hook failed`,{error:e}))}function it(t,n){let r=n?(0,e.traceEnvFor)(`hooks`,n,n.parentSpanId):void 0,i=Ye({knownToolNames:t.knownToolNames??[],...t.onToolExecution&&{onToolExecution:t.onToolExecution}}),a=t.onTextDelta?e=>{t.log(`text_delta`,{delta:e}),t.onTextDelta?.(e)}:void 0,o={};return{onExecutionEvent:(n,a)=>{if(n===`history_mutation`&&a.mutation===`append_message`){let e=a.message;(e?.role===`user`||e?.role===`assistant`&&Array.isArray(e.toolCalls)&&e.toolCalls.length>0)&&t.checkpointHistory?.()}if(n!==e.PROVIDER_CALL_EVENTS.COMPLETED&&t.log(n,a),Xe(i,n,a),n===`provider_request`){let e=a;o={model:e.model,provider:e.provider},rt(t,`PreModelCall`,e,r)}else if(n===`provider_response_normalized`)rt(t,`PostModelCall`,{...a,...o},r);else if(n===e.PROVIDER_FALLBACK_EVENTS.SWITCHED){let n=(0,e.readModelFallbackNotice)(a);n!==void 0&&(rt(t,`PostModelCall`,{round:a.round,model:n.from.model,provider:n.from.provider},r),t.emitProviderFallback?.(n))}else if(n===e.PROVIDER_CALL_EVENTS.COMPLETED&&t.emitProviderCallCompleted){let e=a;Number.isSafeInteger(e.round)&&e.round>0&&typeof e.startedAt==`string`&&typeof e.endedAt==`string`&&(e.outcome===`success`||e.outcome===`failure`||e.outcome===`interrupted`)&&t.emitProviderCallCompleted({round:e.round,startedAt:e.startedAt,endedAt:e.endedAt,outcome:e.outcome,...typeof e.callId==`string`&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(e.callId)&&{callId:e.callId},...(e.disposition===`invoked`||e.disposition===`cache-hit`||e.disposition===`preflight-refused`)&&{disposition:e.disposition},...typeof e.providerId==`string`&&e.providerId.length>0&&e.providerId.length<=128&&[...e.providerId].every(e=>e.charCodeAt(0)>=32)&&{providerId:e.providerId},...typeof e.modelId==`string`&&e.modelId.length>0&&e.modelId.length<=128&&[...e.modelId].every(e=>e.charCodeAt(0)>=32)&&{modelId:e.modelId},...(e.usageProvenance===`complete`||e.usageProvenance===`partial`||e.usageProvenance===`absent`)&&{usageProvenance:e.usageProvenance},...e.usageProvenance===`complete`&&typeof e.promptTokens==`number`&&Number.isSafeInteger(e.promptTokens)&&e.promptTokens>=0&&typeof e.completionTokens==`number`&&Number.isSafeInteger(e.completionTokens)&&e.completionTokens>=0&&typeof e.totalTokens==`number`&&Number.isSafeInteger(e.totalTokens)&&e.totalTokens===e.promptTokens+e.completionTokens&&{promptTokens:e.promptTokens,completionTokens:e.completionTokens,totalTokens:e.totalTokens},...e.disposition===`invoked`&&typeof e.providerRequestId==`string`&&{providerRequestId:e.providerRequestId}})}n===`assistant_message_committed`&&(t.contextTracker.updateFromHistory(t.agent.getHistory()),t.onContextUpdate?.(t.contextTracker.getContextState()))},...a&&{onTextDelta:a}}}async function at(e,t){let n=await e.agent.resume({...t,...it(e,t.traceContext)});return e.contextTracker.updateFromHistory(e.agent.getHistory()),e.onContextUpdate?.(e.contextTracker.getContextState()),e.getSessionStore()&&e.persistSession(),n}function ot(e,t){let n=(0,i.realpathSync)(t.cwd);return{append:async r=>{if((r.kind===`model-request`||r.kind===`model-cache-hit`)&&r.checkpoint){let i=structuredClone(r);i.checkpoint.owner={kind:`agent-session`,version:1,state:{sessionId:t.sessionId,cwd:n,peerTurn:t.peerTurn,executionId:r.executionId}},await e.append(i)}else await e.append(r)}}}function st(t,n,r,a){let o,s=(0,i.realpathSync)(r);return{read:async i=>{let c=structuredClone(await t.read(i)),l;for(let t of c){if(t.kind!==`model-request`&&t.kind!==`model-cache-hit`)continue;let r=t.checkpoint?.owner,a=r?.state;if(!r||r.kind!==`agent-session`||r.version!==1||!a||a.sessionId!==n||a.cwd!==s||a.executionId!==i||typeof a.peerTurn!=`boolean`||l!==void 0&&l!==a.peerTurn||a.peerTurn&&t.checkpoint?.continuation?.options.withholdHostedTools!==!0)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Session continuation owner or scope is incompatible`);l=a.peerTurn}if(l===void 0)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`No Session owner checkpoint exists`);return o=ot(t,{sessionId:n,cwd:r,peerTurn:l}),a(l),c},append:async t=>{if(!o)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Session owner has not been restored`);await o.append(t)}}}function ct(e){return{...e?.executionJournal!==void 0&&{executionJournal:e.executionJournal},...e?.ephemeralSystemContext!==void 0&&{ephemeralSystemContext:e.ephemeralSystemContext},...e?.driverId!==void 0&&{driverId:e.driverId},...e?.turnSource!==void 0&&{turnSource:e.turnSource},...e?.toolChoice!==void 0&&{toolChoice:e.toolChoice},...e?.traceContext!==void 0&&{traceContext:e.traceContext},...e?.peerTurn===!0&&{withholdHostedTools:!0}}}const lt=(0,e.createLogger)(`SessionRun`);async function ut(t,n,r,i,a){let o=a?.traceContext,s=o?(0,e.traceEnvFor)(`hooks`,o,o.parentSpanId):void 0;if(r.contextTracker.updateFromHistory(r.agent.getHistory()),r.contextTracker.shouldAutoCompact()){let e=r.aiProvider,t=e.onTextDelta;e.onTextDelta=void 0;try{a?.executionJournal?await r.compact(i,s,a.executionJournal):await(s?r.compact(i,s):r.compact(i))}finally{e.onTextDelta=t}}r.log(`user`,{content:t});let c=await(0,e.runHooks)(r.hooks,`UserPromptSubmit`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`UserPromptSubmit`,user_message:n??t,prompt:n??t,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s),l=[r.sessionStartStdout,c.stdout].filter(Boolean).join(`
7
+ `),u=l?`<system-reminder>\n${l}\n</system-reminder>\n${t}`:t;r.clearSessionStartStdout();let d=r.agent.getHistory(),f=JSON.stringify(d),p=(0,e.getProviderCapabilities)(r.aiProvider);r.log(`pre_run`,{historyLength:d.length,historyChars:f.length,historyEstTokens:Math.ceil(f.length/e.CONTEXT_ESTIMATE_CHARS_PER_TOKEN),input:u,history:d,model:r.model,provider:r.aiProvider.name,maxTokens:r.contextTracker.getContextState().maxTokens,nativeWebSearchSupported:p.nativeWebTools.webSearch.supported,nativeWebSearchEnabled:p.nativeWebTools.webSearch.enabled,nativeWebFetchSupported:p.nativeWebTools.webFetch.supported,nativeWebFetchEnabled:p.nativeWebTools.webFetch.enabled}),r.contextTracker.updateFromHistory([...d,(0,e.createUserMessage)(u)]),r.onContextUpdate?.(r.contextTracker.getContextState());let m;try{if(m=await r.agent.run(u,{signal:i,maxExecutionRounds:r.maxTurns??0,...ct(a),...it(r,o)}),i.aborted)throw new DOMException(`Aborted`,`AbortError`)}catch(t){if(t instanceof e.ExecutionSuspendedError)throw t;try{r.log(`error`,{message:t instanceof Error?t.message:String(t),stack:t instanceof Error?t.stack??``:``,historyLength:r.agent.getHistory().length})}catch{}throw(0,e.runHooks)(r.hooks,`StopFailure`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`StopFailure`,reason:t instanceof Error?t.message:String(t),stop_hook_active:!1,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s).catch(e=>lt.warn(`hook failed`,{error:e})),t}let h=r.agent.getHistory(),g=h.map(e=>{let t=`toolCalls`in e&&Array.isArray(e.toolCalls)&&e.toolCalls.length>0,n=t?e.toolCalls.map(e=>e.function.name):[];return{role:e.role,contentLength:typeof e.content==`string`?e.content.length:0,hasToolCalls:t,toolCallNames:n,...e.metadata?{metadata:e.metadata}:{}}});r.log(`assistant`,{content:m,historyLength:h.length,estimatedChars:JSON.stringify(h).length,history:h,historyStructure:g}),r.contextTracker.updateFromHistory(h);let _=r.contextTracker.getContextState();return r.onContextUpdate?.(_),r.log(`context`,{maxTokens:_.maxTokens,usedTokens:_.usedTokens,usedPercentage:_.usedPercentage,remainingPercentage:_.remainingPercentage}),(0,e.runHooks)(r.hooks,`Stop`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`Stop`,response:m.substring(0,500),last_assistant_message:m,stop_hook_active:!1,...r.permissionMode!==void 0&&{permission_mode:r.permissionMode},...r.transcriptPath!==void 0&&{transcript_path:r.transcriptPath},env:{CLAUDE_PROJECT_DIR:r.cwd,CLAUDE_SESSION_ID:r.sessionId}},r.hookTypeExecutors,s).catch(e=>lt.warn(`hook failed`,{error:e})),r.getSessionStore()&&r.persistSession(),m}function dt(e){let t=e.requests[0]?.executionId;return t?{executionId:t,requests:structuredClone(e.requests)}:void 0}function ft(e){let t=e.findLastIndex(e=>e.role===`assistant`),n=e[t];if(n?.role!==`assistant`)return;let r=new Set(e.slice(t+1).flatMap(e=>e.role===`tool`?[e.toolCallId]:[]));return{assistant:n,open:(n.toolCalls??[]).filter(e=>!r.has(e.id)),ending:e.slice(t+1).every(e=>e.role===`tool`)}}function pt(e,t,n){let r=ft(e),i=r?.assistant.metadata?.executionId;if(!r?.ending||!r.open.length||typeof i!=`string`)return;let a=new Set(r.open.map(e=>e.id)),o=t?.executionId===i?t.requests.filter(e=>a.has(e.toolCallId)&&!n.has(e.actionId)):[];return{executionId:i,requests:structuredClone(o)}}function mt(e,t){return{read:t=>e.read(t),append:n=>(n.kind===`tool-effect-start`&&t.add(n.actionId),e.append(n))}}function ht(t,n){let r=ft(t);if(!r||r.assistant.metadata?.executionId!==n.executionId)return[];let i=new Set(n.requests.map(e=>e.toolCallId));return r.open.map(t=>{let n=i.has(t.id)?`Not run: the execution was abandoned while this call awaited a response.`:`Execution abandoned before this call recorded a result; its outcome is unknown.`;return(0,e.createToolMessage)(`Error: ${n}`,{toolCallId:t.id,name:t.function.name,metadata:{success:!1,error:n,toolName:t.function.name}})})}async function gt(t,n){if(!n||typeof n.append!=`function`||typeof n.read!=`function`)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_INVALID`,`Recoverable Session execution requires a readable journal`);try{return{status:`completed`,response:await t()}}catch(t){if(t instanceof e.ExecutionSuspendedError)return{status:`waiting`,requests:structuredClone(t.requests)};throw t}}var _t=class{agent;claim;sessionId;execution=null;constructor(e,t,n){this.agent=e,this.claim=t,this.sessionId=n}async invoke(e,t,r){let i=this.claim.claim(),a=vt(i,r);try{return i.signal.throwIfAborted(),this.execution=this.agent.invokeRuntimeTool(e,t,{toolName:e,parameters:t,executionId:(0,n.randomUUID)(),sessionId:this.sessionId,signal:i.signal,permissionInteraction:`deny`}),await this.execution}finally{this.execution=null,a(),this.claim.release(i)}}async drain(){await this.execution}};function vt(e,t){let n=()=>e.abort(t?.reason);return t?.aborted?n():t?.addEventListener(`abort`,n,{once:!0}),()=>t?.removeEventListener(`abort`,n)}var yt=class extends f{agent;eventService=new e.ObservableEventService;permissionEnforcer;contextTracker;permissionMode;activePresetId;parallelSubagentsEnabled;sessionId;aiProvider;toolSchemas;model;systemMessage;messageCount=0;terminal;sessionStore;checkpointHistoryCallback;hooks;hookTypeExecutors;onTextDeltaCallback;onContextUpdateCallback;onToolExecutionCallback;onCompactCallback;onCompactEventCallback;sessionLogger;maxTurns;compactionOrchestrator;runtimeTools;wrapAddedTools;pendingTools=[];toolChange=Promise.resolve();shuttingDown=!1;pendingExecution;shutdownPromise=null;sessionStartStdout=``;transcriptPath;constructor(t){super(t.cwd);let{tools:n,provider:r,systemMessage:i}=t;this.terminal=t.terminal,this.sessionStore=t.sessionStore,this.checkpointHistoryCallback=t.checkpointHistory,this.systemMessage=i,this.toolSchemas=n.map(e=>e.schema),this.wrapAddedTools=t.wrapAddedTools,this.sessionLogger=t.sessionLogger,this.hooks=t.hooks,this.hookTypeExecutors=t.hookTypeExecutors,this.onTextDeltaCallback=t.onTextDelta,this.onContextUpdateCallback=t.onContextUpdate,this.onToolExecutionCallback=t.onToolExecution,this.onCompactCallback=t.onCompact,this.onCompactEventCallback=t.onCompactEvent,this.maxTurns=t.maxTurns,this.model=t.model??`claude-sonnet-4-5`,this.sessionId=t.sessionId??Ve(),this.permissionMode=t.permissionMode??(t.defaultTrustLevel?e.TRUST_TO_MODE[t.defaultTrustLevel]:void 0)??`default`,this.activePresetId=t.activePresetId??`default`,this.parallelSubagentsEnabled=t.enableParallelSubagents??!0,this.transcriptPath=t.transcriptPath,this.log(`session_init`,{cwd:this.cwd,systemPromptLength:i.length,systemPrompt:i,toolSchemas:this.toolSchemas,model:this.model,provider:r.name}),this.aiProvider=r,Ge(r,t,(e,t)=>this.log(e,t)),this.permissionEnforcer=je(t,this.sessionId,this.cwd,()=>this.permissionMode,this.transcriptPath),this.requireClassifierFor(this.permissionMode),this.addPermissionModeGuard(e=>this.requireClassifierFor(e));let{contextTracker:a,compactionOrchestrator:o}=Me(t,this.model,this.sessionId,this.cwd);this.contextTracker=a,this.compactionOrchestrator=o,this.agent=Ne(t,this.permissionEnforcer,n,r,this.model,i,this.eventService),this.runtimeTools=new _t(this.agent,this.turnClaim,this.sessionId),Ke(this.sessionId,this.cwd,this.hooks,this.hookTypeExecutors,e=>void(this.sessionStartStdout=e),this.permissionMode,this.transcriptPath)}async run(e,t,n){return this.runTurn(e,t,n,!1)}runRecoverable(e,t,n){return gt(()=>this.runTurn(e,n,t,!0),t.executionJournal)}async runTurn(t,n,r,i){let a=r?{...r}:void 0;if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);if(this.pendingExecution)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_REQUIRED`,`Resume or abandon the pending Session execution before submitting new input`);let o=this.turnClaim.claim(),s=vt(o,a?.signal),{signal:c}=o;this.permissionEnforcer.beginTurn(a?.peerTurn===!0,i);try{c.throwIfAborted(),await this.serializeToolChange(()=>this.applyPendingTools());let e=a?.executionJournal?{...a,executionJournal:ot(a.executionJournal,{sessionId:this.sessionId,cwd:this.cwd,peerTurn:a.peerTurn===!0})}:a,r=await ut(t,n,this.buildRunContext(),c,e);return this.messageCount+=1,r}catch(t){throw t instanceof e.ExecutionSuspendedError?(this.pendingExecution=dt(t),c.throwIfAborted()):a?.executionJournal&&(this.pendingExecution=pt(this.agent.getHistory(),void 0,new Set)),t}finally{this.permissionEnforcer.endTurn(),s(),this.turnClaim.release(o)}}async resume(e){return this.resumeTurn(e,!1)}resumeRecoverable(e){return gt(()=>this.resumeTurn(e,!0),e.journal)}async resumeTurn(t,n){let r={...t,toolResponses:structuredClone(t.toolResponses)};if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);if(this.pendingExecution&&this.pendingExecution.executionId!==r.executionId)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_CONFLICT`,`A different Session execution is pending`);let i=this.turnClaim.claim(),a=vt(i,r.signal),o=new Set;try{i.signal.throwIfAborted(),await this.serializeToolChange(()=>this.applyPendingTools());let e=st(mt(r.journal,o),this.sessionId,this.cwd,e=>this.permissionEnforcer.beginTurn(e,n)),t=await at(this.buildRunContext(),{...r,journal:e,signal:i.signal});return this.pendingExecution=void 0,t}catch(t){throw t instanceof e.ExecutionSuspendedError?(this.pendingExecution=dt(t),i.signal.throwIfAborted()):this.pendingExecution=pt(this.agent.getHistory(),this.pendingExecution,o),t}finally{this.permissionEnforcer.endTurn(),a(),this.turnClaim.release(i)}}getPendingExecution(){return structuredClone(this.pendingExecution)}abandonPendingExecution(t){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);let n=this.pendingExecution;if(!n)return;if(n.executionId!==t)throw new e.ExecutionRecoveryError(`EXECUTION_RECOVERY_CONFLICT`,`A different Session execution is pending`);let r=this.turnClaim.claim();try{for(let e of ht(this.agent.getHistory(),n))this.agent.injectRawMessage(e);this.pendingExecution=void 0,this.persistSessionInternal()}finally{this.turnClaim.release(r)}}addTools(e){return this.shuttingDown?Promise.reject(Error(`[LIFECYCLE] Session is shutting down`)):this.serializeToolChange(async()=>{let t=new Set([...this.toolSchemas.map(e=>e.name),...this.pendingTools.map(e=>e.schema.name)]),n=[];for(let r of e)t.has(r.schema.name)||(t.add(r.schema.name),n.push(r));return n.length===0?[]:(this.pendingTools.push(...n),this.turnClaim.isRunning()||await this.applyPendingTools(),n.map(e=>e.schema.name))})}serializeToolChange(e){let t=this.toolChange.then(e);return this.toolChange=t.then(()=>void 0,()=>void 0),t}async applyPendingTools(){if(this.pendingTools.length===0)return;let e=this.pendingTools.splice(0);await this.agent.ensureReady();let t=this.permissionEnforcer.wrapTools(this.wrapAddedTools?.(e)??e);await this.agent.updateTools([...this.agent.getConfig().tools??[],...t]),this.toolSchemas.push(...t.map(e=>e.schema))}async listRuntimeTools(){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);return this.agent.listRuntimeTools()}async invokeRuntimeTool(e,t,n){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);return this.runtimeTools.invoke(e,t,n?.signal)}getEventService(){return this.eventService}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}persistSessionInternal(e=!1){if(!this.sessionStore)return;let t=ze({sessionId:this.sessionId,cwd:this.cwd,systemPrompt:this.systemMessage,toolSchemas:this.toolSchemas,sessionStore:this.sessionStore,agent:this.agent,getFullHistory:()=>this.getFullHistory()});if(e&&t.status!==`valid`)throw Error(`Session history could not be durably checkpointed: ${t.status}`)}shutdown(e={}){if(this.shutdownPromise)return this.shutdownPromise;this.shuttingDown=!0;let t=e.reason??`other`,n=async(e,t)=>{try{await t()}catch(t){this.log(`session_shutdown_step_error`,{step:e,error:t instanceof Error?t.message:String(t)})}};return this.shutdownPromise=(async()=>{await n(`abort`,()=>this.abort()),await n(`drain-direct-tool`,()=>this.runtimeTools.drain()),await n(`drain-turn`,()=>this.turnClaim.drained),this.log(`session_shutdown`,{reason:t}),await n(`persist`,()=>this.persistSessionInternal()),await n(`session-end-hook`,()=>qe(this.sessionId,this.cwd,t,this.hooks,this.hookTypeExecutors,this.permissionMode,this.transcriptPath)),await n(`destroy-agent`,async()=>{await this.agent.destroy()})})(),this.shutdownPromise}swapProvider(e,t){this.agent.swapDefaultProvider(e,t),e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>this.log(`server_tool`,{tool:e,...t})),this.aiProvider=e,this.model=t}async compact(e,t=`manual`,n,r){await this.compactWith(e,t,n,void 0,r)}async compactWith(e,t,n,r,i){let a={systemMessage:this.systemMessage,compactionOrchestrator:this.compactionOrchestrator,onCompactCallback:this.onCompactCallback,onCompactEventCallback:this.onCompactEventCallback,trigger:t,...r?{hookTraceEnv:r}:{},...i?{executionJournal:i}:{}};await Re(e,Le(this.buildRunContext(),a),n)}buildRunContext(){return{sessionId:this.sessionId,cwd:this.cwd,model:this.model,effort:this.getModelEffort(),agent:this.agent,aiProvider:this.aiProvider,contextTracker:this.contextTracker,hooks:this.hooks,hookTypeExecutors:this.hookTypeExecutors,sessionStartStdout:this.sessionStartStdout,log:(e,t)=>this.log(e,t),compact:(e,t,n)=>this.compactWith(void 0,`auto`,e,t,n),persistSession:()=>this.persistSessionInternal(),checkpointHistory:this.checkpointHistoryCallback??(this.sessionStore?()=>this.persistSessionInternal(!0):void 0),getSessionStore:()=>!!this.sessionStore,clearSessionStartStdout:()=>void(this.sessionStartStdout=``),permissionMode:this.permissionMode,transcriptPath:this.transcriptPath,maxTurns:this.maxTurns,onTextDelta:this.onTextDeltaCallback,onContextUpdate:this.onContextUpdateCallback,onToolExecution:this.onToolExecutionCallback,emitProviderCallCompleted:t=>this.eventService.emit(e.PROVIDER_CALL_EVENTS.COMPLETED,{timestamp:new Date,...t},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),emitProviderFallback:t=>this.eventService.emit(e.PROVIDER_FALLBACK_EVENTS.SWITCHED,{timestamp:new Date,fromProvider:t.from.provider,fromModel:t.from.model,toProvider:t.to.provider,toModel:t.to.model,reason:t.reason},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),knownToolNames:this.toolSchemas.map(e=>e.name)}}};function E(e,t){return e.length===0?t:`${e}.${t}`}function D(e,t){return`${e}[${t}]`}function O(e,t,n){e.push({path:t,message:n})}function k(e){if(e===null)return`null`;if(Array.isArray(e))return`an array`;if(e instanceof Date)return`a Date`;switch(typeof e){case`undefined`:return`nothing`;case`string`:return`a string`;case`number`:return`a number`;case`boolean`:return`a boolean`;case`object`:return`an object`;default:return`a ${typeof e}`}}function A(e,t,n){n!==void 0&&(e[t]=n)}function j(e,t,n,r){if(e!==void 0)return r(e,t,n)}function M(e,t,n){if(typeof e==`string`)return e;O(n,t,`expected a string, received ${k(e)}`)}function N(e,t,n){if(typeof e==`number`&&Number.isFinite(e))return e;O(n,t,`expected a finite number, received ${k(e)}`)}function P(e,t,n){if(typeof e==`number`&&Number.isInteger(e))return e;O(n,t,`expected an integer, received ${k(e)}`)}function F(e,t,n){if(typeof e==`boolean`)return e;O(n,t,`expected a boolean, received ${k(e)}`)}function I(e,t,n,r){if(typeof e==`string`&&t.includes(e))return e;O(r,n,`expected one of ${t.join(` | `)}, received ${k(e)}`)}function L(e,t,n){if(typeof e!=`string`){O(n,t,`expected an ISO-8601 timestamp string, received ${k(e)}`);return}if(Number.isNaN(Date.parse(e))){O(n,t,`expected a timestamp a date can be parsed from`);return}return e}function bt(e,t,n){if(e instanceof Date){if(Number.isNaN(e.getTime())){O(n,t,`expected a valid Date, received an invalid one`);return}return e}if(typeof e==`string`&&!Number.isNaN(Date.parse(e)))return new Date(e);O(n,t,`expected a Date or an ISO-8601 timestamp string, received ${k(e)}`)}function R(e,t,n,r){if(!Array.isArray(e)){O(n,t,`expected an array, received ${k(e)}`);return}let i=[];return e.forEach((e,a)=>{let o=r(e,D(t,a),n);o!==void 0&&i.push(o)}),i}function xt(e,t,n){return R(e,t,n,M)}function z(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){O(n,t,`expected an object, received ${k(e)}`);return}let i=e,a=new Set(r);for(let e of Object.keys(i))a.has(e)||O(n,E(t,e),`unknown key; the record contract does not declare it`);return i}function B(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){O(n,t,`expected an object, received ${k(e)}`);return}let i={};for(let[a,o]of Object.entries(e)){let e=r(o,E(t,a),n);e!==void 0&&(i[a]=e)}return i}function St(e,t,n){if(e===null||e instanceof Date||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e)){let r=[];return e.forEach((e,i)=>{let a=St(e,D(t,i),n);a!==void 0&&r.push(a)}),r}if(typeof e==`object`)return B(e,t,n,St);O(n,t,`expected a JSON-compatible value, received ${k(e)}`)}function Ct(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;O(n,t,`expected a string, number or boolean, received ${k(e)}`)}const wt=[`complete`,`interrupted`],Tt=[`id`,`timestamp`,`state`,`metadata`,`role`,`content`,`parts`],Et={user:[...Tt,`name`],assistant:[...Tt,`toolCalls`],system:[...Tt,`name`],tool:[...Tt,`toolCallId`,`name`]};function Dt(e,t,n){if(e instanceof Date||typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;if(Array.isArray(e)){if(e.every(e=>typeof e==`string`)||e.every(e=>typeof e==`number`))return e;O(n,t,`expected an array of only strings or only numbers`);return}if(typeof e==`object`&&e){let r={};for(let[i,a]of Object.entries(e)){if(typeof a!=`number`){O(n,E(t,i),`expected a number, received ${k(a)}`);continue}r[i]=a}return r}O(n,t,`expected a metadata value, received ${k(e)}`)}function Ot(e,t,n){return B(e,t,n,Dt)}function kt(e,t,n){let r=I(e?.type,[`text`,`image_inline`,`image_uri`,`audio_inline`,`resource_link`,`resource_embedded`],E(t,`type`),n);if(r===void 0)return;if(r===`text`){let r=z(e,t,n,[`type`,`text`]);if(r===void 0)return;let i=M(r.text,E(t,`text`),n);return i===void 0?void 0:{type:`text`,text:i}}if(r===`image_inline`||r===`audio_inline`){let i=z(e,t,n,[`type`,`mimeType`,`data`]);if(i===void 0)return;let a=M(i.mimeType,E(t,`mimeType`),n),o=M(i.data,E(t,`data`),n);return a===void 0||o===void 0?void 0:{type:r,mimeType:a,data:o}}if(r===`resource_link`){let i=z(e,t,n,[`type`,`uri`,`name`,`mimeType`,`title`,`description`,`size`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n),o=M(i.name,E(t,`name`),n);if(a===void 0||o===void 0)return;let s={type:r,uri:a,name:o};for(let e of[`mimeType`,`title`,`description`])A(s,e,j(i[e],E(t,e),n,M));let c=j(i.size,E(t,`size`),n,N);return c!==void 0&&(!Number.isSafeInteger(c)||c<0)&&O(n,E(t,`size`),`expected a nonnegative safe integer`),A(s,`size`,c),s}if(r===`resource_embedded`){let i=z(e,t,n,[`type`,`uri`,`mimeType`,`text`,`blob`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n),o=j(i.mimeType,E(t,`mimeType`),n,M);if(a===void 0)return;let s={type:r,uri:a,...o===void 0?{}:{mimeType:o}};if(i.text!==void 0&&i.blob===void 0){let e=M(i.text,E(t,`text`),n);return e===void 0?void 0:{...s,text:e}}if(i.blob!==void 0&&i.text===void 0){let e=M(i.blob,E(t,`blob`),n);return e===void 0?void 0:{...s,blob:e}}O(n,t,`expected exactly one text or blob payload`);return}let i=z(e,t,n,[`type`,`uri`,`mimeType`]);if(i===void 0)return;let a=M(i.uri,E(t,`uri`),n);if(a===void 0)return;let o={type:`image_uri`,uri:a};return A(o,`mimeType`,j(i.mimeType,E(t,`mimeType`),n,M)),o}function At(e,t,n){let r=z(e,t,n,[`id`,`type`,`function`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=I(r.type,[`function`],E(t,`type`),n),o=E(t,`function`),s=z(r.function,o,n,[`name`,`arguments`]),c=s===void 0?void 0:M(s.name,E(o,`name`),n),l=s===void 0?void 0:M(s.arguments,E(o,`arguments`),n);if(i!==void 0&&a!==void 0&&c!==void 0&&l!==void 0)return{id:i,type:a,function:{name:c,arguments:l}}}function jt(e,t,n){let r=M(e.id,E(t,`id`),n),i=bt(e.timestamp,E(t,`timestamp`),n),a=I(e.state,wt,E(t,`state`),n);if(r!==void 0&&i!==void 0&&a!==void 0)return{id:r,timestamp:i,state:a}}function Mt(e,t,n,r){A(e,`metadata`,j(t.metadata,E(n,`metadata`),r,Ot)),A(e,`parts`,j(t.parts,E(n,`parts`),r,(e,t,n)=>R(e,t,n,kt)))}function V(e,t,n){let r=I(e?.role,[`user`,`assistant`,`system`,`tool`],E(t,`role`),n);if(r===void 0)return;let i=z(e,t,n,Et[r]);if(i===void 0)return;let a=jt(i,t,n);if(a===void 0)return;let o=E(t,`content`);if(r===`assistant`){let e=i.content===null?null:M(i.content,o,n);if(e===void 0)return;let s={...a,role:r,content:e};return Mt(s,i,t,n),A(s,`toolCalls`,j(i.toolCalls,E(t,`toolCalls`),n,(e,t,n)=>R(e,t,n,At))),s}let s=M(i.content,o,n);if(s===void 0)return;if(r===`tool`){let e=M(i.toolCallId,E(t,`toolCallId`),n);if(e===void 0)return;let o={...a,role:r,content:s,toolCallId:e};return Mt(o,i,t,n),A(o,`name`,j(i.name,E(t,`name`),n,M)),o}let c={...a,role:r,content:s};return Mt(c,i,t,n),A(c,`name`,j(i.name,E(t,`name`),n,M)),c}function Nt(e,t,n){let r=z(e,t,n,[`id`,`timestamp`,`category`,`type`,`data`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=bt(r.timestamp,E(t,`timestamp`),n),o=M(r.category,E(t,`category`),n),s=M(r.type,E(t,`type`),n);if(i===void 0||a===void 0||o===void 0||s===void 0)return;let c={id:i,timestamp:a,category:o,type:s};return A(c,`data`,j(r.data,E(t,`data`),n,St)),c}const Pt=[`agent`,`process`,`scheduled`,`tool-invocation`],Ft=[`foreground`,`background`],It=[`none`,`worktree`],Lt=[`queued`,`running`,`waiting_permission`,`sleeping`,`paused`,`completed`,`failed`,`cancelled`],Rt=[`idle`,`max_runtime`,`output_limit`,`repetition`,`stale_worker`],zt=[`validation`,`capacity`,`permission`,`timeout`,`runner`,`crash`,`provider`,`process`],Bt=[`denied-by-person`,`no-approver`,`approver-error`,`cancelled`];function Vt(e,t,n){return B(e,t,n,Ct)}function Ht(e,t,n){return B(e,t,n,M)}function Ut(e,t,n){let r=z(e,t,n,[`category`,`message`,`recoverable`]);if(r===void 0)return;let i=I(r.category,zt,E(t,`category`),n),a=M(r.message,E(t,`message`),n),o=F(r.recoverable,E(t,`recoverable`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{category:i,message:a,recoverable:o}}function Wt(e,t,n){let r=z(e,t,n,[`promptTokens`,`completionTokens`,`totalTokens`]);if(r===void 0)return;let i=P(r.promptTokens,E(t,`promptTokens`),n),a=P(r.completionTokens,E(t,`completionTokens`),n),o=P(r.totalTokens,E(t,`totalTokens`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{promptTokens:i,completionTokens:a,totalTokens:o}}function Gt(e,t,n){let r=z(e,t,n,[`total`,`byReason`]);if(r===void 0)return;let i=P(r.total,E(t,`total`),n),a=E(t,`byReason`),o=z(r.byReason,a,n,Bt);if(i===void 0||o===void 0)return;let s={},c=!0;for(let e of Bt){let t=P(o[e],E(a,e),n);if(t===void 0){c=!1;continue}s[e]=t}if(c)return{total:i,byReason:s}}function Kt(e,t,n){let r=z(e,t,n,[`taskId`,`kind`,`output`,`exitCode`,`signalCode`,`metadata`,`usage`,`deniedToolCalls`]);if(r===void 0)return;let i=M(r.taskId,E(t,`taskId`),n),a=I(r.kind,Pt,E(t,`kind`),n),o=M(r.output,E(t,`output`),n);if(i===void 0||a===void 0||o===void 0)return;let s=j(r.exitCode,E(t,`exitCode`),n,P),c=j(r.signalCode,E(t,`signalCode`),n,M),l=j(r.metadata,E(t,`metadata`),n,Vt),u=j(r.usage,E(t,`usage`),n,Wt),d=j(r.deniedToolCalls,E(t,`deniedToolCalls`),n,Gt);switch(a!==`process`&&s!==void 0&&O(n,E(t,`exitCode`),`must not be set for a '${a}' result`),a!==`process`&&c!==void 0&&O(n,E(t,`signalCode`),`must not be set for a '${a}' result`),a!==`agent`&&u!==void 0&&O(n,E(t,`usage`),`must not be set for a '${a}' result`),a!==`agent`&&d!==void 0&&O(n,E(t,`deniedToolCalls`),`must not be set for a '${a}' result`),a){case`process`:{let e={taskId:i,kind:a,output:o};return A(e,`exitCode`,s),A(e,`signalCode`,c),A(e,`metadata`,l),e}case`agent`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),A(e,`usage`,u),A(e,`deniedToolCalls`,d),e}case`scheduled`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),e}case`tool-invocation`:{let e={taskId:i,kind:a,output:o};return A(e,`metadata`,l),e}}}function qt(e,t,n){let r=z(e,t,n,[`cronExpression`,`agentInstruction`,`command`,`shell`,`env`]);if(r===void 0)return;let i=M(r.cronExpression,E(t,`cronExpression`),n);if(i===void 0)return;let a={cronExpression:i};for(let e of[`agentInstruction`,`command`,`shell`])A(a,e,j(r[e],E(t,e),n,M));return A(a,`env`,j(r.env,E(t,`env`),n,Ht)),a}const Jt=[`detached`,`wait_all`,`wait_any`,`manual`],Yt=[`running`,`completed`],Xt=[`background_job_group_created`,`background_job_group_updated`,`background_job_group_completed`];function Zt(e,t,n){let r=z(e,t,n,[`taskId`,`label`,`status`,`summary`,`outputRef`,`error`,`startedAt`,`completedAt`]);if(r===void 0)return;let i=M(r.taskId,E(t,`taskId`),n),a=M(r.label,E(t,`label`),n),o=I(r.status,Lt,E(t,`status`),n);if(i===void 0||a===void 0||o===void 0)return;let s={taskId:i,label:a,status:o};for(let e of[`summary`,`outputRef`])A(s,e,j(r[e],E(t,e),n,M));for(let e of[`startedAt`,`completedAt`])A(s,e,j(r[e],E(t,e),n,L));return A(s,`error`,j(r.error,E(t,`error`),n,Ut)),s}function Qt(e,t,n){let r=z(e,t,n,[`id`,`parentSessionId`,`waitPolicy`,`taskIds`,`status`,`createdAt`,`updatedAt`,`label`,`completedAt`,`results`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.parentSessionId,E(t,`parentSessionId`),n),o=I(r.waitPolicy,Jt,E(t,`waitPolicy`),n),s=xt(r.taskIds,E(t,`taskIds`),n),c=I(r.status,Yt,E(t,`status`),n),l=L(r.createdAt,E(t,`createdAt`),n),u=L(r.updatedAt,E(t,`updatedAt`),n),d=R(r.results,E(t,`results`),n,Zt);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0)return;let f={id:i,parentSessionId:a,waitPolicy:o,taskIds:s,status:c,createdAt:l,updatedAt:u,results:d};return A(f,`label`,j(r.label,E(t,`label`),n,M)),A(f,`completedAt`,j(r.completedAt,E(t,`completedAt`),n,L)),f}function $t(e,t,n){let r=I(e?.type,Xt,E(t,`type`),n);if(r===void 0)return;let i=z(e,t,n,[`type`,`group`]);if(i===void 0)return;let a=Qt(i.group,E(t,`group`),n);return a===void 0?void 0:{type:r,group:a}}const en=[`parentTaskId`,`currentAction`,`logPath`,`transcriptPath`],tn=[`agentType`,`resumeSessionId`,`promptPreview`,`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`],nn=[`commandPreview`],rn=[`startedAt`,`lastActivityAt`,`completedAt`],an=[`id`,`kind`,`label`,`status`,`mode`,`parentSessionId`,`depth`,`cwd`,`pid`,`updatedAt`,`isolation`,`unread`,`result`,`error`,`timeoutReason`,`schedule`,`nextFireAt`,`metadata`,...en,...tn,...nn,...rn];function on(e,t,n){let r=z(e,t,n,an);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=I(r.kind,Pt,E(t,`kind`),n),o=M(r.label,E(t,`label`),n),s=I(r.status,Lt,E(t,`status`),n),c=I(r.mode,Ft,E(t,`mode`),n),l=M(r.parentSessionId,E(t,`parentSessionId`),n),u=P(r.depth,E(t,`depth`),n),d=M(r.cwd,E(t,`cwd`),n),f=L(r.updatedAt,E(t,`updatedAt`),n),p=F(r.unread,E(t,`unread`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0||f===void 0||p===void 0)return;let m={id:i,label:o,status:s,mode:c,parentSessionId:l,depth:u,cwd:d,updatedAt:f,unread:p};for(let e of en)A(m,e,j(r[e],E(t,e),n,M));for(let e of rn)A(m,e,j(r[e],E(t,e),n,L));A(m,`pid`,j(r.pid,E(t,`pid`),n,P)),A(m,`timeoutReason`,j(r.timeoutReason,E(t,`timeoutReason`),n,(e,t,n)=>I(e,Rt,t,n))),A(m,`metadata`,j(r.metadata,E(t,`metadata`),n,Vt)),A(m,`error`,j(r.error,E(t,`error`),n,Ut));let h=j(r.result,E(t,`result`),n,Kt);h!==void 0&&(h.taskId!==i&&O(n,E(E(t,`result`),`taskId`),`must match the task ID`),h.kind!==a&&O(n,E(E(t,`result`),`kind`),`must match the task kind`));let g=j(r.agentType,E(t,`agentType`),n,M),_=j(r.resumeSessionId,E(t,`resumeSessionId`),n,M),v=j(r.promptPreview,E(t,`promptPreview`),n,M),y=j(r.isolation,E(t,`isolation`),n,(e,t,n)=>I(e,It,t,n)),b={};for(let e of[`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`])b[e]=j(r[e],E(t,e),n,M);for(let e of tn){let r=e===`agentType`?g:e===`resumeSessionId`?_:e===`promptPreview`?v:b[e];a!==`agent`&&r!==void 0&&O(n,E(t,e),`must not be set for a '${a}' task`)}a!==`agent`&&y!==void 0&&O(n,E(t,`isolation`),`must not be set for a '${a}' task`);let x=j(r.commandPreview,E(t,`commandPreview`),n,M);a===`agent`&&x!==void 0&&O(n,E(t,`commandPreview`),`must not be set for a '${a}' task`);let S=j(r.schedule,E(t,`schedule`),n,qt),ee=j(r.nextFireAt,E(t,`nextFireAt`),n,L);switch(a!==`scheduled`&&S!==void 0&&O(n,E(t,`schedule`),`must not be set for a '${a}' task`),a!==`scheduled`&&ee!==void 0&&O(n,E(t,`nextFireAt`),`must not be set for a '${a}' task`),a){case`agent`:{let e=h?.kind===`agent`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`agentType`,g),A(t,`resumeSessionId`,_),A(t,`promptPreview`,v),A(t,`isolation`,y),A(t,`worktreePath`,b.worktreePath),A(t,`branchName`,b.branchName),A(t,`worktreeStatus`,b.worktreeStatus),A(t,`worktreeNextAction`,b.worktreeNextAction),A(t,`worktreeBaseRevision`,b.worktreeBaseRevision),A(t,`parentWorktreeStatus`,b.parentWorktreeStatus),t}case`process`:{let e=h?.kind===`process`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),t}case`tool-invocation`:{let e=h?.kind===`tool-invocation`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),t}case`scheduled`:{let e=h?.kind===`scheduled`?h:void 0,t={...m,kind:a};return A(t,`result`,e),A(t,`commandPreview`,x),A(t,`schedule`,S),A(t,`nextFireAt`,ee),t}}}const sn=[`background_task_created`,`background_task_started`,`background_task_updated`,`background_task_completed`,`background_task_failed`,`background_task_cancelled`,`background_task_text_delta`,`background_task_tool_start`,`background_task_tool_end`,`background_task_permission_request`,`background_task_closed`,`background_task_waking`];function H(e,t,n){return M(e.taskId,E(t,`taskId`),n)}function cn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`delta`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.delta,E(t,`delta`),n);if(i!==void 0&&a!==void 0)return{type:`background_task_text_delta`,taskId:i,delta:a}}function ln(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`toolName`,`firstArg`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.toolName,E(t,`toolName`),n);if(i===void 0||a===void 0)return;let o={type:`background_task_tool_start`,taskId:i,toolName:a};return A(o,`firstArg`,j(r.firstArg,E(t,`firstArg`),n,M)),o}function un(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`toolName`,`success`,`error`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.toolName,E(t,`toolName`),n),o=F(r.success,E(t,`success`),n);if(i===void 0||a===void 0||o===void 0)return;let s={type:`background_task_tool_end`,taskId:i,toolName:a,success:o};return A(s,`error`,j(r.error,E(t,`error`),n,M)),s}function dn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`requestId`,`toolName`,`toolArgs`]);if(r===void 0)return;let i=H(r,t,n),a=M(r.requestId,E(t,`requestId`),n),o=M(r.toolName,E(t,`toolName`),n),s=Vt(r.toolArgs,E(t,`toolArgs`),n);if(i!==void 0&&a!==void 0&&o!==void 0&&s!==void 0)return{type:`background_task_permission_request`,taskId:i,requestId:a,toolName:o,toolArgs:s}}function fn(e,t,n){let r=z(e,t,n,[`type`,`taskId`]);if(r===void 0)return;let i=H(r,t,n);return i===void 0?void 0:{type:`background_task_closed`,taskId:i}}function pn(e,t,n){let r=z(e,t,n,[`type`,`taskId`,`instruction`]);if(r===void 0)return;let i=H(r,t,n);if(i===void 0)return;let a={type:`background_task_waking`,taskId:i};return A(a,`instruction`,j(r.instruction,E(t,`instruction`),n,M)),a}function mn(e,t,n,r){let i=z(t,n,r,[`type`,`task`]);if(i===void 0)return;let a=on(i.task,E(n,`task`),r);if(a!==void 0)return{type:e,task:a}}const hn={background_task_text_delta:cn,background_task_tool_start:ln,background_task_tool_end:un,background_task_permission_request:dn,background_task_closed:fn,background_task_waking:pn};function gn(e,t,n){let r=I(e?.type,sn,E(t,`type`),n);if(r===void 0)return;let i=hn[r];return i===void 0?mn(r,e,t,n):i(e,t,n)}const _n=[`skill`,`plugin`],vn=[`user-slash`,`model-tool`],yn=[`inject`,`fork`],bn=[`started`,`completed`,`failed`],xn=[`memory_candidate_extracted`,`memory_candidate_queued`,`memory_candidate_saved`,`memory_candidate_skipped`,`memory_candidate_approved`,`memory_candidate_rejected`,`memory_retrieved`],Sn=[`manual`,`prompt-reference`,`system`],Cn=[`active`,`observed`];function wn(e,t,n){let r=z(e,t,n,[`type`,`skillName`,`source`,`invocation`,`mode`,`status`,`timestamp`,`qualifiedName`,`error`]);if(r===void 0)return;let i=I(r.type,[`skill-activation`],E(t,`type`),n),a=M(r.skillName,E(t,`skillName`),n),o=I(r.source,_n,E(t,`source`),n),s=I(r.invocation,vn,E(t,`invocation`),n),c=I(r.mode,yn,E(t,`mode`),n),l=I(r.status,bn,E(t,`status`),n),u=L(r.timestamp,E(t,`timestamp`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0)return;let d=j(r.qualifiedName,E(t,`qualifiedName`),n,M),f=j(r.error,E(t,`error`),n,M);return{type:i,skillName:a,source:o,invocation:s,mode:c,status:l,timestamp:u,...d===void 0?{}:{qualifiedName:d},...f===void 0?{}:{error:f}}}function Tn(e,t,n){let r=z(e,t,n,[`topic`,`path`,`score`,`truncated`]);if(r===void 0)return;let i=M(r.topic,E(t,`topic`),n),a=M(r.path,E(t,`path`),n),o=N(r.score,E(t,`score`),n),s=F(r.truncated,E(t,`truncated`),n);if(i!==void 0&&a!==void 0&&o!==void 0&&s!==void 0)return{topic:i,path:a,score:o,truncated:s}}function En(e,t,n){let r=z(e,t,n,[`type`,`at`,`candidateId`,`topic`,`reason`,`data`]);if(r===void 0)return;let i=I(r.type,xn,E(t,`type`),n),a=L(r.at,E(t,`at`),n);if(i===void 0||a===void 0)return;let o={type:i,at:a};for(let e of[`candidateId`,`topic`,`reason`])A(o,e,j(r[e],E(t,e),n,M));return A(o,`data`,j(r.data,E(t,`data`),n,(e,t,n)=>B(e,t,n,St))),o}function Dn(e,t,n){let r=z(e,t,n,[`id`,`sourcePath`,`relativePath`,`originalReference`,`loadType`,`status`,`byteLength`,`loadedAt`,`lastUsedAt`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.sourcePath,E(t,`sourcePath`),n),o=M(r.relativePath,E(t,`relativePath`),n),s=M(r.originalReference,E(t,`originalReference`),n),c=I(r.loadType,Sn,E(t,`loadType`),n),l=I(r.status,Cn,E(t,`status`),n),u=P(r.byteLength,E(t,`byteLength`),n),d=L(r.loadedAt,E(t,`loadedAt`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0)return;let f={id:i,sourcePath:a,relativePath:o,originalReference:s,loadType:c,status:l,byteLength:u,loadedAt:d};return A(f,`lastUsedAt`,j(r.lastUsedAt,E(t,`lastUsedAt`),n,L)),f}const On=[`active`,`satisfied`,`stopped`],kn=[`satisfied`,`max-iterations`,`cancelled`,`no-progress`],An=[`continue`,`satisfied`],jn=[`pending`,`in-progress`,`done`],Mn=[`planning`,`awaiting-approval`,`executing`,`completed`];function Nn(e,t,n){let r=z(e,t,n,[`iteration`,`signal`,`reason`]);if(r===void 0)return;let i=P(r.iteration,E(t,`iteration`),n),a=I(r.signal,An,E(t,`signal`),n),o=M(r.reason,E(t,`reason`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{iteration:i,signal:a,reason:o}}function Pn(e,t,n){let r=z(e,t,n,[`id`,`objective`,`status`,`stopReason`,`iterations`,`maxIterations`,`startedAt`,`progress`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.objective,E(t,`objective`),n),o=I(r.status,On,E(t,`status`),n),s=P(r.iterations,E(t,`iterations`),n),c=P(r.maxIterations,E(t,`maxIterations`),n),l=L(r.startedAt,E(t,`startedAt`),n),u=R(r.progress,E(t,`progress`),n,Nn);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0||l===void 0||u===void 0)return;let d={id:i,objective:a,status:o,iterations:s,maxIterations:c,startedAt:l,progress:u};return A(d,`stopReason`,j(r.stopReason,E(t,`stopReason`),n,(e,t,n)=>I(e,kn,t,n))),d}function Fn(e,t,n){let r=z(e,t,n,[`id`,`description`,`status`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.description,E(t,`description`),n),o=I(r.status,jn,E(t,`status`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{id:i,description:a,status:o}}function In(e,t,n){let r=z(e,t,n,[`id`,`objective`,`steps`,`phase`,`createdAt`,`approvedAt`]);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.objective,E(t,`objective`),n),o=R(r.steps,E(t,`steps`),n,Fn),s=I(r.phase,Mn,E(t,`phase`),n),c=L(r.createdAt,E(t,`createdAt`),n);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0)return;let l={id:i,objective:a,steps:o,phase:s,createdAt:c};return A(l,`approvedAt`,j(r.approvedAt,E(t,`approvedAt`),n,L)),l}function Ln(e,t,n){let r=z(e,t,n,[`branchId`,`checkpointId`]);if(r===void 0)return;let i=M(r.branchId,E(t,`branchId`),n),a=M(r.checkpointId,E(t,`checkpointId`),n);if(i!==void 0&&a!==void 0)return{branchId:i,checkpointId:a}}const Rn=[`waiting`,`pending`,`running`,`stopped`,`expired`],zn=[`loopId`,`instruction`,`useDefaultPrompt`,`createdAt`,`expiresAt`,`revision`,`generation`,`phase`,`nextAllowedAt`,`delaySeconds`,`reason`,`fallbackUsed`,`terminalReason`];function Bn(e,t,n){let r=z(e,t,n,zn);if(!r)return;let i=M(r.loopId,E(t,`loopId`),n),a=M(r.instruction,E(t,`instruction`),n),o=j(r.useDefaultPrompt,E(t,`useDefaultPrompt`),n,F),s=L(r.createdAt,E(t,`createdAt`),n),c=L(r.expiresAt,E(t,`expiresAt`),n),l=P(r.revision,E(t,`revision`),n),u=P(r.generation,E(t,`generation`),n),d=I(r.phase,Rn,E(t,`phase`),n),f=F(r.fallbackUsed,E(t,`fallbackUsed`),n),p=j(r.nextAllowedAt,E(t,`nextAllowedAt`),n,L),m=j(r.delaySeconds,E(t,`delaySeconds`),n,P),h=j(r.reason,E(t,`reason`),n,M),g=j(r.terminalReason,E(t,`terminalReason`),n,M);if(l!==void 0&&(!Number.isSafeInteger(l)||l<0)&&O(n,E(t,`revision`),`expected a non-negative safe integer`),u!==void 0&&(!Number.isSafeInteger(u)||u<0)&&O(n,E(t,`generation`),`expected a non-negative safe integer`),m!==void 0&&(m<60||m>3600)&&O(n,E(t,`delaySeconds`),`expected a delay between 60 and 3600 seconds`),i!==void 0&&!i.trim()&&O(n,E(t,`loopId`),`expected a non-empty loop ID`),a!==void 0&&!a.trim()&&O(n,E(t,`instruction`),`expected a non-empty instruction`),d===`waiting`&&p===void 0&&r.nextAllowedAt===void 0&&O(n,E(t,`nextAllowedAt`),`waiting loop needs a next wake time`),i===void 0||a===void 0||s===void 0||c===void 0||l===void 0||u===void 0||d===void 0||f===void 0)return;let _={loopId:i,instruction:a,createdAt:s,expiresAt:c,revision:l,generation:u,phase:d,fallbackUsed:f};return A(_,`useDefaultPrompt`,o),A(_,`nextAllowedAt`,p),A(_,`delaySeconds`,m),A(_,`reason`,h),A(_,`terminalReason`,g),_}const Vn=[`string`,`number`,`integer`,`boolean`,`array`,`object`,`null`],Hn=[`type`,`description`,`enum`,`items`,`properties`,`required`,`anyOf`,`additionalProperties`,`minimum`,`maximum`,`pattern`,`format`,`default`];function Un(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;O(n,t,`expected a string, number or boolean, received ${k(e)}`)}function Wn(e,t,n){return e===null?null:Un(e,t,n)}function Gn(e,t,n){return typeof e==`boolean`?e:U(e,t,n)}function U(e,t,n){let r=z(e,t,n,Hn);if(r===void 0)return;let i={};return A(i,`type`,j(r.type,E(t,`type`),n,(e,t,n)=>I(e,Vn,t,n))),A(i,`description`,j(r.description,E(t,`description`),n,M)),A(i,`enum`,j(r.enum,E(t,`enum`),n,(e,t,n)=>R(e,t,n,Un))),A(i,`items`,j(r.items,E(t,`items`),n,U)),A(i,`properties`,j(r.properties,E(t,`properties`),n,(e,t,n)=>B(e,t,n,U))),A(i,`required`,j(r.required,E(t,`required`),n,xt)),A(i,`anyOf`,j(r.anyOf,E(t,`anyOf`),n,(e,t,n)=>R(e,t,n,U))),A(i,`additionalProperties`,j(r.additionalProperties,E(t,`additionalProperties`),n,Gn)),A(i,`minimum`,j(r.minimum,E(t,`minimum`),n,N)),A(i,`maximum`,j(r.maximum,E(t,`maximum`),n,N)),A(i,`pattern`,j(r.pattern,E(t,`pattern`),n,M)),A(i,`format`,j(r.format,E(t,`format`),n,M)),A(i,`default`,j(r.default,E(t,`default`),n,Wn)),i}function Kn(e,t,n){let r=U(e,t,n);if(r!==void 0){if(r.type!==`object`){O(n,E(t,`type`),`expected the root parameter schema to be type 'object'`);return}if(r.properties===void 0){O(n,E(t,`properties`),`expected the root parameter schema to name its properties`);return}return{...r,type:`object`,properties:r.properties}}}function qn(e,t,n){let r=z(e,t,n,[`name`,`description`,`parameters`,`outputSchema`]);if(r===void 0)return;let i=M(r.name,E(t,`name`),n),a=M(r.description,E(t,`description`),n),o=Kn(r.parameters,E(t,`parameters`),n);if(i===void 0||a===void 0||o===void 0)return;let s={name:i,description:a,parameters:o};return A(s,`outputSchema`,j(r.outputSchema,E(t,`outputSchema`),n,U)),s}function W(e,t,n,r,i){return j(e[t],E(n,t),r,(e,t,n)=>R(e,t,n,i))}function Jn(e,t,n,r){for(let i of[`name`,`systemPrompt`,`sandboxSnapshotId`])A(e,i,j(t[i],E(n,i),r,M));A(e,`history`,W(t,`history`,n,r,Nt)),A(e,`toolSchemas`,W(t,`toolSchemas`,n,r,qn)),A(e,`backgroundTasks`,W(t,`backgroundTasks`,n,r,on)),A(e,`backgroundTaskEvents`,W(t,`backgroundTaskEvents`,n,r,gn)),A(e,`backgroundJobGroups`,W(t,`backgroundJobGroups`,n,r,Qt)),A(e,`backgroundJobGroupEvents`,W(t,`backgroundJobGroupEvents`,n,r,$t)),A(e,`sessionLoops`,W(t,`sessionLoops`,n,r,Bn)),A(e,`skillActivationEvents`,W(t,`skillActivationEvents`,n,r,wn)),A(e,`memoryEvents`,W(t,`memoryEvents`,n,r,En)),A(e,`usedMemoryReferences`,W(t,`usedMemoryReferences`,n,r,Tn)),A(e,`contextReferences`,W(t,`contextReferences`,n,r,Dn)),A(e,`goal`,j(t.goal,E(n,`goal`),r,Pn)),A(e,`plan`,j(t.plan,E(n,`plan`),r,In)),A(e,`activeBranch`,j(t.activeBranch,E(n,`activeBranch`),r,Ln))}const Yn=[`id`,`name`,`cwd`,`createdAt`,`updatedAt`,`messages`,`history`,`systemPrompt`,`toolSchemas`,`backgroundTasks`,`backgroundTaskEvents`,`backgroundJobGroups`,`backgroundJobGroupEvents`,`sessionLoops`,`skillActivationEvents`,`memoryEvents`,`usedMemoryReferences`,`contextReferences`,`sandboxSnapshotId`,`goal`,`plan`,`activeBranch`];function Xn(e){let t=[],n=er(e,``,t);return n===void 0||t.length>0?{status:`corrupt`,issues:t}:{status:`valid`,record:n}}function Zn(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.cwd==`string`)return t.cwd;let n=t.record;if(typeof n==`object`&&n){let e=n.cwd;if(typeof e==`string`)return e}}function Qn(e){return e===void 0?{}:{cwd:e}}function $n(e){let t=[],n=z(e,``,t,[`schemaVersion`,`record`]);if(n===void 0)return{status:`corrupt`,issues:t,...Qn(Zn(e))};let r=n.schemaVersion;if(typeof r!=`number`||!Number.isFinite(r))return{status:`unsupported`,schemaVersion:void 0,...Qn(Zn(e))};if(r!==1)return{status:`unsupported`,schemaVersion:r,...Qn(Zn(e))};let i=er(n.record,`record`,t);return i===void 0||t.length>0?{status:`corrupt`,issues:t,...Qn(Zn(e))}:{status:`valid`,record:i}}function er(e,t,n){let r=z(e,t,n,Yn);if(r===void 0)return;let i=M(r.id,E(t,`id`),n),a=M(r.cwd,E(t,`cwd`),n),o=L(r.createdAt,E(t,`createdAt`),n),s=L(r.updatedAt,E(t,`updatedAt`),n),c=R(r.messages,E(t,`messages`),n,V);if(i===void 0||a===void 0||o===void 0||s===void 0||c===void 0)return;let l={id:i,cwd:a,createdAt:o,updatedAt:s,messages:c};return Jn(l,r,t,n),l}function tr(e){try{return JSON.parse(e)}catch{throw Error(`Invalid session artifact: the bytes are not JSON.`)}}function nr(e,t={}){let n={schemaVersion:1,record:t.redact?t.redact(e):e};return JSON.stringify(n,null,2)}function rr(e){let t=$n(tr(e));if(t.status===`unsupported`)throw Error(`Unsupported session artifact schema version ${t.schemaVersion??`(absent or not a number)`} (this build reads 1).`);if(t.status===`corrupt`){let e=t.issues.slice(0,5),n=e.map(e=>`${e.path===``?`(root)`:e.path}: ${e.message}`).join(`; `),r=t.issues.length>e.length?` (+${t.issues.length-e.length} more)`:``;throw Error(`Invalid session artifact: ${n}${r}`)}return t.record}const ir=/^(api[-_]?key|authorization|access[-_]?token|refresh[-_]?token|secret|password|x[-_]?api[-_]?key)$/i;function ar(e){return ir.test(e)}function or(e,t,n){if(e!==void 0&&ar(e))return n;if(Array.isArray(t))return t.map(e=>or(void 0,e,n));if(typeof t==`object`&&t&&!(t instanceof Date)){let e=t,r={};for(let[t,i]of Object.entries(e))r[t]=or(t,i,n);return r}return t}function sr(e,t=`[REDACTED]`){return or(void 0,e,t)}const cr={sessionInit:`session_init`,sessionShutdown:`session_shutdown`,sessionShutdownStepError:`session_shutdown_step_error`,context:`context`,contextCompact:`context_compact`,error:`error`,historyMutation:`history_mutation`,providerRequest:`provider_request`,providerNativeRawPayload:`provider_native_raw_payload`,providerStreamRawDelta:`provider_stream_raw_delta`,providerResponseRaw:`provider_response_raw`,providerResponseNormalized:`provider_response_normalized`,structuredOutputTransport:`structured_output_transport`,providerFallback:`provider_fallback`,assistantMessageCommitted:`assistant_message_committed`,toolExecutionRequest:`tool_execution_request`,toolExecutionResult:`tool_execution_result`,toolBatchStarted:`tool_batch_started`,toolMessageCommitted:`tool_message_committed`,backgroundTaskEvent:`background_task_event`,backgroundJobGroupEvent:`background_job_group_event`,memoryEvent:`memory_event`,user:`user`,preRun:`pre_run`,textDelta:`text_delta`,assistant:`assistant`,toolCall:`tool_call`,toolResult:`tool_result`,toolBlocked:`tool_blocked`,toolDenied:`tool_denied`,serverTool:`server_tool`};function lr(e,t){return e.event===t}function ur(e,t,n,r){let i={};for(let[a,o]of Object.entries(t))i[a]=dr(e,a,o,n,r);return i}function dr(e,t,n,r,i){if(ar(t))return r.redactedValue;if(n==null||typeof n==`string`||typeof n==`number`)return fr(e,n,r,i);if(typeof n==`boolean`)return n;if(n instanceof Date)return n.toISOString();if(Array.isArray(n))return fr(e,n.map(n=>dr(e,t,n,r,i)),r,i);if(typeof n==`object`){let t=n,a={};for(let[n,o]of Object.entries(t))a[n]=dr(e,n,o,r,i);return fr(e,a,r,i)}return String(n)}function fr(e,t,r,i){let a=JSON.stringify(t);if(a===void 0||Buffer.byteLength(a)<=r.externalPayloadThresholdBytes||i===void 0)return t;let o=(0,n.createHash)(`sha256`).update(a).digest(`hex`);return i.writeJson(e,o,a)}const pr=(0,e.createLogger)(`FileSessionLogger`),mr=new Set([`text_delta`]),hr=new Set;let gr=!1;function _r(e){hr.add(e),!gr&&(typeof process>`u`||typeof process.on!=`function`||(gr=!0,process.on(`exit`,()=>{for(let e of hr)e.flush()})))}var vr=class{sink;options;pending=new Map;pendingBytes=0;constructor(e,t={}){this.sink=e,this.options={externalPayloadThresholdBytes:t.externalPayloadThresholdBytes??32768,redactedValue:t.redactedValue??`[REDACTED]`}}log(e,t,n){if(He(e))try{let r=ur(e,n,this.options,this.sink.externalPayloadSink),i=JSON.stringify({...r,schemaVersion:1,timestamp:new Date().toISOString(),sessionId:e,event:t})+`
8
8
  `;if(mr.has(t)){this.buffer(e,i);return}this.flush(),this.write(e,i)}catch(n){this.report(e,t,n)}}flush(){if(this.pending.size===0){hr.delete(this);return}let e=[...this.pending.entries()];this.pending.clear(),this.pendingBytes=0,hr.delete(this);for(let[t,n]of e)try{this.write(t,n.join(``))}catch(e){this.report(t,`flush`,e)}}buffer(e,t){_r(this);let n=this.pending.get(e)??[];n.push(t),this.pending.set(e,n),this.pendingBytes+=t.length,this.pendingBytes>=65536&&this.flush()}write(e,t){this.sink.append(e,t)}report(e,t,n){pr.warn(`session log write failed`,{sessionId:e,event:t,error:n instanceof Error?n.message:String(n)})}},yr=class{log(){}};const br=(0,e.createLogger)(`NodeSessionLogSink`),xr=/^[0-9a-f]{64}$/;function Sr(e,t){let r=(0,n.createHash)(`sha256`).update(t).digest(`hex`);if(!xr.test(e)||e!==r)throw Error(`Invalid sha256: external JSON payloads require their exact content digest.`)}function Cr(e,n,r){return Ue(e),Sr(n,r),{kind:`external-payload`,encoding:`json`,sha256:n,byteLength:Buffer.byteLength(r),relativePath:(0,t.join)(`${e}.payloads`,`${n}.json`)}}var wr=class{logDirectory;externalPayloadSink=this;enabled;constructor(e){this.logDirectory=e;try{(0,a.ensureOwnerOnlyDirectory)(e),this.enabled=!0}catch(t){this.enabled=!1,br.warn(`session log directory could not be created — session logging is disabled`,{logDirectory:e,error:t instanceof Error?t.message:String(t)})}}append(e,n){if(Ue(e),!this.enabled)return;let r=(0,t.join)(this.logDirectory,`${e}.jsonl`);(0,a.tightenExistingFile)(r),(0,i.appendFileSync)(r,n,{mode:a.OWNER_ONLY_FILE_MODE})}writeJson(e,n,r){let o=Cr(e,n,r),s=`${e}.payloads`;if(this.enabled){(0,a.ensureOwnerOnlyDirectory)((0,t.join)(this.logDirectory,s));let e=(0,t.join)(this.logDirectory,o.relativePath);try{(0,i.writeFileSync)(e,r,{encoding:`utf8`,mode:a.OWNER_ONLY_FILE_MODE,flag:`wx`})}catch(t){if(t.code!==`EEXIST`)throw t;(0,a.tightenExistingFile)(e)}}return o}};const G=e=>({decode:e}),K=e=>({decode:e,optional:!0}),Tr=(e,t,n)=>R(e,t,n,M),Er=(e,t,n)=>R(e,t,n,V),Dr=(e,t,n)=>R(e,t,n,qn),Or=(e,t,n)=>typeof e==`string`?e:V(e,t,n),q=(e,t,n)=>{let r=P(e,t,n);return r!==void 0&&r<0&&n.push({path:t,message:`expected a non-negative integer`}),r};function kr(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function J(e,t,n){if(!kr(e)){n.push({path:t,message:`expected an object, received ${k(e)}`});return}for(let[r,i]of Object.entries(e))Y(i,E(t,r),n);return e}const Ar=[`maxTokens`,`usedTokens`,`usedPercentage`,`remainingPercentage`];function jr(e,t,n){let r=z(e,t,n,Ar);if(r===void 0)return;let i=N(r.maxTokens,E(t,`maxTokens`),n),a=N(r.usedTokens,E(t,`usedTokens`),n),o=N(r.usedPercentage,E(t,`usedPercentage`),n),s=N(r.remainingPercentage,E(t,`remainingPercentage`),n);if(i!==void 0&&a!==void 0&&o!==void 0&&s!==void 0)return{maxTokens:i,usedTokens:a,usedPercentage:o,remainingPercentage:s}}const Mr=(e,t,n)=>R(e,t,n,(e,t,n)=>{let r=z(e,t,n,[`type`,`id`]);if(r===void 0)return;let i=M(r.type,E(t,`type`),n),a=M(r.id,E(t,`id`),n);return i===void 0||a===void 0?void 0:{type:i,id:a}});function Y(e,t,n,r=new WeakSet){if(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&Number.isFinite(e))return e;if(typeof e!=`object`||e instanceof Date){n.push({path:t,message:`expected a JSON-compatible value, received ${k(e)}`});return}if(!Array.isArray(e)&&!kr(e)){n.push({path:t,message:`expected a JSON-compatible object, received ${k(e)}`});return}if(r.has(e)){n.push({path:t,message:`expected an acyclic JSON-compatible value`});return}if(r.add(e),Array.isArray(e))for(let i=0;i<e.length;i++)Y(e[i],D(t,i),n,r);else for(let[i,a]of Object.entries(e))Y(a,E(t,i),n,r);return r.delete(e),e}function Nr(e,t,n,r=new WeakSet){if(!(typeof e!=`object`||!e||e instanceof Date)){if(r.has(e)){n.push({path:t,message:`expected an acyclic value`});return}if(r.add(e),Array.isArray(e))for(let i=0;i<e.length;i++)Object.hasOwn(e,i)?Nr(e[i],D(t,i),n,r):n.push({path:D(t,i),message:`expected an array element, received nothing`});else for(let[i,a]of Object.entries(e))Nr(a,E(t,i),n,r);r.delete(e)}}const X=(...e)=>(t,n,r)=>I(t,e,n,r),Pr={session_init:{cwd:G(M),systemPromptLength:G(q),systemPrompt:G(M),toolSchemas:G(Dr),model:G(M),provider:G(M)},session_shutdown:{reason:G(M)},session_shutdown_step_error:{step:G(M),error:G(M)},context:{maxTokens:G(N),usedTokens:G(N),usedPercentage:G(N),remainingPercentage:G(N)},context_compact:{trigger:G(M),before:G(jr),after:G(jr)},error:{message:G(M),stack:G(M),historyLength:G(q)},history_mutation:{executionId:K(M),conversationId:K(M),round:K(q),batchId:K(M),usageObservationId:K(M),providerId:K(M),modelId:K(M),providerError:K(F),contextOverflow:K(F),mutation:G(X(`append_message`)),index:G(q),message:G(V)},provider_request:{executionId:G(M),conversationId:K(M),round:G(q),provider:G(M),model:G(M),effort:K(M),forcedSummary:K(F),messages:G(Er),tools:K(Dr)},provider_native_raw_payload:{executionId:G(M),conversationId:K(M),round:G(q),provider:G(M),apiSurface:K(M),payloadKind:G(X(`request`,`response`,`stream_event`)),sequence:G(q),payload:K(Y),metadata:K(J)},provider_stream_raw_delta:{executionId:G(M),conversationId:K(M),round:G(q),sequence:G(q),delta:G(M)},provider_response_raw:{executionId:G(M),conversationId:K(M),round:G(q),effort:K(M),response:G(V),responseKind:G(M)},provider_response_normalized:{executionId:G(M),conversationId:K(M),round:G(q),response:G(V),toolCallsCount:K(q)},structured_output_transport:{executionId:G(M),conversationId:K(M),round:G(q),provider:G(M),model:G(M),mechanism:G(X(`response_schema`,`json_object`,`none`)),provenance:G(X(`catalog`,`vendor-default`,`undeclared`,`unverified-endpoint`)),sent:G(F),schemaInPrompt:G(F),reason:K(M)},provider_fallback:{executionId:G(M),conversationId:K(M),round:G(q),fromProvider:G(M),fromModel:G(M),toProvider:G(M),toModel:G(M),reason:G(M)},assistant_message_committed:{executionId:G(M),conversationId:K(M),round:G(q),message:G(Or)},tool_execution_request:{executionId:G(M),conversationId:K(M),round:G(q),batchId:K(M),index:K(q),toolName:G(M),toolCallId:G(M),parameters:G(J),ownerPath:K(Mr)},tool_execution_result:{executionId:G(M),conversationId:K(M),round:G(q),batchId:K(M),index:K(q),toolName:K(M),toolCallId:K(M),success:G(F),result:K(Y),error:K(M),metadata:K(J)},tool_batch_started:{executionId:G(M),conversationId:K(M),round:G(q),batchId:K(M),mode:G(X(`parallel`,`sequential`)),maxConcurrency:G(q),requestCount:G(q),tools:G(Tr)},tool_message_committed:{executionId:G(M),conversationId:K(M),round:G(q),batchId:K(M),index:K(q),message:G(V)},background_task_event:{backgroundEventType:K(M),backgroundEvent:K(gn),data:K(gn),taskId:K(M),originToolCallId:K(M)},background_job_group_event:{backgroundJobGroupEvent:K($t),data:K($t)},memory_event:{memoryEvent:K(En),data:K(En)},user:{content:G(M)},pre_run:{historyLength:G(q),historyChars:G(q),historyEstTokens:G(q),input:G(M),history:G(Er),model:G(M),provider:G(M),maxTokens:G(N),nativeWebSearchSupported:G(F),nativeWebSearchEnabled:G(F),nativeWebFetchSupported:G(F),nativeWebFetchEnabled:G(F)},text_delta:{delta:G(M)},assistant:{content:G(M),historyLength:G(q),estimatedChars:G(q),history:G(Er),historyStructure:G((e,t,n)=>R(e,t,n,(e,t,n)=>{if(typeof e!=`object`||!e||Array.isArray(e)){n.push({path:t,message:`expected an object, received ${k(e)}`});return}let r=e;I(r.role,[`user`,`assistant`,`system`,`tool`],E(t,`role`),n),q(r.contentLength,E(t,`contentLength`),n),F(r.hasToolCalls,E(t,`hasToolCalls`),n),Tr(r.toolCallNames,E(t,`toolCallNames`),n),r.metadata!==void 0&&J(r.metadata,E(t,`metadata`),n);for(let e of Object.keys(r))[`role`,`contentLength`,`hasToolCalls`,`toolCallNames`,`metadata`].includes(e)||n.push({path:E(t,e),message:`unknown history structure field`});return r}))},tool_call:{tool:G(M),args:G(J)},tool_result:{tool:G(M),success:G(F),dataChars:G(q),truncated:G(F)},tool_blocked:{tool:G(M),reason:G(M)},tool_denied:{tool:G(M),reason:G(M)},server_tool:{tool:G(M)}};var Fr=class extends Error{code;issues;schemaVersion;constructor(e,t,n={}){super(`Session log decode failed: ${e}${t[0]?` at ${t[0].path}: ${t[0].message}`:``}`,{cause:n.cause}),this.name=`SessionLogDecodeError`,this.code=e,this.issues=t,n.schemaVersion!==void 0&&(this.schemaVersion=n.schemaVersion)}};const Ir=new Set(Object.values(cr));function Lr(e,t={}){if(!Array.isArray(e))throw new Fr(`INVALID_EVENT`,[{path:`entries`,message:`expected an array, received ${k(e)}`}]);let n=[],r=[],i;for(let[a,o]of e.entries()){let e=Rr(o,t.lineNumbers?.[a]===void 0?`[${a}]`:`line ${t.lineNumbers[a]}`,n);e.entry!==void 0&&r.push(e.entry),i??=e.unsupported}if(n.length>0)throw new Fr(i===void 0?`INVALID_EVENT`:`UNSUPPORTED_VERSION`,n,{schemaVersion:i});return r}function Rr(e,t,n){if(!kr(e))return n.push({path:t,message:`expected an object, received ${k(e)}`}),{};let r=n.length;if(Nr(e,t,n),n.length!==r)return{};let i=zr(e,t,n);return i.event===void 0?{unsupported:i.unsupported}:(Br(e,i.event,t,i.output,n),{entry:i.output,unsupported:i.unsupported})}function zr(e,t,n){let r={schemaVersion:1},i;if(e.schemaVersion!==1){let r=e.schemaVersion;typeof r==`number`&&Number.isSafeInteger(r)&&r>=0?(i=r,n.push({path:E(t,`schemaVersion`),message:`unsupported schema version`})):n.push({path:E(t,`schemaVersion`),message:`expected schema version 1, received ${k(r)}`})}let a=L(e.timestamp,E(t,`timestamp`),n);a!==void 0&&(r.timestamp=a);let o=M(e.sessionId,E(t,`sessionId`),n);o===``&&n.push({path:E(t,`sessionId`),message:`expected a non-empty session ID`}),o!==void 0&&(r.sessionId=o);let s=e.event;return typeof s!=`string`||!Ir.has(s)?(n.push({path:E(t,`event`),message:`expected a declared event name, received ${k(s)}`}),{output:r,unsupported:i}):(r.event=s,{output:r,event:s,unsupported:i})}function Br(e,t,n,r,i){let a=Pr[t];for(let[t,o]of Object.entries(a)){if(!Object.hasOwn(e,t)&&o.optional)continue;let a=o.decode(e[t],E(n,t),i);a!==void 0&&(r[t]=a)}for(let o of Object.keys(e)){if([`schemaVersion`,`timestamp`,`sessionId`,`event`,...Object.keys(a)].includes(o))continue;if(t!==`server_tool`){i.push({path:E(n,o),message:`unknown event payload field`});continue}let s=Y(e[o],E(n,o),i);s!==void 0&&(r[o]=s)}Vr(e,t,n,i)}function Vr(e,t,n,r){t===`background_task_event`&&e.backgroundEvent===void 0&&e.data===void 0&&r.push({path:n,message:`expected a background task event payload`}),t===`background_job_group_event`&&e.backgroundJobGroupEvent===void 0&&e.data===void 0&&r.push({path:n,message:`expected a background job group event payload`}),t===`memory_event`&&e.memoryEvent===void 0&&e.data===void 0&&r.push({path:n,message:`expected a memory event payload`})}var Z=class extends Error{code;metadata;constructor(e,t,n={},r){super(t,r===void 0?void 0:{cause:r}),this.name=`SessionLogPayloadResolutionError`,this.code=e,this.metadata=n}};function Hr(e){if(e.trim().length===0||e.includes(`\0`)||(0,t.isAbsolute)(e)||t.win32.isAbsolute(e))throw Wr(e);let n=e.split(/[\\/]+/u);if(n.some(e=>e===`.`||e===`..`))throw Wr(e);return n}function Ur(e){if(!Number.isFinite(e)||!Number.isSafeInteger(e)||e<0)throw new Z(`INVALID_LIMIT`,`External-payload maxBytes must be a finite, non-negative safe integer.`,{actual:String(e)})}function Wr(e,t){return new Z(`OUTSIDE_ROOT`,`External payload path escapes its base directory or contains a link: ${e}.`,{relativePath:e},t)}function Gr(e,t,n){return e.code===`INVALID_PATH`||e.code===`UNSAFE_ENTRY`?Wr(t,e):e.code===`UNSUPPORTED_BACKEND`?new Z(`STABLE_PAYLOAD_READ_UNAVAILABLE`,`Stable root-relative external-payload reads are unavailable on this host.`,{relativePath:t},e):e.code===`OVER_BUDGET`?new Z(`MAX_TOTAL_BYTES_EXCEEDED`,`External payload exceeds the remaining byte budget of ${n}.`,{relativePath:t,expected:n},e):new Z(`PAYLOAD_UNREADABLE`,`External payload could not be read: ${t}.`,{relativePath:t},e)}var Kr=class{baseDirectory;constructor(e){if(e.trim().length===0)throw Error(`External-payload base directory must not be empty.`);this.baseDirectory=(0,t.resolve)(e)}readBytes(e,t){Ur(t);let n=Hr(e);try{let e=(0,o.createStableRootedFileReader)(this.baseDirectory);try{return e.readBytes(n,t)}finally{e.close()}}catch(n){throw n instanceof Z?n:n instanceof o.StableFileAuthorityError?Gr(n,e,t):new Z(`PAYLOAD_UNREADABLE`,`External payload could not be read: ${e}.`,{relativePath:e},n)}}},qr=class{logFile;externalPayloadSource;constructor(e){if(this.logFile=e,e.trim().length===0)throw Error(`Session log-file path must not be empty.`);this.externalPayloadSource=new Kr((0,t.dirname)(e))}readText(){return(0,i.existsSync)(this.logFile)?(0,i.readFileSync)(this.logFile,`utf8`):void 0}};const Jr=/^tool-result:([A-Za-z0-9_-]{22,64})$/u,Yr=8*1024*1024,Xr=i.constants.O_WRONLY|i.constants.O_CREAT|i.constants.O_EXCL|(i.constants.O_NOFOLLOW??0);var Q=class extends Error{code;constructor(e){super(`Tool result spill failed (${e})`),this.code=e,this.name=`ToolResultSpillError`}},Zr=class{directory;retentionMs;now;onCleanupFailure;entries=new Map;expiryTimer;closed=!1;constructor(e={}){let n=e.parentDirectory??(0,r.tmpdir)();if(this.retentionMs=e.retentionMs??36e5,this.now=e.now??Date.now,this.onCleanupFailure=e.onCleanupFailure,!Number.isSafeInteger(this.retentionMs)||this.retentionMs<=0)throw new Q(`invalid-options`);try{let e=(0,i.lstatSync)(n);if(!e.isDirectory()||e.isSymbolicLink())throw Error(`unsafe parent`);this.directory=(0,i.mkdtempSync)((0,t.join)(n,`agent-tool-results-`)),process.platform!==`win32`&&(0,i.chmodSync)(this.directory,448),this.assertRoot()}catch{throw new Q(`unsafe-root`)}}assertRoot(){try{let e=(0,i.lstatSync)(this.directory);if(!e.isDirectory()||e.isSymbolicLink())throw Error(`unsafe directory`);if(process.platform!==`win32`&&e.mode&63)throw Error(`directory is not owner-only`)}catch{throw new Q(`unsafe-root`)}}scheduleExpiry(e=1){if(this.expiryTimer!==void 0&&clearTimeout(this.expiryTimer),this.expiryTimer=void 0,this.closed||this.entries.size===0)return;let t=1/0;for(let e of this.entries.values())e.expiresAt<t&&(t=e.expiresAt);let n=Math.min(2147483647,Math.max(e,t-this.now()));this.expiryTimer=setTimeout(()=>{this.expiryTimer=void 0,this.cleanupExpired().catch(()=>{try{this.onCleanupFailure?this.onCleanupFailure(`cleanup-failed`):process.emitWarning(`Tool result spill expiry cleanup failed (cleanup-failed)`)}catch{process.emitWarning(`Tool result spill expiry cleanup failed (cleanup-failed)`)}this.scheduleExpiry(6e4)})},n),this.expiryTimer.unref?.()}async write(e){if(this.closed)throw new Q(`closed`);if(await this.cleanupExpired(),this.assertRoot(),Buffer.byteLength(e,`utf8`)>Yr)throw new Q(`write-failed`);let r=(0,n.randomBytes)(18).toString(`base64url`),a=`${(0,n.randomBytes)(18).toString(`base64url`)}.partial`,o=`${r}.txt`,s=(0,t.join)(this.directory,a),c=(0,t.join)(this.directory,o),l,u=!1;try{l=(0,i.openSync)(s,Xr,384),(0,i.writeFileSync)(l,e,`utf8`),(0,i.fsyncSync)(l),(0,i.closeSync)(l),l=void 0,(0,i.linkSync)(s,c),u=!0,(0,i.unlinkSync)(s);let t=`tool-result:${r}`;return this.entries.set(t,{fileName:o,expiresAt:this.now()+this.retentionMs}),this.scheduleExpiry(),{reference:t}}catch{let e=!1;if(l!==void 0)try{(0,i.closeSync)(l)}catch{e=!0}try{(0,i.unlinkSync)(s)}catch(t){t.code!==`ENOENT`&&(e=!0)}if(u)try{(0,i.unlinkSync)(c)}catch{e=!0}throw new Q(e?`cleanup-failed`:`write-failed`)}}async read(e){if(this.closed)throw new Q(`closed`);if(!Jr.test(e))throw new Q(`invalid-reference`);let t=this.entries.get(e);if(!t)throw new Q(`missing`);if(this.now()>=t.expiresAt)throw this.removeEntry(e,t),this.scheduleExpiry(),new Q(`expired`);this.assertRoot();try{let e=new Kr(this.directory).readBytes(t.fileName,Yr);if(e===void 0)throw new Q(`missing`);return Buffer.from(e).toString(`utf8`)}catch(e){throw e instanceof Q?e:new Q(`read-failed`)}}removeEntry(e,n){this.assertRoot();try{(0,i.unlinkSync)((0,t.join)(this.directory,n.fileName)),this.entries.delete(e)}catch{throw new Q(`cleanup-failed`)}}async cleanupExpired(){if(this.closed)throw new Q(`closed`);for(let[e,t]of this.entries)this.now()>=t.expiresAt&&this.removeEntry(e,t);this.scheduleExpiry()}async shutdown(){if(!this.closed){this.expiryTimer!==void 0&&clearTimeout(this.expiryTimer),this.expiryTimer=void 0;for(let[e,t]of this.entries)this.removeEntry(e,t);this.assertRoot();try{if((0,i.readdirSync)(this.directory).length!==0)throw Error(`unexpected files`);(0,i.rmdirSync)(this.directory),this.closed=!0}catch{throw new Q(`cleanup-failed`)}}}};function Qr(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=e;return typeof t.at==`string`&&typeof t.sessionId==`string`&&typeof t.project==`string`&&typeof t.text==`string`}function $r(e){if(e.trim().length===0)return;let t;try{t=JSON.parse(e)}catch{return}if(Qr(t))return{at:t.at,sessionId:t.sessionId,project:t.project,text:t.text}}function ei(e){let t=[],n=0;for(let r of e){if(r.length===0)continue;let e=$r(r);e===void 0?n+=1:t.push(e)}return{entries:t,skippedLines:n}}function ti(e){return e.code===`ENOENT`}var ni=class{path;blockBytes;ownedRoot;constructor(e,t={}){this.path=e,this.blockBytes=t.blockBytes??65536,this.ownedRoot=t.ownedRoot}append(e){(0,a.ensureOwnerOnlyDirectory)((0,t.dirname)(this.path),this.ownedRoot===void 0?{}:{withinRoot:this.ownedRoot}),(0,a.tightenExistingFile)(this.path),(0,i.appendFileSync)(this.path,`${JSON.stringify(e)}\n`,{mode:a.OWNER_ONLY_FILE_MODE})}async*read(e){let t;try{t=(0,i.openSync)(this.path,i.constants.O_RDONLY|(i.constants.O_NOFOLLOW??0))}catch(e){if(e instanceof Error&&ti(e))return;throw e}try{let n=(0,i.fstatSync)(t).size,r=Buffer.alloc(0);for(;n>0&&!e.signal.aborted;){let e=Math.min(this.blockBytes,n);n-=e;let a=Buffer.alloc(e),o=(0,i.readSync)(t,a,0,e,n),s=Buffer.concat([a.subarray(0,o),r]),c=n===0?-1:s.indexOf(10);r=c===-1&&n>0?s:s.subarray(0,c+1);let l=n===0?s:c===-1?Buffer.alloc(0):s.subarray(c+1);n>0&&c===-1||(yield ei(l.toString(`utf8`).split(`
9
9
  `).reverse()))}}finally{(0,i.closeSync)(t)}}};const ri=/^[0-9a-f]{64}$/i;function ii(e){if(!ai(e))throw new Z(`INVALID_REFERENCE`,`External payload reference has an invalid shape.`);return{kind:`external-payload`,encoding:`json`,sha256:String(e.sha256).toLowerCase(),byteLength:Number(e.byteLength),relativePath:String(e.relativePath)}}function ai(e){let t=Object.keys(e).sort(),n=[`byteLength`,`encoding`,`kind`,`relativePath`,`sha256`];return t.length===n.length&&t.every((e,t)=>e===n[t])&&e.kind===`external-payload`&&e.encoding===`json`&&typeof e.sha256==`string`&&ri.test(e.sha256)&&typeof e.byteLength==`number`&&Number.isSafeInteger(e.byteLength)&&e.byteLength>=0&&typeof e.relativePath==`string`&&e.relativePath.trim().length>0}function oi(e,t){return li(e,si(t),0)}function si(e){let t=ci(`maxDepth`,e.maxDepth??32),n=ci(`maxTotalBytes`,e.maxTotalBytes??67108864);return{source:e.source,maxDepth:t,maxTotalBytes:n,totalBytes:0,activePayloadPaths:new Set,activeObjects:new WeakSet}}function ci(e,t){if(!Number.isFinite(t)||!Number.isSafeInteger(t)||t<0)throw new Z(`INVALID_LIMIT`,`${e} must be a finite, non-negative safe integer.`,{actual:String(t)});return t}function li(e,t,n){if(e===null||typeof e==`string`||typeof e==`boolean`||typeof e==`number`&&Number.isFinite(e))return e;if(typeof e==`number`)throw fi(`Non-finite numbers are not valid session-log JSON values.`);if(typeof e!=`object`)throw fi(`Unsupported session-log JSON value type: ${typeof e}.`);if(t.activeObjects.has(e))throw new Z(`CIRCULAR_REFERENCE`,`Circular in-memory value encountered while resolving external payloads.`,{depth:n});if(pi(e))return ui(e,t,n);if(Array.isArray(e)){t.activeObjects.add(e);try{return e.map(e=>li(e,t,n))}finally{t.activeObjects.delete(e)}}if(!mi(e))throw fi(`Session-log payload objects must be plain JSON records.`);t.activeObjects.add(e);try{return Object.fromEntries(Object.entries(e).map(([e,r])=>[e,li(r,t,n)]))}finally{t.activeObjects.delete(e)}}function ui(e,t,n){let r=ii(e);if(n>=t.maxDepth)throw new Z(`MAX_DEPTH_EXCEEDED`,`External-payload reference depth exceeds the configured maximum of ${t.maxDepth}.`,{relativePath:r.relativePath,depth:n});if(t.source===void 0)throw new Z(`UNRESOLVED_REFERENCE`,`An external session-log payload requires an explicit payload source.`,{relativePath:r.relativePath,depth:n});if(t.activePayloadPaths.has(r.relativePath))throw new Z(`CIRCULAR_REFERENCE`,`External payload ${r.relativePath} recursively references an active payload.`,{relativePath:r.relativePath,depth:n});let i=di(r,t);t.activePayloadPaths.add(r.relativePath);try{return li(i,t,n+1)}finally{t.activePayloadPaths.delete(r.relativePath)}}function di(e,t){let r=t.maxTotalBytes-t.totalBytes,i=t.source?.readBytes(e.relativePath,r);if(i===void 0)throw new Z(`PAYLOAD_NOT_FOUND`,`External payload was not found: ${e.relativePath}.`,{relativePath:e.relativePath});let a=t.totalBytes+i.byteLength;if(!Number.isSafeInteger(a)||a>t.maxTotalBytes)throw new Z(`MAX_TOTAL_BYTES_EXCEEDED`,`External-payload bytes exceed the configured maximum of ${t.maxTotalBytes}.`,{expected:t.maxTotalBytes,actual:a});if(t.totalBytes=a,i.byteLength!==e.byteLength)throw new Z(`BYTE_LENGTH_MISMATCH`,`External payload byte length does not match its reference: ${e.relativePath}.`,{relativePath:e.relativePath,expected:e.byteLength,actual:i.byteLength});let o=(0,n.createHash)(`sha256`).update(i).digest(`hex`);if(o!==e.sha256)throw new Z(`SHA256_MISMATCH`,`External payload sha256 does not match its reference: ${e.relativePath}.`,{relativePath:e.relativePath,expected:e.sha256,actual:o});try{return JSON.parse(Buffer.from(i).toString(`utf8`))}catch(t){throw new Z(`INVALID_JSON`,`External payload is not valid JSON: ${e.relativePath}.`,{relativePath:e.relativePath},t)}}function fi(e){return new Z(`INVALID_JSON`,e)}function pi(e){return!Array.isArray(e)&&`kind`in e&&e.kind===`external-payload`}function mi(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function hi(e){let t=[],n=gi(),r=_i();return Lr(e).forEach((e,i)=>{Ti(e,i,t),yi(e,i,t),vi(n,e,i),bi(r,e,i)}),xi(n,t),Si(r,t),{ok:t.length===0,issues:t}}function gi(){return{requests:new Map,nativeRawPayloads:new Set,rawResponses:new Set,normalizedResponses:new Set}}function _i(){return{requests:new Map,results:new Set}}function vi(e,t,n){let r=Ci(t);r&&(t.event===`provider_request`&&e.requests.set(r.key,{executionId:r.executionId,round:r.round,index:n}),t.event===`provider_response_raw`&&e.rawResponses.add(r.key),t.event===`provider_native_raw_payload`&&(t.payloadKind===`response`||t.payloadKind===`stream_event`)&&e.nativeRawPayloads.add(r.key),t.event===`provider_response_normalized`&&!$(t.response)&&e.normalizedResponses.add(r.key))}function yi(e,t,n){$(e.event===`history_mutation`?e.message:e.event===`provider_response_normalized`?e.response:void 0)&&n.push({code:`UNRESOLVED_REPLAY_PAYLOAD`,message:`Replay substrate ${e.event} contains an unresolved external payload.`,eventIndex:t,executionId:typeof e.executionId==`string`?e.executionId:void 0,round:typeof e.round==`number`?e.round:void 0})}function bi(e,t,n){let r=wi(t);r&&(t.event===`tool_execution_request`&&e.requests.set(r.key,{executionId:r.executionId,toolCallId:r.toolCallId,index:n}),t.event===`tool_execution_result`&&e.results.add(r.key))}function xi(e,t){for(let[n,r]of e.requests)e.nativeRawPayloads.has(n)||t.push({code:`PROVIDER_NATIVE_RAW_PAYLOAD_MISSING`,message:`Provider request ${n} has no provider-native raw response or stream payload event.`,eventIndex:r.index,executionId:r.executionId,round:r.round}),e.rawResponses.has(n)||t.push({code:`PROVIDER_RESPONSE_RAW_MISSING`,message:`Provider request ${n} has no raw response event.`,eventIndex:r.index,executionId:r.executionId,round:r.round}),e.normalizedResponses.has(n)||t.push({code:`PROVIDER_RESPONSE_NORMALIZED_MISSING`,message:`Provider request ${n} has no normalized response event.`,eventIndex:r.index,executionId:r.executionId,round:r.round})}function Si(e,t){for(let[n,r]of e.requests)e.results.has(n)||t.push({code:`TOOL_RESULT_MISSING`,message:`Tool request ${n} has no terminal result event.`,eventIndex:r.index,executionId:r.executionId,toolCallId:r.toolCallId})}function Ci(e){if(typeof e.executionId!=`string`)return;let t=typeof e.round==`number`?e.round:Number(e.round);if(Number.isFinite(t))return{key:`${e.executionId}:${t}`,executionId:e.executionId,round:t}}function wi(e){if(typeof e.executionId!=`string`)return;let t=typeof e.toolCallId==`string`?e.toolCallId:typeof e.toolExecutionId==`string`?e.toolExecutionId:void 0;if(t)return{key:`${e.executionId}:${t}`,executionId:e.executionId,toolCallId:t}}function Ti(e,t,n){if(Array.isArray(e)){e.forEach(e=>Ti(e,t,n));return}if(Ei(e)){if(e.kind===`external-payload`){ai(e)||n.push({code:`PAYLOAD_REFERENCE_INVALID`,message:`External payload reference is missing required replay fields.`,eventIndex:t});return}Object.values(e).forEach(e=>Ti(e,t,n))}}function $(e){return Array.isArray(e)?e.some(e=>$(e)):Ei(e)?e.kind===`external-payload`||Object.values(e).some(e=>$(e)):!1}function Ei(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Di(e,t={}){let n=e.readText(),r=[];return n!==void 0&&n.split(`
10
10
  `).forEach((e,t)=>{if(e.trim().length!==0)try{r.push({value:JSON.parse(e),lineNumber:t+1})}catch(e){throw new Fr(`INVALID_JSON`,[{path:`line ${t+1}`,message:`expected valid JSON`}],{cause:e})}}),Lr(oi(r.map(({value:e})=>e),{source:t.externalPayloadSource??e.externalPayloadSource,...t}),{lineNumbers:r.map(({lineNumber:e})=>e)})}function Oi(t){let n=[],r=[],i={backgroundTaskEvents:[],backgroundJobGroupEvents:[],memoryEvents:[]},a,o,s,c;for(let l of Lr(t))a??=l.sessionId,s??=l.timestamp,c=l.timestamp,l.event===`session_init`&&(o=typeof l.cwd==`string`?l.cwd:o),l.event===`history_mutation`&&l.mutation===`append_message`&&(n.push(l.message),r.push((0,e.messageToHistoryEntry)(l.message))),ki(l,i);return{sessionId:a,cwd:o,createdAt:s,updatedAt:c,messages:n,history:r,backgroundTaskEvents:i.backgroundTaskEvents,backgroundJobGroupEvents:i.backgroundJobGroupEvents,memoryEvents:i.memoryEvents}}function ki(e,t){if(e.event===`background_task_event`){ji(t.backgroundTaskEvents,e,`backgroundEvent`,`data`);return}if(e.event===`background_job_group_event`){ji(t.backgroundJobGroupEvents,e,`backgroundJobGroupEvent`,`data`);return}e.event===`memory_event`&&ji(t.memoryEvents,e,`memoryEvent`,`data`)}function Ai(e,t){let n=e[t];if(!(typeof n!=`object`||!n||Array.isArray(n)||n instanceof Date))return n}function ji(e,t,n,r){let i=Ai(t,n)??Ai(t,r);i&&e.push(i)}function Mi(e){return e instanceof Error?e.message:`unknown error`}function Ni(e){let t;try{t=JSON.parse(e)}catch{return{status:`corrupt`,issues:[{path:``,message:`the session file is not JSON`}]}}let n=$n(t);return n.status===`valid`?{status:`valid`,record:n.record}:n.status===`unsupported`?{status:`unsupported`,schemaVersion:n.schemaVersion,...n.cwd===void 0?{}:{cwd:n.cwd}}:{status:`corrupt`,issues:n.issues,...n.cwd===void 0?{}:{cwd:n.cwd}}}function Pi(e,t){let n=e=>e.outcome.status===`valid`?new Date(e.outcome.record.updatedAt).getTime():0;return n(t)-n(e)}var Fi=class{baseDir;ownedRoot;constructor(e,t){this.baseDir=e,this.ownedRoot=t}ensureDir(){(0,a.ensureOwnerOnlyDirectory)(this.baseDir,this.ownedRoot===void 0?{}:{withinRoot:this.ownedRoot})}filePath(e){Ue(e);let t=(0,c.resolve)(this.baseDir),n=(0,c.resolve)(t,`${e}.json`);if(!n.startsWith(t+c.sep))throw Error(`Invalid session id: ${JSON.stringify(e)} resolves outside the session store.`);return n}save(e){this.ensureDir(),(0,a.writeOwnerOnlyFile)(this.filePath(e.id),JSON.stringify({schemaVersion:1,record:e},null,2))}load(e){let t=this.filePath(e);if(!(0,s.existsSync)(t))return{status:`missing`};let n;try{n=(0,s.readFileSync)(t,`utf-8`)}catch(e){return{status:`corrupt`,issues:[{path:``,message:`could not read the session file: ${Mi(e)}`}]}}return Ni(n)}list(){return(0,s.existsSync)(this.baseDir)?(0,s.readdirSync)(this.baseDir).filter(e=>e.endsWith(`.json`)).map(e=>e.slice(0,-5)).map(e=>({id:e,outcome:this.outcomeForListedId(e)})).sort(Pi):[]}outcomeForListedId(e){return He(e)?this.load(e):{status:`corrupt`,issues:[{path:``,message:`the file name is not a usable session id`}]}}delete(e){let t=this.filePath(e);(0,s.existsSync)(t)&&(0,s.unlinkSync)(t)}},Ii=class e{nodes=new Map;children=new Map;activeId;static fromNodes(t,n){let r=new e;for(let e of t){if(r.nodes.has(e.id))throw Error(`CheckpointTree: duplicate node "${e.id}"`);r.nodes.set(e.id,e.parentId===void 0?{id:e.id}:{...e})}for(let e of t)if(e.parentId!==void 0){let t=r.children.get(e.parentId)??[];t.push(e.id),r.children.set(e.parentId,t)}return r.activeId=n,r}addCheckpoint(e){if(this.nodes.has(e))throw Error(`CheckpointTree: duplicate checkpoint id "${e}"`);let t=this.activeId;if(this.nodes.set(e,t===void 0?{id:e}:{id:e,parentId:t}),t!==void 0){let n=this.children.get(t)??[];n.push(e),this.children.set(t,n)}this.activeId=e}fork(e){if(!this.nodes.has(e))throw Error(`CheckpointTree: unknown checkpoint "${e}"`);return this.activeId=e,e}switch(e){if(!this.nodes.has(e))throw Error(`CheckpointTree: unknown checkpoint "${e}"`);this.activeId=e}activeLeaf(){return this.activeId}listBranches(){let e=[];for(let t of this.nodes.keys())(this.children.get(t)?.length??0)===0&&e.push(t);return e}ancestors(e){let t=[],n=e;for(;n!==void 0&&this.nodes.has(n);)t.push(n),n=this.nodes.get(n).parentId;return t}has(e){return this.nodes.has(e)}get size(){return this.nodes.size}};exports.AUTO_COMPACT_THRESHOLD=x,exports.AutoModeGate=ce,exports.CONSECUTIVE_BLOCK_LIMIT=3,exports.CheckpointTree=Ii,exports.CompactionError=v,exports.CompactionOrchestrator=b,exports.ContextWindowTracker=S,exports.DEFAULT_COMPACTION_PROMPT=y,exports.DEFAULT_PROMPT_HISTORY_BLOCK_BYTES=65536,exports.FileSessionLogger=vr,exports.INTERACTIVE_SESSION_RECORD_KEYS=Yn,exports.NodeExternalPayloadSource=Kr,exports.NodePromptHistoryFile=ni,exports.NodeSessionLogSink=wr,exports.NodeSessionLogSource=qr,exports.NodeSessionStore=Fi,exports.NodeToolResultSpillStore=Zr,exports.PermissionEnforcer=Ae,exports.SENSITIVE_KEY_PATTERN=ir,exports.SESSION_LOG_EVENT=cr,exports.SESSION_LOG_SCHEMA_VERSION=1,exports.SESSION_RECORD_ENVELOPE_VERSION=1,exports.Session=yt,exports.SessionBusyError=u,exports.SessionLogDecodeError=Fr,exports.SessionLogPayloadResolutionError=Z,exports.SilentSessionLogger=yr,exports.TOTAL_BLOCK_LIMIT=20,exports.ToolResultSpillError=Q,exports.TurnClaim=d,exports.assertSafeSessionId=Ue,exports.consentScopeFor=de,exports.createSessionLogExternalPayloadReference=Cr,exports.decodeInteractiveSessionRecord=Xn,exports.decodeSessionLogEntries=Lr,exports.decodeVersionedInteractiveSessionRecord=$n,exports.deserializeSessionArtifact=rr,exports.formatConversationEntries=_,exports.isSafeSessionId=He,exports.isSensitiveKey=ar,exports.isSessionLogEvent=lr,exports.loadSessionLogEntries=Di,exports.parsePromptHistoryLine=$r,exports.replaySessionLogEntries=Oi,exports.resolveSessionLogExternalPayloads=oi,exports.scrubSensitiveKeys=sr,exports.serializeSessionArtifact=nr,exports.validateSessionReplayLogEntries=hi;
@@ -381,6 +381,8 @@ interface ISessionOptions {
381
381
  maxTurns?: number;
382
382
  /** Optional session store for persistence */
383
383
  sessionStore?: IInteractiveSessionStore$1;
384
+ /** The owning interactive session's strict pre-effect save, when it owns this record. */
385
+ checkpointHistory?: () => void;
384
386
  /** Override session ID (used when resuming a session to reuse the original ID) */
385
387
  sessionId?: string;
386
388
  /** Custom permission handler (overrides terminal-based prompts, used by Ink UI) */
@@ -964,6 +966,7 @@ declare class Session extends SessionBase {
964
966
  protected messageCount: number;
965
967
  private readonly terminal;
966
968
  private readonly sessionStore?;
969
+ private readonly checkpointHistoryCallback?;
967
970
  private readonly hooks?;
968
971
  private readonly hookTypeExecutors?;
969
972
  private readonly onTextDeltaCallback?;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/context-window-tracker.ts","../../src/session-log-reference-types.ts","../../src/session-log-sinks.ts","../../src/session-logger.ts","../../src/auto-mode-gate.ts","../../src/permission-types.ts","../../src/session-types.ts","../../src/session-resume.ts","../../src/session-recoverable.ts","../../src/turn-claim.ts","../../src/permission-denial-log.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session.ts","../../src/consent-scope.ts","../../src/compaction-orchestrator.ts","../../src/conversation-transcript.ts","../../src/session-artifact.ts","../../src/scrub-sensitive.ts","../../src/session-log-events.ts","../../src/session-log-entry-types.ts","../../src/session-log-codec/index.ts","../../src/external-payload-source-types.ts","../../src/session-log-sources.ts","../../src/tool-result-spill-store.ts","../../src/prompt-history-file.ts","../../src/external-payload-resolution-contracts.ts","../../src/external-payload-resolver.ts","../../src/session-log-validation.ts","../../src/session-log-replay.ts","../../src/session-id.ts","../../src/session-store.ts","../../src/checkpoint-tree.ts","../../src/session-record-codec/decode-outcome.ts","../../src/session-record-codec/record-decoder.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../../src/context-window-tracker.ts","../../src/session-log-reference-types.ts","../../src/session-log-sinks.ts","../../src/session-logger.ts","../../src/auto-mode-gate.ts","../../src/permission-types.ts","../../src/session-types.ts","../../src/session-resume.ts","../../src/session-recoverable.ts","../../src/turn-claim.ts","../../src/permission-denial-log.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session.ts","../../src/consent-scope.ts","../../src/compaction-orchestrator.ts","../../src/conversation-transcript.ts","../../src/session-artifact.ts","../../src/scrub-sensitive.ts","../../src/session-log-events.ts","../../src/session-log-entry-types.ts","../../src/session-log-codec/index.ts","../../src/external-payload-source-types.ts","../../src/session-log-sources.ts","../../src/tool-result-spill-store.ts","../../src/prompt-history-file.ts","../../src/external-payload-resolution-contracts.ts","../../src/external-payload-resolver.ts","../../src/session-log-validation.ts","../../src/session-log-replay.ts","../../src/session-id.ts","../../src/session-store.ts","../../src/checkpoint-tree.ts","../../src/session-record-codec/decode-outcome.ts","../../src/session-record-codec/record-decoder.ts"],"mappings":"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"}
@@ -381,6 +381,8 @@ interface ISessionOptions {
381
381
  maxTurns?: number;
382
382
  /** Optional session store for persistence */
383
383
  sessionStore?: IInteractiveSessionStore$1;
384
+ /** The owning interactive session's strict pre-effect save, when it owns this record. */
385
+ checkpointHistory?: () => void;
384
386
  /** Override session ID (used when resuming a session to reuse the original ID) */
385
387
  sessionId?: string;
386
388
  /** Custom permission handler (overrides terminal-based prompts, used by Ink UI) */
@@ -964,6 +966,7 @@ declare class Session extends SessionBase {
964
966
  protected messageCount: number;
965
967
  private readonly terminal;
966
968
  private readonly sessionStore?;
969
+ private readonly checkpointHistoryCallback?;
967
970
  private readonly hooks?;
968
971
  private readonly hookTypeExecutors?;
969
972
  private readonly onTextDeltaCallback?;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/context-window-tracker.ts","../../src/session-log-reference-types.ts","../../src/session-log-sinks.ts","../../src/session-logger.ts","../../src/auto-mode-gate.ts","../../src/permission-types.ts","../../src/session-types.ts","../../src/session-resume.ts","../../src/session-recoverable.ts","../../src/turn-claim.ts","../../src/permission-denial-log.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session.ts","../../src/consent-scope.ts","../../src/compaction-orchestrator.ts","../../src/conversation-transcript.ts","../../src/session-artifact.ts","../../src/scrub-sensitive.ts","../../src/session-log-events.ts","../../src/session-log-entry-types.ts","../../src/session-log-codec/index.ts","../../src/external-payload-source-types.ts","../../src/session-log-sources.ts","../../src/tool-result-spill-store.ts","../../src/prompt-history-file.ts","../../src/external-payload-resolution-contracts.ts","../../src/external-payload-resolver.ts","../../src/session-log-validation.ts","../../src/session-log-replay.ts","../../src/session-id.ts","../../src/session-store.ts","../../src/checkpoint-tree.ts","../../src/session-record-codec/decode-outcome.ts","../../src/session-record-codec/record-decoder.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/context-window-tracker.ts","../../src/session-log-reference-types.ts","../../src/session-log-sinks.ts","../../src/session-logger.ts","../../src/auto-mode-gate.ts","../../src/permission-types.ts","../../src/session-types.ts","../../src/session-resume.ts","../../src/session-recoverable.ts","../../src/turn-claim.ts","../../src/permission-denial-log.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session.ts","../../src/consent-scope.ts","../../src/compaction-orchestrator.ts","../../src/conversation-transcript.ts","../../src/session-artifact.ts","../../src/scrub-sensitive.ts","../../src/session-log-events.ts","../../src/session-log-entry-types.ts","../../src/session-log-codec/index.ts","../../src/external-payload-source-types.ts","../../src/session-log-sources.ts","../../src/tool-result-spill-store.ts","../../src/prompt-history-file.ts","../../src/external-payload-resolution-contracts.ts","../../src/external-payload-resolver.ts","../../src/session-log-validation.ts","../../src/session-log-replay.ts","../../src/session-id.ts","../../src/session-store.ts","../../src/checkpoint-tree.ts","../../src/session-record-codec/decode-outcome.ts","../../src/session-record-codec/record-decoder.ts"],"mappings":"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"}