@robota-sdk/agent-session 3.0.0-beta.79 → 3.0.0-beta.81

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/context-window-tracker.ts","../../src/session-logger.ts","../../src/permission-types.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session-store.ts","../../src/session-types.ts","../../src/session.ts","../../src/compaction-orchestrator.ts","../../src/session-log-events.ts","../../src/session-log-validation.ts","../../src/session-log-replay.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/turn-claim.ts","../../src/context-window-tracker.ts","../../src/auto-mode-gate.ts","../../src/session-log-reference-types.ts","../../src/session-log-sinks.ts","../../src/session-logger.ts","../../src/permission-types.ts","../../src/permission-denial-log.ts","../../src/permission-enforcer.ts","../../src/session-base.ts","../../src/session-types.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,7 +1,10 @@
1
- import{CONTEXT_ESTIMATE_CHARS_PER_TOKEN as e,Robota as t,TRUST_TO_MODE as n,createLogger as r,createUserMessage as i,estimateContextTokensFromMessages as a,evaluatePermission as o,getModelContextWindow as s,getProviderCapabilities as c,messageToHistoryEntry as l,runHooks as u}from"@robota-sdk/agent-core";import{createHash as d,randomUUID as f}from"node:crypto";import{appendFileSync as p,existsSync as m,mkdirSync as h,readFileSync as g,writeFileSync as _}from"node:fs";import{join as v}from"node:path";import{existsSync as y,mkdirSync as b,readFileSync as x,readdirSync as ee,renameSync as te,unlinkSync as S,writeFileSync as ne}from"fs";import{join as C}from"path";var re=class{getPermissionMode(){return this.permissionMode}setPermissionMode(e){this.permissionMode=e}getActivePresetId(){return this.activePresetId}setActivePresetId(e){this.activePresetId=e}getParallelSubagentsEnabled(){return this.parallelSubagentsEnabled}setParallelSubagentsEnabled(e){this.parallelSubagentsEnabled=e}getSessionId(){return this.sessionId}getSystemMessage(){return this.systemMessage}updateSystemMessage(e){this.systemMessage=e,this.robota.updateSystemPrompt(e)}async applyModelOptions(e){await this.robota.ensureReady();let t=e.model??this.model;this.robota.setModel({provider:this.aiProvider.name,model:t,...e.effort!==void 0&&{effort:e.effort},...e.temperature!==void 0&&{temperature:e.temperature},...e.maxOutputTokens!==void 0&&{maxTokens:e.maxOutputTokens}}),this.model=t}getToolSchemas(){return this.toolSchemas}getMessageCount(){return this.messageCount}getSessionAllowedTools(){return this.permissionEnforcer.getSessionAllowedTools()}clearSessionAllowedTools(){this.permissionEnforcer.clearSessionAllowedTools()}abort(){this.abortController&&=(this.abortController.abort(),null)}isRunning(){return this.abortController!==null}getContextState(){return this.contextTracker.getContextState()}syncContextFromHistory(){this.contextTracker.updateFromHistory(this.robota.getHistory())}getAutoCompactThreshold(){return this.contextTracker.getAutoCompactThreshold()}setAutoCompactThreshold(e){this.contextTracker.setAutoCompactThreshold(e)}getHistory(){return this.robota.getHistory()}getFullHistory(){return this.robota.getFullHistory()}getSessionTokenUsage(){let e=0,t=0,n=!1;for(let r of this.getFullHistory()){if(r.category!==`event`||r.type!==`usage-summary`)continue;let i=r.data;e+=i?.promptTokens??0,t+=i?.completionTokens??0,n=!0}return n?{inputTokens:e,outputTokens:t}:void 0}getModelId(){return this.model}addHistoryEntry(e){this.robota.addHistoryEntry(e)}injectMessage(e,t,n){this.robota.injectMessage(e,t,n)}injectRawMessage(e){this.robota.injectRawMessage(e)}clearHistory(){this.robota.clearHistory(),this.contextTracker.reset()}},w=class extends Error{constructor(e){super(e),this.name=`CompactionError`}},T=class{sessionId;cwd;model;hooks;compactInstructions;hookTypeExecutors;constructor(e){this.sessionId=e.sessionId,this.cwd=e.cwd,this.model=e.model,this.hooks=e.hooks,this.compactInstructions=e.compactInstructions,this.hookTypeExecutors=e.hookTypeExecutors}async compact(e,t,n){if(t.length===0)return``;let r=n===void 0?`auto`:`manual`,i={session_id:this.sessionId,cwd:this.cwd,hook_event_name:`PreCompact`,trigger:r};await u(this.hooks,`PreCompact`,i,this.hookTypeExecutors);let a=this.buildCompactionPrompt(t,n),o=await e.chat([{id:f(),role:`user`,content:a,state:`complete`,timestamp:new Date}],{model:this.model});if(typeof o.content!=`string`||o.content.trim()===``)throw new w(`Compaction produced an invalid summary (provider=${e.name}, content type=${typeof o.content}); conversation history preserved untouched`);return o.content}buildCompactionPrompt(e,t){let n=t??this.compactInstructions??``;return[`Summarize the following conversation concisely, preserving:`,`- User's original requests and goals`,`- Key decisions and conclusions`,`- Important code changes and file paths`,`- Current task status and next steps`,n?`\nAdditional focus:\n${n}\n`:``,`Drop verbose tool outputs, debugging steps, and exploratory work that didn't lead to results.`,``,`Conversation:`,e.map(e=>{let t=typeof e.content==`string`?e.content:JSON.stringify(e.content);return`${e.role}: ${t}`}).join(`
2
- `)].join(`
3
- `)}};const E=.835;var D=class{contextUsedTokens=0;contextMaxTokens;autoCompactThreshold;constructor(e,t,n){this.contextMaxTokens=t??s(e),this.autoCompactThreshold=O(n)}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?!1:this.getContextState().usedPercentage>=this.autoCompactThreshold*100}getAutoCompactThreshold(){return this.autoCompactThreshold}setAutoCompactThreshold(e){this.autoCompactThreshold=O(e)}updateFromHistory(e){this.contextUsedTokens=a(e).usedTokens}reset(){this.contextUsedTokens=0}};function O(e){if(e===void 0)return E;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}const ie={success:!0,data:JSON.stringify({success:!1,output:``,error:`Permission denied. The user did not approve this action.`}),metadata:{}},ae=r(`ToolHookHelpers`);function oe(e){if(typeof e.data!=`string`||e.data.length<=3e4)return e;let t=15e3,n=e.data.substring(0,t),r=e.data.substring(e.data.length-t),i=`${n}\n\n[... output truncated: ${e.data.length.toLocaleString()} chars total, showing first and last ${t.toLocaleString()} chars ...]\n\n${r}`;return{...e,data:i}}function se(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 ce(e,t,n){let r=await u(e,`PreToolUse`,t,n);return r.blocked?{success:!0,data:JSON.stringify({blocked:!0,reason:r.reason??`Blocked by hook`}),metadata:{}}:null}function le(e,t,n,r){u(e,`PostToolUse`,{...t,hook_event_name:`PostToolUse`,tool_output:typeof n.data==`string`?n.data:JSON.stringify(n.data)},r).catch(e=>ae.warn(`hook failed`,{error:e}))}var k=class{sessionId;cwd;getPermissionMode;config;terminal;permissionHandler;promptForApprovalFn;sessionLogger;onToolExecution;hookTypeExecutors;transcriptPath;sessionAllowedTools=new Set;onProjectAllowTool;constructor(e){this.sessionId=e.sessionId,this.cwd=e.cwd,this.getPermissionMode=e.getPermissionMode,this.config=e.config,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}wrapTools(e){return e.map(e=>this.wrapToolWithPermission(e))}getSessionAllowedTools(){return[...this.sessionAllowedTools]}clearSessionAllowedTools(){this.sessionAllowedTools.clear()}wrapToolWithPermission(e){let t=this,n=e.execute.bind(e),r=Object.create(e);return r.execute=async(r,i)=>{try{let a=e.getName();t.log(`tool_call`,{tool:a,args:r});let o=se(t.sessionId,t.cwd,a,r,t.getPermissionMode(),t.transcriptPath),s=await ce(t.config.hooks,o,t.hookTypeExecutors);if(s)return t.log(`tool_blocked`,{tool:a,reason:`hook`}),s;if(!await t.checkPermission(a,r))return t.log(`tool_denied`,{tool:a,reason:`permission`}),t.onToolExecution?.({type:`end`,toolName:a,toolArgs:r,success:!1,denied:!0,executionId:i?.executionId}),ie;t.onToolExecution?.({type:`start`,toolName:a,toolArgs:r,executionId:i?.executionId});let c=await n(r,i),l=oe(c);l!==c&&typeof c.data==`string`&&t.terminal.writeLine(` ⚠ Output truncated: ${c.data.length.toLocaleString()} chars total — model sees first and last 15,000 chars`),t.onToolExecution?.({type:`end`,toolName:a,toolArgs:r,success:l.success,toolResultData:typeof l.data==`string`?l.data:JSON.stringify(l.data),executionId:i?.executionId});let u=typeof l.data==`string`?l.data.length:JSON.stringify(l.data).length;return t.log(`tool_result`,{tool:a,success:l.success,dataChars:u,truncated:l!==c}),le(t.config.hooks,o,l,t.hookTypeExecutors),l}catch(e){let t=e instanceof Error?e.message:String(e);return{success:!0,data:JSON.stringify({success:!1,output:``,error:t}),metadata:{}}}},r}async checkPermission(e,t){let n=o(e,t,this.getPermissionMode(),{allow:this.config.permissions.allow,deny:this.config.permissions.deny});if(n===`auto`)return!0;if(n===`deny`)return!1;if(this.sessionAllowedTools.has(e))return!0;if(this.permissionHandler){let n=await this.permissionHandler(e,t);return n===`allow-session`?(this.sessionAllowedTools.add(e),!0):n===`allow-project`?(this.sessionAllowedTools.add(e),this.onProjectAllowTool?.(e),!0):n}if(this.promptForApprovalFn){let n=await this.promptForApprovalFn(this.terminal,e,t);return n===`allow-session`?(this.sessionAllowedTools.add(e),!0):n===`allow-project`?(this.sessionAllowedTools.add(e),this.onProjectAllowTool?.(e),!0):n}return!1}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}};function A(e,t,n,r,i){return new k({sessionId:t,cwd:n,getPermissionMode:r,config:{permissions:e.permissions??{allow:[],deny:[]},hooks:e.hooks},terminal:e.terminal,permissionHandler:e.permissionHandler,promptForApprovalFn:e.promptForApproval,sessionLogger:e.sessionLogger,onToolExecution:e.onToolExecution,hookTypeExecutors:e.hookTypeExecutors,transcriptPath:i,onProjectAllowTool:e.onProjectAllowTool})}function j(e,t,n,r){return{contextTracker:new D(t,e.contextMaxTokens,e.autoCompactThreshold),compactionOrchestrator:new T({sessionId:n,cwd:r,model:t,hooks:e.hooks,compactInstructions:e.compactInstructions,hookTypeExecutors:e.hookTypeExecutors})}}function M(e,n,r,i,a,o){let s=n.wrapTools(r);return new t({name:e.agentName??`agent`,aiProviders:[i],defaultModel:{provider:i.name,model:a,...e.effort!==void 0&&{effort:e.effort}},systemMessage:o,tools:s,logging:{enabled:!1},...e.providerTimeout!==void 0&&{timeout:e.providerTimeout},...e.responseFormat?{responseFormat:e.responseFormat}:{},...e.ask?{ask:e.ask}:{}})}const N=r(`SessionHistoryOps`);async function P(e,t){let n=t.robota.getHistory();if(n.length===0)return;t.contextTracker.updateFromHistory(n);let r=t.contextTracker.getContextState(),i=n.filter(e=>e.role!==`system`),a=await t.compactionOrchestrator.compact(t.aiProvider,i,e);t.robota.clearHistory(),t.robota.injectMessage(`system`,t.systemMessage),t.robota.injectMessage(`assistant`,`[Context Summary]\n${a}`),t.contextTracker.updateFromHistory(t.robota.getHistory());let o={session_id:t.sessionId,cwd:t.cwd,hook_event_name:`PostCompact`,trigger:t.trigger,compact_summary:a};u(t.hooks,`PostCompact`,o,t.hookTypeExecutors).catch(e=>N.warn(`hook failed`,{error:e}));let s=t.contextTracker.getContextState();t.log(`context_compact`,{trigger:t.trigger,before:r,after:s}),t.onCompactEventCallback?.({trigger:t.trigger,before:r,after:s}),t.onCompactCallback&&t.onCompactCallback(a)}function F(e){let t=e.robota.getHistory(),n=new Date().toISOString(),r=e.sessionStore.load(e.sessionId),i={id:e.sessionId,name:r?.name,cwd:e.cwd,createdAt:r?.createdAt??n,updatedAt:n,messages:t,history:e.getFullHistory(),systemPrompt:e.systemPrompt,toolSchemas:e.toolSchemas};e.sessionStore.save(i)}const I=r(`SessionLifecycle`);function L(e,t,n){e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>{n(`server_tool`,{tool:e,...t})})}function R(e,t,n,r,i,a,o){u(n,`SessionStart`,{session_id:e,cwd:t,hook_event_name:`SessionStart`,...a!==void 0&&{permission_mode:a},...o!==void 0&&{transcript_path:o},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e}},r).then(e=>{e.stdout&&i(e.stdout)}).catch(e=>I.warn(`SessionStart hook failed`,{error:e}))}async function z(e,t,n,r,i,a,o){await u(r,`SessionEnd`,{session_id:e,cwd:t,hook_event_name:`SessionEnd`,reason:n,...a!==void 0&&{permission_mode:a},...o!==void 0&&{transcript_path:o},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e}},i)}const B=`unknown_tool`;function V(e){return{knownToolNames:new Set(e.knownToolNames),unknownToolCallIds:new Set,...e.onToolExecution&&{onToolExecution:e.onToolExecution}}}function H(e,t,n){if(e.onToolExecution){if(t===`tool_execution_request`){U(e,n);return}t===`tool_execution_result`&&W(e,n)}}function U(e,t){let n=G(t.toolName),r=G(t.toolCallId);!n||!r||e.knownToolNames.has(n)||(e.unknownToolCallIds.add(r),e.onToolExecution?.({type:`start`,toolName:n,toolArgs:ue(t.parameters)}))}function W(e,t){let n=G(t.toolName),r=G(t.toolCallId);if(!n||!r)return;let i=K(t.metadata);if(!(e.unknownToolCallIds.has(r)||i?.errorCode===B))return;e.unknownToolCallIds.delete(r);let a=G(t.error)??`Tool "${n}" is not registered.`;e.onToolExecution?.({type:`end`,toolName:n,success:!1,toolResultData:JSON.stringify({success:!1,error:a,errorCode:B,requestedTool:G(i?.requestedTool)??n,availableTools:de(i?.availableTools)})})}function ue(e){let t=K(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 G(e){return typeof e==`string`&&e.length>0?e:void 0}function K(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function de(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}const q=r(`SessionRun`);async function fe(t,n,r,a){if(r.contextTracker.updateFromHistory(r.robota.getHistory()),r.contextTracker.shouldAutoCompact()){let e=r.aiProvider,t=e.onTextDelta;e.onTextDelta=void 0;try{await r.compact()}finally{e.onTextDelta=t}}r.log(`user`,{content:t});let o=await u(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=[r.sessionStartStdout,o.stdout].filter(Boolean).join(`
4
- `),l=s?`<system-reminder>\n${s}\n</system-reminder>\n${t}`:t;r.clearSessionStartStdout();let d=r.robota.getHistory(),f=JSON.stringify(d),p=c(r.aiProvider);r.log(`pre_run`,{historyLength:d.length,historyChars:f.length,historyEstTokens:Math.ceil(f.length/e),input:l,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,i(l)]),r.onContextUpdate?.(r.contextTracker.getContextState());let m;try{let e=V({knownToolNames:r.knownToolNames??[],...r.onToolExecution&&{onToolExecution:r.onToolExecution}}),t=r.onTextDelta?e=>{r.log(`text_delta`,{delta:e}),r.onTextDelta?.(e)}:void 0;if(m=await r.robota.run(l,{signal:a,maxExecutionRounds:r.maxTurns??0,onExecutionEvent:(t,n)=>{r.log(t,n),H(e,t,n),t===`assistant_message_committed`&&(r.contextTracker.updateFromHistory(r.robota.getHistory()),r.onContextUpdate?.(r.contextTracker.getContextState()))},...t&&{onTextDelta:t}}),a.aborted)throw new DOMException(`Aborted`,`AbortError`)}catch(e){throw r.log(`error`,{message:e instanceof Error?e.message:String(e),stack:e instanceof Error?e.stack??``:``,historyLength:r.robota.getHistory().length}),u(r.hooks,`StopFailure`,{session_id:r.sessionId,cwd:r.cwd,hook_event_name:`StopFailure`,reason:e instanceof Error?e.message:String(e),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).catch(e=>q.warn(`hook failed`,{error:e})),e}let h=r.robota.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}),u(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).catch(e=>q.warn(`hook failed`,{error:e})),r.getSessionStore()&&r.persistSession(),m}var pe=class extends re{robota;permissionEnforcer;contextTracker;permissionMode;activePresetId;parallelSubagentsEnabled;sessionId;aiProvider;toolSchemas;model;systemMessage;messageCount=0;abortController=null;terminal;sessionStore;cwd;hooks;hookTypeExecutors;onTextDeltaCallback;onContextUpdateCallback;onToolExecutionCallback;onCompactCallback;onCompactEventCallback;sessionLogger;maxTurns;compactionOrchestrator;shutdownPromise=null;sessionStartStdout=``;transcriptPath;constructor(e){super();let{tools:t,provider:r,systemMessage:i}=e;this.terminal=e.terminal,this.sessionStore=e.sessionStore,this.systemMessage=i,this.toolSchemas=t.map(e=>e.schema),this.cwd=process.cwd(),this.sessionLogger=e.sessionLogger,this.hooks=e.hooks,this.hookTypeExecutors=e.hookTypeExecutors,this.onTextDeltaCallback=e.onTextDelta,this.onContextUpdateCallback=e.onContextUpdate,this.onToolExecutionCallback=e.onToolExecution,this.onCompactCallback=e.onCompact,this.onCompactEventCallback=e.onCompactEvent,this.maxTurns=e.maxTurns,this.model=e.model??`claude-sonnet-4-5`,this.sessionId=e.sessionId??`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,this.permissionMode=e.permissionMode??(e.defaultTrustLevel?n[e.defaultTrustLevel]:void 0)??`default`,this.activePresetId=e.activePresetId??`default`,this.parallelSubagentsEnabled=e.enableParallelSubagents??!0,this.transcriptPath=e.sessionStore?.getFilePath?.(this.sessionId),this.log(`session_init`,{cwd:this.cwd,systemPromptLength:i.length,systemPrompt:i,toolSchemas:this.toolSchemas,model:this.model,provider:r.name}),this.aiProvider=r,L(r,e,(e,t)=>this.log(e,t)),this.permissionEnforcer=A(e,this.sessionId,this.cwd,()=>this.permissionMode,this.transcriptPath);let{contextTracker:a,compactionOrchestrator:o}=j(e,this.model,this.sessionId,this.cwd);this.contextTracker=a,this.compactionOrchestrator=o,this.robota=M(e,this.permissionEnforcer,t,r,this.model,i),R(this.sessionId,this.cwd,this.hooks,this.hookTypeExecutors,e=>void(this.sessionStartStdout=e),this.permissionMode,this.transcriptPath)}async run(e,t){this.abortController=new AbortController;let{signal:n}=this.abortController;try{let r=await fe(e,t,this.buildRunContext(),n);return this.messageCount+=1,r}finally{this.abortController=null}}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}persistSessionInternal(){this.sessionStore&&F({sessionId:this.sessionId,cwd:this.cwd,systemPrompt:this.systemMessage,toolSchemas:this.toolSchemas,sessionStore:this.sessionStore,robota:this.robota,getFullHistory:()=>this.getFullHistory()})}shutdown(e={}){if(this.shutdownPromise)return this.shutdownPromise;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()),this.log(`session_shutdown`,{reason:t}),await n(`persist`,()=>this.persistSessionInternal()),await n(`session-end-hook`,()=>z(this.sessionId,this.cwd,t,this.hooks,this.hookTypeExecutors,this.permissionMode,this.transcriptPath)),await n(`destroy-agent`,async()=>{await this.robota.destroy()})})(),this.shutdownPromise}swapProvider(e,t){this.robota.swapDefaultProvider(e,t),e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>this.log(`server_tool`,{tool:e,...t})),this.aiProvider=e}async compact(e,t=`manual`){await P(e,{sessionId:this.sessionId,cwd:this.cwd,systemMessage:this.systemMessage,robota:this.robota,aiProvider:this.aiProvider,compactionOrchestrator:this.compactionOrchestrator,contextTracker:this.contextTracker,hooks:this.hooks,hookTypeExecutors:this.hookTypeExecutors,onCompactCallback:this.onCompactCallback,onCompactEventCallback:this.onCompactEventCallback,trigger:t,log:(e,t)=>this.log(e,t)})}buildRunContext(){return{sessionId:this.sessionId,cwd:this.cwd,model:this.model,robota:this.robota,aiProvider:this.aiProvider,contextTracker:this.contextTracker,hooks:this.hooks,hookTypeExecutors:this.hookTypeExecutors,sessionStartStdout:this.sessionStartStdout,log:(e,t)=>this.log(e,t),compact:()=>this.compact(void 0,`auto`),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,knownToolNames:this.toolSchemas.map(e=>e.name)}}};const me=/^(api[-_]?key|authorization|access[-_]?token|refresh[-_]?token|secret|password|x[-_]?api[-_]?key)$/i;var he=class{logDir;options;constructor(e,t={}){this.logDir=e,this.options={externalPayloadThresholdBytes:t.externalPayloadThresholdBytes??32768,redactedValue:t.redactedValue??`[REDACTED]`};try{h(e,{recursive:!0})}catch{}}log(e,t,n){try{let r=ge(e,this.logDir,n,this.options),i=JSON.stringify({timestamp:new Date().toISOString(),sessionId:e,event:t,...r});p(v(this.logDir,`${e}.jsonl`),i+`
5
- `)}catch{}}};function ge(e,t,n,r){let i={};for(let[a,o]of Object.entries(n))i[a]=J(e,t,a,o,r);return i}function J(e,t,n,r,i){if(me.test(n))return i.redactedValue;if(r==null||typeof r==`string`||typeof r==`number`)return Y(e,t,r,i);if(typeof r==`boolean`)return r;if(r instanceof Date)return r.toISOString();if(Array.isArray(r))return Y(e,t,r.map(r=>J(e,t,n,r,i)),i);if(typeof r==`object`){let n=r,a={};for(let[r,o]of Object.entries(n))a[r]=J(e,t,r,o,i);return Y(e,t,a,i)}return String(r)}function Y(e,t,n,r){let i=JSON.stringify(n);if(i===void 0)return n;let a=Buffer.byteLength(i);if(a<=r.externalPayloadThresholdBytes)return n;let o=d(`sha256`).update(i).digest(`hex`),s=`${e}.payloads`,c=v(s,`${o}.json`),l=v(t,s),u=v(t,c);return h(l,{recursive:!0}),m(u)||_(u,i,`utf-8`),{kind:`external-payload`,encoding:`json`,sha256:o,byteLength:a,relativePath:c}}var _e=class{log(){}};const ve={sessionInit:`session_init`,sessionShutdown:`session_shutdown`,context:`context`,contextCompact:`context_compact`,error:`error`,historyMutation:`history_mutation`,providerRequest:`provider_request`,providerNativeRawPayload:`provider_native_raw_payload`,providerResponseRaw:`provider_response_raw`,providerResponseNormalized:`provider_response_normalized`,toolExecutionRequest:`tool_execution_request`,toolExecutionResult:`tool_execution_result`,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 ye(e,t){return e.event===t}function be(e){let t=[],n=xe(),r=Se();return e.forEach((e,i)=>{X(e,i,t),Ce(n,e,i),we(r,e,i)}),Te(n,t),Ee(r,t),{ok:t.length===0,issues:t}}function xe(){return{requests:new Map,nativeRawPayloads:new Set,rawResponses:new Set,normalizedResponses:new Set}}function Se(){return{requests:new Map,results:new Set}}function Ce(e,t,n){let r=De(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`&&e.normalizedResponses.add(r.key))}function we(e,t,n){let r=Oe(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 Te(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 Ee(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 De(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 Oe(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 X(e,t,n){if(Array.isArray(e)){e.forEach(e=>X(e,t,n));return}if(ke(e)){if(e.kind===`external-payload`){(e.encoding!==`json`||typeof e.sha256!=`string`||typeof e.relativePath!=`string`||typeof e.byteLength!=`number`)&&n.push({code:`PAYLOAD_REFERENCE_INVALID`,message:`External payload reference is missing required replay fields.`,eventIndex:t});return}Object.values(e).forEach(e=>X(e,t,n))}}function ke(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Z(e){return m(e)?g(e,`utf-8`).split(`
6
- `).map(e=>e.trim()).filter(e=>e.length>0).map(e=>JSON.parse(e)):[]}function Ae(e){let t=[],n=[],r={backgroundTaskEvents:[],backgroundJobGroupEvents:[],memoryEvents:[]},i,a,o,s;for(let c of e){if(i??=c.sessionId,o??=c.timestamp,s=c.timestamp,c.event===`session_init`&&(a=typeof c.cwd==`string`?c.cwd:a),c.event===`history_mutation`&&c.mutation===`append_message`){let e=Me(c.message);e&&(t.push(e),n.push(l(e)))}je(c,r)}return{sessionId:i,cwd:a,createdAt:o,updatedAt:s,messages:t,history:n,backgroundTaskEvents:r.backgroundTaskEvents,backgroundJobGroupEvents:r.backgroundJobGroupEvents,memoryEvents:r.memoryEvents}}function je(e,t){if(e.event===`background_task_event`){$(t.backgroundTaskEvents,e,`backgroundEvent`,`data`);return}if(e.event===`background_job_group_event`){$(t.backgroundJobGroupEvents,e,`backgroundJobGroupEvent`,`data`);return}e.event===`memory_event`&&$(t.memoryEvents,e,`memoryEvent`,`data`)}function Me(e){if(!Ne(e))return;let t=e.role;if(t!==`user`&&t!==`assistant`&&t!==`system`&&t!==`tool`)return;let n=typeof e.id==`string`?e.id:`${t}-${Date.now()}`,r=e.timestamp instanceof Date?e.timestamp:new Date(typeof e.timestamp==`string`?e.timestamp:Date.now());return{...e,id:n,role:t,timestamp:r}}function Ne(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Q(e,t){let n=e[t];if(!(typeof n!=`object`||!n||Array.isArray(n)||n instanceof Date))return n}function $(e,t,n,r){let i=Q(t,n)??Q(t,r);i&&e.push(i)}function Pe(){return process.env.HOME??process.env.USERPROFILE??`/`}var Fe=class{baseDir;constructor(e){this.baseDir=e??C(Pe(),`.robota`,`sessions`)}ensureDir(){y(this.baseDir)||b(this.baseDir,{recursive:!0})}filePath(e){return C(this.baseDir,`${e}.json`)}getFilePath(e){return this.filePath(e)}save(e){this.ensureDir();let t=this.filePath(e.id),n=`${t}.${process.pid}.tmp`;ne(n,JSON.stringify(e,null,2),`utf-8`);try{te(n,t)}catch(e){throw S(n),e}}load(e){let t=this.filePath(e);if(y(t))try{let e=x(t,`utf-8`);return JSON.parse(e)}catch{return}}list(){if(!y(this.baseDir))return[];let e=ee(this.baseDir).filter(e=>e.endsWith(`.json`)),t=[];for(let n of e)try{let e=x(C(this.baseDir,n),`utf-8`),r=JSON.parse(e);t.push(r)}catch{}return t.sort((e,t)=>new Date(t.updatedAt).getTime()-new Date(e.updatedAt).getTime())}delete(e){let t=this.filePath(e);y(t)&&S(t)}};export{E as AUTO_COMPACT_THRESHOLD,w as CompactionError,T as CompactionOrchestrator,D as ContextWindowTracker,he as FileSessionLogger,k as PermissionEnforcer,ve as SESSION_LOG_EVENT,pe as Session,Fe as SessionStore,_e as SilentSessionLogger,ye as isSessionLogEvent,Z as loadSessionLogEntries,Ae as replaySessionLogEntries,be as validateSessionReplayLogEntries};
1
+ import{CONTEXT_ESTIMATE_CHARS_PER_TOKEN as e,ObservableEventService as t,PROVIDER_CALL_EVENTS as n,PROVIDER_FALLBACK_EVENTS as r,Robota as i,TOOL_BODY_EVENTS as a,TOOL_PERMISSION_EVENTS as o,TRUST_TO_MODE as s,allowRulesForAutoMode as c,applyPresetToolLists as l,createLogger as u,createUserMessage as d,estimateContextTokensFromMessages as f,evaluatePermission as p,findInvalidPermissionPatterns as m,findPermissionPatternWarnings as h,getModelContextWindow as g,getProviderCapabilities as _,getToolPermissionProfile as v,isAbortFailure as y,isEnforcing as b,isModelEffort as x,isToolDeniedOutright as ee,matchesAnyPattern as te,messageToHistoryEntry as ne,peerDriverOf as re,printablePeerDriver as ie,projectPermissionPolicy as ae,readModelFallbackNotice as oe,registerToolPermissionProfile as se,requiresFreshApproval as ce,runHooks as S,traceEnvFor as le,wasToolResultAdmitted as ue}from"@robota-sdk/agent-core";import{dirname as de,isAbsolute as fe,join as C,relative as pe,resolve as me,win32 as he}from"node:path";import{createHash as ge,randomBytes as _e,randomUUID as ve}from"node:crypto";import{homedir as ye,tmpdir as be}from"node:os";import{appendFileSync as xe,chmodSync as Se,closeSync as Ce,constants as w,existsSync as we,fstatSync as Te,fsyncSync as Ee,linkSync as De,lstatSync as Oe,mkdtempSync as ke,openSync as Ae,readFileSync as je,readSync as Me,readdirSync as Ne,realpathSync as Pe,rmdirSync as Fe,unlinkSync as Ie,writeFileSync as Le}from"node:fs";import{OWNER_ONLY_FILE_MODE as Re,ensureOwnerOnlyDirectory as ze,tightenExistingFile as Be,writeOwnerOnlyFile as Ve}from"@robota-sdk/agent-core/node";import{StableFileAuthorityError as He,createStableRootedFileReader as Ue}from"@robota-sdk/agent-file-authority";import{existsSync as We,readFileSync as Ge,readdirSync as Ke,unlinkSync as qe}from"fs";import{resolve as Je,sep as Ye}from"path";function Xe(e){if(typeof e!=`string`||e.length===0)throw Error("Session requires `cwd`: the absolute path this session executes in (ARCH-010). It feeds every hook input, CLAUDE_PROJECT_DIR, the permission root and the persisted record. Pass `process.cwd()` explicitly if that is genuinely what you mean.");if(!fe(e))throw Error(`Session requires an ABSOLUTE \`cwd\`; got ${JSON.stringify(e)} (ARCH-010). A relative root is resolved against the process directory downstream, which is the ambient value this field exists to replace. Resolve it at your composition root.`);return e}var Ze=class extends Error{recoverable=!0;constructor(e){super(e),this.name=`SessionBusyError`}},Qe=class{controller=null;claim(){if(this.controller!==null)throw new Ze(`This session is already running a turn. A session is a single conversation: await the turn in flight, abort() it and await it, or use a separate session for concurrent work.`);return this.controller=new AbortController,this.controller}release(e){this.controller===e&&(this.controller=null)}abort(){this.controller?.abort()}isRunning(){return this.controller!==null}},$e=class{cwd;constructor(e){this.cwd=Xe(e)}turnClaim=new Qe;permissionModeGuards=new Set;getPermissionMode(){return this.permissionMode}setPermissionMode(e){for(let t of this.permissionModeGuards)t(e);this.permissionMode=e}addPermissionModeGuard(e){return this.permissionModeGuards.add(e),()=>this.permissionModeGuards.delete(e)}getActivePresetId(){return this.activePresetId}setActivePresetId(e){this.activePresetId=e}getParallelSubagentsEnabled(){return this.parallelSubagentsEnabled}setParallelSubagentsEnabled(e){this.parallelSubagentsEnabled=e}getSessionId(){return this.sessionId}getCwd(){return this.cwd}getSystemMessage(){return this.systemMessage}updateSystemMessage(e){this.systemMessage=e,this.agent.updateSystemPrompt(e)}async applyModelOptions(e){await this.agent.ensureReady();let t=e.model??this.model;this.agent.setModel({provider:this.aiProvider.name,model:t,...e.effort!==void 0&&{effort:e.effort},...e.temperature!==void 0&&{temperature:e.temperature},...e.maxOutputTokens!==void 0&&{maxTokens:e.maxOutputTokens}}),this.model=t}getModelEffort(){let e=this.agent.getModel;if(e===void 0)return`auto`;try{return e.call(this.agent).effort??`auto`}catch(e){if(e instanceof Error&&/disposed/i.test(e.message))return`auto`;throw e}}async withScopedModelEffort(e,t){let n=this.getModelEffort();await this.applyModelOptions({effort:e});try{return await t()}finally{await this.applyModelOptions({effort:n})}}async applyAgentName(e){await this.agent.updateConfiguration({name:e})}getToolSchemas(){return this.toolSchemas}getMessageCount(){return this.messageCount}applyPresetToolLists(e){this.permissionEnforcer.applyPresetToolLists(e)}getPermissionRules(){let e=this.permissionEnforcer.currentPermissionRules();return{allow:[...e.allow],deny:[...e.deny],ask:[...e.ask]}}getSessionAllowedTools(){return this.permissionEnforcer.getSessionAllowedTools()}checkToolPermission(e,t,n){return this.permissionEnforcer.checkDelegatedToolCall(e,t,n)}requireClassifierFor(e){if(e===`auto`&&!this.permissionEnforcer.hasPermissionClassifier())throw Error(`Auto mode is unavailable: this session has no permission classifier.`)}retryPermissionDenial(e){return this.permissionEnforcer.allowRetryOfDenial(e)}getRecentPermissionDenials(){return this.permissionEnforcer.getRecentDenials()}clearSessionAllowedTools(){this.permissionEnforcer.clearSessionAllowedTools()}abort(){this.turnClaim.abort()}isRunning(){return this.turnClaim.isRunning()}getContextState(){return this.contextTracker.getContextState()}syncContextFromHistory(){this.contextTracker.updateFromHistory(this.agent.getHistory())}getAutoCompactThreshold(){return this.contextTracker.getAutoCompactThreshold()}setAutoCompactThreshold(e){this.contextTracker.setAutoCompactThreshold(e)}getHistory(){return this.agent.getHistory()}getFullHistory(){return this.agent.getFullHistory()}getSessionTokenUsage(){let e=0,t=0,n=!1;for(let r of this.getFullHistory()){if(r.category!==`event`||r.type!==`usage-summary`)continue;let i=r.data;e+=i?.promptTokens??0,t+=i?.completionTokens??0,n=!0}return n?{inputTokens:e,outputTokens:t}:void 0}getModelId(){return this.model}getOfferedToolSchemas(){return this.agent.getOfferedToolSchemas()}getProvider(){return this.aiProvider}getProviderId(){return this.aiProvider.name}addHistoryEntry(e){this.agent.addHistoryEntry(e)}injectMessage(e,t,n){this.agent.injectMessage(e,t,n)}injectRawMessage(e){this.agent.injectRawMessage(e)}clearHistory(){this.agent.clearHistory(),this.contextTracker.reset()}};function T(e){return JSON.stringify(typeof e==`string`?e:e??``)}function et(e){let t=re(e);return t?`user [from ${JSON.stringify(ie(t))}]`:`user`}function tt(e){switch(e.role){case`user`:return[`${et(e)}: ${T(e.content)}`];case`assistant`:{let t=[];e.content!==null&&e.content!==``&&t.push(`assistant: ${T(e.content)}`);for(let n of e.toolCalls??[])t.push(`assistant tool call ${JSON.stringify(n.function.name)} [${JSON.stringify(n.id)}]: ${T(n.function.arguments)}`);return t.length>0?t:[`assistant: ""`]}case`tool`:return[`tool result${e.name?` ${JSON.stringify(e.name)}`:``} [${JSON.stringify(e.toolCallId)}]: ${T(e.content)}`];case`system`:return[`system: ${T(e.content)}`]}}function nt(e){return e.map(e=>tt(e).join(`
2
+ `))}var rt=class extends Error{constructor(e){super(e),this.name=`CompactionError`}};const it=[`Summarize the following conversation concisely, preserving:`,`- User's original requests and goals`,`- Key decisions, conclusions, and important state`,`- Identifiers, names, and references needed to continue the work`,`- Current task status and next steps`,`Drop verbose intermediate outputs and exploratory work that didn't lead to results.`].join(`
3
+ `);var at=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(e,t,n,r,i=`manual`,a){if(r?.throwIfAborted(),t.length===0)throw new rt(`Compaction was asked to summarise an empty history; conversation history preserved untouched`);let o={session_id:this.sessionId,cwd:this.cwd,hook_event_name:`PreCompact`,trigger:i};await S(this.hooks,`PreCompact`,o,this.hookTypeExecutors,a);let s=this.buildCompactionPrompt(t,n),c=await e.chat([{id:ve(),role:`user`,content:s,state:`complete`,timestamp:new Date}],{model:this.model,toolChoice:`none`,preserveContextWindow:!0,...r===void 0?{}:{signal:r}});if(r?.throwIfAborted(),typeof c.content!=`string`||c.content.trim()===``)throw new rt(`Compaction produced an invalid summary (provider=${e.name}, content type=${typeof c.content}); conversation history preserved untouched`);return c.content}buildCompactionPrompt(e,t){let n=t??this.compactInstructions??``,r=n?`\nAdditional focus:\n${n}\n`:``,i=nt(e).join(`
4
+ `);return[this.basePrompt??it,r,``,`Conversation:`,i].join(`
5
+ `)}};const ot=.835;var st=class{contextUsedTokens=0;contextMaxTokens;autoCompactThreshold;constructor(e,t,n){this.contextMaxTokens=t??g(e),this.autoCompactThreshold=ct(n)}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=ct(e)}updateFromHistory(e){this.contextUsedTokens=f(e).usedTokens}reset(){this.contextUsedTokens=0}};function ct(e){if(e===void 0)return ot;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 lt(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 ut(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 dt(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:ut(await lt(n(),e.signal))}const ft=3,pt=20;function mt(e,t){return`${e}\u0000${JSON.stringify(t)}`}var ht=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(mt(e,t))}takeRetry(e,t){return this.retries.delete(mt(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 gt(e){let t=e.replace(/\\/g,`/`),n=t.lastIndexOf(`/`);return n<0?`.`:n===0?`/`:t.slice(0,n)}function _t(e,t){switch(e){case`path`:{let e=gt(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 vt(e,t){let n=v(e).argument;if(n===void 0)return e;let r=t[n.key];if(typeof r!=`string`||r===``)return e;let i=_t(n.kind,r);return i===void 0?e:`${e}(${i})`}function E(e,t,n){return{success:!1,outcome:e,error:t,data:JSON.stringify(n??{success:!1,output:``,error:t}),metadata:{}}}function yt(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}),E(`threw`,r)}const bt=E(`denied`,`Permission denied. The user did not approve this action.`),xt=u(`ToolHookHelpers`);function St(e){if(ue(e)||typeof e.data!=`string`||e.data.length<=3e4)return e;let t=15e3,n=e.data.substring(0,t),r=e.data.substring(e.data.length-t),i=`${n}\n\n[... output truncated: ${e.data.length.toLocaleString()} chars total, showing first and last ${t.toLocaleString()} chars ...]\n\n${r}`;return{...e,data:i}}function Ct(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 wt(e,t,n,r){let i=await S(e,`PreToolUse`,t,n,r);if(i.blocked){let e=i.reason??`Blocked by hook`;return E(`hook-blocked`,e,{blocked:!0,reason:e})}if(b(`PreToolUse`)){let e=i.errors,t=e?.[0],n=i.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 E(`hook-blocked`,i,{blocked:!0,reason:i})}if(r!==``)return E(`hook-blocked`,r,{blocked:!0,reason:r})}return null}function Tt(e,t,n,r,i){S(e,`PostToolUse`,{...t,hook_event_name:`PostToolUse`,tool_output:typeof n.data==`string`?n.data:JSON.stringify(n.data)},r,i).catch(e=>xt.warn(`hook failed`,{error:e}))}function Et(e,t){let n=v(e).argument?.key;if(n===void 0)return;let r=t[n];if(typeof r==`string`)return r.length>200?`${r.slice(0,200)}…`:r}var Dt=class{capacity;now;entries=[];calls=[];constructor(e=20,t=Date.now){this.capacity=e,this.now=t}record(e,t,n,r){let i=Et(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]}};function Ot(e,t,n){let r=v(e).argument;if(r===void 0||r.kind!==`path`)return t;let i=t[r.key];return typeof i!=`string`||i===``||fe(i)?t:{...t,[r.key]:me(n,i)}}const kt=u(`ToolBodyTrace`);function At(e,t){try{e?.eventService?.emit(o.DECIDED,{timestamp:new Date,executionId:e.executionId,decidedAt:new Date().toISOString(),decision:t})}catch(e){kt.warn(`tool permission observation failed`,e instanceof Error?e:Error(String(e)))}}function jt(e,t){let n=e.execute.bind(e),r=Object.create(e);return r.execute=async(r,i)=>{let o=r,s=`(unknown)`;try{s=e.getName(),o=Ot(s,r,t.cwd),t.log(`tool_call`,{tool:s,args:o});let c=Ct(t.sessionId,t.cwd,s,o,t.getPermissionMode(),t.transcriptPath),l=await wt(t.config.hooks,c,t.hookTypeExecutors,i?.hookTraceEnv);if(l)return t.log(`tool_blocked`,{tool:s,reason:`hook`}),At(i,`hook-blocked`),l;let u=await t.checkPermission(s,o,i?.signal,i?.permissionInteraction,i?.hookTraceEnv);if(u!==!0)return t.log(`tool_denied`,{tool:s,reason:`permission`}),At(i,`denied`),t.onToolExecution?.({type:`end`,toolName:s,toolArgs:o,success:!1,denied:!0,executionId:i?.executionId}),typeof u==`object`?E(`denied`,u.message):bt;At(i,`allowed`),i?.signal?.throwIfAborted(),t.onToolExecution?.({type:`start`,toolName:s,toolArgs:o,executionId:i?.executionId});let d=Date.now(),f=`failure`,p;try{p=await n(o,i),f=i?.signal?.aborted?`interrupted`:p.success?`success`:`failure`}catch(e){throw f=i?.signal?.aborted||y(e)?`interrupted`:`failure`,e}finally{try{i?.eventService?.emit(a.COMPLETED,{timestamp:new Date,executionId:i.executionId,startedAt:new Date(d).toISOString(),endedAt:new Date(Math.max(Date.now(),d)).toISOString(),outcome:f,...typeof i.toolBodyId==`string`?{toolBodyId:i.toolBodyId}:{}})}catch(e){kt.warn(`tool body observation failed`,e instanceof Error?e:Error(String(e)))}}let m=St(p);m!==p&&typeof p.data==`string`&&t.terminal.writeLine(` ⚠ Output truncated: ${p.data.length.toLocaleString()} chars total — model sees first and last 15,000 chars`),t.onToolExecution?.({type:`end`,toolName:s,toolArgs:o,success:m.success,toolResultData:typeof m.data==`string`?m.data:JSON.stringify(m.data),executionId:i?.executionId});let h=typeof m.data==`string`?m.data.length:JSON.stringify(m.data)?.length??0;return t.log(`tool_result`,{tool:s,success:m.success,dataChars:h,truncated:m!==p}),Tt(t.config.hooks,c,m,t.hookTypeExecutors,i?.hookTraceEnv),m}catch(e){return yt(e,t.onToolExecution,{toolName:s,toolArgs:o,executionId:i?.executionId})}},r.setEventService=t=>{e.setEventService(t)},r}function Mt(e){let t=e,n=[];for(;;)try{let e=Pe(t);return n.length===0?e:me(e,...n.reverse())}catch{let r=de(t);if(r===t)return e;n.push(t.slice(r.length).replace(/^[\\/]/,``)),t=r}}function Nt(e,t){let n=pe(e,t);return n===``||!n.startsWith(`..`)&&!fe(n)}function Pt(e){return(t,n)=>{let r=Mt(e),i=Mt(me(t??r,n));return Nt(r,i)?i:void 0}}function Ft(e){let t=[...m(e.allow,`allow`),...m(e.restrictive,`deny`)];if(t.length===0)return;let n=t.map(({pattern:e,reason:t})=>`"${e}" ${t}`).join(`; `);throw Error(`Invalid permission pattern(s) in permissions.allow/deny/ask: ${n}. Fix the pattern where it is configured (issue #2428).`)}var It=class{sessionId;cwd;getPermissionMode;config;terminal;permissionHandler;promptForApprovalFn;sessionLogger;onToolExecution;hookTypeExecutors;transcriptPath;sessionAllowedTools=new Set;presetFreeRules;onProjectAllowTool;permissionPolicy;taskPermissions;homeDirectory;resolveInWorkspace;commandSandbox;denials=new Dt;peerTurn=!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]},Ft(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??ye(),this.resolveInWorkspace=Pt(e.cwd),this.commandSandbox=e.commandSandbox,e.permissionClassifier!==void 0&&(this.autoMode=new ht(e.permissionClassifier))}beginTurn(e){this.peerTurn=e}endTurn(){this.peerTurn=!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(e){return!this.peerTurn&&v(e).repliesToPeer===!0?!1:!ee(e,[...this.config.permissions.deny,...this.taskPermissions?.deny??[]])}registerToolParameters(e){for(let t of e){let e=t.schema;if(e===void 0)continue;let n=e.parameters?.properties??{};se(e.name,{parameters:Object.keys(n)})}let t=this.configuredRules();Ft(t);for(let{pattern:e,reason:n}of h(t.restrictive))this.terminal.writeLine(` ⚠ Permission rule "${e}" ${n}.`)}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)=>this.decidePermission(e,t,n,r,i)};return e.map(e=>jt(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(e){let t=l(this.presetFreeRules,e);this.config.permissions.allow=t.allow,this.config.permissions.deny=t.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=Ct(this.sessionId,this.cwd,e,t,this.getPermissionMode(),this.transcriptPath);return await wt(this.config.hooks,r,this.hookTypeExecutors)?(this.log(`tool_blocked`,{tool:e,reason:`hook`,delegated:!0}),!1):await this.decidePermission(e,t,n,`interactive`,void 0,{sandboxed:!1})===!0}async decidePermission(e,t,n,r=`interactive`,i,a={}){let o=this.permissionPolicy===void 0?void 0:ae(this.permissionPolicy,{taskAllow:this.taskPermissions?.allow,taskDeny:this.taskPermissions?.deny,parentAllow:this.config.permissions.allow}),s=this.getPermissionMode(),l=[...this.config.permissions.allow,...o?.allow??[]],u={allow:s===`auto`?c(l):l,deny:[...this.config.permissions.deny,...o?.deny??[]],ask:this.config.permissions.ask??[]},d={cwd:this.cwd,homeDirectory:this.homeDirectory},f=p(e,t,s,u,{...d,resolveInWorkspace:this.resolveInWorkspace,sandboxAutoApproved:a.sandboxed!==!1&&this.sandboxAutoApproves(e,t),...o?.ceiling===void 0?{}:{ceiling:o.ceiling},askAll:o?.askAll??!1,...this.peerTurn?{peerTurn:!0}:{}});if(this.firePermissionDecisionHook(e,t,f,i),f===`auto`)return!0;if(f===`deny`)return this.denials.record(e,t,`policy`),!1;let m=ce(e,t,u,d);return s===`auto`&&this.autoMode!==void 0&&!m&&o?.askAll!==!0?this.decideInAutoMode(this.autoMode,e,t,n,r,i,a):this.promptForApproval(e,t,n,r,m)}async decideInAutoMode(e,t,n,r,i,a,o){if(e.takeRetry(t,n)||te(t,n,c([...this.sessionAllowedTools])))return!0;if(e.isPaused()){let a=await this.promptForApproval(t,n,r,i,!0);return a&&e.resume(),a}let s=await e.judge({toolName:t,toolArgs:n,cwd:this.cwd},r);return r?.aborted===!0?!1:this.getPermissionMode()===`auto`?s.kind===`allow`?!0:(this.denials.record(t,n,`classifier`,s.reason),{message:s.message}):this.decidePermission(t,n,r,i,a,o)}async promptForApproval(e,t,n,r=`interactive`,i=!1){let a=vt(e,t),o=n?.aborted===!0,s=r===`interactive`&&(this.permissionHandler!==void 0||this.promptForApprovalFn!==void 0),c=await dt({toolName:e,alreadyAllowed:!i&&te(e,t,[...this.sessionAllowedTools]),...r===`interactive`&&this.permissionHandler?{handler:this.permissionHandler}:{},...r===`interactive`&&this.promptForApprovalFn?{injectedPrompt:this.promptForApprovalFn,terminal:this.terminal}:{},toolArgs:t,...n?{signal:n}:{}});if(!c.allowed&&!o&&this.denials.record(e,t,s?`user`:`no-approver`),i)return c.allowed;if(c.rememberForProject){if(this.onProjectAllowTool===void 0)throw Error(`Project-wide permission persistence is unavailable for this session.`);this.onProjectAllowTool(a)}return c.rememberForSession&&this.sessionAllowedTools.add(a),c.allowed}firePermissionDecisionHook(e,t,n,r){let i=this.getPermissionMode();S(this.config.hooks,`PermissionDecision`,{session_id:this.sessionId,cwd:this.cwd,hook_event_name:`PermissionDecision`,tool_name:e,tool_input:t,permission_decision:n,...i!==void 0&&{permission_mode:i},...this.transcriptPath!==void 0&&{transcript_path:this.transcriptPath},env:{CLAUDE_PROJECT_DIR:this.cwd,CLAUDE_SESSION_ID:this.sessionId}},this.hookTypeExecutors,r).catch(()=>void 0)}sandboxAutoApproves(e,t){if(this.commandSandbox===void 0)return!1;let n=v(e).argument;if(n?.kind!==`command`)return!1;let r=t[n.key];return typeof r==`string`&&this.commandSandbox.autoApproves(e,r)}log(e,t){this.sessionLogger?.log(this.sessionId,e,t)}};function Lt(e,t,n,r,i){return new It({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 Rt(e,t,n,r){return{contextTracker:new st(t,e.contextMaxTokens,e.autoCompactThreshold),compactionOrchestrator:new at({sessionId:n,cwd:r,model:t,hooks:e.hooks,compactInstructions:e.compactInstructions,basePrompt:e.compactionBasePrompt,hookTypeExecutors:e.hookTypeExecutors})}}function zt(e,t,n,r,a,o,s){let c=t.wrapTools(n);return new i({name:e.agentName??`agent`,aiProviders:[r],defaultModel:{provider:r.name,model:a,...e.effort!==void 0&&{effort:e.effort},...e.temperature!==void 0&&{temperature:e.temperature},...e.maxOutputTokens!==void 0&&{maxTokens:e.maxOutputTokens}},systemMessage:o,tools:c,isToolVisible:e=>t.isToolVisible(e),logging:{enabled:!1},eventService:s,...e.providerTimeout!==void 0&&{timeout:e.providerTimeout},...e.responseFormat?{responseFormat:e.responseFormat}:{},...e.ask?{ask:e.ask}:{},...e.contextCapacityHint===void 0?{}:{contextCapacityHint:e.contextCapacityHint}})}const Bt=u(`SessionHistoryOps`);function Vt(e,t){return{...e,...t}}async function Ht(e,t,n){n?.throwIfAborted();let r=t.agent.getHistory(),i=r.filter(e=>e.role!==`system`);if(i.length===0)return;t.contextTracker.updateFromHistory(r);let a=t.contextTracker.getContextState(),o=await t.compactionOrchestrator.compact(t.aiProvider,i,e,n,t.trigger,t.hookTraceEnv);t.agent.clearHistory(),t.agent.injectMessage(`system`,t.systemMessage),t.agent.injectMessage(`assistant`,`[Context Summary]\n${o}`),t.contextTracker.updateFromHistory(t.agent.getHistory());let s={session_id:t.sessionId,cwd:t.cwd,hook_event_name:`PostCompact`,trigger:t.trigger,compact_summary:o};S(t.hooks,`PostCompact`,s,t.hookTypeExecutors,t.hookTraceEnv).catch(e=>Bt.warn(`hook failed`,{error:e}));let c=t.contextTracker.getContextState();t.log(`context_compact`,{trigger:t.trigger,before:a,after:c}),t.onCompactEventCallback?.({trigger:t.trigger,before:a,after:c}),t.onCompactCallback&&t.onCompactCallback(o)}function Ut(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 Wt=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function Gt(){return`session_${ve()}`}function Kt(e){return e.length>0&&e.length<=128&&Wt.test(e)}function qt(e){if(!Kt(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 Jt=u(`SessionLifecycle`);function Yt(e,t,n){e.configureNativeWebTools?.({webSearch:!0}),`onServerToolUse`in e&&(e.onServerToolUse=(e,t)=>{n(`server_tool`,{tool:e,...t})})}function Xt(e,t,n,r,i,a,o){S(n,`SessionStart`,{session_id:e,cwd:t,hook_event_name:`SessionStart`,...a!==void 0&&{permission_mode:a},...o!==void 0&&{transcript_path:o},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e}},r).then(e=>{e.stdout&&i(e.stdout)}).catch(e=>Jt.warn(`SessionStart hook failed`,{error:e}))}async function Zt(e,t,n,r,i,a,o){await S(r,`SessionEnd`,{session_id:e,cwd:t,hook_event_name:`SessionEnd`,reason:n,...a!==void 0&&{permission_mode:a},...o!==void 0&&{transcript_path:o},env:{CLAUDE_PROJECT_DIR:t,CLAUDE_SESSION_ID:e}},i)}function Qt(e){return{...e?.ephemeralSystemContext!==void 0&&{ephemeralSystemContext:e.ephemeralSystemContext},...e?.driverId!==void 0&&{driverId:e.driverId},...e?.toolChoice!==void 0&&{toolChoice:e.toolChoice},...e?.traceContext!==void 0&&{traceContext:e.traceContext},...e?.peerTurn===!0&&{withholdHostedTools:!0}}}const $t=`unknown_tool`;function en(e){return{knownToolNames:new Set(e.knownToolNames),unknownToolCallIds:new Set,...e.onToolExecution&&{onToolExecution:e.onToolExecution}}}function tn(e,t,n){if(e.onToolExecution){if(t===`tool_execution_request`){nn(e,n);return}t===`tool_execution_result`&&rn(e,n)}}function nn(e,t){let n=D(t.toolName),r=D(t.toolCallId);!n||!r||e.knownToolNames.has(n)||(e.unknownToolCallIds.add(r),e.onToolExecution?.({type:`start`,toolName:n,toolArgs:an(t.parameters)}))}function rn(e,t){let n=D(t.toolName),r=D(t.toolCallId);if(!n||!r)return;let i=on(t.metadata);if(!(e.unknownToolCallIds.has(r)||i?.errorCode===$t))return;e.unknownToolCallIds.delete(r);let a=D(t.error)??`Tool "${n}" is not registered.`;e.onToolExecution?.({type:`end`,toolName:n,success:!1,toolResultData:JSON.stringify({success:!1,error:a,errorCode:$t,requestedTool:D(i?.requestedTool)??n,availableTools:sn(i?.availableTools)})})}function an(e){let t=on(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 D(e){return typeof e==`string`&&e.length>0?e:void 0}function on(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:void 0}function sn(e){return Array.isArray(e)?e.filter(e=>typeof e==`string`):[]}const cn=u(`SessionRun`);function ln(e,t,n,r){let i=typeof n.model==`string`?n.model:e.model,a=typeof n.provider==`string`?n.provider:e.aiProvider.name,o=n.effort,s=typeof o==`string`&&x(o)?o:e.effort??(typeof e.agent.getModel==`function`?e.agent.getModel().effort:void 0)??`high`,c=typeof n.round==`number`?n.round:void 0;S(e.hooks,t,{session_id:e.sessionId,cwd:e.cwd,hook_event_name:t,model:i,provider:a,effort:s,...c!==void 0&&{round:c},...e.permissionMode!==void 0&&{permission_mode:e.permissionMode},...e.transcriptPath!==void 0&&{transcript_path:e.transcriptPath},env:{CLAUDE_PROJECT_DIR:e.cwd,CLAUDE_SESSION_ID:e.sessionId}},e.hookTypeExecutors,r).catch(e=>cn.warn(`hook failed`,{error:e}))}async function un(t,i,a,o,s){let c=s?.traceContext,l=c?le(`hooks`,c,c.parentSpanId):void 0;if(a.contextTracker.updateFromHistory(a.agent.getHistory()),a.contextTracker.shouldAutoCompact()){let e=a.aiProvider,t=e.onTextDelta;e.onTextDelta=void 0;try{await(l?a.compact(o,l):a.compact(o))}finally{e.onTextDelta=t}}a.log(`user`,{content:t});let u=await S(a.hooks,`UserPromptSubmit`,{session_id:a.sessionId,cwd:a.cwd,hook_event_name:`UserPromptSubmit`,user_message:i??t,prompt:i??t,...a.permissionMode!==void 0&&{permission_mode:a.permissionMode},...a.transcriptPath!==void 0&&{transcript_path:a.transcriptPath},env:{CLAUDE_PROJECT_DIR:a.cwd,CLAUDE_SESSION_ID:a.sessionId}},a.hookTypeExecutors,l),f=[a.sessionStartStdout,u.stdout].filter(Boolean).join(`
6
+ `),p=f?`<system-reminder>\n${f}\n</system-reminder>\n${t}`:t;a.clearSessionStartStdout();let m=a.agent.getHistory(),h=JSON.stringify(m),g=_(a.aiProvider);a.log(`pre_run`,{historyLength:m.length,historyChars:h.length,historyEstTokens:Math.ceil(h.length/e),input:p,history:m,model:a.model,provider:a.aiProvider.name,maxTokens:a.contextTracker.getContextState().maxTokens,nativeWebSearchSupported:g.nativeWebTools.webSearch.supported,nativeWebSearchEnabled:g.nativeWebTools.webSearch.enabled,nativeWebFetchSupported:g.nativeWebTools.webFetch.supported,nativeWebFetchEnabled:g.nativeWebTools.webFetch.enabled}),a.contextTracker.updateFromHistory([...m,d(p)]),a.onContextUpdate?.(a.contextTracker.getContextState());let v;try{let e=en({knownToolNames:a.knownToolNames??[],...a.onToolExecution&&{onToolExecution:a.onToolExecution}}),t=a.onTextDelta?e=>{a.log(`text_delta`,{delta:e}),a.onTextDelta?.(e)}:void 0,i={};if(v=await a.agent.run(p,{signal:o,maxExecutionRounds:a.maxTurns??0,...Qt(s),onExecutionEvent:(t,o)=>{if(t!==n.COMPLETED&&a.log(t,o),tn(e,t,o),t===`provider_request`){let e=o;i={model:e.model,provider:e.provider},ln(a,`PreModelCall`,e,l)}else if(t===`provider_response_normalized`)ln(a,`PostModelCall`,{...o,...i},l);else if(t===r.SWITCHED){let e=oe(o);e!==void 0&&(ln(a,`PostModelCall`,{round:o.round,model:e.from.model,provider:e.from.provider},l),a.emitProviderFallback?.(e))}else if(t===n.COMPLETED&&a.emitProviderCallCompleted){let e=o;Number.isSafeInteger(e.round)&&e.round>0&&typeof e.startedAt==`string`&&typeof e.endedAt==`string`&&(e.outcome===`success`||e.outcome===`failure`||e.outcome===`interrupted`)&&a.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}})}t===`assistant_message_committed`&&(a.contextTracker.updateFromHistory(a.agent.getHistory()),a.onContextUpdate?.(a.contextTracker.getContextState()))},...t&&{onTextDelta:t}}),o.aborted)throw new DOMException(`Aborted`,`AbortError`)}catch(e){throw a.log(`error`,{message:e instanceof Error?e.message:String(e),stack:e instanceof Error?e.stack??``:``,historyLength:a.agent.getHistory().length}),S(a.hooks,`StopFailure`,{session_id:a.sessionId,cwd:a.cwd,hook_event_name:`StopFailure`,reason:e instanceof Error?e.message:String(e),stop_hook_active:!1,...a.permissionMode!==void 0&&{permission_mode:a.permissionMode},...a.transcriptPath!==void 0&&{transcript_path:a.transcriptPath},env:{CLAUDE_PROJECT_DIR:a.cwd,CLAUDE_SESSION_ID:a.sessionId}},a.hookTypeExecutors,l).catch(e=>cn.warn(`hook failed`,{error:e})),e}let y=a.agent.getHistory(),b=y.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}:{}}});a.log(`assistant`,{content:v,historyLength:y.length,estimatedChars:JSON.stringify(y).length,history:y,historyStructure:b}),a.contextTracker.updateFromHistory(y);let x=a.contextTracker.getContextState();return a.onContextUpdate?.(x),a.log(`context`,{maxTokens:x.maxTokens,usedTokens:x.usedTokens,usedPercentage:x.usedPercentage,remainingPercentage:x.remainingPercentage}),S(a.hooks,`Stop`,{session_id:a.sessionId,cwd:a.cwd,hook_event_name:`Stop`,response:v.substring(0,500),last_assistant_message:v,stop_hook_active:!1,...a.permissionMode!==void 0&&{permission_mode:a.permissionMode},...a.transcriptPath!==void 0&&{transcript_path:a.transcriptPath},env:{CLAUDE_PROJECT_DIR:a.cwd,CLAUDE_SESSION_ID:a.sessionId}},a.hookTypeExecutors,l).catch(e=>cn.warn(`hook failed`,{error:e})),a.getSessionStore()&&a.persistSession(),v}var dn=class{agent;claim;sessionId;execution=null;constructor(e,t,n){this.agent=e,this.claim=t,this.sessionId=n}async invoke(e,t,n){let r=this.claim.claim(),i=fn(r,n);try{return r.signal.throwIfAborted(),this.execution=this.agent.invokeRuntimeTool(e,t,{toolName:e,parameters:t,executionId:ve(),sessionId:this.sessionId,signal:r.signal,permissionInteraction:`deny`}),await this.execution}finally{this.execution=null,i(),this.claim.release(r)}}async drain(){await this.execution}};function fn(e,t){let n=()=>e.abort(t?.reason);return t?.aborted?n():t?.addEventListener(`abort`,n,{once:!0}),()=>t?.removeEventListener(`abort`,n)}var pn=class extends $e{agent;eventService=new t;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;shutdownPromise=null;sessionStartStdout=``;transcriptPath;constructor(e){super(e.cwd);let{tools:t,provider:n,systemMessage:r}=e;this.terminal=e.terminal,this.sessionStore=e.sessionStore,this.systemMessage=r,this.toolSchemas=t.map(e=>e.schema),this.wrapAddedTools=e.wrapAddedTools,this.sessionLogger=e.sessionLogger,this.hooks=e.hooks,this.hookTypeExecutors=e.hookTypeExecutors,this.onTextDeltaCallback=e.onTextDelta,this.onContextUpdateCallback=e.onContextUpdate,this.onToolExecutionCallback=e.onToolExecution,this.onCompactCallback=e.onCompact,this.onCompactEventCallback=e.onCompactEvent,this.maxTurns=e.maxTurns,this.model=e.model??`claude-sonnet-4-5`,this.sessionId=e.sessionId??Gt(),this.permissionMode=e.permissionMode??(e.defaultTrustLevel?s[e.defaultTrustLevel]:void 0)??`default`,this.activePresetId=e.activePresetId??`default`,this.parallelSubagentsEnabled=e.enableParallelSubagents??!0,this.transcriptPath=e.transcriptPath,this.log(`session_init`,{cwd:this.cwd,systemPromptLength:r.length,systemPrompt:r,toolSchemas:this.toolSchemas,model:this.model,provider:n.name}),this.aiProvider=n,Yt(n,e,(e,t)=>this.log(e,t)),this.permissionEnforcer=Lt(e,this.sessionId,this.cwd,()=>this.permissionMode,this.transcriptPath),this.requireClassifierFor(this.permissionMode),this.addPermissionModeGuard(e=>this.requireClassifierFor(e));let{contextTracker:i,compactionOrchestrator:a}=Rt(e,this.model,this.sessionId,this.cwd);this.contextTracker=i,this.compactionOrchestrator=a,this.agent=zt(e,this.permissionEnforcer,t,n,this.model,r,this.eventService),this.runtimeTools=new dn(this.agent,this.turnClaim,this.sessionId),Xt(this.sessionId,this.cwd,this.hooks,this.hookTypeExecutors,e=>void(this.sessionStartStdout=e),this.permissionMode,this.transcriptPath)}async run(e,t,n){if(this.shuttingDown)throw Error(`[LIFECYCLE] Session is shutting down`);let r=this.turnClaim.claim(),i=fn(r,n?.signal),{signal:a}=r;this.permissionEnforcer.beginTurn(n?.peerTurn===!0);try{a.throwIfAborted(),await this.serializeToolChange(()=>this.applyPendingTools());let r=await un(e,t,this.buildRunContext(),a,n);return this.messageCount+=1,r}finally{this.permissionEnforcer.endTurn(),i(),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&&Ut({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()),this.log(`session_shutdown`,{reason:t}),await n(`persist`,()=>this.persistSessionInternal()),await n(`session-end-hook`,()=>Zt(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}async compact(e,t=`manual`,n){await this.compactWith(e,t,n)}async compactWith(e,t,n,r){let i={systemMessage:this.systemMessage,compactionOrchestrator:this.compactionOrchestrator,onCompactCallback:this.onCompactCallback,onCompactEventCallback:this.onCompactEventCallback,trigger:t,...r?{hookTraceEnv:r}:{}};await Ht(e,Vt(this.buildRunContext(),i),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)=>this.compactWith(void 0,`auto`,e,t),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:e=>this.eventService.emit(n.COMPLETED,{timestamp:new Date,...e},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),emitProviderFallback:e=>this.eventService.emit(r.SWITCHED,{timestamp:new Date,fromProvider:e.from.provider,fromModel:e.from.model,toProvider:e.to.provider,toModel:e.to.model,reason:e.reason},{ownerType:`session`,ownerId:this.sessionId,ownerPath:[{type:`session`,id:this.sessionId}]}),knownToolNames:this.toolSchemas.map(e=>e.name)}}};function O(e,t){return e.length===0?t:`${e}.${t}`}function k(e,t){return`${e}[${t}]`}function A(e,t,n){e.push({path:t,message:n})}function j(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 M(e,t,n){n!==void 0&&(e[t]=n)}function N(e,t,n,r){if(e!==void 0)return r(e,t,n)}function P(e,t,n){if(typeof e==`string`)return e;A(n,t,`expected a string, received ${j(e)}`)}function F(e,t,n){if(typeof e==`number`&&Number.isFinite(e))return e;A(n,t,`expected a finite number, received ${j(e)}`)}function I(e,t,n){if(typeof e==`number`&&Number.isInteger(e))return e;A(n,t,`expected an integer, received ${j(e)}`)}function L(e,t,n){if(typeof e==`boolean`)return e;A(n,t,`expected a boolean, received ${j(e)}`)}function R(e,t,n,r){if(typeof e==`string`&&t.includes(e))return e;A(r,n,`expected one of ${t.join(` | `)}, received ${j(e)}`)}function z(e,t,n){if(typeof e!=`string`){A(n,t,`expected an ISO-8601 timestamp string, received ${j(e)}`);return}if(Number.isNaN(Date.parse(e))){A(n,t,`expected a timestamp a date can be parsed from`);return}return e}function mn(e,t,n){if(e instanceof Date){if(Number.isNaN(e.getTime())){A(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);A(n,t,`expected a Date or an ISO-8601 timestamp string, received ${j(e)}`)}function B(e,t,n,r){if(!Array.isArray(e)){A(n,t,`expected an array, received ${j(e)}`);return}let i=[];return e.forEach((e,a)=>{let o=r(e,k(t,a),n);o!==void 0&&i.push(o)}),i}function hn(e,t,n){return B(e,t,n,P)}function V(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){A(n,t,`expected an object, received ${j(e)}`);return}let i=e,a=new Set(r);for(let e of Object.keys(i))a.has(e)||A(n,O(t,e),`unknown key; the record contract does not declare it`);return i}function H(e,t,n,r){if(typeof e!=`object`||!e||Array.isArray(e)){A(n,t,`expected an object, received ${j(e)}`);return}let i={};for(let[a,o]of Object.entries(e)){let e=r(o,O(t,a),n);e!==void 0&&(i[a]=e)}return i}function gn(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=gn(e,k(t,i),n);a!==void 0&&r.push(a)}),r}if(typeof e==`object`)return H(e,t,n,gn);A(n,t,`expected a JSON-compatible value, received ${j(e)}`)}function _n(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;A(n,t,`expected a string, number or boolean, received ${j(e)}`)}const vn=[`complete`,`interrupted`],yn=[`id`,`timestamp`,`state`,`metadata`,`role`,`content`,`parts`],bn={user:[...yn,`name`],assistant:[...yn,`toolCalls`],system:[...yn,`name`],tool:[...yn,`toolCallId`,`name`]};function xn(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;A(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`){A(n,O(t,i),`expected a number, received ${j(a)}`);continue}r[i]=a}return r}A(n,t,`expected a metadata value, received ${j(e)}`)}function Sn(e,t,n){return H(e,t,n,xn)}function Cn(e,t,n){let r=R(e?.type,[`text`,`image_inline`,`image_uri`],O(t,`type`),n);if(r===void 0)return;if(r===`text`){let r=V(e,t,n,[`type`,`text`]);if(r===void 0)return;let i=P(r.text,O(t,`text`),n);return i===void 0?void 0:{type:`text`,text:i}}if(r===`image_inline`){let r=V(e,t,n,[`type`,`mimeType`,`data`]);if(r===void 0)return;let i=P(r.mimeType,O(t,`mimeType`),n),a=P(r.data,O(t,`data`),n);return i===void 0||a===void 0?void 0:{type:`image_inline`,mimeType:i,data:a}}let i=V(e,t,n,[`type`,`uri`,`mimeType`]);if(i===void 0)return;let a=P(i.uri,O(t,`uri`),n);if(a===void 0)return;let o={type:`image_uri`,uri:a};return M(o,`mimeType`,N(i.mimeType,O(t,`mimeType`),n,P)),o}function wn(e,t,n){let r=V(e,t,n,[`id`,`type`,`function`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=R(r.type,[`function`],O(t,`type`),n),o=O(t,`function`),s=V(r.function,o,n,[`name`,`arguments`]),c=s===void 0?void 0:P(s.name,O(o,`name`),n),l=s===void 0?void 0:P(s.arguments,O(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 Tn(e,t,n){let r=P(e.id,O(t,`id`),n),i=mn(e.timestamp,O(t,`timestamp`),n),a=R(e.state,vn,O(t,`state`),n);if(r!==void 0&&i!==void 0&&a!==void 0)return{id:r,timestamp:i,state:a}}function En(e,t,n,r){M(e,`metadata`,N(t.metadata,O(n,`metadata`),r,Sn)),M(e,`parts`,N(t.parts,O(n,`parts`),r,(e,t,n)=>B(e,t,n,Cn)))}function U(e,t,n){let r=R(e?.role,[`user`,`assistant`,`system`,`tool`],O(t,`role`),n);if(r===void 0)return;let i=V(e,t,n,bn[r]);if(i===void 0)return;let a=Tn(i,t,n);if(a===void 0)return;let o=O(t,`content`);if(r===`assistant`){let e=i.content===null?null:P(i.content,o,n);if(e===void 0)return;let s={...a,role:r,content:e};return En(s,i,t,n),M(s,`toolCalls`,N(i.toolCalls,O(t,`toolCalls`),n,(e,t,n)=>B(e,t,n,wn))),s}let s=P(i.content,o,n);if(s===void 0)return;if(r===`tool`){let e=P(i.toolCallId,O(t,`toolCallId`),n);if(e===void 0)return;let o={...a,role:r,content:s,toolCallId:e};return En(o,i,t,n),M(o,`name`,N(i.name,O(t,`name`),n,P)),o}let c={...a,role:r,content:s};return En(c,i,t,n),M(c,`name`,N(i.name,O(t,`name`),n,P)),c}function Dn(e,t,n){let r=V(e,t,n,[`id`,`timestamp`,`category`,`type`,`data`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=mn(r.timestamp,O(t,`timestamp`),n),o=P(r.category,O(t,`category`),n),s=P(r.type,O(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 M(c,`data`,N(r.data,O(t,`data`),n,gn)),c}const On=[`agent`,`process`,`scheduled`,`tool-invocation`],kn=[`foreground`,`background`],An=[`none`,`worktree`],jn=[`queued`,`running`,`waiting_permission`,`sleeping`,`paused`,`completed`,`failed`,`cancelled`],Mn=[`idle`,`max_runtime`,`output_limit`,`repetition`,`stale_worker`],Nn=[`validation`,`capacity`,`permission`,`timeout`,`runner`,`crash`,`provider`,`process`];function Pn(e,t,n){return H(e,t,n,_n)}function Fn(e,t,n){return H(e,t,n,P)}function In(e,t,n){let r=V(e,t,n,[`category`,`message`,`recoverable`]);if(r===void 0)return;let i=R(r.category,Nn,O(t,`category`),n),a=P(r.message,O(t,`message`),n),o=L(r.recoverable,O(t,`recoverable`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{category:i,message:a,recoverable:o}}function Ln(e,t,n){let r=V(e,t,n,[`promptTokens`,`completionTokens`,`totalTokens`]);if(r===void 0)return;let i=I(r.promptTokens,O(t,`promptTokens`),n),a=I(r.completionTokens,O(t,`completionTokens`),n),o=I(r.totalTokens,O(t,`totalTokens`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{promptTokens:i,completionTokens:a,totalTokens:o}}function Rn(e,t,n){let r=V(e,t,n,[`taskId`,`kind`,`output`,`exitCode`,`signalCode`,`metadata`,`usage`]);if(r===void 0)return;let i=P(r.taskId,O(t,`taskId`),n),a=R(r.kind,On,O(t,`kind`),n),o=P(r.output,O(t,`output`),n);if(i===void 0||a===void 0||o===void 0)return;let s=N(r.exitCode,O(t,`exitCode`),n,I),c=N(r.signalCode,O(t,`signalCode`),n,P),l=N(r.metadata,O(t,`metadata`),n,Pn),u=N(r.usage,O(t,`usage`),n,Ln);switch(a!==`process`&&s!==void 0&&A(n,O(t,`exitCode`),`must not be set for a '${a}' result`),a!==`process`&&c!==void 0&&A(n,O(t,`signalCode`),`must not be set for a '${a}' result`),a!==`agent`&&u!==void 0&&A(n,O(t,`usage`),`must not be set for a '${a}' result`),a){case`process`:{let e={taskId:i,kind:a,output:o};return M(e,`exitCode`,s),M(e,`signalCode`,c),M(e,`metadata`,l),e}case`agent`:{let e={taskId:i,kind:a,output:o};return M(e,`metadata`,l),M(e,`usage`,u),e}case`scheduled`:{let e={taskId:i,kind:a,output:o};return M(e,`metadata`,l),e}case`tool-invocation`:{let e={taskId:i,kind:a,output:o};return M(e,`metadata`,l),e}}}function zn(e,t,n){let r=V(e,t,n,[`cronExpression`,`agentInstruction`,`command`,`shell`,`env`]);if(r===void 0)return;let i=P(r.cronExpression,O(t,`cronExpression`),n);if(i===void 0)return;let a={cronExpression:i};for(let e of[`agentInstruction`,`command`,`shell`])M(a,e,N(r[e],O(t,e),n,P));return M(a,`env`,N(r.env,O(t,`env`),n,Fn)),a}const Bn=[`detached`,`wait_all`,`wait_any`,`manual`],Vn=[`running`,`completed`],Hn=[`background_job_group_created`,`background_job_group_updated`,`background_job_group_completed`];function Un(e,t,n){let r=V(e,t,n,[`taskId`,`label`,`status`,`summary`,`outputRef`,`error`,`startedAt`,`completedAt`]);if(r===void 0)return;let i=P(r.taskId,O(t,`taskId`),n),a=P(r.label,O(t,`label`),n),o=R(r.status,jn,O(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`])M(s,e,N(r[e],O(t,e),n,P));for(let e of[`startedAt`,`completedAt`])M(s,e,N(r[e],O(t,e),n,z));return M(s,`error`,N(r.error,O(t,`error`),n,In)),s}function Wn(e,t,n){let r=V(e,t,n,[`id`,`parentSessionId`,`waitPolicy`,`taskIds`,`status`,`createdAt`,`updatedAt`,`label`,`completedAt`,`results`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.parentSessionId,O(t,`parentSessionId`),n),o=R(r.waitPolicy,Bn,O(t,`waitPolicy`),n),s=hn(r.taskIds,O(t,`taskIds`),n),c=R(r.status,Vn,O(t,`status`),n),l=z(r.createdAt,O(t,`createdAt`),n),u=z(r.updatedAt,O(t,`updatedAt`),n),d=B(r.results,O(t,`results`),n,Un);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 M(f,`label`,N(r.label,O(t,`label`),n,P)),M(f,`completedAt`,N(r.completedAt,O(t,`completedAt`),n,z)),f}function Gn(e,t,n){let r=R(e?.type,Hn,O(t,`type`),n);if(r===void 0)return;let i=V(e,t,n,[`type`,`group`]);if(i===void 0)return;let a=Wn(i.group,O(t,`group`),n);return a===void 0?void 0:{type:r,group:a}}const Kn=[`parentTaskId`,`currentAction`,`logPath`,`transcriptPath`],qn=[`agentType`,`resumeSessionId`,`promptPreview`,`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`],Jn=[`commandPreview`],Yn=[`startedAt`,`lastActivityAt`,`completedAt`],Xn=[`id`,`kind`,`label`,`status`,`mode`,`parentSessionId`,`depth`,`cwd`,`pid`,`updatedAt`,`isolation`,`unread`,`result`,`error`,`timeoutReason`,`schedule`,`nextFireAt`,`metadata`,...Kn,...qn,...Jn,...Yn];function Zn(e,t,n){let r=V(e,t,n,Xn);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=R(r.kind,On,O(t,`kind`),n),o=P(r.label,O(t,`label`),n),s=R(r.status,jn,O(t,`status`),n),c=R(r.mode,kn,O(t,`mode`),n),l=P(r.parentSessionId,O(t,`parentSessionId`),n),u=I(r.depth,O(t,`depth`),n),d=P(r.cwd,O(t,`cwd`),n),f=z(r.updatedAt,O(t,`updatedAt`),n),p=L(r.unread,O(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 Kn)M(m,e,N(r[e],O(t,e),n,P));for(let e of Yn)M(m,e,N(r[e],O(t,e),n,z));M(m,`pid`,N(r.pid,O(t,`pid`),n,I)),M(m,`timeoutReason`,N(r.timeoutReason,O(t,`timeoutReason`),n,(e,t,n)=>R(e,Mn,t,n))),M(m,`metadata`,N(r.metadata,O(t,`metadata`),n,Pn)),M(m,`error`,N(r.error,O(t,`error`),n,In));let h=N(r.result,O(t,`result`),n,Rn);h!==void 0&&(h.taskId!==i&&A(n,O(O(t,`result`),`taskId`),`must match the task ID`),h.kind!==a&&A(n,O(O(t,`result`),`kind`),`must match the task kind`));let g=N(r.agentType,O(t,`agentType`),n,P),_=N(r.resumeSessionId,O(t,`resumeSessionId`),n,P),v=N(r.promptPreview,O(t,`promptPreview`),n,P),y=N(r.isolation,O(t,`isolation`),n,(e,t,n)=>R(e,An,t,n)),b={};for(let e of[`worktreePath`,`branchName`,`worktreeStatus`,`worktreeNextAction`,`worktreeBaseRevision`,`parentWorktreeStatus`])b[e]=N(r[e],O(t,e),n,P);for(let e of qn){let r=e===`agentType`?g:e===`resumeSessionId`?_:e===`promptPreview`?v:b[e];a!==`agent`&&r!==void 0&&A(n,O(t,e),`must not be set for a '${a}' task`)}a!==`agent`&&y!==void 0&&A(n,O(t,`isolation`),`must not be set for a '${a}' task`);let x=N(r.commandPreview,O(t,`commandPreview`),n,P);a===`agent`&&x!==void 0&&A(n,O(t,`commandPreview`),`must not be set for a '${a}' task`);let ee=N(r.schedule,O(t,`schedule`),n,zn),te=N(r.nextFireAt,O(t,`nextFireAt`),n,z);switch(a!==`scheduled`&&ee!==void 0&&A(n,O(t,`schedule`),`must not be set for a '${a}' task`),a!==`scheduled`&&te!==void 0&&A(n,O(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 M(t,`result`,e),M(t,`agentType`,g),M(t,`resumeSessionId`,_),M(t,`promptPreview`,v),M(t,`isolation`,y),M(t,`worktreePath`,b.worktreePath),M(t,`branchName`,b.branchName),M(t,`worktreeStatus`,b.worktreeStatus),M(t,`worktreeNextAction`,b.worktreeNextAction),M(t,`worktreeBaseRevision`,b.worktreeBaseRevision),M(t,`parentWorktreeStatus`,b.parentWorktreeStatus),t}case`process`:{let e=h?.kind===`process`?h:void 0,t={...m,kind:a};return M(t,`result`,e),M(t,`commandPreview`,x),t}case`tool-invocation`:{let e=h?.kind===`tool-invocation`?h:void 0,t={...m,kind:a};return M(t,`result`,e),M(t,`commandPreview`,x),t}case`scheduled`:{let e=h?.kind===`scheduled`?h:void 0,t={...m,kind:a};return M(t,`result`,e),M(t,`commandPreview`,x),M(t,`schedule`,ee),M(t,`nextFireAt`,te),t}}}const Qn=[`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 W(e,t,n){return P(e.taskId,O(t,`taskId`),n)}function $n(e,t,n){let r=V(e,t,n,[`type`,`taskId`,`delta`]);if(r===void 0)return;let i=W(r,t,n),a=P(r.delta,O(t,`delta`),n);if(i!==void 0&&a!==void 0)return{type:`background_task_text_delta`,taskId:i,delta:a}}function er(e,t,n){let r=V(e,t,n,[`type`,`taskId`,`toolName`,`firstArg`]);if(r===void 0)return;let i=W(r,t,n),a=P(r.toolName,O(t,`toolName`),n);if(i===void 0||a===void 0)return;let o={type:`background_task_tool_start`,taskId:i,toolName:a};return M(o,`firstArg`,N(r.firstArg,O(t,`firstArg`),n,P)),o}function tr(e,t,n){let r=V(e,t,n,[`type`,`taskId`,`toolName`,`success`,`error`]);if(r===void 0)return;let i=W(r,t,n),a=P(r.toolName,O(t,`toolName`),n),o=L(r.success,O(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 M(s,`error`,N(r.error,O(t,`error`),n,P)),s}function nr(e,t,n){let r=V(e,t,n,[`type`,`taskId`,`requestId`,`toolName`,`toolArgs`]);if(r===void 0)return;let i=W(r,t,n),a=P(r.requestId,O(t,`requestId`),n),o=P(r.toolName,O(t,`toolName`),n),s=Pn(r.toolArgs,O(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 rr(e,t,n){let r=V(e,t,n,[`type`,`taskId`]);if(r===void 0)return;let i=W(r,t,n);return i===void 0?void 0:{type:`background_task_closed`,taskId:i}}function ir(e,t,n){let r=V(e,t,n,[`type`,`taskId`,`instruction`]);if(r===void 0)return;let i=W(r,t,n);if(i===void 0)return;let a={type:`background_task_waking`,taskId:i};return M(a,`instruction`,N(r.instruction,O(t,`instruction`),n,P)),a}function ar(e,t,n,r){let i=V(t,n,r,[`type`,`task`]);if(i===void 0)return;let a=Zn(i.task,O(n,`task`),r);if(a!==void 0)return{type:e,task:a}}const or={background_task_text_delta:$n,background_task_tool_start:er,background_task_tool_end:tr,background_task_permission_request:nr,background_task_closed:rr,background_task_waking:ir};function sr(e,t,n){let r=R(e?.type,Qn,O(t,`type`),n);if(r===void 0)return;let i=or[r];return i===void 0?ar(r,e,t,n):i(e,t,n)}const cr=[`skill`,`plugin`],lr=[`user-slash`,`model-tool`],ur=[`inject`,`fork`],dr=[`started`,`completed`,`failed`],fr=[`memory_candidate_extracted`,`memory_candidate_queued`,`memory_candidate_saved`,`memory_candidate_skipped`,`memory_candidate_approved`,`memory_candidate_rejected`,`memory_retrieved`],pr=[`manual`,`prompt-reference`,`system`],mr=[`active`,`observed`];function hr(e,t,n){let r=V(e,t,n,[`type`,`skillName`,`source`,`invocation`,`mode`,`status`,`timestamp`,`qualifiedName`,`error`]);if(r===void 0)return;let i=R(r.type,[`skill-activation`],O(t,`type`),n),a=P(r.skillName,O(t,`skillName`),n),o=R(r.source,cr,O(t,`source`),n),s=R(r.invocation,lr,O(t,`invocation`),n),c=R(r.mode,ur,O(t,`mode`),n),l=R(r.status,dr,O(t,`status`),n),u=z(r.timestamp,O(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=N(r.qualifiedName,O(t,`qualifiedName`),n,P),f=N(r.error,O(t,`error`),n,P);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 gr(e,t,n){let r=V(e,t,n,[`topic`,`path`,`score`,`truncated`]);if(r===void 0)return;let i=P(r.topic,O(t,`topic`),n),a=P(r.path,O(t,`path`),n),o=F(r.score,O(t,`score`),n),s=L(r.truncated,O(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 _r(e,t,n){let r=V(e,t,n,[`type`,`at`,`candidateId`,`topic`,`reason`,`data`]);if(r===void 0)return;let i=R(r.type,fr,O(t,`type`),n),a=z(r.at,O(t,`at`),n);if(i===void 0||a===void 0)return;let o={type:i,at:a};for(let e of[`candidateId`,`topic`,`reason`])M(o,e,N(r[e],O(t,e),n,P));return M(o,`data`,N(r.data,O(t,`data`),n,(e,t,n)=>H(e,t,n,gn))),o}function vr(e,t,n){let r=V(e,t,n,[`id`,`sourcePath`,`relativePath`,`originalReference`,`loadType`,`status`,`byteLength`,`loadedAt`,`lastUsedAt`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.sourcePath,O(t,`sourcePath`),n),o=P(r.relativePath,O(t,`relativePath`),n),s=P(r.originalReference,O(t,`originalReference`),n),c=R(r.loadType,pr,O(t,`loadType`),n),l=R(r.status,mr,O(t,`status`),n),u=I(r.byteLength,O(t,`byteLength`),n),d=z(r.loadedAt,O(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 M(f,`lastUsedAt`,N(r.lastUsedAt,O(t,`lastUsedAt`),n,z)),f}const yr=[`active`,`satisfied`,`stopped`],br=[`satisfied`,`max-iterations`,`cancelled`,`no-progress`],xr=[`continue`,`satisfied`],Sr=[`pending`,`in-progress`,`done`],Cr=[`planning`,`awaiting-approval`,`executing`,`completed`];function wr(e,t,n){let r=V(e,t,n,[`iteration`,`signal`,`reason`]);if(r===void 0)return;let i=I(r.iteration,O(t,`iteration`),n),a=R(r.signal,xr,O(t,`signal`),n),o=P(r.reason,O(t,`reason`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{iteration:i,signal:a,reason:o}}function Tr(e,t,n){let r=V(e,t,n,[`id`,`objective`,`status`,`stopReason`,`iterations`,`maxIterations`,`startedAt`,`progress`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.objective,O(t,`objective`),n),o=R(r.status,yr,O(t,`status`),n),s=I(r.iterations,O(t,`iterations`),n),c=I(r.maxIterations,O(t,`maxIterations`),n),l=z(r.startedAt,O(t,`startedAt`),n),u=B(r.progress,O(t,`progress`),n,wr);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 M(d,`stopReason`,N(r.stopReason,O(t,`stopReason`),n,(e,t,n)=>R(e,br,t,n))),d}function Er(e,t,n){let r=V(e,t,n,[`id`,`description`,`status`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.description,O(t,`description`),n),o=R(r.status,Sr,O(t,`status`),n);if(i!==void 0&&a!==void 0&&o!==void 0)return{id:i,description:a,status:o}}function Dr(e,t,n){let r=V(e,t,n,[`id`,`objective`,`steps`,`phase`,`createdAt`,`approvedAt`]);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.objective,O(t,`objective`),n),o=B(r.steps,O(t,`steps`),n,Er),s=R(r.phase,Cr,O(t,`phase`),n),c=z(r.createdAt,O(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 M(l,`approvedAt`,N(r.approvedAt,O(t,`approvedAt`),n,z)),l}function Or(e,t,n){let r=V(e,t,n,[`branchId`,`checkpointId`]);if(r===void 0)return;let i=P(r.branchId,O(t,`branchId`),n),a=P(r.checkpointId,O(t,`checkpointId`),n);if(i!==void 0&&a!==void 0)return{branchId:i,checkpointId:a}}const kr=[`waiting`,`pending`,`running`,`stopped`,`expired`],Ar=[`loopId`,`instruction`,`useDefaultPrompt`,`createdAt`,`expiresAt`,`revision`,`generation`,`phase`,`nextAllowedAt`,`delaySeconds`,`reason`,`fallbackUsed`,`terminalReason`];function jr(e,t,n){let r=V(e,t,n,Ar);if(!r)return;let i=P(r.loopId,O(t,`loopId`),n),a=P(r.instruction,O(t,`instruction`),n),o=N(r.useDefaultPrompt,O(t,`useDefaultPrompt`),n,L),s=z(r.createdAt,O(t,`createdAt`),n),c=z(r.expiresAt,O(t,`expiresAt`),n),l=I(r.revision,O(t,`revision`),n),u=I(r.generation,O(t,`generation`),n),d=R(r.phase,kr,O(t,`phase`),n),f=L(r.fallbackUsed,O(t,`fallbackUsed`),n),p=N(r.nextAllowedAt,O(t,`nextAllowedAt`),n,z),m=N(r.delaySeconds,O(t,`delaySeconds`),n,I),h=N(r.reason,O(t,`reason`),n,P),g=N(r.terminalReason,O(t,`terminalReason`),n,P);if(l!==void 0&&(!Number.isSafeInteger(l)||l<0)&&A(n,O(t,`revision`),`expected a non-negative safe integer`),u!==void 0&&(!Number.isSafeInteger(u)||u<0)&&A(n,O(t,`generation`),`expected a non-negative safe integer`),m!==void 0&&(m<60||m>3600)&&A(n,O(t,`delaySeconds`),`expected a delay between 60 and 3600 seconds`),i!==void 0&&!i.trim()&&A(n,O(t,`loopId`),`expected a non-empty loop ID`),a!==void 0&&!a.trim()&&A(n,O(t,`instruction`),`expected a non-empty instruction`),d===`waiting`&&p===void 0&&r.nextAllowedAt===void 0&&A(n,O(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 M(_,`useDefaultPrompt`,o),M(_,`nextAllowedAt`,p),M(_,`delaySeconds`,m),M(_,`reason`,h),M(_,`terminalReason`,g),_}const Mr=[`string`,`number`,`integer`,`boolean`,`array`,`object`,`null`],Nr=[`type`,`description`,`enum`,`items`,`properties`,`required`,`anyOf`,`additionalProperties`,`minimum`,`maximum`,`pattern`,`format`,`default`];function Pr(e,t,n){if(typeof e==`string`||typeof e==`number`||typeof e==`boolean`)return e;A(n,t,`expected a string, number or boolean, received ${j(e)}`)}function Fr(e,t,n){return e===null?null:Pr(e,t,n)}function Ir(e,t,n){return typeof e==`boolean`?e:G(e,t,n)}function G(e,t,n){let r=V(e,t,n,Nr);if(r===void 0)return;let i={};return M(i,`type`,N(r.type,O(t,`type`),n,(e,t,n)=>R(e,Mr,t,n))),M(i,`description`,N(r.description,O(t,`description`),n,P)),M(i,`enum`,N(r.enum,O(t,`enum`),n,(e,t,n)=>B(e,t,n,Pr))),M(i,`items`,N(r.items,O(t,`items`),n,G)),M(i,`properties`,N(r.properties,O(t,`properties`),n,(e,t,n)=>H(e,t,n,G))),M(i,`required`,N(r.required,O(t,`required`),n,hn)),M(i,`anyOf`,N(r.anyOf,O(t,`anyOf`),n,(e,t,n)=>B(e,t,n,G))),M(i,`additionalProperties`,N(r.additionalProperties,O(t,`additionalProperties`),n,Ir)),M(i,`minimum`,N(r.minimum,O(t,`minimum`),n,F)),M(i,`maximum`,N(r.maximum,O(t,`maximum`),n,F)),M(i,`pattern`,N(r.pattern,O(t,`pattern`),n,P)),M(i,`format`,N(r.format,O(t,`format`),n,P)),M(i,`default`,N(r.default,O(t,`default`),n,Fr)),i}function Lr(e,t,n){let r=G(e,t,n);if(r!==void 0){if(r.type!==`object`){A(n,O(t,`type`),`expected the root parameter schema to be type 'object'`);return}if(r.properties===void 0){A(n,O(t,`properties`),`expected the root parameter schema to name its properties`);return}return{...r,type:`object`,properties:r.properties}}}function Rr(e,t,n){let r=V(e,t,n,[`name`,`description`,`parameters`,`outputSchema`]);if(r===void 0)return;let i=P(r.name,O(t,`name`),n),a=P(r.description,O(t,`description`),n),o=Lr(r.parameters,O(t,`parameters`),n);if(i===void 0||a===void 0||o===void 0)return;let s={name:i,description:a,parameters:o};return M(s,`outputSchema`,N(r.outputSchema,O(t,`outputSchema`),n,G)),s}function K(e,t,n,r,i){return N(e[t],O(n,t),r,(e,t,n)=>B(e,t,n,i))}function zr(e,t,n,r){for(let i of[`name`,`systemPrompt`,`sandboxSnapshotId`])M(e,i,N(t[i],O(n,i),r,P));M(e,`history`,K(t,`history`,n,r,Dn)),M(e,`toolSchemas`,K(t,`toolSchemas`,n,r,Rr)),M(e,`backgroundTasks`,K(t,`backgroundTasks`,n,r,Zn)),M(e,`backgroundTaskEvents`,K(t,`backgroundTaskEvents`,n,r,sr)),M(e,`backgroundJobGroups`,K(t,`backgroundJobGroups`,n,r,Wn)),M(e,`backgroundJobGroupEvents`,K(t,`backgroundJobGroupEvents`,n,r,Gn)),M(e,`sessionLoops`,K(t,`sessionLoops`,n,r,jr)),M(e,`skillActivationEvents`,K(t,`skillActivationEvents`,n,r,hr)),M(e,`memoryEvents`,K(t,`memoryEvents`,n,r,_r)),M(e,`usedMemoryReferences`,K(t,`usedMemoryReferences`,n,r,gr)),M(e,`contextReferences`,K(t,`contextReferences`,n,r,vr)),M(e,`goal`,N(t.goal,O(n,`goal`),r,Tr)),M(e,`plan`,N(t.plan,O(n,`plan`),r,Dr)),M(e,`activeBranch`,N(t.activeBranch,O(n,`activeBranch`),r,Or))}const Br=1,Vr=[`id`,`name`,`cwd`,`createdAt`,`updatedAt`,`messages`,`history`,`systemPrompt`,`toolSchemas`,`backgroundTasks`,`backgroundTaskEvents`,`backgroundJobGroups`,`backgroundJobGroupEvents`,`sessionLoops`,`skillActivationEvents`,`memoryEvents`,`usedMemoryReferences`,`contextReferences`,`sandboxSnapshotId`,`goal`,`plan`,`activeBranch`];function Hr(e){let t=[],n=Wr(e,``,t);return n===void 0||t.length>0?{status:`corrupt`,issues:t}:{status:`valid`,record:n}}function Ur(e){let t=[],n=V(e,``,t,[`schemaVersion`,`record`]);if(n===void 0)return{status:`corrupt`,issues:t};let r=n.schemaVersion;if(typeof r!=`number`||!Number.isFinite(r))return{status:`unsupported`,schemaVersion:void 0};if(r!==1)return{status:`unsupported`,schemaVersion:r};let i=Wr(n.record,`record`,t);return i===void 0||t.length>0?{status:`corrupt`,issues:t}:{status:`valid`,record:i}}function Wr(e,t,n){let r=V(e,t,n,Vr);if(r===void 0)return;let i=P(r.id,O(t,`id`),n),a=P(r.cwd,O(t,`cwd`),n),o=z(r.createdAt,O(t,`createdAt`),n),s=z(r.updatedAt,O(t,`updatedAt`),n),c=B(r.messages,O(t,`messages`),n,U);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 zr(l,r,t,n),l}function Gr(e){try{return JSON.parse(e)}catch{throw Error(`Invalid session artifact: the bytes are not JSON.`)}}function Kr(e,t={}){let n={schemaVersion:1,record:t.redact?t.redact(e):e};return JSON.stringify(n,null,2)}function qr(e){let t=Ur(Gr(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 Jr=/^(api[-_]?key|authorization|access[-_]?token|refresh[-_]?token|secret|password|x[-_]?api[-_]?key)$/i;function Yr(e){return Jr.test(e)}function Xr(e,t,n){if(e!==void 0&&Yr(e))return n;if(Array.isArray(t))return t.map(e=>Xr(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]=Xr(t,i,n);return r}return t}function Zr(e,t=`[REDACTED]`){return Xr(void 0,e,t)}const Qr=1,$r={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 ei(e,t){return e.event===t}function ti(e,t,n,r){let i={};for(let[a,o]of Object.entries(t))i[a]=ni(e,a,o,n,r);return i}function ni(e,t,n,r,i){if(Yr(t))return r.redactedValue;if(n==null||typeof n==`string`||typeof n==`number`)return ri(e,n,r,i);if(typeof n==`boolean`)return n;if(n instanceof Date)return n.toISOString();if(Array.isArray(n))return ri(e,n.map(n=>ni(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]=ni(e,n,o,r,i);return ri(e,a,r,i)}return String(n)}function ri(e,t,n,r){let i=JSON.stringify(t);if(i===void 0||Buffer.byteLength(i)<=n.externalPayloadThresholdBytes||r===void 0)return t;let a=ge(`sha256`).update(i).digest(`hex`);return r.writeJson(e,a,i)}const ii=u(`FileSessionLogger`),ai=new Set([`text_delta`]),oi=new Set;let si=!1;function ci(e){oi.add(e),!si&&(typeof process>`u`||typeof process.on!=`function`||(si=!0,process.on(`exit`,()=>{for(let e of oi)e.flush()})))}var li=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(Kt(e))try{let r=ti(e,n,this.options,this.sink.externalPayloadSink),i=JSON.stringify({...r,schemaVersion:1,timestamp:new Date().toISOString(),sessionId:e,event:t})+`
7
+ `;if(ai.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){oi.delete(this);return}let e=[...this.pending.entries()];this.pending.clear(),this.pendingBytes=0,oi.delete(this);for(let[t,n]of e)try{this.write(t,n.join(``))}catch(e){this.report(t,`flush`,e)}}buffer(e,t){ci(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){ii.warn(`session log write failed`,{sessionId:e,event:t,error:n instanceof Error?n.message:String(n)})}},ui=class{log(){}};const di=u(`NodeSessionLogSink`),fi=/^[0-9a-f]{64}$/;function pi(e,t){let n=ge(`sha256`).update(t).digest(`hex`);if(!fi.test(e)||e!==n)throw Error(`Invalid sha256: external JSON payloads require their exact content digest.`)}function mi(e,t,n){return qt(e),pi(t,n),{kind:`external-payload`,encoding:`json`,sha256:t,byteLength:Buffer.byteLength(n),relativePath:C(`${e}.payloads`,`${t}.json`)}}var hi=class{logDirectory;externalPayloadSink=this;enabled;constructor(e){this.logDirectory=e;try{ze(e),this.enabled=!0}catch(t){this.enabled=!1,di.warn(`session log directory could not be created — session logging is disabled`,{logDirectory:e,error:t instanceof Error?t.message:String(t)})}}append(e,t){if(qt(e),!this.enabled)return;let n=C(this.logDirectory,`${e}.jsonl`);Be(n),xe(n,t,{mode:Re})}writeJson(e,t,n){let r=mi(e,t,n),i=`${e}.payloads`;if(this.enabled){ze(C(this.logDirectory,i));let e=C(this.logDirectory,r.relativePath);try{Le(e,n,{encoding:`utf8`,mode:Re,flag:`wx`})}catch(t){if(t.code!==`EEXIST`)throw t;Be(e)}}return r}};const q=e=>({decode:e}),J=e=>({decode:e,optional:!0}),gi=(e,t,n)=>B(e,t,n,P),_i=(e,t,n)=>B(e,t,n,U),vi=(e,t,n)=>B(e,t,n,Rr),yi=(e,t,n)=>typeof e==`string`?e:U(e,t,n),Y=(e,t,n)=>{let r=I(e,t,n);return r!==void 0&&r<0&&n.push({path:t,message:`expected a non-negative integer`}),r};function bi(e){if(typeof e!=`object`||!e||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function X(e,t,n){if(!bi(e)){n.push({path:t,message:`expected an object, received ${j(e)}`});return}for(let[r,i]of Object.entries(e))Z(i,O(t,r),n);return e}const xi=[`maxTokens`,`usedTokens`,`usedPercentage`,`remainingPercentage`];function Si(e,t,n){let r=V(e,t,n,xi);if(r===void 0)return;let i=F(r.maxTokens,O(t,`maxTokens`),n),a=F(r.usedTokens,O(t,`usedTokens`),n),o=F(r.usedPercentage,O(t,`usedPercentage`),n),s=F(r.remainingPercentage,O(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 Ci=(e,t,n)=>B(e,t,n,(e,t,n)=>{let r=V(e,t,n,[`type`,`id`]);if(r===void 0)return;let i=P(r.type,O(t,`type`),n),a=P(r.id,O(t,`id`),n);return i===void 0||a===void 0?void 0:{type:i,id:a}});function Z(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 ${j(e)}`});return}if(!Array.isArray(e)&&!bi(e)){n.push({path:t,message:`expected a JSON-compatible object, received ${j(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++)Z(e[i],k(t,i),n,r);else for(let[i,a]of Object.entries(e))Z(a,O(t,i),n,r);return r.delete(e),e}function wi(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)?wi(e[i],k(t,i),n,r):n.push({path:k(t,i),message:`expected an array element, received nothing`});else for(let[i,a]of Object.entries(e))wi(a,O(t,i),n,r);r.delete(e)}}const Ti=(...e)=>(t,n,r)=>R(t,e,n,r),Ei={session_init:{cwd:q(P),systemPromptLength:q(Y),systemPrompt:q(P),toolSchemas:q(vi),model:q(P),provider:q(P)},session_shutdown:{reason:q(P)},session_shutdown_step_error:{step:q(P),error:q(P)},context:{maxTokens:q(F),usedTokens:q(F),usedPercentage:q(F),remainingPercentage:q(F)},context_compact:{trigger:q(P),before:q(Si),after:q(Si)},error:{message:q(P),stack:q(P),historyLength:q(Y)},history_mutation:{executionId:J(P),conversationId:J(P),round:J(Y),batchId:J(P),usageObservationId:J(P),providerId:J(P),modelId:J(P),providerError:J(L),contextOverflow:J(L),mutation:q(Ti(`append_message`)),index:q(Y),message:q(U)},provider_request:{executionId:q(P),conversationId:J(P),round:q(Y),provider:q(P),model:q(P),effort:J(P),forcedSummary:J(L),messages:q(_i),tools:J(vi)},provider_native_raw_payload:{executionId:q(P),conversationId:J(P),round:q(Y),provider:q(P),apiSurface:J(P),payloadKind:q(Ti(`request`,`response`,`stream_event`)),sequence:q(Y),payload:J(Z),metadata:J(X)},provider_stream_raw_delta:{executionId:q(P),conversationId:J(P),round:q(Y),sequence:q(Y),delta:q(P)},provider_response_raw:{executionId:q(P),conversationId:J(P),round:q(Y),effort:J(P),response:q(U),responseKind:q(P)},provider_response_normalized:{executionId:q(P),conversationId:J(P),round:q(Y),response:q(U),toolCallsCount:J(Y)},structured_output_transport:{executionId:q(P),conversationId:J(P),round:q(Y),provider:q(P),model:q(P),mechanism:q(Ti(`response_schema`,`json_object`,`none`)),provenance:q(Ti(`catalog`,`vendor-default`,`undeclared`,`unverified-endpoint`)),sent:q(L),schemaInPrompt:q(L),reason:J(P)},provider_fallback:{executionId:q(P),conversationId:J(P),round:q(Y),fromProvider:q(P),fromModel:q(P),toProvider:q(P),toModel:q(P),reason:q(P)},assistant_message_committed:{executionId:q(P),conversationId:J(P),round:q(Y),message:q(yi)},tool_execution_request:{executionId:q(P),conversationId:J(P),round:q(Y),batchId:J(P),index:J(Y),toolName:q(P),toolCallId:q(P),parameters:q(X),ownerPath:J(Ci)},tool_execution_result:{executionId:q(P),conversationId:J(P),round:q(Y),batchId:J(P),index:J(Y),toolName:J(P),toolCallId:J(P),success:q(L),result:J(Z),error:J(P),metadata:J(X)},tool_batch_started:{executionId:q(P),conversationId:J(P),round:q(Y),batchId:J(P),mode:q(Ti(`parallel`,`sequential`)),maxConcurrency:q(Y),requestCount:q(Y),tools:q(gi)},tool_message_committed:{executionId:q(P),conversationId:J(P),round:q(Y),batchId:J(P),index:J(Y),message:q(U)},background_task_event:{backgroundEventType:J(P),backgroundEvent:J(sr),data:J(sr),taskId:J(P),originToolCallId:J(P)},background_job_group_event:{backgroundJobGroupEvent:J(Gn),data:J(Gn)},memory_event:{memoryEvent:J(_r),data:J(_r)},user:{content:q(P)},pre_run:{historyLength:q(Y),historyChars:q(Y),historyEstTokens:q(Y),input:q(P),history:q(_i),model:q(P),provider:q(P),maxTokens:q(F),nativeWebSearchSupported:q(L),nativeWebSearchEnabled:q(L),nativeWebFetchSupported:q(L),nativeWebFetchEnabled:q(L)},text_delta:{delta:q(P)},assistant:{content:q(P),historyLength:q(Y),estimatedChars:q(Y),history:q(_i),historyStructure:q((e,t,n)=>B(e,t,n,(e,t,n)=>{if(typeof e!=`object`||!e||Array.isArray(e)){n.push({path:t,message:`expected an object, received ${j(e)}`});return}let r=e;R(r.role,[`user`,`assistant`,`system`,`tool`],O(t,`role`),n),Y(r.contentLength,O(t,`contentLength`),n),L(r.hasToolCalls,O(t,`hasToolCalls`),n),gi(r.toolCallNames,O(t,`toolCallNames`),n),r.metadata!==void 0&&X(r.metadata,O(t,`metadata`),n);for(let e of Object.keys(r))[`role`,`contentLength`,`hasToolCalls`,`toolCallNames`,`metadata`].includes(e)||n.push({path:O(t,e),message:`unknown history structure field`});return r}))},tool_call:{tool:q(P),args:q(X)},tool_result:{tool:q(P),success:q(L),dataChars:q(Y),truncated:q(L)},tool_blocked:{tool:q(P),reason:q(P)},tool_denied:{tool:q(P),reason:q(P)},server_tool:{tool:q(P)}};var Di=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 Oi=new Set(Object.values($r));function ki(e,t={}){if(!Array.isArray(e))throw new Di(`INVALID_EVENT`,[{path:`entries`,message:`expected an array, received ${j(e)}`}]);let n=[],r=[],i;for(let[a,o]of e.entries()){let e=Ai(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 Di(i===void 0?`INVALID_EVENT`:`UNSUPPORTED_VERSION`,n,{schemaVersion:i});return r}function Ai(e,t,n){if(!bi(e))return n.push({path:t,message:`expected an object, received ${j(e)}`}),{};let r=n.length;if(wi(e,t,n),n.length!==r)return{};let i=ji(e,t,n);return i.event===void 0?{unsupported:i.unsupported}:(Mi(e,i.event,t,i.output,n),{entry:i.output,unsupported:i.unsupported})}function ji(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:O(t,`schemaVersion`),message:`unsupported schema version`})):n.push({path:O(t,`schemaVersion`),message:`expected schema version 1, received ${j(r)}`})}let a=z(e.timestamp,O(t,`timestamp`),n);a!==void 0&&(r.timestamp=a);let o=P(e.sessionId,O(t,`sessionId`),n);o===``&&n.push({path:O(t,`sessionId`),message:`expected a non-empty session ID`}),o!==void 0&&(r.sessionId=o);let s=e.event;return typeof s!=`string`||!Oi.has(s)?(n.push({path:O(t,`event`),message:`expected a declared event name, received ${j(s)}`}),{output:r,unsupported:i}):(r.event=s,{output:r,event:s,unsupported:i})}function Mi(e,t,n,r,i){let a=Ei[t];for(let[t,o]of Object.entries(a)){if(!Object.hasOwn(e,t)&&o.optional)continue;let a=o.decode(e[t],O(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:O(n,o),message:`unknown event payload field`});continue}let s=Z(e[o],O(n,o),i);s!==void 0&&(r[o]=s)}Ni(e,t,n,i)}function Ni(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 Q=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 Pi(e){if(e.trim().length===0||e.includes(`\0`)||fe(e)||he.isAbsolute(e))throw Ii(e);let t=e.split(/[\\/]+/u);if(t.some(e=>e===`.`||e===`..`))throw Ii(e);return t}function Fi(e){if(!Number.isFinite(e)||!Number.isSafeInteger(e)||e<0)throw new Q(`INVALID_LIMIT`,`External-payload maxBytes must be a finite, non-negative safe integer.`,{actual:String(e)})}function Ii(e,t){return new Q(`OUTSIDE_ROOT`,`External payload path escapes its base directory or contains a link: ${e}.`,{relativePath:e},t)}function Li(e,t,n){return e.code===`INVALID_PATH`||e.code===`UNSAFE_ENTRY`?Ii(t,e):e.code===`UNSUPPORTED_BACKEND`?new Q(`STABLE_PAYLOAD_READ_UNAVAILABLE`,`Stable root-relative external-payload reads are unavailable on this host.`,{relativePath:t},e):e.code===`OVER_BUDGET`?new Q(`MAX_TOTAL_BYTES_EXCEEDED`,`External payload exceeds the remaining byte budget of ${n}.`,{relativePath:t,expected:n},e):new Q(`PAYLOAD_UNREADABLE`,`External payload could not be read: ${t}.`,{relativePath:t},e)}var Ri=class{baseDirectory;constructor(e){if(e.trim().length===0)throw Error(`External-payload base directory must not be empty.`);this.baseDirectory=me(e)}readBytes(e,t){Fi(t);let n=Pi(e);try{let e=Ue(this.baseDirectory);try{return e.readBytes(n,t)}finally{e.close()}}catch(n){throw n instanceof Q?n:n instanceof He?Li(n,e,t):new Q(`PAYLOAD_UNREADABLE`,`External payload could not be read: ${e}.`,{relativePath:e},n)}}},zi=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 Ri(de(e))}readText(){return we(this.logFile)?je(this.logFile,`utf8`):void 0}};const Bi=/^tool-result:([A-Za-z0-9_-]{22,64})$/u,Vi=8*1024*1024,Hi=w.O_WRONLY|w.O_CREAT|w.O_EXCL|(w.O_NOFOLLOW??0);var $=class extends Error{code;constructor(e){super(`Tool result spill failed (${e})`),this.code=e,this.name=`ToolResultSpillError`}},Ui=class{directory;retentionMs;now;onCleanupFailure;entries=new Map;expiryTimer;closed=!1;constructor(e={}){let t=e.parentDirectory??be();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 $(`invalid-options`);try{let e=Oe(t);if(!e.isDirectory()||e.isSymbolicLink())throw Error(`unsafe parent`);this.directory=ke(C(t,`agent-tool-results-`)),process.platform!==`win32`&&Se(this.directory,448),this.assertRoot()}catch{throw new $(`unsafe-root`)}}assertRoot(){try{let e=Oe(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 $(`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 $(`closed`);if(await this.cleanupExpired(),this.assertRoot(),Buffer.byteLength(e,`utf8`)>Vi)throw new $(`write-failed`);let t=_e(18).toString(`base64url`),n=`${_e(18).toString(`base64url`)}.partial`,r=`${t}.txt`,i=C(this.directory,n),a=C(this.directory,r),o,s=!1;try{o=Ae(i,Hi,384),Le(o,e,`utf8`),Ee(o),Ce(o),o=void 0,De(i,a),s=!0,Ie(i);let n=`tool-result:${t}`;return this.entries.set(n,{fileName:r,expiresAt:this.now()+this.retentionMs}),this.scheduleExpiry(),{reference:n}}catch{let e=!1;if(o!==void 0)try{Ce(o)}catch{e=!0}try{Ie(i)}catch(t){t.code!==`ENOENT`&&(e=!0)}if(s)try{Ie(a)}catch{e=!0}throw new $(e?`cleanup-failed`:`write-failed`)}}async read(e){if(this.closed)throw new $(`closed`);if(!Bi.test(e))throw new $(`invalid-reference`);let t=this.entries.get(e);if(!t)throw new $(`missing`);if(this.now()>=t.expiresAt)throw this.removeEntry(e,t),this.scheduleExpiry(),new $(`expired`);this.assertRoot();try{let e=new Ri(this.directory).readBytes(t.fileName,Vi);if(e===void 0)throw new $(`missing`);return Buffer.from(e).toString(`utf8`)}catch(e){throw e instanceof $?e:new $(`read-failed`)}}removeEntry(e,t){this.assertRoot();try{Ie(C(this.directory,t.fileName)),this.entries.delete(e)}catch{throw new $(`cleanup-failed`)}}async cleanupExpired(){if(this.closed)throw new $(`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(Ne(this.directory).length!==0)throw Error(`unexpected files`);Fe(this.directory),this.closed=!0}catch{throw new $(`cleanup-failed`)}}}};const Wi=64*1024;function Gi(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 Ki(e){if(e.trim().length===0)return;let t;try{t=JSON.parse(e)}catch{return}if(Gi(t))return{at:t.at,sessionId:t.sessionId,project:t.project,text:t.text}}function qi(e){let t=[],n=0;for(let r of e){if(r.length===0)continue;let e=Ki(r);e===void 0?n+=1:t.push(e)}return{entries:t,skippedLines:n}}function Ji(e){return e.code===`ENOENT`}var Yi=class{path;blockBytes;ownedRoot;constructor(e,t={}){this.path=e,this.blockBytes=t.blockBytes??65536,this.ownedRoot=t.ownedRoot}append(e){ze(de(this.path),this.ownedRoot===void 0?{}:{withinRoot:this.ownedRoot}),Be(this.path),xe(this.path,`${JSON.stringify(e)}\n`,{mode:Re})}async*read(e){let t;try{t=Ae(this.path,w.O_RDONLY|(w.O_NOFOLLOW??0))}catch(e){if(e instanceof Error&&Ji(e))return;throw e}try{let n=Te(t).size,r=Buffer.alloc(0);for(;n>0&&!e.signal.aborted;){let e=Math.min(this.blockBytes,n);n-=e;let i=Buffer.alloc(e),a=Me(t,i,0,e,n),o=Buffer.concat([i.subarray(0,a),r]),s=n===0?-1:o.indexOf(10);r=s===-1&&n>0?o:o.subarray(0,s+1);let c=n===0?o:s===-1?Buffer.alloc(0):o.subarray(s+1);n>0&&s===-1||(yield qi(c.toString(`utf8`).split(`
8
+ `).reverse()))}}finally{Ce(t)}}};const Xi=/^[0-9a-f]{64}$/i;function Zi(e){if(!Qi(e))throw new Q(`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 Qi(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`&&Xi.test(e.sha256)&&typeof e.byteLength==`number`&&Number.isSafeInteger(e.byteLength)&&e.byteLength>=0&&typeof e.relativePath==`string`&&e.relativePath.trim().length>0}function $i(e,t){return na(e,ea(t),0)}function ea(e){let t=ta(`maxDepth`,e.maxDepth??32),n=ta(`maxTotalBytes`,e.maxTotalBytes??67108864);return{source:e.source,maxDepth:t,maxTotalBytes:n,totalBytes:0,activePayloadPaths:new Set,activeObjects:new WeakSet}}function ta(e,t){if(!Number.isFinite(t)||!Number.isSafeInteger(t)||t<0)throw new Q(`INVALID_LIMIT`,`${e} must be a finite, non-negative safe integer.`,{actual:String(t)});return t}function na(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 aa(`Non-finite numbers are not valid session-log JSON values.`);if(typeof e!=`object`)throw aa(`Unsupported session-log JSON value type: ${typeof e}.`);if(t.activeObjects.has(e))throw new Q(`CIRCULAR_REFERENCE`,`Circular in-memory value encountered while resolving external payloads.`,{depth:n});if(oa(e))return ra(e,t,n);if(Array.isArray(e)){t.activeObjects.add(e);try{return e.map(e=>na(e,t,n))}finally{t.activeObjects.delete(e)}}if(!sa(e))throw aa(`Session-log payload objects must be plain JSON records.`);t.activeObjects.add(e);try{return Object.fromEntries(Object.entries(e).map(([e,r])=>[e,na(r,t,n)]))}finally{t.activeObjects.delete(e)}}function ra(e,t,n){let r=Zi(e);if(n>=t.maxDepth)throw new Q(`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 Q(`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 Q(`CIRCULAR_REFERENCE`,`External payload ${r.relativePath} recursively references an active payload.`,{relativePath:r.relativePath,depth:n});let i=ia(r,t);t.activePayloadPaths.add(r.relativePath);try{return na(i,t,n+1)}finally{t.activePayloadPaths.delete(r.relativePath)}}function ia(e,t){let n=t.maxTotalBytes-t.totalBytes,r=t.source?.readBytes(e.relativePath,n);if(r===void 0)throw new Q(`PAYLOAD_NOT_FOUND`,`External payload was not found: ${e.relativePath}.`,{relativePath:e.relativePath});let i=t.totalBytes+r.byteLength;if(!Number.isSafeInteger(i)||i>t.maxTotalBytes)throw new Q(`MAX_TOTAL_BYTES_EXCEEDED`,`External-payload bytes exceed the configured maximum of ${t.maxTotalBytes}.`,{expected:t.maxTotalBytes,actual:i});if(t.totalBytes=i,r.byteLength!==e.byteLength)throw new Q(`BYTE_LENGTH_MISMATCH`,`External payload byte length does not match its reference: ${e.relativePath}.`,{relativePath:e.relativePath,expected:e.byteLength,actual:r.byteLength});let a=ge(`sha256`).update(r).digest(`hex`);if(a!==e.sha256)throw new Q(`SHA256_MISMATCH`,`External payload sha256 does not match its reference: ${e.relativePath}.`,{relativePath:e.relativePath,expected:e.sha256,actual:a});try{return JSON.parse(Buffer.from(r).toString(`utf8`))}catch(t){throw new Q(`INVALID_JSON`,`External payload is not valid JSON: ${e.relativePath}.`,{relativePath:e.relativePath},t)}}function aa(e){return new Q(`INVALID_JSON`,e)}function oa(e){return!Array.isArray(e)&&`kind`in e&&e.kind===`external-payload`}function sa(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ca(e){let t=[],n=la(),r=ua();return ki(e).forEach((e,i)=>{va(e,i,t),fa(e,i,t),da(n,e,i),pa(r,e,i)}),ma(n,t),ha(r,t),{ok:t.length===0,issues:t}}function la(){return{requests:new Map,nativeRawPayloads:new Set,rawResponses:new Set,normalizedResponses:new Set}}function ua(){return{requests:new Map,results:new Set}}function da(e,t,n){let r=ga(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`&&!ya(t.response)&&e.normalizedResponses.add(r.key))}function fa(e,t,n){ya(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 pa(e,t,n){let r=_a(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 ma(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 ha(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 ga(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 _a(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 va(e,t,n){if(Array.isArray(e)){e.forEach(e=>va(e,t,n));return}if(ba(e)){if(e.kind===`external-payload`){Qi(e)||n.push({code:`PAYLOAD_REFERENCE_INVALID`,message:`External payload reference is missing required replay fields.`,eventIndex:t});return}Object.values(e).forEach(e=>va(e,t,n))}}function ya(e){return Array.isArray(e)?e.some(e=>ya(e)):ba(e)?e.kind===`external-payload`||Object.values(e).some(e=>ya(e)):!1}function ba(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function xa(e,t={}){let n=e.readText(),r=[];return n!==void 0&&n.split(`
9
+ `).forEach((e,t)=>{if(e.trim().length!==0)try{r.push({value:JSON.parse(e),lineNumber:t+1})}catch(e){throw new Di(`INVALID_JSON`,[{path:`line ${t+1}`,message:`expected valid JSON`}],{cause:e})}}),ki($i(r.map(({value:e})=>e),{source:t.externalPayloadSource??e.externalPayloadSource,...t}),{lineNumbers:r.map(({lineNumber:e})=>e)})}function Sa(e){let t=[],n=[],r={backgroundTaskEvents:[],backgroundJobGroupEvents:[],memoryEvents:[]},i,a,o,s;for(let c of ki(e))i??=c.sessionId,o??=c.timestamp,s=c.timestamp,c.event===`session_init`&&(a=typeof c.cwd==`string`?c.cwd:a),c.event===`history_mutation`&&c.mutation===`append_message`&&(t.push(c.message),n.push(ne(c.message))),Ca(c,r);return{sessionId:i,cwd:a,createdAt:o,updatedAt:s,messages:t,history:n,backgroundTaskEvents:r.backgroundTaskEvents,backgroundJobGroupEvents:r.backgroundJobGroupEvents,memoryEvents:r.memoryEvents}}function Ca(e,t){if(e.event===`background_task_event`){Ta(t.backgroundTaskEvents,e,`backgroundEvent`,`data`);return}if(e.event===`background_job_group_event`){Ta(t.backgroundJobGroupEvents,e,`backgroundJobGroupEvent`,`data`);return}e.event===`memory_event`&&Ta(t.memoryEvents,e,`memoryEvent`,`data`)}function wa(e,t){let n=e[t];if(!(typeof n!=`object`||!n||Array.isArray(n)||n instanceof Date))return n}function Ta(e,t,n,r){let i=wa(t,n)??wa(t,r);i&&e.push(i)}function Ea(e){return e instanceof Error?e.message:`unknown error`}function Da(e){let t;try{t=JSON.parse(e)}catch{return{status:`corrupt`,issues:[{path:``,message:`the session file is not JSON`}]}}let n=Ur(t);return n.status===`valid`?{status:`valid`,record:n.record}:n.status===`unsupported`?{status:`unsupported`,schemaVersion:n.schemaVersion}:{status:`corrupt`,issues:n.issues}}function Oa(e,t){let n=e=>e.outcome.status===`valid`?new Date(e.outcome.record.updatedAt).getTime():0;return n(t)-n(e)}var ka=class{baseDir;ownedRoot;constructor(e,t){this.baseDir=e,this.ownedRoot=t}ensureDir(){ze(this.baseDir,this.ownedRoot===void 0?{}:{withinRoot:this.ownedRoot})}filePath(e){qt(e);let t=Je(this.baseDir),n=Je(t,`${e}.json`);if(!n.startsWith(t+Ye))throw Error(`Invalid session id: ${JSON.stringify(e)} resolves outside the session store.`);return n}save(e){this.ensureDir(),Ve(this.filePath(e.id),JSON.stringify({schemaVersion:1,record:e},null,2))}load(e){let t=this.filePath(e);if(!We(t))return{status:`missing`};let n;try{n=Ge(t,`utf-8`)}catch(e){return{status:`corrupt`,issues:[{path:``,message:`could not read the session file: ${Ea(e)}`}]}}return Da(n)}list(){return We(this.baseDir)?Ke(this.baseDir).filter(e=>e.endsWith(`.json`)).map(e=>e.slice(0,-5)).map(e=>({id:e,outcome:this.outcomeForListedId(e)})).sort(Oa):[]}outcomeForListedId(e){return Kt(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);We(t)&&qe(t)}},Aa=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}};export{ot as AUTO_COMPACT_THRESHOLD,ht as AutoModeGate,ft as CONSECUTIVE_BLOCK_LIMIT,Aa as CheckpointTree,rt as CompactionError,at as CompactionOrchestrator,st as ContextWindowTracker,it as DEFAULT_COMPACTION_PROMPT,Wi as DEFAULT_PROMPT_HISTORY_BLOCK_BYTES,li as FileSessionLogger,Vr as INTERACTIVE_SESSION_RECORD_KEYS,Ri as NodeExternalPayloadSource,Yi as NodePromptHistoryFile,hi as NodeSessionLogSink,zi as NodeSessionLogSource,ka as NodeSessionStore,Ui as NodeToolResultSpillStore,It as PermissionEnforcer,Jr as SENSITIVE_KEY_PATTERN,$r as SESSION_LOG_EVENT,Qr as SESSION_LOG_SCHEMA_VERSION,Br as SESSION_RECORD_ENVELOPE_VERSION,pn as Session,Ze as SessionBusyError,Di as SessionLogDecodeError,Q as SessionLogPayloadResolutionError,ui as SilentSessionLogger,pt as TOTAL_BLOCK_LIMIT,$ as ToolResultSpillError,Qe as TurnClaim,qt as assertSafeSessionId,vt as consentScopeFor,mi as createSessionLogExternalPayloadReference,Hr as decodeInteractiveSessionRecord,ki as decodeSessionLogEntries,Ur as decodeVersionedInteractiveSessionRecord,qr as deserializeSessionArtifact,nt as formatConversationEntries,Kt as isSafeSessionId,Yr as isSensitiveKey,ei as isSessionLogEvent,xa as loadSessionLogEntries,Ki as parsePromptHistoryLine,Sa as replaySessionLogEntries,$i as resolveSessionLogExternalPayloads,Zr as scrubSensitiveKeys,Kr as serializeSessionArtifact,ca as validateSessionReplayLogEntries};
7
10
  //# sourceMappingURL=index.js.map