UNPKG

@anthropic-ai/claude-agent-sdk

Version:

SDK for building AI agents with Claude Code's capabilities. Programmatically interact with Claude to build autonomous agents that can understand codebases, edit files, and execute workflows.

26 lines • 111 kB
// (c) Anthropic PBC. All rights reserved. Use is subject to the Legal Agreements outlined here: https://code.claude.com/docs/en/legal-and-compliance.

// Version: 0.3.314

//! symbol-dispose-prelude: defines Symbol.dispose and Symbol.asyncDispose if missing, for this bundle's `using`.
if (typeof Symbol.dispose !== 'symbol') {
  try {
    Symbol.dispose = Symbol.for('Symbol.dispose')
  } catch {}
}
if (typeof Symbol.asyncDispose !== 'symbol') {
  try {
    Symbol.asyncDispose = Symbol.for('Symbol.asyncDispose')
  } catch {}
}
import{ae,s,o,S,F,l,A,mt,x,u,r,Ee,ze,g,We,ce,v,T,ke,C,N,zt,Wt,K,qe,de,At,Ot,Tt,wt,kt,xt,Re,Z,te,ue,Ie,Le,y,n,_,e,It,Q,O,oe,G,t,He,Lt,nt,rt,Mt,se,Nt,Ft,ie,L,it,W,Ht,ct,jt}from"./core-a9vq6p1m.mjs";import{execFile as ni}from"child_process";import{randomUUID as oi}from"crypto";import{mkdir as Vt,mkdtemp as ii,readFile as ai,rm as dn,writeFile as pn}from"fs/promises";import{createRequire as li}from"module";import{homedir as Ct,tmpdir as ci}from"os";import{dirname as ln,isAbsolute as Dr,join as Y,posix as fn,resolve as Et,sep as ui,win32 as mn}from"path";import{fileURLToPath as di}from"url";import{setMaxListeners as Fn}from"events";var Kn=50;function gt(i=Kn){let a=new AbortController;return Fn(i,a.signal),a}var Hi=new FinalizationRegistry(({parentSignalRef:i,handler:a})=>{i.deref()?.removeEventListener("abort",a)});var Un="ask-withdrawn-by-asker",Gi=new DOMException(Un,"AbortError");var Wi={"user-cancel":new DOMException("user-cancel","AbortError"),"remote-cancel":new DOMException("remote-cancel","AbortError"),shutdown:new DOMException("shutdown","AbortError"),interrupt:new DOMException("interrupt","AbortError"),"turn-abort":new DOMException("turn-abort","AbortError"),background:new DOMException("background","AbortError"),"refusal-fallback-edit":new DOMException("refusal-fallback-edit","AbortError"),"recovery-timeout":new DOMException("recovery-timeout","AbortError"),"permission-stop":new DOMException("permission-stop","AbortError")};var $n="server-fallback-tombstone";var Qi=new DOMException($n,"AbortError");var jn="subagent-park",Vi=new DOMException(jn,"AbortError");import{spawn as fo}from"child_process";import{existsSync as mo}from"fs";import{createInterface as go}from"readline";import{StringDecoder as ho}from"string_decoder";var Bn=/hooks\.slack\.com\/(?:services|workflows|triggers)\/[A-Za-z0-9/_-]+/gi;var ar={bearer:[/\bBearer\s+(?=[A-Za-z0-9._~+/=-](?:[A-Za-z0-9._~+/=-]|%[0-9A-Fa-f]{2}){7})[A-Za-z0-9._~+/=-](?:[A-Za-z0-9._~+/=-]+|%[0-9A-Fa-f]{2})*/gi,"Bearer <token>"],basic:[/(:\s*)Basic\s+[A-Za-z0-9+/=]{8,}/gi,"$1Basic <token>"],sk:[/\bsk-[A-Za-z0-9_-]{20,}/g,"<token>"]},zn=[/\bBearer\s{1,512}(?=[A-Za-z0-9._~+/=-](?:[A-Za-z0-9._~+/=-]|%(?!20)[0-9A-Fa-f]{2}){15})(?:eyJ|(?=(?:[A-Za-z0-9._~+/=-]|%(?!20)[0-9A-Fa-f]{2}){0,64}[0-9=]))/i,/:\s{0,512}Basic\s{1,512}(?=[A-Za-z0-9+/=]{16})(?=[A-Za-z0-9+/=]{0,64}[0-9=])/i,/\bsk-(?=[A-Za-z0-9_-]{20})(?=[A-Za-z0-9_-]{0,64}[0-9])/];var Xi=new RegExp(`(?:\\b(?:xox[abe-z](?:\\.xox[a-z])?|xapp|xwfp)-${Ye("[A-Za-z0-9+/=%_-]")}|\\bxox[cd]-|(?:xox[abe-z](?:\\.xox[a-z])?|xapp|xwfp)-(?=[0-9])|xox[cd]-${Ye("[A-Za-z0-9+/=%_-]")}(?=[A-Za-z0-9+/=%_-]{16}))`,"i"),Vr=[[ht("sk-ant-","[A-Za-z0-9_-]",8,lr(8)),"<token>"],[ht("sk-(?:proj|svcacct|admin)-","[A-Za-z0-9_-]",20,lr(20)),"<token>"]],Yr=["AKIA","ASIA","ABIA","ACCA","A3T[A-Z0-9]"],qn=`(?:${Yr.join("|")})`,Xr=[[new RegExp(`(^|[^A-Za-z0-9+])${qn}[A-Z0-9]{16}(?![A-Za-z0-9+=])`,"g"),"$1<token>"]],Zr=[[ht("gh[opusr]_","[A-Za-z0-9]",20,Ye("[A-Za-z0-9]")),"<token>"],[/github_pat_[A-Za-z0-9_]{82,}/g,"<token>"],[/sq0(?:atp|csp)-[A-Za-z0-9_-]{22,}/g,"<token>"],[/(^|[^A-Za-z0-9+/])EAAA[A-Za-z0-9+/=%_-]{56,}/g,"$1<token>"],[ht("gl(?:pat|dt|rt|ft|soat|oas|agent|ptt|cbt|imt|ffct)-","[A-Za-z0-9_=-]",20,Ye("[A-Za-z0-9_=-]"),"(?:\\.[0-9a-z]{9})?"),"<token>"],[ht("(?:xox[abe-z](?:\\.xox[a-z])?|xapp|xwfp)-","[A-Za-z0-9+/=%_-]",10,"(?=[0-9])","",Ye("[A-Za-z0-9+/=%_-]"),"gi"),"<token>"],[new RegExp(`(?:\\bxox[cd]-[A-Za-z0-9+/=%_-]{10,}|xox[cd]-${Ye("[A-Za-z0-9+/=%_-]")}[A-Za-z0-9+/=%_-]{16,})`,"gi"),"<token>"],[Bn,"hooks.slack.com/<redacted>"]];var Hn=[new RegExp("(?<![A-Za-z0-9_-])(?=[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]{10}[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]{10}[A-Za-z0-9_-]*)((?:[A-Za-z0-9_-]*?-)??)ey[A-Za-z0-9_-]{10}[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]{10}[A-Za-z0-9_-]*\\.[A-Za-z0-9_-]{10}[A-Za-z0-9_-]*","g"),"$1<jwt>"],Gn=/\beyJ(?:[A-Za-z0-9_-]{256}|[A-Za-z0-9_-]{8,2048}\.[A-Za-z0-9_-]{10})/,Jr=[[/(^|[^A-Za-z0-9+_-])AIza[A-Za-z0-9_-]{35}(?![A-Za-z0-9+=_-])/g,"$1<token>"],[/(^|[^A-Za-z0-9+_-])GOCSPX-[A-Za-z0-9_-]{28}(?![A-Za-z0-9+=_-])/g,"$1<token>"]],es=[[/(^|[^A-Za-z0-9+_-])[sr]k_(?:live|test|prod)_(?=[A-Za-z0-9]{0,64}[0-9])[A-Za-z0-9]{24,}(?![A-Za-z0-9+=_-])/g,"$1<token>"]],Wn=[ar.bearer,ar.basic,...Vr,ar.sk,...Xr],Qn=[...Zr,Hn,...Jr,...es],Zi=[[new RegExp(`sk-${lr(20)}[A-Za-z0-9_-]{20,}`,"g"),"<token>"],...Yr.map((i)=>[new RegExp(`${i}[A-Z2-7]{16}`,"g"),"<token>"]),[/AIza[\w-]{35}/g,"<token>"],[/GOCSPX-[\w-]{28,}/g,"<token>"],[/[sr]k_(?:live|test|prod)_[A-Za-z0-9]{24,}/g,"<token>"]];function St(i){return[...Wn,...Qn].reduce((a,[c,d])=>a.replace(c,d),String(i))}var Ji=[...zn,...[...Vr,...Xr,...Zr,...Jr,...es].map(([i])=>new RegExp(i.source,i.flags.replaceAll("g",""))),Gn];function ht(i,a,c,d,p="",f="",m="g"){let h=`${a}{${c},}${p}`;return new RegExp(`(?:\\b${i}${f}${h}|${i}${d}${h})`,m)}function Ye(i){return`(?=${i}{0,64}[0-9])`}function lr(i){return`(?=[A-Za-z0-9_-]{0,64}?(?=[A-Za-z0-9]{${i}})(?=[A-Za-z0-9]{0,64}[0-9])(?=[A-Za-z0-9]{0,64}[A-Za-z]))`}import{randomUUID as no}from"crypto";import{join as is}from"path";import{AsyncLocalStorage as Vn}from"async_hooks";import{constants as Yn}from"fs";import{appendFile as Xn,copyFile as Zn,lstat as Jn,mkdir as eo,open as ts,readdir as rs,readFile as ss,stat as to,unlink as ro,writeFile as cr}from"fs/promises";class os{read(i){return ss(i,"utf8")}readBytes(i){return ss(i)}write(i,a,c){return cr(i,a,{encoding:"utf8",mode:c})}async mkdir(i,a){try{await eo(i,{recursive:!0,mode:a})}catch(c){if(r(c)!=="EEXIST")throw c}}atomicWrite(i,a,c){return It(i,a,c)}delete(i){return ro(i)}list(i){return rs(i)}append(i,a,c){return Xn(i,a,{encoding:"utf8",mode:c})}writeExclusive(i,a,c){return cr(i,a,{encoding:"utf8",flag:"wx",mode:c})}writeBytesExclusive(i,a,c){return cr(i,a,{flag:"wx",mode:c})}copy(i,a){return Zn(i,a)}async stat(i){return{mtimeMs:(await to(i)).mtimeMs}}async lstat(i){try{let a=await Jn(i);return{isSymbolicLink:a.isSymbolicLink(),isFile:a.isFile(),isDirectory:a.isDirectory(),mtimeMs:a.mtimeMs,nlink:a.nlink}}catch(a){if(r(a)==="ENOENT")return;throw a}}async listEntries(i){return(await rs(i,{withFileTypes:!0})).map((c)=>({name:c.name,isDirectory:c.isDirectory(),isFile:c.isFile()}))}async readRange(i,a,c){ur("readRange","offset",a),ur("readRange","length",c);let d=await ts(i,"r");try{return await ns(d,a,c)}finally{await d.close()}}async readTail(i,a,c){ur("readTail","maxBytes",a);let d=c?.noFollow?Yn.O_RDONLY|Q:"r",p=await ts(i,d);try{let f=await p.stat();if(c?.noFollow&&!f.isFile())throw Object.assign(Error("ENXIO: not a regular file"),{code:"ENXIO",path:i});let{size:m}=f,h=Math.min(a,m);return await ns(p,m-h,h)}finally{await p.close()}}}function ur(i,a,c){if(!Number.isInteger(c)||c<0)throw RangeError(`${i}: ${a} must be a non-negative integer, got ${c}`)}async function ns(i,a,c){if(c===0)return Buffer.alloc(0);let d=Buffer.alloc(c),p=0;while(p<c){let{bytesRead:f}=await i.read(d,p,c-p,a+p);if(f===0)break;p+=f}return p===c?d:Buffer.from(d.subarray(0,p))}var so=new Vn;function dr(){return so.getStore()??new os}class as{debugFilePath=void 0;initPromise=null;logStem=null}var oo=new s(()=>new as);function ls(){return oo.of(C().host)}function cs(i){if(i.initPromise)return i.initPromise;if(!Le("DEBUG_CLAUDE_AGENT_SDK"))return i.debugFilePath=null,i.initPromise=Promise.resolve(),i.initPromise;let a=is(y(),"debug");return i.logStem=`sdk-${no()}`,i.debugFilePath=is(a,`${i.logStem}.txt`),process.stderr.write(`SDK debug logs: ${i.debugFilePath}
`),i.initPromise=dr().mkdir(a).catch(()=>{}),i.initPromise}function io(i){return i.logStem===null?null:{namespace:"log",sessionId:i.logStem,channel:"debug"}}function us(){let i=ls();return cs(i),i.debugFilePath??null}function pe(i,a){let c=ls();if(c.debugFilePath===null)return;let p=`${new Date().toISOString()} ${i}
`;cs(c).then(()=>{if(a!==void 0){let f=io(c);if(f!==null)a.append(f,[{data:p}]).catch(()=>{});return}if(c.debugFilePath)dr().append(c.debugFilePath,p).catch(()=>{})})}function ao(i){let a=i.trim();return a.startsWith("{")&&a.endsWith("}")}var lo=new Set(["filesystem.denyRead","filesystem.denyWrite","network.deniedDomains","credentials.files","credentials.envVars"]),co=new Set(["ripgrep","network.tlsTerminate"]),uo=new Set(["__proto__","constructor","prototype"]),po=["httpProxyPort","socksProxyPort"];function ds(i,a,c=""){let d=O(i)?{...i}:{};for(let[p,f]of Object.entries(a)){if(uo.has(p)||f===void 0)continue;let m=c?`${c}.${p}`:p,h=Object.hasOwn(d,p)?d[p]:void 0;if(lo.has(m)&&Array.isArray(h)&&Array.isArray(f))d[p]=S([...h,...f]);else if(O(h)&&O(f)&&!co.has(m))d[p]=ds(h,f,m);else d[p]=f}return d}function ps(i,a){let c={...i};if(!a)return c;let d=c.settings;if(d&&!ao(d))throw Error("Cannot use both a settings file path and the sandbox option. Include the sandbox configuration in your settings file instead.");let p={};if(d)try{p=_(d)}catch{}let f=ds(p.sandbox,a),m=a.credentials?.files,h=a.filesystem!==void 0||Array.isArray(m)&&m.some((P)=>O(P)&&P.mode==="deny"),b=f.filesystem;if(h&&a.filesystem?.disabled===void 0&&O(b)&&b.disabled===!0)delete b.disabled;let w=a.network,k=w?.allowedDomains!==void 0||(w?.deniedDomains?.length??0)>0||w?.strictAllowlist===!0,E=f.network;if(k&&O(E)){for(let P of po)if(w?.[P]===void 0&&E[P]!==void 0)delete E[P]}if(a.enabled===!0&&f.failIfUnavailable===void 0)f.failIfUnavailable=!0;return c.settings=n({...p,sandbox:f}),c}function z(i,a){return`${i}=${a}`}function Rt(i,a){let c=String(a);if(c.length>1&&c.startsWith("-"))return[z(i,c)];return[i,c]}function fs(i,a,c){i.push(...Rt(`--${a}`,c))}var So=2000,pr=2048,hs="sdk-exit-after-stderr-drained",_o=200;function fr(i){return i==="exit"?hs:i}class Ss{#e=new Set;#t=!1;#r=()=>this.killAll();track(i){if(this.#e.add(i),!this.#t)this.#t=!0,process.on("exit",this.#r)}untrack(i){this.#e.delete(i)}isTracking(i){return this.#e.has(i)}get size(){return this.#e.size}killAll(){for(let i of this.#e)if(!i.killed)if(process.platform==="win32")try{i.stdin.end()}catch{}else i.kill("SIGTERM")}reset(){process.off("exit",this.#r),this.#t=!1,this.#e.clear()}}var Pt=new Ss,yo=/[(),\u0000-\u001f\u007f-\u009f]/;function bo(i){if(typeof i!=="string"||i.trim()==="")throw Error("Skill names must be non-empty strings.");if(!de(i))throw new l(`Invalid skill name ${n(i)}: the name contains an unpaired surrogate, which cannot survive the UTF-8 encoding of the CLI invocation; no skill discovered from the filesystem can have such a name.`,"skill name with unpaired surrogate rejected");if(i!==i.trim())throw new l(`Invalid skill name ${n(i)}: leading or trailing whitespace is not allowed — the Skill tool trims the invoked name, so a padded rule can never match. Remove the padding.`,"skill name with surrounding whitespace rejected");if(yo.test(i))throw new l(`Invalid skill name ${n(i)}: parentheses, commas, and control characters are not allowed in skill names. Skill names match the skill's directory name (or 'plugin:skill' for plugin-qualified skills); rename the skill if its directory name contains these characters.`,"invalid skill name rejected");if(i==="*")throw Error("Invalid skill name '*': use skills: 'all' to enable every skill.");if(i.endsWith(":*")||i.endsWith(" *"))throw new l(`Invalid skill name ${n(i)}: wildcard-suffix names are not allowed; list each skill by its exact name.`,"wildcard-suffix skill name rejected");if(i.startsWith("/"))throw new l(`Invalid skill name ${n(i)}: skill names may not start with '/'. Skills are invoked as slash commands, but the skills option takes the skill's canonical name — the directory name, or 'plugin:skill'.`,"skill name with leading slash rejected");if(i.includes("\\\\"))throw new l(`Invalid skill name ${n(i)}: consecutive backslashes are not allowed — the permission-rule parser collapses escaped backslashes, so the rule would name a different skill. Rename the skill.`,"skill name with consecutive backslashes rejected");if(i.endsWith("\\"))throw new l(`Invalid skill name ${n(i)}: names may not end with an unpaired backslash.`,"skill name with unpaired trailing backslash rejected");return i}class gr{options;process;processStdin;processStdout;ready=!1;abortController;exitError;exitEventDelivered=!1;stderrTail="";exitListeners=[];abortHandler;forwardedAbort=gt();pendingWrites=[];pendingEndInput=!1;spawnResolve;spawnReject;spawnPromise;constructor(i){this.options=i;if(this.abortController=i.abortController||gt(),i.deferSpawn)this.spawnPromise=new Promise((a,c)=>{this.spawnResolve=a,this.spawnReject=c}),this.spawnPromise.catch(()=>{});else this.initialize()}spawn(){try{this.initialize()}catch(a){throw this.spawnAbort(x(a)),a}let i=this.pendingWrites;if(this.pendingWrites=[],this.spawnResolve)this.spawnResolve(),this.spawnResolve=void 0,this.spawnReject=void 0;for(let a of i)this.write(a);if(this.pendingEndInput)this.pendingEndInput=!1,this.processStdin?.end()}spawnAbort(i){if(this.spawnReject)this.spawnReject(i),this.spawnReject=void 0,this.spawnResolve=void 0,this.pendingWrites=[]}updateEnv(i){if(this.options.env)Object.assign(this.options.env,i);else this.options.env={...i}}updateResume(i){this.options.resume=i}getDefaultExecutable(){return te()?"bun":"node"}spawnLocalProcess(i){let{command:a,args:c,cwd:d,env:p,signal:f}=i,m=fo(a,c,{cwd:d,stdio:["pipe","pipe","pipe"],signal:f,env:p,windowsHide:!0});if(m.pid!==void 0&&this.options.onProcessSpawned)try{this.options.onProcessSpawned(m.pid)}catch(I){pe(`onProcessSpawned threw: ${u(I)}`)}let h=new ho("utf8"),b=!1,w=!1,k=!1,E,P=o(p.DEBUG_CLAUDE_AGENT_SDK)||this.options.stderr!==void 0;m.stderr.on("data",(I)=>{if(k)return;let q=h.write(I);if(this.stderrTail+=q,this.stderrTail.length>2*pr)this.stderrTail=qe(St(this.stderrTail),pr);if(P)pe(q),this.options.stderr?.(q)}),m.stderr.on("error",(I)=>{pe(`[ProcessTransport] stderr read failed: ${I.code??I.message}`)});let D=()=>{if(k)return;if(k=!0,E)clearTimeout(E);m.emit(hs,m.exitCode,m.signalCode);let I=m.stderr;if(wo(I))I.unref();else I.destroy()};return m.stderr.once("close",()=>{if(this.stderrTail+=h.end(),b=!0,w)D()}),m.once("exit",()=>{if(w=!0,this.ready=!1,b)D();else E=setTimeout(D,_o)}),{stdin:m.stdin,stdout:m.stdout,get killed(){return m.killed},get exitCode(){return m.exitCode},get signalCode(){return m.signalCode},kill:m.kill.bind(m),on:(I,q)=>m.on(fr(I),q),once:(I,q)=>m.once(fr(I),q),off:(I,q)=>m.off(fr(I),q)}}initialize(){try{let{additionalDirectories:i=[],projectConfigRoot:a,agent:c,betas:d,cwd:p,executable:f=this.getDefaultExecutable(),executableArgs:m=[],extraArgs:h={},pathToClaudeCodeExecutable:b,env:w={...process.env},thinkingConfig:k,maxTurns:E,maxBudgetUsd:P,taskBudget:D,model:R,fallbackModel:I,jsonSchema:q,permissionMode:B,allowDangerouslySkipPermissions:X,permissionPromptToolName:we,permissionPrompts:H,continueConversation:j,resume:Me,settingSources:Se,skills:_e,disallowedTools:ge=[],tools:xe,mcpServers:$e,strictMcpConfig:st,canUseTool:ot,includePartialMessages:ye,plugins:je,pluginsViaInitialize:at,sandbox:Be}=this.options,{allowedTools:Ae=[]}=this.options;if(_e!==void 0){let U=_e==="all"?["Skill"]:_e.map((ee)=>`Skill(${bo(ee)})`),le=new Set(Ae);Ae=[...Ae,...U.filter((ee)=>!le.has(ee))]}let M=["--output-format","stream-json","--verbose","--input-format","stream-json"];if(k){switch(k.type){case"enabled":if(k.budgetTokens===void 0)M.push("--thinking=adaptive");else M.push(z("--max-thinking-tokens",k.budgetTokens));break;case"disabled":M.push("--thinking=disabled");break;case"adaptive":M.push("--thinking=adaptive");break}if(k.type!=="disabled"&&k.display)M.push(z("--thinking-display",k.display))}if(this.options.effort)M.push(z("--effort",this.options.effort));if(E)M.push(z("--max-turns",E));if(P!==void 0)M.push(z("--max-budget-usd",P));if(D)M.push(z("--task-budget",D.total));if(R)M.push(z("--model",R));if(c)M.push(z("--agent",c));if(d&&d.length>0)M.push(z("--betas",d.join(",")));if(q)M.push(z("--json-schema",n(q)));if(this.options.debugFile)M.push(z("--debug-file",this.options.debugFile));else if(this.options.debug)M.push("--debug");if(!this.options.debugFile&&!this.options.spawnClaudeCodeProcess){let U=us();if(U)M.push(z("--debug-file",U))}if(ot){if(we)throw Error("canUseTool callback cannot be used with permissionPromptToolName. Please use one or the other.");M.push("--permission-prompt-tool=stdio")}else if(we)M.push(z("--permission-prompt-tool",we));if(H)M.push(z("--permission-prompts",H));if(j)M.push("--continue");if(Me)M.push(z("--resume",Me));if(this.options.channels&&this.options.channels.length>0)for(let U of this.options.channels)M.push(z("--channels",U));if(Ae.length>0)M.push(z("--allowedTools",Ae.join(",")));if(ge.length>0)M.push(z("--disallowedTools",ge.join(",")));if(xe!==void 0)if(Array.isArray(xe))M.push(z("--tools",xe.join(",")));else M.push("--tools=default");if($e&&Object.keys($e).length>0)M.push(...Rt("--mcp-config",n({mcpServers:$e})));if(Se!==void 0)M.push(z("--setting-sources",Se.join(",")));if(st)M.push("--strict-mcp-config");if(B)M.push(z("--permission-mode",B));if(X)M.push("--allow-dangerously-skip-permissions");if(I){if(R&&I===R)throw Error("Fallback model cannot be the same as the main model. Please specify a different model for fallbackModel option.");M.push(z("--fallback-model",I))}if(this.options.includeHookEvents)M.push("--include-hook-events");if(ye)M.push("--include-partial-messages");if(this.options.sessionMirror)M.push("--session-mirror");if(a!==void 0)M.push(z("--project-config-root",a));for(let U of i)M.push(z("--add-dir",U));if(at)M.push("--await-initialize");else if(je&&je.length>0)for(let U of je)if(U.type==="local")M.push(U.skipMcpDiscovery?z("--plugin-dir-no-mcp",U.path):z("--plugin-dir",U.path));else throw Error(`Unsupported plugin type: ${U.type}`);if(this.options.forkSession)M.push("--fork-session");if(this.options.resumeSessionAt)M.push(z("--resume-session-at",this.options.resumeSessionAt));if(this.options.resumeDropsTurn!==void 0)M.push(z("--resume-drops-turn",this.options.resumeDropsTurn));if(this.options.sessionId)M.push(z("--session-id",this.options.sessionId));if(this.options.persistSession===!1)M.push("--no-session-persistence");if(this.options.managedSettings)M.push(...Rt("--managed-settings",this.options.managedSettings));let Te={...h??{}};if(this.options.settings)Te.settings=this.options.settings;let be=ps(Te,Be);for(let[U,le]of Object.entries(be))if(le===null)M.push(`--${U}`);else fs(M,U,le);if(!w.CLAUDE_CODE_ENTRYPOINT)w.CLAUDE_CODE_ENTRYPOINT="sdk-ts";if(delete w.NODE_OPTIONS,o(w.DEBUG_CLAUDE_AGENT_SDK))w.DEBUG="1";else delete w.DEBUG;let Fe=Co(b),Ce=Fe?b:f,Ge=Fe?[...m,...M]:[...m,b,...M],ne={command:Ce,args:Ge,cwd:p,env:w,signal:this.forwardedAbort.signal};if(this.options.spawnClaudeCodeProcess)pe(`Spawning Claude Code (custom): ${Ce} ${Ge.join(" ")}`),this.process=this.options.spawnClaudeCodeProcess(ne);else pe(`Spawning Claude Code: ${Ce} ${Ge.join(" ")}`),this.process=this.spawnLocalProcess(ne);if(this.processStdin=this.process.stdin,this.processStdout=this.process.stdout,this.processStdin.on("error",(U)=>{pe(`[ProcessTransport] stdin write failed (child likely exited): ${U.code??U.message}`),this.ready=!1}),Pt.track(this.process),this.abortHandler=()=>this.close(),this.abortController.signal.addEventListener("abort",this.abortHandler),this.abortController.signal.aborted)this.close();let ve=this.process;ve.on("error",(U)=>{this.ready=!1;let le=U,ee=le.syscall!==void 0?le.syscall.startsWith("spawn"):We(U);if(ee&&!ve.killed)Pt.untrack(ve);if(this.abortController.signal.aborted)this.exitError=Dt(),A(U,{telemetryMessage:"Claude Code process aborted by user",errorClass:"aborted"});else if(ee&&We(U)){let{message:he,telemetryMessage:lt,errorClass:Jt}=Eo(b,Fe),ut={telemetryMessage:`${lt}${mr(U)}`,errorClass:Jt,code:Ee(U)};this.exitError=A(ReferenceError(he),ut),A(U,ut),pe(this.exitError.message)}else{let he={telemetryMessage:ee?`Failed to spawn Claude Code process${mr(U)}`:`Claude Code process error${mr(U)}`,errorClass:ee?"spawn_failed":"process_error",code:Ee(U)};this.exitError=A(Error(`Failed to spawn Claude Code process: ${St(U.message)}`),he),A(U,he),pe(this.exitError.message)}}),ve.on("exit",(U,le)=>{if(this.exitEventDelivered=!0,this.ready=!1,this.abortController.signal.aborted)this.exitError=Dt();else{let ee=this.getProcessExitError(U,le);if(ee)this.exitError=ee,pe(ee.message)}}),this.ready=!this.abortController.signal.aborted}catch(i){throw this.ready=!1,i}}getProcessExitError(i,a){if(i!==0&&i!==null){let c=Number.isInteger(i)?i:void 0;return A(Error(`Claude Code process exited with code ${i}${this.formatStderrTail()}`),{telemetryMessage:`Claude Code process exited with code ${c??"unknown"}`,errorClass:"process_exited_nonzero",exitCode:c})}else if(a){let c=/^SIG[A-Z0-9]{1,8}$/.test(a)?a:"unknown";return A(Error(`Claude Code process terminated by signal ${a}${this.formatStderrTail()}`),{telemetryMessage:`Claude Code process terminated by signal ${c}`,errorClass:"process_killed_by_signal",signal:c})}return}formatStderrTail(){let i=qe(St(this.stderrTail),pr).trim();return i?`. stderr: ${i}`:""}write(i){if(this.abortController.signal.aborted)throw ms();if(this.spawnResolve){this.pendingWrites.push(i);return}if(!this.ready||!this.processStdin)throw Error("ProcessTransport is not ready for writing");if(this.processStdin.writableEnded){pe("[ProcessTransport] Dropping write to ended stdin stream");return}if(this.process?.killed||this.process?.exitCode!==null)throw Error("Cannot write to terminated process");if(this.exitError)throw A(Error(`Cannot write to process that exited with error: ${this.exitError.message}`),{telemetryMessage:`Cannot write to process that exited with error: ${mt(this.exitError)??"untagged exit error"}`,errorClass:gs(this.exitError,"errorClass"),code:Ee(this.exitError),exitCode:vo(this.exitError),signal:gs(this.exitError,"signal")});pe(`[ProcessTransport] Writing to stdin: ${i.substring(0,100)}`);try{if(!this.processStdin.write(i))pe("[ProcessTransport] Write buffer full, data queued")}catch(a){throw this.ready=!1,Error(`Failed to write to process stdin: ${u(a)}`)}}[Symbol.dispose](){this.close()}close(){if(this.spawnAbort(this.abortController.signal.aborted?Dt():Error("Query closed before spawn")),this.processStdin)this.processStdin.end(),this.processStdin=void 0;if(this.abortHandler)this.abortController.signal.removeEventListener("abort",this.abortHandler),this.abortHandler=void 0;let i=this.process?.exitCode??null,a=this.process?.signalCode??null,c=!this.exitEventDelivered&&(i!==null&&i>=0||a!==null),d;if(c){if(this.exitEventDelivered=!0,d=this.abortController.signal.aborted?Dt():this.getProcessExitError(i,a),d&&!this.exitError)this.exitError=d}let p=this.exitListeners;this.exitListeners=[];for(let{callback:h,handler:b}of p)if(this.process?.off("exit",b),c)try{h(d)}catch(w){pe(`[ProcessTransport] onExit callback threw during close(): ${u(w)}`)}let f=()=>{if(this.abortController.signal.aborted)this.forwardedAbort.abort(this.abortController.signal.reason)},m=this.process;if(m&&!m.killed&&m.exitCode===null&&m.signalCode==null)setTimeout((h,b)=>{if(h.exitCode!==null||h.signalCode!=null){b();return}if(process.platform==="win32"){setTimeout((w,k)=>{if(w.exitCode===null)w.kill("SIGKILL");k()},5000,h,b).unref();return}h.kill("SIGTERM"),setTimeout((w)=>{if(w.exitCode===null)w.kill("SIGKILL")},5000,h).unref(),b()},So,m,f).unref(),m.once("exit",()=>Pt.untrack(m));else if(m)Pt.untrack(m),f();this.ready=!1}isReady(){return this.ready}async*readMessages(){if(this.spawnPromise)await this.spawnPromise,this.spawnPromise=void 0;if(!this.processStdout)throw Error("ProcessTransport output stream not available");if(this.exitError)throw this.exitError;let i=go({input:this.processStdout}),a=this.process?(()=>{let c=this.process,d=()=>i.close();return c.on("error",d),()=>c.off("error",d)})():void 0;if(this.exitError)i.close();try{for await(let c of i)if(c.trim()){let d;try{d=_(c)}catch(p){pe(`Non-JSON stdout: ${c}`);continue}yield d}if(this.exitError)throw this.exitError;await this.waitForExit()}finally{a?.(),i.close()}}endInput(){if(this.spawnResolve){this.pendingEndInput=!0;return}if(this.processStdin)this.processStdin.end()}onExit(i){if(!this.process)return()=>{};let a=(c,d)=>{let p=this.getProcessExitError(c,d);i(p)};return this.process.on("exit",a),this.exitListeners.push({callback:i,handler:a}),()=>{if(this.process)this.process.off("exit",a);let c=this.exitListeners.findIndex((d)=>d.handler===a);if(c!==-1)this.exitListeners.splice(c,1)}}async waitForExit(){if(this.exitError)throw this.exitError;if(!this.process||this.process.exitCode===0||this.process.killed&&this.exitEventDelivered)return;return new Promise((i,a)=>{let c=(p,f)=>{if(this.abortController.signal.aborted){a(ms());return}let m=this.getProcessExitError(p,f);if(m)a(m);else i()};this.process.once("exit",c);let d=(p)=>{this.process.off("exit",c),a(p)};this.process.once("error",d),this.process.once("exit",()=>{this.process.off("error",d)})})}}function Co(i){return![".js",".mjs",".tsx",".ts",".jsx"].some((c)=>i.endsWith(c))}function Eo(i,a){let c=a?"native binary":"executable",d=St(i);if(mo(i))return{message:a?`Claude Code native binary at ${d} exists but failed to launch. This usually means the binary does not match this system's libc — e.g. spawning a musl-linked binary on a glibc Linux host fails because the musl dynamic loader (/lib/ld-musl-*) is missing. Specify a matching binary with options.pathToClaudeCodeExecutable.`:`Claude Code executable at ${d} exists but failed to launch.`,telemetryMessage:`Claude Code ${c} exists at the configured path but failed to launch`,errorClass:"executable_launch_failed"};return{message:a?`Claude Code native binary not found at ${d}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.`:`Claude Code executable not found at ${d}. Is options.pathToClaudeCodeExecutable set?`,telemetryMessage:`Claude Code ${c} not found at the configured path`,errorClass:"executable_not_found"}}function mr(i){let a=Ee(i);return a===void 0?"":` (${a})`}function Dt(){return A(new Z("Claude Code process aborted by user"),{telemetryMessage:"Claude Code process aborted by user",errorClass:"aborted"})}function ms(){return A(new Z("Operation aborted"),{telemetryMessage:"Operation aborted",errorClass:"aborted"})}function gs(i,a){let c=Object.hasOwn(i,a)?Reflect.get(i,a):void 0;return typeof c==="string"?c:void 0}function vo(i){let a=Object.hasOwn(i,"exitCode")?Reflect.get(i,"exitCode"):void 0;return typeof a==="number"?a:void 0}function wo(i){return typeof Reflect.get(i,"unref")==="function"}import{existsSync as ko}from"fs";var Xe="@anthropic-ai/claude-agent-sdk";function Ro(){if(process.platform!=="linux")return!1;let i=typeof process.report?.getReport==="function"?process.report.getReport():null;return i!=null&&i.header?.glibcVersionRuntime===void 0}function _s(i,a={}){let c=a.platform??process.platform,d=a.arch??process.arch,p=a.exists??ko,f=a.preferMusl??Ro(),m="claude",h=c==="win32"?".exe":"",w=(c==="android"?[`${Xe}-linux-${d}-android`]:c==="linux"?f?[`${Xe}-linux-${d}-musl`,`${Xe}-linux-${d}`]:[`${Xe}-linux-${d}`,`${Xe}-linux-${d}-musl`]:[`${Xe}-${c}-${d}`]).map((k)=>`${k}/claude${h}`);for(let k of w)try{let E=i(k);if(p(E))return E}catch{}return null}function ys({supportedDialogKinds:i,onUserDialog:a}){if(i!==void 0&&i.length>0&&!a)throw Error("supportedDialogKinds requires an onUserDialog callback -- declaring dialog kinds without a handler would park dialogs nothing can answer. Provide onUserDialog, or omit supportedDialogKinds.")}var Ao=["signed_out","identity_changed","transient","refresh_failed"];function bs(i){return Ao.some((a)=>a===i)}var Kt=600000;class hr{returned;queue=[];readResolve;readReject;isDone=!1;hasError;started=!1;constructor(i){this.returned=i}get ended(){return this.isDone}[Symbol.asyncIterator](){if(this.started)throw Error("Stream can only be iterated once");return this.started=!0,this}next(){if(this.queue.length>0)return Promise.resolve({done:!1,value:this.queue.shift()});if(this.isDone)return Promise.resolve({done:!0,value:void 0});if(this.hasError)return Promise.reject(this.hasError);return new Promise((i,a)=>{this.readResolve=i,this.readReject=a})}enqueue(i){if(this.readResolve){let a=this.readResolve;this.readResolve=void 0,this.readReject=void 0,a({done:!1,value:i})}else this.queue.push(i)}dropNewestQueued(i){let a=this.queue.findLastIndex(i);if(a!==-1)this.queue.splice(a,1)}done(){if(this.isDone=!0,this.readResolve){let i=this.readResolve;this.readResolve=void 0,this.readReject=void 0,i({done:!0,value:void 0})}}error(i){if(this.hasError=i,this.readReject){let a=this.readReject;this.readResolve=void 0,this.readReject=void 0,a(i)}}return(){if(this.isDone=!0,this.returned)this.returned();return Promise.resolve({done:!0,value:void 0})}}var Sr="startup_mark",Cs="startupMark",Es="startupMarkAgeMs",vs=64;function _r(i,a){G("tengu_feature_ok",{...a,feature_name:F(i)})}function To(i,a,c){G("tengu_feature_bad",{...c,feature_name:F(i),error_code:ze(a)})}function Ut(i,a,c){G("tengu_feature_sad",{...c,feature_name:F(i),error_code:ze(a)})}async function re(i,a,c){try{let d=await a();return _r(i),d}catch(d){throw To(i,c?.(d)??"error"),d}}function ws(i){return"method"in i&&"id"in i&&i.id!==null}var ks=Object.freeze({}),Rs=Object.freeze({name:"claude-code",title:"Claude Code",description:"Anthropic's agentic coding tool",websiteUrl:"https://claude.com/claude-code"}),Xa=Symbol("swallow");class yr{sendMcpMessage;isClosed=!1;constructor(i){this.sendMcpMessage=i}onclose;onerror;onmessage;async start(){}async send(i){if(this.isClosed)throw Error("Transport is closed");this.sendMcpMessage(i)}async close(){if(this.isClosed)return;this.isClosed=!0,this.onclose?.()}}var As=["remote_tool_call","remote_plumbing_call","remote_tools_probe","remote_tools_reannounce"];var Ts="2025-11-25";var Po="notifications/tools/list_changed";function Ps(i){return t(i)&&!("id"in i)&&i.method===Po}var Ms=250,$t="sdk-manifest-capture:",Ze=Symbol("suppressControlResponse");function xs(i,a,c){for(let d of c){let p=d==="tools"?rt(a):void 0;e(p?`[Query] MCP server '${i}': ${Mt(p)}`:`[Query] MCP server '${i}': ignoring malformed ${d} in its config`)}}class Bt{transport;isSingleUserTurn;canUseTool;hooks;abortController;jsonSchema;initConfig;onElicitation;getOAuthToken;getHostAuthToken;onUserDialog;verbatimPrompts;runEndCeilingMs;pendingControlResponses=new Map;unmatchedControlResponses=new Map;static UNMATCHED_CONTROL_RESPONSES_MAX=1024;cleanupPerformed=!1;cleanupCause;sdkMessages;inputStream=new hr;initialization;cancelControllers=new Map;hookCallbacks=new Map;nextCallbackId=0;initHooksPayload;sdkMcpServers=new Map;initializeWritten;initializeHasBeenWritten=!1;markInitializeWritten;writingFirstInitialize=!1;stopSdkMcpManifestCapture;sdkMcpToolsChangedDuringCapture=new Set;pendingMcpResponses=new Map;runEndedResolve;runEnded=!1;resultReceived=!1;startupMark;runEndCeilingTimer;sessionState;lastErrorResultText;lastStartupFailureReason;errorTextBeforeModelLessTurns;modelLessTurnEnded=!1;latestCommands;frameObserver;transcriptMirrorBatcher;cleanupCallbacks=[];cleanupPromise;setIsSingleUserTurn(i){this.isSingleUserTurn=i}setTranscriptMirrorBatcher(i){this.transcriptMirrorBatcher=i}reportMirrorError(i,a){let c={type:"system",subtype:"mirror_error",error:a,key:i,uuid:ae(),session_id:i.sessionId};this.inputStream.enqueue(c)}addCleanupCallback(i){if(this.cleanupPerformed)i();else this.cleanupCallbacks.push(i)}isClosed(){return this.cleanupPerformed}hasBidirectionalNeeds(){return this.sdkMcpServers.size>0||this.hooks!==void 0&&Object.keys(this.hooks).length>0||this.canUseTool!==void 0||this.onElicitation!==void 0||this.onUserDialog!==void 0||this.getOAuthToken!==void 0||this.getHostAuthToken!==void 0||this.workSecretAnswerer!==void 0}remoteControlCallGeneration=0;uiHost;workSecretAnswerer;constructor(i,a,c,d,p,f=new Map,m,h,b,w,k,E,P=!1,D=Kt){this.transport=i;this.isSingleUserTurn=a;this.canUseTool=c;this.hooks=d;this.abortController=p;this.jsonSchema=m;this.initConfig=h;this.onElicitation=b;this.getOAuthToken=w;this.getHostAuthToken=k;this.onUserDialog=E;this.verbatimPrompts=P;this.runEndCeilingMs=D;for(let[R,I]of f)this.connectSdkMcpServer(R,I);this.sdkMessages=this.readSdkMessages(),this.readMessages(),this.initializeWritten=new Promise((R)=>{this.markInitializeWritten=()=>{this.initializeHasBeenWritten=!0,R()}}),this.initialization=this.initialize({first:!0}),this.initialization.catch(()=>{})}setError(i){this.inputStream.error(i)}setFrameObserver(i){this.frameObserver=i}dropUnreadHookProgress(i){this.inputStream.dropNewestQueued((a)=>a.type==="system"&&a.subtype==="hook_progress"&&a.hook_id===i)}async stopTask(i){await this.request({subtype:"stop_task",task_id:i})}async backgroundTasks(i){return(await this.request({subtype:"background_tasks",tool_use_id:i})).response.backgrounded??!0}close(){this.cleanup()}cleanup(i){if(this.clearRunEndCeiling(),this.cleanupPromise)return this.cleanupPromise;return this.cleanupPerformed=!0,this.cleanupCause=i,this.stopSdkMcpManifestCapture?.(),this.cleanupPromise=this.performCleanup(i),this.cleanupPromise}async performCleanup(i){for(let a of this.cleanupCallbacks)try{a()}catch{}if(this.cleanupCallbacks=[],this.transcriptMirrorBatcher)try{await this.transcriptMirrorBatcher.flush()}catch{}try{for(let a of this.cancelControllers.values())a.abort();this.cancelControllers.clear(),this.transport.close()}catch(a){e(`[Query.cleanup] transport.close() failed: ${u(a)}`,{level:"error"})}try{let a=i??br();for(let{reject:c}of this.pendingControlResponses.values())c(a);this.pendingControlResponses.clear(),this.unmatchedControlResponses.clear();for(let{reject:c}of this.pendingMcpResponses.values())c(a);this.pendingMcpResponses.clear(),this.hookCallbacks.clear();for(let{transport:c}of this.sdkMcpServers.values())c.close().catch(()=>{});if(this.sdkMcpServers.clear(),i)this.inputStream.error(i);else this.inputStream.done()}catch(a){}if(this.transport.waitForExit){let a=new AbortController;try{await Promise.race([this.transport.waitForExit(),v(2000,a.signal)])}catch{}finally{a.abort()}}}next(...[i]){return this.sdkMessages.next(...[i])}async return(i){return await this.cleanup(),this.sdkMessages.return(i)}async throw(i){return await this.cleanup(),this.sdkMessages.throw(i)}[Symbol.asyncIterator](){return this.sdkMessages}async[Symbol.asyncDispose](){await this.cleanup()}async readMessages(){try{for await(let i of this.transport.readMessages()){if(i.type==="control_response"){let a=this.pendingControlResponses.get(i.response.request_id);if(a)a.handler(i.response);else{if(this.unmatchedControlResponses.size>=Bt.UNMATCHED_CONTROL_RESPONSES_MAX){let c=this.unmatchedControlResponses.keys().next().value;if(c!==void 0)this.unmatchedControlResponses.delete(c)}this.unmatchedControlResponses.set(i.response.request_id,i.response)}continue}else if(i.type==="control_request"){this.handleControlRequest(i);continue}else if(i.type==="control_cancel_request"){this.handleControlCancelRequest(i);continue}else if(i.type==="keep_alive"){if(Sr in i){let a=i[Sr];if(typeof a==="string"&&a.length<=vs)this.startupMark={mark:a,atMs:Date.now()}}continue}else if(i.type==="transcript_mirror"){this.transcriptMirrorBatcher?.enqueue(i.filePath,i.entries);continue}if(i.type==="system"&&i.subtype==="commands_changed"&&Array.isArray(i.commands))this.latestCommands=i.commands;if(i.type==="system"&&(i.subtype==="post_turn_summary"||i.subtype==="task_summary"||i.subtype==="session_metadata")){this.inputStream.enqueue(i);continue}if(i.type==="active_goal"){this.inputStream.enqueue(i);continue}if(i.type==="autocompact_state"){this.inputStream.enqueue(i);continue}if(i.type==="result"){if(this.transcriptMirrorBatcher)await this.transcriptMirrorBatcher.flush();let a=i.is_error?i.subtype==="success"?i.result:i.errors.map((c)=>c.trim()).filter(Boolean).join("; "):void 0;if(this.lastErrorResultText=a||void 0,this.lastStartupFailureReason=i.is_error&&"startup_failure_reason"in i&&typeof i.startup_failure_reason==="string"?i.startup_failure_reason:void 0,this.modelLessTurnEnded=i.subtype==="success"&&!i.is_error&&i.num_turns===0&&i.result==="",!this.modelLessTurnEnded)this.errorTextBeforeModelLessTurns=this.lastErrorResultText;if(this.resultReceived=!0,this.sessionState===void 0||this.sessionState==="idle"||!this.hasBidirectionalNeeds())this.endRun();else this.armRunEndCeiling()}else if(i.type==="system"&&i.subtype==="session_state_changed"){if(this.sessionState=i.state,i.state==="idle"){if(this.resultReceived)this.endRun()}else if(!(this.isSingleUserTurn&&this.runEnded)){if(this.runEnded=!1,i.state==="requires_action")this.clearRunEndCeiling();else if(this.resultReceived)this.armRunEndCeiling()}if("sdk_host_only"in i&&i.sdk_host_only===!0)continue}else{if(this.lastErrorResultText=void 0,this.lastStartupFailureReason=void 0,i.type==="system"&&i.subtype==="init")this.modelLessTurnEnded=!1;else if(i.type!=="system"||i.subtype==="compact_boundary")this.errorTextBeforeModelLessTurns=void 0,this.modelLessTurnEnded=!1;if((i.type==="assistant"||i.type==="stream_event")&&i.parent_tool_use_id===null&&!(this.isSingleUserTurn&&this.runEnded))this.runEnded=!1,this.clearRunEndCeiling()}try{this.frameObserver?.(i)}catch(a){e(`[Query.readMessages] The frame observer threw: ${u(a)}`,{level:"error"})}this.inputStream.enqueue(i)}if(this.transcriptMirrorBatcher)await this.transcriptMirrorBatcher.flush();this.inputStream.done(),this.cleanup()}catch(i){if(this.transcriptMirrorBatcher)await this.transcriptMirrorBatcher.flush();let a=this.lastErrorResultText??(this.modelLessTurnEnded?this.errorTextBeforeModelLessTurns:void 0);if(a!==void 0&&!(i instanceof Z)&&i?.name!=="SSEHttpError"){let c=A(Error(`Claude Code returned an error result: ${a}`),{telemetryMessage:"Claude Code returned an error result",errorClass:"error_result",startupFailureReason:this.lastStartupFailureReason});e(`[Query.readMessages] Replacing exit error with result text. Original: ${u(i)}`),this.inputStream.error(c),this.cleanup(c);return}this.inputStream.error(i),this.cleanup(i)}}async handleControlRequest(i){if(this.cleanupPerformed){e(`[Query.handleControlRequest] Request ${i.request_id} (${i.request.subtype}) arrived after close — skipping`);return}if(this.cancelControllers.has(i.request_id)){e(`[Query.handleControlRequest] Duplicate delivery of in-flight request ${i.request_id} (${i.request.subtype}) — skipping`);return}let a=new AbortController;this.cancelControllers.set(i.request_id,a);try{let c;try{let d=await this.processControlRequest(i,a.signal);if(this.cleanupPerformed)return;if(d===Ze)return;let p={type:"control_response",response:{subtype:"success",request_id:i.request_id,response:d}};c=n(p)+`
`}catch(d){if(this.cleanupPerformed)return;let p={type:"control_response",response:{subtype:"error",request_id:i.request_id,error:u(d)}};c=n(p)+`
`}try{await Promise.resolve(this.transport.write(c))}catch(d){e(`[Query.handleControlRequest] Response write failed: ${u(d)}`,{level:"error"})}}finally{if(this.cancelControllers.get(i.request_id)===a)this.cancelControllers.delete(i.request_id)}}handleControlCancelRequest(i){let a=this.cancelControllers.get(i.request_id);if(a)a.abort(),this.cancelControllers.delete(i.request_id)}async processControlRequest(i,a){if(As.some((c)=>c===i.request.subtype))return e(`[Query.processControlRequest] ${i.request.subtype} ${i.request_id} is for the machine serving this session's tools — leaving it unanswered`),Ze;if(i.request.subtype==="can_use_tool"){if(!this.canUseTool)throw Error("canUseTool callback is not provided.");let c=i.request.computer_folder,d=await this.canUseTool(i.request.tool_name,i.request.input,{signal:a,suggestions:i.request.permission_suggestions,blockedPath:i.request.blocked_path,...i.request.mcp_server&&{mcpServer:{name:i.request.mcp_server.name,source:i.request.mcp_server.source}},decisionReason:i.request.decision_reason,...typeof i.request.decision_reason_type==="string"&&{decisionReasonType:i.request.decision_reason_type},...typeof i.request.decision_reason_code==="string"&&{decisionReasonCode:i.request.decision_reason_code},...typeof i.request.server_policy_ask_only==="boolean"&&{serverPolicyAskOnly:i.request.server_policy_ask_only},title:i.request.title,displayName:i.request.display_name,description:i.request.description,defaultToNo:i.request.default_to_no,suppressAlwaysAllowRule:i.request.suppress_always_allow_rule,toolUseID:i.request.tool_use_id,agentID:i.request.agent_id,...typeof i.request.plugin==="string"&&{plugin:i.request.plugin},requestId:i.request_id,...typeof i.request.requires_user_interaction==="boolean"&&{requiresUserInteraction:i.request.requires_user_interaction},...typeof i.request.server_prompt==="string"&&{serverPrompt:i.request.server_prompt},...typeof c==="object"&&c!==null&&"path"in c&&typeof c.path==="string"&&"computer_name"in c&&typeof c.computer_name==="string"&&{computerFolder:{path:c.path,computer_name:c.computer_name}},...i.request.matched_ask_rule&&{matchedAskRule:{source:i.request.matched_ask_rule.source,toolName:i.request.matched_ask_rule.tool_name,...i.request.matched_ask_rule.rule_content!==void 0&&{ruleContent:i.request.matched_ask_rule.rule_content}}}});if(d===null)return Ze;return{...d,toolUseID:i.request.tool_use_id}}else if(i.request.subtype==="hook_callback")return await this.handleHookCallbacks(i.request.callback_id,i.request.input,i.request.tool_use_id,a);else if(i.request.subtype==="mcp_message"){let c=i.request,d=this.sdkMcpServers.get(c.server_name)?.transport;if(!d)throw Error(`SDK MCP server not found: ${c.server_name}`);if(ws(c.message))return{mcp_response:await this.handleMcpControlRequest(c.server_name,c,d)};else{if(d.onmessage)d.onmessage(c.message);return{mcp_response:{jsonrpc:"2.0",result:{},id:0}}}}else if(i.request.subtype==="elicitation"){let c=i.request;if(this.onElicitation){let d=await this.onElicitation({serverName:c.mcp_server_name,message:c.message,mode:c.mode,url:c.url,elicitationId:c.elicitation_id,requestedSchema:c.requested_schema,title:c.title,displayName:c.display_name,description:c.description},{signal:a,requestId:i.request_id});if(d===null)return Ze;return d}return{action:"decline"}}else if(i.request.subtype==="request_user_dialog"){if(this.onUserDialog){let c=await this.onUserDialog({dialogKind:i.request.dialog_kind,payload:i.request.payload,toolUseID:i.request.tool_use_id},{signal:a,requestId:i.request_id});if(c===null)return Ze;return c}return e(`[Query] No onUserDialog handler for request_user_dialog (kind=${i.request.dialog_kind}) — staying silent so a capable client (or the worker's park deadline) settles it`),G("tengu_request_user_dialog_response_ignored",{shape:F("auto_cancel")}),Ze}else if(i.request.subtype==="oauth_token_refresh"){if(!this.getOAuthToken)throw Error("getOAuthToken callback is not provided.");let c,d=await this.getOAuthToken({signal:a,onDecline:(p)=>{if(bs(p))c=p},...i.request.kind!==void 0&&{kind:i.request.kind}})??null;return d===null&&c!==void 0?{accessToken:d,reason:c}:{accessToken:d}}else if(i.request.subtype==="host_auth_token_refresh"){if(!this.getHostAuthToken)throw Error("getHostAuthToken callback is not provided.");let c=await this.getHostAuthToken({signal:a})??null;return typeof c==="string"||c===null?{authToken:c}:c}else if(i.request.subtype==="remote_control_work_secret"){let c=this.workSecretAnswerer;if(!c)throw Error("refreshWorkSecret callback is not provided.");if(!Os(c.sessionId,i.request.session_id))throw Error("remote_control_work_secret names a session this host did not attach.");return{work_secret:await c.refresh(c.sessionId,{signal:a})||null}}if(i.request.subtype==="ui_copy"&&this.uiHost?.copy){let{subtype:c,...d}=i.request;return this.uiHost.copy(d,{signal:a})}if(i.request.subtype==="ui_prompt_read"&&this.uiHost?.promptRead){let{subtype:c,...d}=i.request;return this.uiHost.promptRead(d,{signal:a})}if(i.request.subtype==="ui_prompt_fill"&&this.uiHost?.promptFill){let{subtype:c,...d}=i.request;return this.uiHost.promptFill(d,{signal:a})}if(i.request.subtype==="ui_prompt_paint"&&this.uiHost?.promptPaint){let{subtype:c,...d}=i.request;return this.uiHost.promptPaint(d,{signal:a})}if(i.request.subtype==="ui_prompt_suggest"&&this.uiHost?.promptSuggest){let{subtype:c,...d}=i.request;return this.uiHost.promptSuggest(d,{signal:a})}if(i.request.subtype==="ui_read_selection"&&this.uiHost?.readSelection){let{subtype:c,...d}=i.request;return this.uiHost.readSelection(d,{signal:a})}throw Error("Unsupported control request subtype: "+i.request.subtype)}async*readSdkMessages(){try{for await(let i of this.inputStream)this.transport.markDelivered?.(i),yield i}finally{await this.cleanup()}}async initialize({first:i}={first:!1}){if(!i&&!this.initializeHasBeenWritten)await this.initializeWritten;let a,c;try{if(i&&this.initConfig?.captureSdkMcpManifests===!0&&this.sdkMcpServers.size>0){a=await this.captureSdkMcpServerManifests();for(let m of this.sdkMcpToolsChangedDuringCapture){let h=a!==void 0&&Object.hasOwn(a,m)?a[m]:void 0;if(h?.toolsListResult!==void 0)a[m]={initializeResult:h.initializeResult}}}this.sdkMcpToolsChangedDuringCapture.clear();let f=this.buildInitializeRequest(a);if(this.cleanupPerformed)throw this.cleanupCause??Error("Query closed before initialize was sent");this.writingFirstInitialize=i;try{c=this.request(f)}finally{this.writingFirstInitialize=!1}}finally{if(i)this.markInitializeWritten()}let p=(await c).response;if(this.initConfig?.plugins!==void 0&&this.initConfig.plugins.length>0&&p.plugins_applied!==!0)e(`[Query.initialize] Claude Code reported plugins_applied=${String(p.plugins_applied)} for ${this.initConfig.plugins.length} plugins sent with pluginDelivery 'initialize'; the process is running with the plugins it was launched with.`,{level:"warn"});return p}buildInitializeRequest(i){if(this.hooks&&!this.initHooksPayload){this.initHooksPayload={};for(let[f,m]of Object.entries(this.hooks))if(m.length>0)this.initHooksPayload[f]=m.map((h)=>{let b=[];for(let w of h.hooks){let k=`hook_${this.nextCallbackId++}`;this.hookCallbacks.set(k,w),b.push(k)}return{matcher:h.matcher,hookCallbackIds:b,timeout:h.timeout}})}let a=this.sdkMcpServers.size>0?Array.from(this.sdkMcpServers.keys()):void 0,c=Array.from(this.sdkMcpServers).flatMap(([f,{settings:m}])=>Object.keys(m).length>0?[[f,m]]:[]),d=c.length>0?Object.fromEntries(c):void 0;return{subtype:"initialize",hooks:this.initHooksPayload,sdkMcpServers:a,sdkMcpServerConfigs:d,sdkMcpServerManifests:i,jsonSchema:this.jsonSchema,systemPrompt:typeof this.initConfig?.systemPrompt==="string"?[this.initConfig.systemPrompt]:this.initConfig?.systemPrompt,appendSystemPrompt:this.initConfig?.appendSystemPrompt,planModeInstructions:this.initConfig?.planModeInstructions,systemPromptSnapshot:this.initConfig?.systemPromptSnapshot,appendSubagentSystemPrompt:this.initConfig?.appendSubagentSystemPrompt,toolAliases:this.initConfig?.toolAliases,codeRunningMcpTools:this.initConfig?.codeRunningMcpTools,excludeDynamicSections:this.initConfig?.excludeDynamicSections,agents:this.initConfig?.agents,title:this.initConfig?.title,skills:Array.isArray(this.initConfig?.skills)?this.initConfig.skills:void 0,webSearchIsolationExemptMcpServers:this.initConfig?.webSearchIsolationExemptMcpServers,promptSuggestions:this.initConfig?.promptSuggestions,agentProgressSummaries:this.initConfig?.agentProgressSummaries,forwardSubagentText:this.initConfig?.forwardSubagentText,supportedDialogKinds:this.initConfig?.supportedDialogKinds,perTaskStopAffordance:this.initConfig?.perTaskStopAffordance,rapidFollowupPreempt:this.initConfig?.rapidFollowupPreempt,forwardNestedSubagentToolCalls:this.initConfig?.forwardNestedSubagentToolCalls,workspaceTrust:this.initConfig?.workspaceTrust,plugins:this.initConfig?.plugins}}async captureSdkMcpServerManifests(){let i=performance.now(),a=new Map,c=!1,d=async(E,P)=>{try{if(await this.sdkMcpServers.get(E)?.connection,c)return;let D=await this.handleMcpControlRequest(E,{server_name:E,message:{jsonrpc:"2.0",id:$t+"initialize",method:"initialize",params:{protocolVersion:Ts,capabilities:ks,clientInfo:{...Rs,version:"0.3.314"}}}},P);if(c)return;if(!("result"in D)){e(`[Query.captureSdkMcpServerManifests] '${E}' answered initialize with an error; leaving it to the CLI: ${n(D)}`,{level:"warn"});return}let R=D.result;P.onmessage?.({jsonrpc:"2.0",method:"notifications/initialized"});let I=R.capabilities,q=typeof I==="object"&&I!==null&&"tools"in I&&I.tools!==void 0&&I.tools!==null,B;if(q){let H=await this.handleMcpControlRequest(E,{server_name:E,message:{jsonrpc:"2.0",id:$t+"tools-list",method:"tools/list"}},P);if(c)return;if(!("result"in H)){e(`[Query.captureSdkMcpServerManifests] '${E}' answered tools/list with an error; leaving it to the CLI: ${n(H)}`,{level:"warn"});return}if(H.result.nextCursor===void 0)B=H.result}let we=_(n(B===void 0?{initializeResult:R}:{initializeResult:R,toolsListResult:B}));a.set(E,{transport:P,manifest:we})}catch(D){if(!c)e(`[Query.captureSdkMcpServerManifests] '${E}': ${D}; the CLI will handshake it over the control channel`,{level:"warn"})}},p=Array.from(this.sdkMcpServers,([E,{transport:P}])=>d(E,P)),f=Promise.all(p).then(()=>"settled"),m=new Promise((E)=>{this.stopSdkMcpManifestCapture=()=>E("closed")}),h=await ke(Promise.race([f,m]),Ms);c=!0,this.stopSdkMcpManifestCapture=void 0;let b=Math.round(performance.now()-i),w={servers:p.length,captured:a.size,elapsed_ms:b};if(h==="closed"){Ut("sdk_mcp_manifest_capture","closed",w);return}if(h===void 0)e(`[Query.captureSdkMcpServerManifests] ${a.size}/${p.length} in-process MCP servers captured within ${Ms} ms; the rest will handshake over the control channel`,{level:"warn"}),Ut("sdk_mcp_manifest_capture","deadline",w);else if(a.size<p.length)Ut("sdk_mcp_manifest_capture","partial",w);else _r("sdk_mcp_manifest_capture",w);if(a.size===0)return;let k=Object.fromEntries(Array.from(this.sdkMcpServers).flatMap(([E,P])=>{let D=a.get(E);return D!==void 0&&D.transport===P.transport?[[E,D.manifest]]:[]}));if(Object.keys(k).length===0)return;return e(`[Query.captureSdkMcpServerManifests] manifests for [${Object.keys(k).join(", ")}] captured in ${b} ms`),k}async interrupt(i){return re("sdk_interrupt",async()=>{let a=await this.request({subtype:"interrupt",...i?.cancelQueued===!0&&{cancel_queued:!0}}),c=a.response?.still_queued;if(!Array.isArray(c))return;let d=a.response?.cancelled;return{still_queued:c.filter((p)=>typeof p==="string"),...Array.isArray(d)&&{cancelled:d.filter((p)=>typeof p==="string")}}})}async setPermissionMode(i){await this.request({subtype:"set_permission_mode",mode:i})}startupMarkReached(){let i=this.startupMark;return i&&{mark:i.mark,ageMs:Math.max(0,Math.round(Date.now()-i.atMs))}}setUiHost(i){this.uiHost=i}async setMcpPermissionModeOverride(i,a){return(await this.request({subtype:"set_mcp_permission_mode_override",serverName:i,mode:a})).response??{}}async setChromeBrowserHints(i){await this.request({subtype:"set_chrome_browser_hints",...i})}async setPromptSuggestionsPaused(i){await this.request({subtype:"set_prompt_suggestions_paused",paused:i})}awaitControlResponse(i){return this.transport.expectControlResponse?.(i),new Promise((a,c)=>{let d=(f)=>{if(f.subtype==="success"){let{pending_permission_requests:m,pending_user_dialog_requests:h,...b}=f;a(b)}else c(new l(f.error,"awaitControlResponse: CLI error verdict"));if(f.pending_permission_requests||f.pending_user_dialog_requests)e("[Query] Ignoring prompt-redelivery fields on awaitControlResponse response")};if(this.cleanupPerformed){c(br());return}let p=this.unmatchedControlResponses.get(i);if(p){this.unmatchedControlResponses.delete(i),d(p);return}this.pendingControlResponses.set(i,{handler:(f)=>{this.pendingControlResponses.delete(i),d(f)},reject:c})})}async setModel(i){await this.request({subtype:"set_model",model:i})}async setMaxThinkingTokens(i,a){await this.request({subtype:"set_max_thinking_tokens",max_thinking_tokens:i,thinking_display:a})}async applyFlagSettings(i){return re("sdk_apply_flag_settings",async()=>{await this.request({subtype:"apply_flag_settings",settings:i})})}async getSettings(){return(await this.request({subtype:"get_settings"})).response}async getHooksListing(){return(await this.request({subtype:"get_hooks_listing"})).response}async getTaskOutput(i){return(await this.request({subtype:"get_task_output",task_id:i})).response}async listPermissionRules(){return(await this.request({subtype:"list_permission_rules"})).response}async updateSettings(i,a){return re("sdk_update_settings",async()=>{await this.request({subtype:"update_settings",source:i,settings:a})})}async rewindFiles(i,a){return re("sdk_rewind_files",async()=>(await this.request({subtype:"rewind_files",user_message_id:i,dry_run:a?.dryRun})).response)}async cancelAsyncMessage(i){return(await this.request({subtype:"cancel_async_message",message_uuid:i})).response.cancelled}async seedReadState(i,a){await this.request({subtype:"seed_read_state",path:i,mtime:a})}async setCwd(i,a){return re("sdk_set_cwd",async()=>(await this.request({subtype:"set_cwd",path:i,...a?.trustAccepted!==void 0&&{trust_accepted:a.trustAccepted},...a?.trustedDirectory!==void 0&&{trusted_directory:a.trustedDirectory}})).response)}async claimSession(i){let a=re("sdk_claim_session",async()=>(await this.request({subtype:"claim_session",...i,include_initialize:i.include_initialize??!0})).response),c=this.initialization;return this.initialization=a.then(async(d)=>{if(d?.initialize===void 0)return c;let p=d.initialize,f=await c.then((w)=>({hooks_applied:w.hooks_applied,plugins_applied:w.plugins_applied,code_running_mcp_tools_applied:w.code_running_mcp_tools_applied}),()=>({hooks_applied:void 0,plugins_applied:void 0,code_running_mcp_tools_applied:void 0})),m=p.hooks_applied??f.hooks_applied,h=p.plugins_applied??f.plugins_applied,b=p.code_running_mcp_tools_applied??f.code_running_mcp_tools_applied;return{...p,...m!==void 0&&{hooks_applied:m},...h!==void 0&&{plugins_applied:h},...b!==void 0&&{code_running_mcp_tools_applied:b}}},()=>c),this.initialization.catch(()=>{}),a}async enableRemoteControl(i,a,c){let d=++this.remoteControlCallGeneration,p=this.workSecretAnswerer,f=c?.reattachSessionId||(c?.workSecret===void 0?void 0:xo(c.workSecret)),m=i&&c?.workSecret!==void 0&&c.refreshWorkSecret&&f!==void 0?{sessionId:f,refresh:c.refreshWorkSecret}:void 0;this.workSecretAnswerer=m;let h;try{h=(await this.request({subtype:"remote_control",enabled:i,...a!==void 0&&{name:a},reattach_session_id:c?.reattachSessionId,keep_session_on_exit:c?.keepSessionOnExit,work_secret:c?.workSecret})).response}catch(b){if(d===this.remoteControlCallGeneration)this.workSecretAnswerer=void 0;throw b}if(i&&d===this.remoteControlCallGeneration){let b=h.bridge_session_id,w=[m,p];this.workSecretAnswerer=typeof b==="string"?w.find((k)=>k!==void 0&&Os(k.sessionId,b)):void 0}return h}async submitFeedback(i,a){return(await this.request({subtype:"submit_feedback",description:i,surface:a?.surface,draft_id:a?.draft_id,type:a?.type,title:a?.title,area:a?.area,attach_transcript:a?.attach_transcript,save_locally:a?.save_locally})).response}async submitSurveyFeedback(i){return(await this.request({subtype:"submit_survey_feedback",...i})).response}async renameSession(i,a){await this.request({subtype:"rename_session",title:i,source:"host",session_id:a})}async generateSessionTitle(i,a){return re("sdk_session_title_generate",async()=>(await this.request({subtype:"generate_session_title",description:i,persist:a?.persist})).response.title)}async askSideQuestion(i,a){return re("sdk_side_question",async()=>{let d=(await this.request({subtype:"side_question",question:i,...a?.history?.length&&{history:[...a.history]}},a)).response;return d.response===null?null:{response:d.response,synthetic:d.synthetic??!1,...d.refusal_fallback&&{refusalFallback:{originalModel:d.refusal_fallback.original_model,fallbackModel:d.refusal_fallback.fallback_model,content:d.refusal_fallback.content}}}},()=>a?.signal?.aborted?"cancelled":"error")}async launchUltrareview(i,a){return(await this.request({subtype:"ultrareview_launch",args:i,confirm:a?.confirm??!1})).response}async messageRated(i){await this.request({subtype:"message_rated",messageUuid:i.messageUuid,sentiment:i.sentiment,surface:i.surface,cleared:i.cleared??!1})}processPendingPermissionRequests(i){for(let a of i)if(a.request.subtype==="can_use_tool")this.handleControlRequest({...a,request:{...a.request,server_policy_ask_only:void 0}}).catch(()=>{})}processPendingUserDialogRequests(i){for(let a of i)if(a.request.subtype==="request_user_dialog")this.handleControlRequest(a).catch(()=>{})}request(i,a){let c=a?.signal;if(c?.aborted)return Promise.reject(x(c.reason??"Control request aborted"));if(this.cleanupPerformed)return Promise.reject(br());let d=Math.random().toString(36).substring(2,15);this.transport.expectControlResponse?.(d);let p={request_id:d,type:"control_request",request:i},f=i.subtype==="initialize";return new Promise((m,h)=>{let b,w=!1,k=(R)=>{this.pendingControlResponses.delete(d),b?.(),m(R)},E=(R)=>{this.pendingControlResponses.delete(d),b?.(),h(R)};if(c){let R=()=>{if(E(x(c.reason??"Control request aborted")),!w)return;try{Promise.resolve(this.transport.write(n({type:"control_cancel_request",request_id:d})+`
`)).catch(()=>{})}catch{}};c.addEventListener("abort",R,{once:!0}),b=()=>{c.removeEventListener("abort",R)}}this.pendingControlResponses.set(d,{handler:(R)=>{if(R.subtype==="success")k(R);else E(A(Error(R.error),{telemetryMessage:`Claude Code control request failed (${i.subtype})`,errorClass:"control_request_failed",errorCode:typeof R.error_code==="string"&&Mo.test(R.error_code)?R.error_code:void 0}));if(!f&&(R.pending_permission_requests||R.pending_user_dialog_requests))e(`[Query] Ignoring prompt-redelivery fields on non-initialize response (subtype=${i.subtype})`);else{if(R.pending_permission_requests)this.processPendingPermissionRequests(R.pending_permission_requests);if(R.pending_user_dialog_requests)this.processPendingUserDialogRequests(R.pending_user_dialog_requests)}},reject:E});let P=n(p)+`
`,D=()=>{if(c?.aborted)return;return w=!0,this.transport.write(P)};try{(this.initializeHasBeenWritten||this.writingFirstInitialize?Promise.resolve(D()):this.initializeWritten.then(D)).catch(E)}catch(R){E(R)}})}initializationResult(){return this.initialization}writeAfterInitialize(i){if(this.initializeHasBeenWritten)return Promise.resolve(this.transport.write(i));return this.initializeWritten.then(()=>this.transport.write(i))}reinitialize(){return re("sdk_reinitialize",()=>this.initialize({first:!1}))}async supportedCommands(){let{commands:i}=await this.initialization;return this.latestCommands??i}async supportedModels(){return(await this.initialization).models}async supportedAgents(){return(await this.initialization).agents}async reconnectMcpServer(i){await this.request({subtype:"mcp_reconnect",serverName:i})}async toggleMcpServer(i,a){return re("sdk_mcp_toggle_server",async()=>{await this.request({subtype:"mcp_toggle",serverName:i,enabled:a})})}async readMcpResource(i,a){return(await this.request({subtype:"mcp_read_resource",serverName:i,uri:a})).response}async enableChannel(i){return re("sdk_mcp_enable_channel",async()=>{await this.request({subtype:"channel_enable",serverName:i})})}async mcpAuthenticate(i,a){return(await this.request({subtype:"mcp_authenticate",serverName:i,redirectUri:a})).response}async mcpClearAuth(i){return(await this.request({subtype:"mcp_clear_auth",serverName:i})).response}async mcpSubmitOAuthCallbackUrl(i,a){return(await this.request({subtype:"mcp_oauth_callback_url",serverName:i,callbackUrl:a})).response}async claudeAuthenticate(i){return(await this.request({subtype:"claude_authenticate",loginWithClaudeAi:i})).response}async claudeOAuthCallback(i,a){return(await this.request({subtype:"claude_oauth_callback",authorizationCode:i,state:a})).response}async claudeOAuthWaitForCompletion(){return(await this.request({subtype:"claude_oauth_wait_for_completion"})).response}async mcpServerStatus(){return(await this.request({subtype:"mcp_status"})).response.mcpServers}async getContextUsage(i){return(await this.request({subtype:"get_context_usage",...i})).response}async usage_EXPERIMENTAL_MAY_CHANGE_DO_NOT_RELY_ON_THIS_API_YET(i){return(await this.request({subtype:"get_usage",...i?.skipBehaviors&&{skip_behaviors:!0}})).response}async getMemoryDialog(){return(await this.request({subtype:"get_memory_dialog"})).response}async getSkillsDialog(){return(await this.request({subtype:"get_skills_dialog"})).response}async getStatus(){return(await this.request({subtype:"get_status"})).response}async exportConversation(){return(await this.request({subtype:"export_conversation"})).response}async readCloudSessions(i,a){return(await this.request(i,a)).response}async getChromeDialog(){return(await this.request({subtype:"get_chrome_dialog"})).response}async getChromeBrowsers(){return(await this.request({subtype:"get_chrome_browsers"})).response}async selectChromeBrowser(i){return(await this.request({subtype:"select_chrome_browser",device_id:i})).response}async getSandboxDialog(){return(await this.request({subtype:"get_sandbox_dialog"})).response}async readFile(i,a){try{return(await this.request({subtype:"read_file",path:i,max_bytes:a?.maxBytes,encoding:a?.encoding})).response}catch{return null}}async getPlan(){return(await this.request({subtype:"get_plan"})).response}async reloadPlugins(i){return re("sdk_reload_plugins",async()=>(await this.request({subtype:"reload_plugins",...i?.holdOnCacheImpact&&{hold_on_cache_impact:!0},...i?.addPlugins&&i.addPlugins.length>0&&{add_plugins:i.addPlugins}})).response)}async reloadSkills(){return re("sdk_reload_skills",async()=>(await this.request({subtype:"reload_skills"})).response)}async reloadOutputStyles(){return re("sdk_reload_output_styles",async()=>(await this.request({subtype:"reload_output_styles"})).response)}async setMcpServers(i){return re("sdk_mcp_set_servers",async()=>{let a={},c={};for(let[h,b]of Object.entries(i))if(b.type==="sdk"&&"instance"in b)a[h]=b;else c[h]=b;let d=new Set(this.sdkMcpServers.keys()),p=new Set(Object.keys(a));for(let h of d)if(!p.has(h))await this.disconnectSdkMcpServer(h);for(let[h,b]of Object.entries(a)){let w=this.sdkMcpServers.get(h);if(!w){this.connectSdkMcpServer(h,b);continue}let{settings:k,ignored:E}=nt(b);if(xs(h,b,E),k.timeout!==w.settings.timeout||k.disableAutoBackground!==w.settings.disableAutoBackground||k.connectorId!==w.settings.connectorId)e(`[Query.setMcpServers] MCP server '${h}' is already registered, so the different timeout, disableAutoBackground or connectorId passed to setMcpServers is ignored; remove and re-add the server to change it`);if(k.tools!==void 0&&!Lt(k.tools,w.settings.tools))e(k.tools.length===0?`[Query.setMcpServers] MCP server '${h}': per-tool policy cleared`:`[Query.setMcpServers] MCP server '${h}': per-tool policy replaced (${k.tools.length} ${k.tools.length===1?"entry":"entries"})`),w.settings={...w.settings,tools:k.tools}}let f={};for(let h of Object.keys(a))f[h]={type:"sdk",name:h,...this.sdkMcpServers.get(h)?.settings};return(await this.request({subtype:"mcp_set_servers",servers:{...c,...f}})).response})}async accountInfo(){return(await this.initialization).account}async streamInput(i){e("[Query.streamInput] Starting to process input stream");try{if(!this.initializeHasBeenWritten)await this.initializeWritten;let a=0;for await(let c of i){if(a++,e(`[Query.streamInput] Processing message ${a}: ${c.type}`),this.abortController?.signal.aborted)break;this.runEnded=!1,this.resultReceived=!1,this.clearRunEndCeiling(),await Promise.resolve(this.transport.write(n(this.verbatimPrompts?{...c,client_composed:!0}:c)+`
`))}if(e(`[Query.streamInput] Finished processing ${a} messages from input stream`),a>0&&this.hasBidirectionalNeeds())e("[Query.streamInput] Has bidirectional needs, waiting for the run to end"),await this.waitForRunEnd();e("[Query] Calling transport.endInput() to close stdin to CLI process"),this.transport.endInput()}catch(a){if(!(a instanceof Z))throw a}}endRun(){if(this.runEnded)return;if(this.runEnded=!0,this.clearRunEndCeiling(),this.runEndedResolve?.(),this.isSingleUserTurn)e("[Query.readMessages] Run ended for single-turn query, closing stdin"),this.transport.endInput()}armRunEndCeiling(){if(this.clearRunEndCeiling(),this.runEnded||this.cleanupPerformed||this.runEndCeilingMs<=0)return;this.runEndCeilingTimer=setTimeout(()=>{e(`[Query.readMessages] No 'idle' ${this.runEndCeilingMs}ms after the last result, ending the run`),this.endRun()},Math.min(this.runEndCeilingMs,oe)),this.runEndCeilingTimer.unref?.()}clearRunEndCeiling(){clearTimeout(this.runEndCeilingTimer),this.runEndCeilingTimer=void 0}waitForRunEnd(){if(this.runEnded)return e("[Query.waitForRunEnd] Run already ended, returning immediately"),Promise.resolve();return new Promise((i)=>{let a=this.abortController?.signal;if(this.cleanupPerformed||a?.aborted){i();return}let c=()=>i();a?.addEventListener("abort",c,{once:!0}),this.addCleanupCallback(()=>{a?.removeEventListener("abort",c),i()}),this.runEndedResolve=()=>{a?.removeEventListener("abort",c),i()}})}handleHookCallbacks(i,a,c,d){let p=this.hookCallbacks.get(i);if(!p)throw Error(`No hook callback found for ID: ${i}`);return p(a,c,{signal:d})}connectSdkMcpServer(i,a){let c=new yr((m)=>this.sendMcpServerMessageToCli(i,m)),d=a.instance.connect(c).catch((m)=>{if(this.sdkMcpServers.get(i)?.transport===c)this.sdkMcpServers.delete(i);e(`[Query.connectSdkMcpServer] Failed to connect MCP server '${i}': ${m}`,{level:"error"})}),{settings:p,ignored:f}=nt(a);xs(i,a,f),this.sdkMcpServers.set(i,{transport:c,settings:p,connection:d})}async disconnectSdkMcpServer(i){let a=this.sdkMcpServers.get(i);if(a){let c=`${i}:${$t}`;for(let[d,p]of this.pendingMcpResponses)if(d.startsWith(c))this.pendingMcpResponses.delete(d),p.reject(Error("MCP server was removed during the manifest capture"));if(await a.transport.close(),this.sdkMcpServers.get(i)===a)this.sdkMcpServers.delete(i)}}sendMcpServerMessageToCli(i,a){if("id"in a&&a.id!==null&&a.id!==void 0){let d=`${i}:${a.id}`,p=this.pendingMcpResponses.get(d);if(p){p.resolve(a),this.pendingMcpResponses.delete(d);return}if(typeof a.id==="string"&&a.id.startsWith($t)){e(`[Query.sendMcpServerMessageToCli] Dropping late manifest-capture reply from '${i}' (${a.id})`);return}}let c={type:"control_request",request_id:ae(),request:{subtype:"mcp_message",server_name:i,message:a}};if(!this.initializeHasBeenWritten&&Ps(a))this.sdkMcpToolsChangedDuringCapture.add(i);this.writeAfterInitialize(n(c)+`
`).catch((d)=>{e(`[Query.sendMcpServerMessageToCli] Transport write failed: ${d}`,{level:"error"})})}handleMcpControlRequest(i,a,c){let d="id"in a.message?a.message.id:null,p=`${i}:${d}`;return new Promise((f,m)=>{let h=()=>{this.pendingMcpResponses.delete(p)},b=(k)=>{h(),f(k)},w=(k)=>{h(),m(k)};if(this.pendingMcpResponses.set(p,{resolve:b,reject:w}),c.onmessage)c.onmessage(a.message);else{h(),m(Error("No message handler registered"));return}})}}function br(){return Error("Query closed before response received")}var Mo=/^[a-z][a-z0-9_]{0,63}$/;function Os(i,a){if(i===a)return!0;let c=i.slice(i.lastIndexOf("_")+1),d=a.slice(a.lastIndexOf("_")+1);return c.length>=4&&c===d}function xo(i){try{let a=_(Buffer.from(i,"base64url").toString("utf8"));if(typeof a!=="object"||a===null||!("session_ingress_token"in a)||typeof a.session_ingress_token!=="string")return;let c=a.session_ingress_token,p=(c.startsWith("sk-ant-si-")?c.slice(10):c).split(".");if(p.length!==3||!p[1])return;let f=_(Buffer.from(p[1],"base64url").toString("utf8"));return typeof f==="object"&&f!==null&&"session_id"in f&&typeof f.session_id==="string"&&f.session_id?f.session_id:void 0}catch{return}}var Cr=500,Er=1048576;var Oo=[200,800];class vr{send;pending=[];pendingEntries=0;pendingBytes=0;flushPromise=null;sendTimeoutMs;onError;maxPendingEntries;maxPendingBytes;backoffMs;constructor(i,a){this.send=i;let{sendTimeoutMs:c=60000,onError:d,maxPendingEntries:p=Cr,maxPendingBytes:f=Er,backoffMs:m=Oo}=a??{};this.sendTimeoutMs=c,this.onError=d,this.maxPendingEntries=p,this.maxPendingBytes=f,this.backoffMs=m}enqueue(i,a){let c=n(a).length;if(this.pending.push({filePath:i,entries:a,bytes:c}),this.pendingEntries+=a.length,this.pendingBytes+=c,this.pendingEntries>this.maxPendingEntries||this.pendingBytes>this.maxPendingBytes)this.flushPromise=this.drain(),this.flushPromise.catch(()=>{})}async flush(){let i=this.drain();if(this.flushPromise=i,await i,this.flushPromise===i)this.flushPromise=null}async drain(){let i=this.flushPromise,a=this.pending.splice(0);if(this.pendingEntries=0,this.pendingBytes=0,i)await i;if(a.length===0)return;await this.doFlush(a)}async doFlush(i){let a=new Map;for(let c of i){let d=a.get(c.filePath);if(d)d.push(...c.entries);else a.set(c.filePath,c.entries.slice())}for(let[c,d]of a)await this.sendWithRetry(c,d)}async sendWithRetry(i,a){let c=this.backoffMs.length+1,d=`SessionStore.append() timed out after ${this.sendTimeoutMs}ms for ${i}`,p,f=1;for(;f<=c;f++)try{await T(this.send(i,a),this.sendTimeoutMs,d),p=void 0;break}catch(m){if(p=x(m),p.message===d)break;let h=this.backoffMs[f-1];if(h===void 0)break;await v(h)}if(p){e(`[TranscriptMirrorBatcher] flush failed for ${i} after ${f} attempt(s): ${p}`,{level:"error"});try{this.onError?.(i,p)}catch(m){e(`[TranscriptMirrorBatcher] onError callback threw: ${m}`,{level:"error"})}}}}var Ds=typeof globalThis==="object"?globalThis:global;var De="1.9.0";var Is=/^(\d+)\.(\d+)\.(\d+)(-(.+))?$/;function Do(i){var a=new Set([i]),c=new Set,d=i.match(Is);if(!d)return function(){return!1};var p={major:+d[1],minor:+d[2],patch:+d[3],prerelease:d[4]};if(p.prerelease!=null)return function(b){return b===i};function f(h){return c.add(h),!1}function m(h){return a.add(h),!0}return function(b){if(a.has(b))return!0;if(c.has(b))return!1;var w=b.match(Is);if(!w)return f(b);var k={major:+w[1],minor:+w[2],patch:+w[3],prerelease:w[4]};if(k.prerelease!=null)return f(b);if(p.major!==k.major)return f(b);if(p.major===0){if(p.minor===k.minor&&p.patch<=k.patch)return m(b);return f(b)}if(p.minor<=k.minor)return m(b);return f(b)}}var Ns=Do(De);var Io=De.split(".")[0],_t=Symbol.for("opentelemetry.js.api."+Io),yt=Ds;function Je(i,a,c,d){var p;if(d===void 0)d=!1;var f=yt[_t]=(p=yt[_t])!==null&&p!==void 0?p:{version:De};if(!d&&f[i]){var m=Error("@opentelemetry/api: Attempted duplicate registration of API: "+i);return c.error(m.stack||m.message),!1}if(f.version!==De){var m=Error("@opentelemetry/api: Registration of version v"+f.version+" for "+i+" does not match previously registered API v"+De);return c.error(m.stack||m.message),!1}return f[i]=a,c.debug("@opentelemetry/api: Registered a global for "+i+" v"+De+"."),!0}function Ne(i){var a,c,d=(a=yt[_t])===null||a===void 0?void 0:a.version;if(!d||!Ns(d))return;return(c=yt[_t])===null||c===void 0?void 0:c[i]}function et(i,a){a.debug("@opentelemetry/api: Unregistering a global for "+i+" v"+De+".");var c=yt[_t];if(c)delete c[i]}var No=function(i,a){var c=typeof Symbol==="function"&&i[Symbol.iterator];if(!c)return i;var d=c.call(i),p,f=[],m;try{while((a===void 0||a-- >0)&&!(p=d.next()).done)f.push(p.value)}catch(h){m={error:h}}finally{try{if(p&&!p.done&&(c=d.return))c.call(d)}finally{if(m)throw m.error}}return f},Lo=function(i,a,c){if(c||arguments.length===2){for(var d=0,p=a.length,f;d<p;d++)if(f||!(d in a)){if(!f)f=Array.prototype.slice.call(a,0,d);f[d]=a[d]}}return i.concat(f||Array.prototype.slice.call(a))},Ls=function(){function i(a){this._namespace=a.namespace||"DiagComponentLogger"}return i.prototype.debug=function(){var a=[];for(var c=0;c<arguments.length;c++)a[c]=arguments[c];return bt("debug",this._namespace,a)},i.prototype.error=function(){var a=[];for(var c=0;c<arguments.length;c++)a[c]=arguments[c];return bt("error",this._namespace,a)},i.prototype.info=function(){var a=[];for(var c=0;c<arguments.length;c++)a[c]=arguments[c];return bt("info",this._namespace,a)},i.prototype.warn=function(){var a=[];for(var c=0;c<arguments.length;c++)a[c]=arguments[c];return bt("warn",this._namespace,a)},i.prototype.verbose=function(){var a=[];for(var c=0;c<arguments.length;c++)a[c]=arguments[c];return bt("verbose",this._namespace,a)},i}();function bt(i,a,c){var d=Ne("diag");if(!d)return;return c.unshift(a),d[i].apply(d,Lo([],No(c),!1))}var fe;(function(i){i[i.NONE=0]="NONE",i[i.ERROR=30]="ERROR",i[i.WARN=50]="WARN",i[i.INFO=60]="INFO",i[i.DEBUG=70]="DEBUG",i[i.VERBOSE=80]="VERBOSE",i[i.ALL=9999]="ALL"})(fe||(fe={}));function Fs(i,a){if(i<fe.NONE)i=fe.NONE;else if(i>fe.ALL)i=fe.ALL;a=a||{};function c(d,p){var f=a[d];if(typeof f==="function"&&i>=p)return f.bind(a);return function(){}}return{error:c("error",fe.ERROR),warn:c("warn",fe.WARN),info:c("info",fe.INFO),debug:c("debug",fe.DEBUG),verbose:c("verbose",fe.VERBOSE)}}var Fo=function(i,a){var c=typeof Symbol==="function"&&i[Symbol.iterator];if(!c)return i;var d=c.call(i),p,f=[],m;try{while((a===void 0||a-- >0)&&!(p=d.next()).done)f.push(p.value)}catch(h){m={error:h}}finally{try{if(p&&!p.done&&(c=d.return))c.call(d)}finally{if(m)throw m.error}}return f},Ko=function(i,a,c){if(c||arguments.length===2){for(var d=0,p=a.length,f;d<p;d++)if(f||!(d in a)){if(!f)f=Array.prototype.slice.call(a,0,d);f[d]=a[d]}}return i.concat(f||Array.prototype.slice.call(a))},Uo="diag",Ke=function(){function i(){function a(p){return function(){var f=[];for(var m=0;m<arguments.length;m++)f[m]=arguments[m];var h=Ne("diag");if(!h)return;return h[p].apply(h,Ko([],Fo(f),!1))}}var c=this,d=function(p,f){var m,h,b;if(f===void 0)f={logLevel:fe.INFO};if(p===c){var w=Error("Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation");return c.error((m=w.stack)!==null&&m!==void 0?m:w.message),!1}if(typeof f==="number")f={logLevel:f};var k=Ne("diag"),E=Fs((h=f.logLevel)!==null&&h!==void 0?h:fe.INFO,p);if(k&&!f.suppressOverrideMessage){var P=(b=Error().stack)!==null&&b!==void 0?b:"<failed to generate stacktrace>";k.warn("Current logger will be overwritten from "+P),E.warn("Current logger will overwrite one already registered from "+P)}return Je("diag",E,c,!0)};c.setLogger=d,c.disable=function(){et(Uo,c)},c.createComponentLogger=function(p){return new Ls(p)},c.verbose=a("verbose"),c.debug=a("debug"),c.info=a("info"),c.warn=a("warn"),c.error=a("error")}return i.instance=function(){if(!this._instance)this._instance=new i;return this._instance},i}();var $o=function(i,a){var c=typeof Symbol==="function"&&i[Symbol.iterator];if(!c)return i;var d=c.call(i),p,f=[],m;try{while((a===void 0||a-- >0)&&!(p=d.next()).done)f.push(p.value)}catch(h){m={error:h}}finally{try{if(p&&!p.done&&(c=d.return))c.call(d)}finally{if(m)throw m.error}}return f},jo=function(i){var a=typeof Symbol==="function"&&Symbol.iterator,c=a&&i[a],d=0;if(c)return c.call(i);if(i&&typeof i.length==="number")return{next:function(){if(i&&d>=i.length)i=void 0;return{value:i&&i[d++],done:!i}}};throw TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},Ks=function(){function i(a){this._entries=a?new Map(a):new Map}return i.prototype.getEntry=function(a){var c=this._entries.get(a);if(!c)return;return Object.assign({},c)},i.prototype.getAllEntries=function(){return Array.from(this._entries.entries()).map(function(a){var c=$o(a,2),d=c[0],p=c[1];return[d,p]})},i.prototype.setEntry=function(a,c){var d=new i(this._entries);return d._entries.set(a,c),d},i.prototype.removeEntry=function(a){var c=new i(this._entries);return c._entries.delete(a),c},i.prototype.removeEntries=function(){var a,c,d=[];for(var p=0;p<arguments.length;p++)d[p]=arguments[p];var f=new i(this._entries);try{for(var m=jo(d),h=m.next();!h.done;h=m.next()){var b=h.value;f._entries.delete(b)}}catch(w){a={error:w}}finally{try{if(h&&!h.done&&(c=m.return))c.call(m)}finally{if(a)throw a.error}}return f},i.prototype.clear=function(){return new i},i}();var Xl=Ke.instance();function Us(i){if(i===void 0)i={};return new Ks(new Map(Object.entries(i)))}function $s(i){return Symbol.for(i)}var Bo=function(){function i(a){var c=this;c._currentContext=a?new Map(a):new Map,c.getValue=function(d){return c._currentContext.get(d)},c.setValue=function(d,p){var f=new i(c._currentContext);return f._currentContext.set(d,p),f},c.deleteValue=function(d){var p=new i(c._currentContext);return p._currentContext.delete(d),p}}return i}(),js=new Bo;var Bs={get:function(i,a){if(i==null)return;return i[a]},keys:function(i){if(i==null)return[];return Object.keys(i)}},zs={set:function(i,a,c){if(i==null)return;i[a]=c}};var zo=function(i,a){var c=typeof Symbol==="function"&&i[Symbol.iterator];if(!c)return i;var d=c.call(i),p,f=[],m;try{while((a===void 0||a-- >0)&&!(p=d.next()).done)f.push(p.value)}catch(h){m={error:h}}finally{try{if(p&&!p.done&&(c=d.return))c.call(d)}finally{if(m)throw m.error}}return f},qo=function(i,a,c){if(c||arguments.length===2){for(var d=0,p=a.length,f;d<p;d++)if(f||!(d in a)){if(!f)f=Array.prototype.slice.call(a,0,d);f[d]=a[d]}}return i.concat(f||Array.prototype.slice.call(a))},qs=function(){function i(){}return i.prototype.active=function(){return js},i.prototype.with=function(a,c,d){var p=[];for(var f=3;f<arguments.length;f++)p[f-3]=arguments[f];return c.call.apply(c,qo([d],zo(p),!1))},i.prototype.bind=function(a,c){return c},i.prototype.enable=function(){return this},i.prototype.disable=function(){return this},i}();var Ho=function(i,a){var c=typeof Symbol==="function"&&i[Symbol.iterator];if(!c)return i;var d=c.call(i),p,f=[],m;try{while((a===void 0||a-- >0)&&!(p=d.next()).done)f.push(p.value)}catch(h){m={error:h}}finally{try{if(p&&!p.done&&(c=d.return))c.call(d)}finally{if(m)throw m.error}}return f},Go=function(i,a,c){if(c||arguments.length===2){for(var d=0,p=a.length,f;d<p;d++)if(f||!(d in a)){if(!f)f=Array.prototype.slice.call(a,0,d);f[d]=a[d]}}return i.concat(f||Array.prototype.slice.call(a))},wr="context",Wo=new qs,qt=function(){function i(){}return i.getInstance=function(){if(!this._instance)this._instance=new i;return this._instance},i.prototype.setGlobalContextManager=function(a){return Je(wr,a,Ke.instance())},i.prototype.active=function(){return this._getContextManager().active()},i.prototype.with=function(a,c,d){var p,f=[];for(var m=3;m<arguments.length;m++)f[m-3]=arguments[m];return(p=this._getContextManager()).with.apply(p,Go([a,c,d],Ho(f),!1))},i.prototype.bind=function(a,c){return this._getContextManager().bind(a,c)},i.prototype._getContextManager=function(){return Ne(wr)||Wo},i.prototype.disable=function(){this._getContextManager().disable(),et(wr,Ke.instance())},i}();var kr=qt.getInstance();var Hs=function(){function i(){}return i.prototype.inject=function(a,c){},i.prototype.extract=function(a,c){return a},i.prototype.fields=function(){return[]},i}();var Rr=$s("OpenTelemetry Baggage Key");function Ar(i){return i.getValue(Rr)||void 0}function Gs(){return Ar(qt.getInstance().active())}function Ws(i,a){return i.setValue(Rr,a)}function Qs(i){return i.deleteValue(Rr)}var Tr="propagation",Qo=new Hs,Vs=function(){function i(){this.createBaggage=Us,this.getBaggage=Ar,this.getActiveBaggage=Gs,this.setBaggage=Ws,this.deleteBaggage=Qs}return i.getInstance=function(){if(!this._instance)this._instance=new i;return this._instance},i.prototype.setGlobalPropagator=function(a){return Je(Tr,a,Ke.instance())},i.prototype.inject=function(a,c,d){if(d===void 0)d=zs;return this._getGlobalPropagator().inject(a,c,d)},i.prototype.extract=function(a,c,d){if(d===void 0)d=Bs;return this._getGlobalPropagator().extract(a,c,d)},i.prototype.fields=function(){return this._getGlobalPropagator().fields()},i.prototype.disable=function(){et(Tr,Ke.instance())},i.prototype._getGlobalPropagator=function(){return Ne(Tr)||Qo},i}();var Pr=Vs.getInstance();var Ys=600000,Gt=["SessionStart","Setup"];var Qt=60000,Xs=Ys,xc=Qt+Xs,Vo="startupHooksOpen",Yo=64;class Mr{clock;onRunning;limitMs;countedLeftMs;uncountedLeftMs;uncountedMs=0;counting=!0;armedAtMs=0;cancelTimer;rejectExpired;followed=new Set;unfollowedOpen=0;reportedEvents=new Set;reported=0;constructor(i,a=ce,c){this.clock=a;this.onRunning=c;this.limitMs=i??Qt,this.countedLeftMs=this.limitMs,this.uncountedLeftMs=i==null?Xs:0}race(i){let a=new Promise((c,d)=>{this.rejectExpired=d});return this.arm(),Promise.race([i,a]).finally(()=>this.end())}note(i){if(this.rejectExpired===void 0||i.type!=="system")return;switch(i.subtype){case"hook_started":if(!Gt.includes(i.hook_event)||this.followed.has(i.hook_id))return;if(this.followed.size<Yo)this.followed.add(i.hook_id);else this.unfollowedOpen++;if(this.reportedEvents.add(i.hook_event),this.reported++,this.counting&&this.uncountedLeftMs>0)this.countedLeftMs=Math.max(0,this.countedLeftMs-this.armedForMs()),this.counting=!1,this.arm();this.onRunning?.(this.open());return;case"hook_response":if(!this.followed.delete(i.hook_id)){if(this.unfollowedOpen===0||!Gt.includes(i.hook_event))return;this.unfollowedOpen--}if(!this.counting)this.countAgain();this.onRunning?.(this.open());return;default:return}}open(){return this.followed.size+this.unfollowedOpen}armedForMs(){return this.clock.monotonicNow()-this.armedAtMs}arm(){if(this.cancelTimer?.(),this.armedAtMs=this.clock.monotonicNow(),!this.counting){this.cancelTimer=this.clock.setTimeout(()=>this.countAgain(),this.uncountedLeftMs);return}let i=Math.min(this.countedLeftMs,oe);this.cancelTimer=this.clock.setTimeout(()=>{if(this.countedLeftMs-=i,this.countedLeftMs>0)this.arm();else this.expire()},i)}countAgain(){let i=Math.min(Math.max(0,this.armedForMs()),this.uncountedLeftMs);this.uncountedLeftMs-=i,this.uncountedMs+=i,this.counting=this.open()===0||this.uncountedLeftMs<=0,this.arm()}expire(){let i=this.rejectExpired,a=`Subprocess initialization did not complete within ${this.limitMs}ms`,c=Gt.join(" or "),d=Math.round(this.uncountedMs/1000),p=this.open(),f=`${this.reported} ${[...this.reportedEvents].join(" and ")} ${K(this.reported,"hook")}`,m=[`${a}.`,...d>0?[`Not counted: ${d} ${K(d,"second")} in which Claude Code reported a ${c} hook running.`]:[],this.reported===0?`Claude Code did not answer the initialize request and reported no ${c} hook running. Slow plugins, MCP servers, hooks that Claude Code does not report, disks or network can each cause this.`:p===0?`Claude Code reported ${f}, which ${this.reported===1?"":"all "}finished, and then did not answer the initialize request. Slow plugins, MCP servers, hooks that Claude Code does not report, disks or network can each cause this.`:`Claude Code reported ${f}, ${this.reported===1?"which had not finished":p===this.reported?"none of which had finished":`${p} of which had not finished`}, and did not answer the initialize request. A hook that runs in the background counts as not finished until it ends. Check ${this.reported===1?"this hook":"these hooks"} first, then authentication and network connectivity.`],h=Object.assign(A(Error(m.join(" ")),{telemetryMessage:a,errorClass:"initialize_timeout"}),{[Vo]:p});this.end(),i?.(h)}end(){this.cancelTimer?.(),this.cancelTimer=void 0,this.rejectExpired=void 0}}import{copyFile as Xo,readFile as Zo,rm as Js,writeFile as en}from"fs/promises";import{homedir as Zs}from"os";import{join as xr}from"path";function tn(i){return{globalConfig:xr(i||Zs(),".claude.json"),userSettings:xr(i||xr(Zs(),".claude"),"settings.json")}}function Or(i,a,c,d){return i!==void 0&&a===c?{backend:i,key:d}:void 0}async function tt(i,a,c,d){if(d)return Jo(d,i,a,c);try{if(c)await en(a,c(await Zo(i)),{mode:384});else await Xo(i,a)}catch(p){if(r(p)===void 0)throw p;if(!g(p))await Js(a,{force:!0}).catch(()=>{}),e(`sessionStore resume: skipping ${i} (${r(p)})`)}}async function Jo({backend:i,key:a},c,d,p){let f=await i.read([a]);if(!f.ok){if(f.error.code==="InvalidArgument")throw new l(`sessionStore resume: invalid v5 key for ${c}: ${f.error.argument}${f.error.reason?` (${f.error.reason})`:""}`,"sessionStore resume: invalid v5 key (InvalidArgument from backend read)");e(`sessionStore resume: skipping ${c} (${f.error.code})`);return}let m=f.value.items[0];if(!m?.found)return;let h=Buffer.from(m.value);try{await en(d,p?p(h):h,{mode:384})}catch(b){if(r(b)===void 0)throw b;if(!g(b))await Js(d,{force:!0}).catch(()=>{}),e(`sessionStore resume: skipping ${c} (${r(b)})`)}}import{createHash as ei}from"crypto";import{homedir as Bc,userInfo as ti}from"os";var rn="-credentials";function sn(i=""){let a=process.env.CLAUDE_SECURESTORAGE_CONFIG_DIR,c=a!==void 0?!a:!process.env.CLAUDE_CONFIG_DIR,d=a!==void 0?a.normalize("NFC"):y(),p=c?"":`-${ei("sha256").update(d).digest("hex").substring(0,8)}`;return`Claude Code${Ft().OAUTH_FILE_SUFFIX}${i}${p}`}var ri=/^[a-zA-Z0-9._-]+$/;function nn(){if(process.platform==="win32")return"claude-code-user";let i;try{i=process.env.USER||ti().username}catch{i="claude-code-user"}if(!ri.test(i))return"claude-code-user";return i}class on{cache={data:null,cachedAt:0};generation=0;readInFlight=null;lastReadFailure=null;keychainHoldsItem=!1;lastKnown=null;legacyApiKeyPrefetch=null}var Wc=new s(()=>new on);function si(i,a){if(i==="bypassPermissions")return"canUseTool will not be invoked: permissionMode 'bypassPermissions' auto-approves every tool call (except explicit deny rules) before the callback is consulted. To gate every tool call, use a PreToolUse hook instead.";let c=a.filter((d)=>d.length>0&&!d.includes("("));if(c.length===0)return;return`canUseTool will not be invoked for: ${c.join(", ")}. Bare allowedTools entries auto-approve the whole tool before the callback is consulted. To gate every tool call, use a PreToolUse hook; or remove the bare names from allowedTools so they fall through to canUseTool. Allow rules from settings files can also shadow the callback but are not visible here.`}function an(i,a,c){if(!i)return;let d=si(a,c);if(d===void 0)return;process.emitWarning(d,{code:"CLAUDE_SDK_CAN_USE_TOOL_SHADOWED"})}process.env.NoDefaultCurrentDirectoryInExePath="1";var pi=["enabledPlugins","extraKnownMarketplaces","additionalMarketplaces"];function cn(i){let a;try{a=_(se(i.toString("utf8")))}catch{return i}if(!un(a))return i;let c=!1;for(let p of pi)if(Object.hasOwn(a,p))delete a[p],c=!0;let d=a.env;if(un(d)&&Object.hasOwn(d,"CLAUDE_CONFIG_DIR"))delete d.CLAUDE_CONFIG_DIR,c=!0;return c?n(a):i}function un(i){return i!==null&&typeof i==="object"&&!Array.isArray(i)}async function fi(i,a){if(!i)return;let c=i;try{let d=_(i);if(d?.claudeAiOauth?.refreshToken)delete d.claudeAiOauth.refreshToken,c=n(d)}catch{}await pn(a,c,{mode:384})}function mi(){if(process.platform!=="darwin")return Promise.resolve(void 0);let i=sn(rn);return new Promise((a)=>{ni("security",["find-generic-password","-a",nn(),"-w","-s",i],{encoding:"utf-8",timeout:5000,windowsHide:!0},(c,d)=>a(c?void 0:d.trim()||void 0))})}async function gn(i,a,c,d,p=60000,f){if(!L(a))return;let m=W(c,d),h=await T(i.load({projectKey:m,sessionId:a}),p,`SessionStore.load() timed out after ${p}ms for session ${a}`);if(!h||h.length===0)return;let b=Y(ci(),`claude-resume-${oi()}`);try{let w=Y(b,"projects",m);await Vt(w,{recursive:!0,mode:448});let k=Y(w,`${a}.jsonl`);await it(k,h);let E=d?.CLAUDE_CONFIG_DIR??process.env.CLAUDE_CONFIG_DIR,P=E??Y(Ct(),".claude"),D;try{D=await ai(Y(P,".credentials.json"),"utf-8")}catch(X){if(!g(X))throw X}if(!E&&!(d??process.env).ANTHROPIC_API_KEY&&!(d??process.env).CLAUDE_CODE_OAUTH_TOKEN)D=await mi()??D;await fi(D,Y(b,".credentials.json"));let R=tn(Ie("CLAUDE_CONFIG_DIR")),I=E||Ct(),q=Y(I,".claude.json");await tt(q,Y(b,".claude.json"),void 0,Or(f,q,R.globalConfig,ie.globalConfig())),await tt(Y(P,".config.json"),Y(b,".config.json"));for(let X of Nt)if(X)await tt(Y(I,`.claude${X}.json`),Y(b,`.claude${X}.json`));let B=Y(P,"settings.json");if(await tt(B,Y(b,"settings.json"),cn,Or(f,B,R.userSettings,ie.userSettings())),await tt(Y(P,"cowork_settings.json"),Y(b,"cowork_settings.json"),cn),i.listSubkeys)await gi(i,{projectKey:m,sessionId:a},Y(w,a),p);return b}catch(w){throw await Yt(b),w}}async function gi(i,a,c,d){let p=await T(i.listSubkeys({projectKey:a.projectKey,sessionId:a.sessionId}),d,`SessionStore.listSubkeys() timed out after ${d}ms for session ${a.sessionId}`);for(let f of p){let m=Et(c,f+".jsonl");if(!f||Dr(f)||f.split(/[\\/]/).includes("..")||!m.startsWith(c+ui)){e(`[SessionStore] skipping unsafe subpath from listSubkeys: ${f}`,{level:"warn"});continue}let h=await T(i.load({projectKey:a.projectKey,sessionId:a.sessionId,subpath:f}),d,`SessionStore.load() timed out after ${d}ms for session ${a.sessionId} subpath ${f}`);if(!h||h.length===0)continue;let b=[],w=[];for(let k of h)if(Ht(k))b.push(k);else w.push(k);if(w.length>0)await Vt(ln(m),{recursive:!0}),await it(m,w);if(b.length>0){let k=b.at(-1),E=Et(c,f+".meta.json");await Vt(ln(E),{recursive:!0});let{type:P,...D}=k;await pn(E,n(D),{mode:384})}}}function hn(i){let a=i?.accepted===!0&&(typeof i.directory!=="string"||!(fn.isAbsolute(i.directory)||mn.isAbsolute(i.directory)))?void 0:i;if(i!==void 0&&a===void 0)e("workspaceTrust ignored: accepted requires an absolute directory, as it exists where Claude Code runs",{level:"warn"});return a}var hi=["hooks","disableAllHooks","allowManagedHooksOnly","allowedHttpHookUrls","httpHookAllowedEnvVars"];function Ir(i,a){let{isSingleUserTurn:c,resumeConfigDir:d,deferSpawn:p,readsStartupMarks:f}=a,{systemPrompt:m,settings:h,managedSettings:b,settingSources:w,sandbox:k,...E}=i??{},P,D,R,I;if(m===void 0)P="";else if(typeof m==="string")P=m;else if(Array.isArray(m))P=m;else if(m.type==="custom")P=m.prompt,I=m.snapshot;else if(m.type==="preset")D=m.append,R=m.excludeDynamicSections,I=m.snapshot;process.env.CLAUDE_AGENT_SDK_VERSION="0.3.314";let{abortController:q=gt(),additionalDirectories:B=[],projectConfigRoot:X,agent:we,agents:H,allowedTools:j=[],betas:Me,canUseTool:Se,continue:_e,cwd:ge,debug:xe,debugFile:$e,disallowedTools:st=[],tools:ot,env:ye,executable:je=te()?"bun":"node",executableArgs:at=[],extraArgs:Be={},fallbackModel:Ae,enableFileCheckpointing:M,toolConfig:Te,forkSession:be,hooks:Fe,includeHookEvents:Ce,includePartialMessages:Ge,forwardSubagentText:ne,verbatimPrompts:ve=!1,onElicitation:U,onUserDialog:le,supportedDialogKinds:ee,perTaskStopAffordance:he,rapidFollowupPreempt:lt,workspaceTrust:Jt,persistSession:ut,sessionStore:Oe,sessionStoreFlush:yn,thinking:dt,effort:bn,maxThinkingTokens:er,maxTurns:Cn,maxBudgetUsd:En,taskBudget:vn,mcpServers:Lr,model:wn,outputFormat:Fr,permissionMode:kn,allowDangerouslySkipPermissions:Rn=!1,permissionPromptToolName:An,permissionPrompts:Tn,plugins:vt,pluginDelivery:tr="argv",getOAuthToken:Kr,getHostAuthToken:Ur,workload:$r,resume:jr,resumeSessionAt:Pn,resumeDropsTurn:Mn,sessionId:xn,skills:Br,stderr:On,strictMcpConfig:Dn}=E,zr=kn;if(Oe&&ut===!1)throw Error("sessionStore cannot be used with persistSession: false -- the storage adapter requires local writes to mirror from. Use CLAUDE_CONFIG_DIR=/tmp for ephemeral local writes with external mirroring.");ys({supportedDialogKinds:ee,onUserDialog:le});let In=hn(Jt);if(Oe&&_e&&!jr&&!Oe.listSessions)throw Error("Options.continue with sessionStore requires store.listSessions to be implemented");if(Oe&&M)throw Error("enableFileCheckpointing is not yet supported with sessionStore (backup blobs are not mirrored, so rewindFiles() fails after a store-backed resume).");if(Oe&&E.spawnClaudeCodeProcess)e("sessionStore with custom spawnClaudeCodeProcess: ensure the subprocess CLAUDE_CONFIG_DIR matches the parent (same path, same separators) or transcript_mirror frames will be dropped.",{level:"warn"});if(an(!!Se,zr??"default",j),tr!=="argv"&&tr!=="initialize")throw Error("Invalid pluginDelivery. Expected 'argv' or 'initialize'.");let qr=tr==="initialize"&&vt!==void 0&&vt.length>0,rr=E.pathToClaudeCodeExecutable;if(!rr){let J=di(import.meta.url),me=li(J),Pe=_s((Ve)=>me.resolve(Ve));if(!Pe)throw Error(`Native CLI binary for ${process.platform}-${process.arch} not found. Reinstall @anthropic-ai/claude-agent-sdk without --omit=optional, or set options.pathToClaudeCodeExecutable.`);rr=Pe}let Hr=Fr?.type==="json_schema"?Fr.schema:void 0,V=ye?{...ye}:{...process.env};if(!V.CLAUDE_CODE_ENTRYPOINT)V.CLAUDE_CODE_ENTRYPOINT="sdk-ts";if(!V.CLAUDE_AGENT_SDK_VERSION)V.CLAUDE_AGENT_SDK_VERSION="0.3.314";if(M)V.CLAUDE_CODE_ENABLE_SDK_FILE_CHECKPOINTING="true";if(!Object.keys(V).some((J)=>J.toUpperCase()==="CLAUDE_CODE_SDK_READS_SESSION_STATE"))V.CLAUDE_CODE_SDK_READS_SESSION_STATE="1";if(f&&!Object.keys(V).some((J)=>J.toUpperCase()==="CLAUDE_CODE_SDK_READS_STARTUP_MARKS"))V.CLAUDE_CODE_SDK_READS_STARTUP_MARKS="1";let sr=ue(V.CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS),Nn=Number.isFinite(sr)&&sr>=0?sr:Kt;if(Kr)V.CLAUDE_CODE_SDK_HAS_OAUTH_REFRESH="1";if(Ur)V.CLAUDE_CODE_SDK_HAS_HOST_AUTH_REFRESH="1";if(Te?.askUserQuestion?.previewFormat)V.CLAUDE_CODE_QUESTION_PREVIEW_FORMAT=Te.askUserQuestion.previewFormat;for(let[J,me]of[[Te?.askUserQuestion?.extendedQuestions,"CLAUDE_CODE_QUESTION_EXTENDED"],[Te?.askUserQuestion?.optionalDescriptions,"CLAUDE_CODE_QUESTION_OPTIONAL_DESCRIPTIONS"],[!1,"CLAUDE_CODE_AGENT_PROGRESS_SUMMARIES"]])if(J)V[me]="1";else if(!ye){for(let Pe of Object.keys(V))if(Pe.toUpperCase()===me)delete V[Pe]}let nr={};if(Pr.inject(kr.active(),nr),"traceparent"in nr){for(let J of["TRACEPARENT","TRACESTATE"])if(!(J in(ye??{})))delete V[J]}for(let[J,me]of Object.entries(nr)){let Pe=J.toUpperCase();if(!(Pe in(ye??{})))V[Pe]=me}let Gr={},Wr=new Map;if(Lr)for(let[J,me]of Object.entries(Lr))if(me.type==="sdk"&&me.instance)Wr.set(J,me);else Gr[J]=me;let pt;if(dt)switch(dt.type){case"adaptive":pt={type:"adaptive",display:dt.display};break;case"enabled":pt={type:"enabled",budgetTokens:dt.budgetTokens,display:dt.display};break;case"disabled":pt={type:"disabled"};break}else if(er!==void 0)pt=er===0?{type:"disabled"}:{type:"enabled",budgetTokens:er};if(d){if(V.CLAUDE_CONFIG_DIR=d,process.platform==="win32")V.CLAUDE_SECURESTORAGE_CONFIG_DIR=ye?.CLAUDE_SECURESTORAGE_CONFIG_DIR??process.env.CLAUDE_SECURESTORAGE_CONFIG_DIR??ye?.CLAUDE_CONFIG_DIR??process.env.CLAUDE_CONFIG_DIR??""}let Qr=new gr({abortController:q,additionalDirectories:B,projectConfigRoot:X,agent:we,betas:Me,cwd:ge,debug:xe,debugFile:$e,executable:je,executableArgs:at,extraArgs:$r?{...Be,workload:$r}:Be,pathToClaudeCodeExecutable:rr,env:V,forkSession:be,stderr:On,thinkingConfig:pt,effort:bn,maxTurns:Cn,maxBudgetUsd:En,taskBudget:vn,model:wn,fallbackModel:Ae,jsonSchema:Hr,permissionMode:zr,allowDangerouslySkipPermissions:Rn,permissionPromptToolName:An,permissionPrompts:Tn,continueConversation:Oe?void 0:_e,resume:jr,resumeSessionAt:Pn,resumeDropsTurn:Mn,sessionId:xn,settings:typeof h==="object"?n(h):h,managedSettings:b?n(b):void 0,settingSources:w,skills:Br,allowedTools:j,disallowedTools:st,tools:ot,mcpServers:Gr,strictMcpConfig:Dn,canUseTool:!!Se,hooks:!!Fe,includeHookEvents:Ce,includePartialMessages:Ge,persistSession:ut,sessionMirror:!!Oe,plugins:vt,pluginsViaInitialize:qr,sandbox:k,spawnClaudeCodeProcess:E.spawnClaudeCodeProcess,onProcessSpawned:i?.onProcessSpawned,deferSpawn:p}),Ln={systemPrompt:P,appendSystemPrompt:D,planModeInstructions:E.planModeInstructions,systemPromptSnapshot:I,appendSubagentSystemPrompt:E.appendSubagentSystemPrompt,toolAliases:E.toolAliases,codeRunningMcpTools:E.codeRunningMcpTools,excludeDynamicSections:R,agents:H,title:E.title,skills:Br,webSearchIsolationExemptMcpServers:E.webSearchIsolationExemptMcpServers,promptSuggestions:E.promptSuggestions,agentProgressSummaries:E.agentProgressSummaries,forwardSubagentText:ne,supportedDialogKinds:ee,perTaskStopAffordance:he,rapidFollowupPreempt:lt,forwardNestedSubagentToolCalls:i?.forwardNestedSubagentToolCalls,workspaceTrust:In,plugins:qr?vt:void 0,captureSdkMcpManifests:!Le("CLAUDE_AGENT_SDK_DISABLE_MCP_MANIFESTS")},or=new Bt(Qr,c,Se,Fe,q,Wr,Hr,Ln,U,Kr,Ur,le,ve,Nn);if(Oe){let J=()=>Y(V.CLAUDE_CONFIG_DIR??Y(Ct(),".claude"),"projects"),me=yn==="eager",Pe=new vr(async(Ve,ir)=>{let ft=ct(Ve,J());if(ft)await Oe.append(ft,ir);else e(`[SessionStore] dropping mirror frame: filePath ${Ve} is not under ${J()} -- subprocess CLAUDE_CONFIG_DIR likely differs from parent (custom spawnClaudeCodeProcess / container?)`,{level:"warn"})},{onError:(Ve,ir)=>{let ft=ct(Ve,J());if(ft)or.reportMirrorError(ft,ir.message)},maxPendingEntries:me?0:Cr,maxPendingBytes:me?0:Er});or.setTranscriptMirrorBatcher(Pe)}return{queryInstance:or,transport:Qr,abortController:q,processEnv:V,verbatimPrompts:ve}}function Nr(i,a,c,d){if(typeof a==="string")i.writeAfterInitialize(n({type:"user",session_id:"",message:{role:"user",content:[{type:"text",text:a}]},parent_tool_use_id:null,...d&&{client_composed:!0}})+`
`).catch((p)=>c.abort(p));else i.streamInput(a).catch((p)=>c.abort(p))}var Si=new Set(["EBUSY","EMFILE","ENFILE","ENOTEMPTY","EPERM"]);async function Yt(i){for(let a=0;;a++)try{return await dn(i,{recursive:!0,force:!0})}catch(c){if(a>=4||!Si.has(r(c)??""))return;await v((a+1)*100)}}function _i(i,a){i.waitForExit().catch(()=>{}).finally(()=>Yt(a))}function yi({prompt:i,options:a}){if((a?.resume||a?.continue)&&a?.sessionStore)return bi(i,a);let{queryInstance:c,abortController:d,verbatimPrompts:p}=Ir(a,{isSingleUserTurn:typeof i==="string"});return Nr(c,i,d,p),c}function bi(i,a){let{queryInstance:c,transport:d,abortController:p,processEnv:f,verbatimPrompts:m}=Ir({...a},{isSingleUserTurn:typeof i==="string",deferSpawn:!0}),h=Et(a.cwd??"."),b=a.sessionStore,w=a.loadTimeoutMs??60000,k=a.resume;return(async()=>{if(!k)k=(await T(b.listSessions(W(h,a.env)),w,`SessionStore.listSessions() timed out after ${w}ms`)).slice().sort((D,R)=>R.mtime-D.mtime)[0]?.sessionId;if(!k)return;return gn(b,k,h,a.env,a.loadTimeoutMs)})().then((P)=>{if(P){d.updateResume(k);let D={CLAUDE_CONFIG_DIR:P};if(process.platform==="win32"){let R=a.env?.CLAUDE_SECURESTORAGE_CONFIG_DIR??process.env.CLAUDE_SECURESTORAGE_CONFIG_DIR??a.env?.CLAUDE_CONFIG_DIR??process.env.CLAUDE_CONFIG_DIR??"";D.CLAUDE_SECURESTORAGE_CONFIG_DIR=R,f.CLAUDE_SECURESTORAGE_CONFIG_DIR=R}d.updateEnv(D),f.CLAUDE_CONFIG_DIR=P,c.addCleanupCallback(()=>_i(d,P))}if(!c.isClosed())d.spawn()}).catch((P)=>{let D=x(P);d.spawnAbort(D),c.setError(D)}),Nr(c,i,p,m),c}async function Ci(i={}){return(await Sn(i)).warm}async function Sn({options:i,initializeTimeoutMs:a}){let c,d=i?.resume;if((d||i?.continue)&&i?.sessionStore){let h=Et(i.cwd??".");if(!d){if(!i.sessionStore.listSessions)throw Error("Options.continue with sessionStore requires store.listSessions to be implemented");let b=i.loadTimeoutMs??60000;d=(await T(i.sessionStore.listSessions(W(h,i.env)),b,`SessionStore.listSessions() timed out after ${b}ms`)).slice().sort((k,E)=>E.mtime-k.mtime)[0]?.sessionId}if(d)c=await gn(i.sessionStore,d,h,i.env,i.loadTimeoutMs)}let p,f,m;try{let I=function(){if(R)return;R=!0,E.close()},h=Ir(c&&d&&d!==i?.resume?{...i,resume:d}:i,{isSingleUserTurn:!1,resumeConfigDir:c,readsStartupMarks:!0});p=h.queryInstance;let{transport:b,abortController:w,verbatimPrompts:k}=h;f=b;let E=h.queryInstance;if(c){let B=c;E.addCleanupCallback(()=>{m=b.waitForExit().catch(()=>{}).then(()=>Yt(B))})}let D=new Mr(a,ce,i?.onStartupHooksRunning);E.setFrameObserver((B)=>{if(D.note(B),B.type==="system"&&B.subtype==="hook_progress")E.dropUnreadHookProgress(B.hook_id)});try{await D.race(E.initializationResult())}catch(B){if(B instanceof Error&&"errorClass"in B&&B.errorClass==="initialize_timeout"&&Object.isExtensible(B)){let X=E.startupMarkReached();Object.assign(B,{[Cs]:X?.mark??"none",...X&&{[Es]:X.ageMs}})}throw B}finally{E.setFrameObserver(void 0)}let R=!1;return{warm:{query(B){if(R)throw Error("WarmQuery.query() can only be called once");R=!0;try{Nr(E,B,w,k)}catch(X){throw E.close(),X}if(typeof B==="string")E.setIsSingleUserTurn(!0);return E},close:I,async[Symbol.asyncDispose](){R=!0,E.close(),await m}},query:E,transport:b}}catch(h){if(p?.close(),c&&!m){let b=f;m=(b?b.waitForExit().catch(()=>{}):Promise.resolve()).then(()=>Yt(c))}throw await m,h}}async function Ei({options:i,initializeTimeoutMs:a}={}){if(i?.resume||i?.continue||i?.forkSession)throw Error("prewarm(): resume/continue/forkSession describe a session; a spare has none — pass them to query() instead");let c=i?.cwd===void 0,d;if(i?.cwd!==void 0)d=i.cwd;else{let H=i?.env,j=H?.CLAUDE_CONFIG_DIR?.trim(),Me=H?.HOME?.trim(),Se=H===void 0?y():j||Y(Me||Ct(),".claude"),_e=Dr(Se)?Se:Y(Ct(),".claude");if(!Dr(_e))throw Error("prewarm(): no absolute config home to park the spare under (neither CLAUDE_CONFIG_DIR nor HOME gives an absolute path); set one of them to an absolute path or pass options.cwd");let ge=Y(_e,"spares");await Vt(ge,{recursive:!0,mode:448}),d=await ii(Y(ge,"spare-"))}function p(){return c?dn(d,{recursive:!0,force:!0}).catch(()=>{}):Promise.resolve()}let{workspaceTrust:f,...m}=i??{};if(f!==void 0)e("prewarm(): workspaceTrust is a per-session attestation — pass it to claim(); not sent to the spare",{level:"warn"});let{warm:h,query:b,transport:w}=await re("sdk_prewarm",async()=>{try{return await Sn({options:{...m,cwd:d,extraArgs:{...m.extraArgs,"await-claim":null}},initializeTimeoutMs:a??Qt})}catch(H){throw await p(),H}}),k=Object.entries(i?.mcpServers??{}).filter(([,H])=>H.type==="sdk").map(([H])=>H),E;function P(){return E??=w.waitForExit().catch(()=>{}).then(p),E}let D=!1,R=!1,I=!1,q,B=new Promise((H,j)=>{q={resolve:H,reject:j}});B.catch(()=>{});let X=w.waitForExit().then(()=>{return},()=>{return});X.then(()=>{if(!D)I=!0,q.reject(Error("spare_exited: the spare process exited before it was claimed")),P()});let we={claimed:B,exited:X,claim({prompt:H,options:j}){if(D)throw Error("SpareProcess.claim() can only be called once");if(R||I)throw Error("SpareProcess.claim(): the spare was closed or has exited; start the session with query()");let Me=hi.filter((ne)=>j.settings?.[ne]!==void 0);if(Me.length>0)throw new l(`SpareProcess.claim(): hook settings (${Me.join(", ")}) cannot be applied at claim; pass them to prewarm() in Options.settings, where they are in force before any hook, as on a cold start. Nothing was sent: this spare can still be claimed without them.`,"SpareProcess.claim(): hook settings cannot be applied at claim");let Se=typeof j.cwd==="string"&&j.cwd.trim()!==""&&!fn.isAbsolute(j.cwd)&&!mn.isAbsolute(j.cwd)&&j.cwd!=="~"&&!j.cwd.startsWith("~/")?Et(j.cwd):j.cwd;D=!0;let _e=hn(j.workspaceTrust),ge=j.settings,xe=t(ge),{model:$e,agent:st,fastMode:ot,permissions:ye,availableModels:je,disableAutoMode:at,...Be}=xe?ge:{},Ae={model:$e,agent:st,fastMode:ot,permissions:ye,availableModels:je,disableAutoMode:at},M=ge!==void 0&&(!xe||Object.keys(Be).length>0)?b.applyFlagSettings(xe?Be:ge):void 0,Te=b.claimSession({cwd:Se,...j.permissionMode!==void 0&&{permission_mode:j.permissionMode},...j.env&&{env:j.env},...j.additionalDirectories&&{additional_directories:j.additionalDirectories},...j.appendSystemPrompt!==void 0&&{append_system_prompt:j.appendSystemPrompt},...j.title!==void 0&&{title:j.title},...j.agents&&{agents:j.agents},..._e?.accepted===!0&&{workspace_trust:_e},sdk_mcp_servers:k}),be=[];if(j.model!==void 0)be.push(["model",b.setModel(j.model)]);if(j.maxThinkingTokens!==void 0)be.push(["maxThinkingTokens",b.setMaxThinkingTokens(j.maxThinkingTokens)]);let Fe=Object.values(Ae).some((ne)=>ne!==void 0)?b.applyFlagSettings(Ae):void 0,Ce=ge!==void 0?Promise.all([M,Fe]):void 0;if(Ce!==void 0)be.push(["settings",Ce]);for(let[,ne]of be)ne.catch(()=>{});function Ge(){w.endInput(),P()}if(Te.then(async(ne)=>{p();let ve={cwd:ne.cwd??Se,sessionId:ne.session_id,parkedMs:ne.parked_ms,sdkMcpSettled:ne.sdk_mcp_settled},U=await Promise.allSettled(be.map(([,he])=>he)),le=U.flatMap((he,lt)=>he.status==="rejected"?[`${String(be[lt][0])}: ${u(he.reason)}`]:[]),ee=Ce===void 0?void 0:U[be.findIndex(([he])=>he==="settings")];if(ee?.status==="rejected")R=!0,b.close(),q.reject(Object.assign(new l(`settings_not_applied: ${u(ee.reason)} — the prompt was not sent and the process was closed; start the session with query()`,"settings_not_applied"),{claim:ve}));else if(le.length>0)q.reject(Object.assign(new l(`option_not_applied: ${le.join("; ")} — the prompt was sent and the session runs without these options`,"option_not_applied"),{claim:ve}));else q.resolve(ve)},(ne)=>{Ge(),q.reject(ne)}),Ce===void 0)return h.query(H);return Promise.all([Te,Ce]).then(()=>{if(R)return;try{h.query(H)}catch{}},()=>{}),b},close(){if(R)return;if(R=!0,D)b.close();else h.close(),q.reject(Error("spare_closed: the spare was closed before it was claimed"));P()},async[Symbol.asyncDispose](){we.close(),await P()}};return we}async function vi(i,a,c){let d=await import("./core-kzw924e6.mjs");return d.renameSession(i,a,c)}async function wi(i,a,c){let d=await import("./core-kzw924e6.mjs");return d.tagSession(i,a,c)}async function ki(i,a){let c=await import("./core-kzw924e6.mjs");return c.deleteSession(i,a)}import{McpServer as Ri}from"@modelcontextprotocol/sdk/server/mcp.js";import{normalizeObjectSchema as Ai}from"@modelcontextprotocol/sdk/server/zod-compat.js";import{toJsonSchemaCompat as Ti}from"@modelcontextprotocol/sdk/server/zod-json-schema-compat.js";import{globalRegistry as _n}from"zod/v4";import{version as Ue}from"zod/v4/core";function Pi(i,a,c,d,p){let f={};if(p?.searchHint)f["anthropic/searchHint"]=p.searchHint;if(p?.alwaysLoad)f["anthropic/alwaysLoad"]=!0;return{name:i,description:a,inputSchema:c,handler:d,annotations:p?.annotations,_meta:Object.keys(f).length>0?f:void 0}}var Mi="CLAUDE_SDK_MCP_TOOL_SCHEMA_UNCONVERTIBLE";function xi(i){let a=new Ri({name:i.name,version:i.version??"1.0.0"},{capabilities:{tools:i.tools?{}:void 0},instructions:i.instructions});if(i.tools)i.tools.forEach((d)=>{let p=d.inputSchema;if(Di(d.inputSchema)){let k=[];for(let[E,P]of Object.entries(d.inputSchema)){if(!Zt(P)){k.push([E,P]);continue}let D=Ii(P),R=P.description;if(R&&!_n.has(D))_n.add(D,{description:R});k.push([E,D])}p=Object.fromEntries(k)}let f=a.registerTool(d.name,{description:d.description,inputSchema:p,annotations:d.annotations,_meta:i.alwaysLoad?{"anthropic/alwaysLoad":!0,...d._meta}:d._meta},d.handler);if(!Object.getOwnPropertyDescriptor(f,"enabled")?.configurable||!Object.isExtensible(f))return;let h=f.enabled,b,w;Object.defineProperty(f,"enabled",{configurable:!0,enumerable:!0,get(){if(!h||b===f.inputSchema)return h;try{let k=Ai(f.inputSchema);if(k)Ti(k,{strictUnions:!0,pipeStrategy:"input"});return b=f.inputSchema,!0}catch(k){if(w!==f.inputSchema){w=f.inputSchema;let E=At(u(k),"."),P=[`Tool "${d.name}" on SDK MCP server "${i.name}" was left out of the server's tool list, because its input schema cannot be converted to JSON Schema${E?`: ${E}`:""}. The server's other tools are unaffected.`,...Oi(d.inputSchema,k)].join(" ");if(typeof process<"u"&&typeof process.emitWarning==="function")process.emitWarning(P,{code:Mi});else console.warn(P)}return!1}},set(k){h=k}})});let c=He(i.timeout);return{type:"sdk",name:i.name,instance:a,...c!==void 0&&{timeout:c}}}function Oi(i,a){if(a instanceof ReferenceError)return["Something this tool's schema reads, such as a z.lazy target or a default value, is not defined yet. Define every schema this tool uses before passing the server to query(), startup() or setMcpServers(). A zod 4 z.lazy whose function has thrown once stays broken, so create the schema, its tool and the server again to get the tool back."];let p=`${Ue.major}.${Ue.minor}.${Ue.patch}`,f=Object.values(i).filter(Zt).map((E)=>E._zod?.version).find((E)=>typeof E?.major==="number"&&(E.major!==Ue.major||E.minor!==Ue.minor||E.patch!==Ue.patch)),m=f&&`this tool's schema was built with zod ${f.major}.${f.minor}.${f.patch}, and this SDK converts schemas with its own zod ${p}`,h=`${Ue.major}.${Ue.minor}`;if(!(a instanceof TypeError)){let E=["Change this tool's schema so that every field can be converted."];if(m)E.push(`A different zod version can also cause this: ${m}, so building the schema with zod ${h} may fix it.`);return E}let b="a schema this tool uses is not defined yet, or a zod 3 schema is nested inside a zod 4 one. Define every schema this tool uses before passing the server to query(), startup() or setMcpServers(). Build the whole schema with zod 3 or with zod 4, not a mix of the two. A zod 4 z.lazy whose function has thrown once stays broken, so create the schema, its tool and the server again to get the tool back.";if(!f)return[`This can mean ${b}`];let w=[`The zod versions differ: ${m}. Conversion can fail across versions, so build the schema with zod ${h}, or use an SDK release that bundles your zod version.`],k=f.major===4&&f.minor<=3;if(k)w.push(`On zod ${f.major}.${f.minor}, a z.record given only one argument also causes this; pass both, as in z.record(keySchema, valueSchema).`);return w.push(`If ${k?"neither is the cause":"the version difference is not the cause"}, it can mean ${b}`),w}function Zt(i){return typeof i==="object"&&i!==null&&"_zod"in i}function Di(i){return typeof i==="object"&&i!==null&&!("_zod"in i)&&!("_def"in i)&&typeof i.parse!=="function"}function Ii(i){if(!(Ni(i)?!Qe(i,!0):Xt(i)&&!Qe(i,!1))||i._zod.optin!=="optional"||i._zod.optout!=="optional"||typeof i.clone!=="function")return i;let c=i.clone();return c._zod.optin="defaulted",c}function Ni(i){let a=i._zod.version;return a?.major===4&&a.minor<5}function Qe(i,a,c=new Set){if(!Zt(i)||c.has(i))return!1;c.add(i);let d=i._zod.def;switch(d.type){case"lazy":return!0;case"optional":return!a&&Qe(d.innerType,a,c);case"nullable":case"catch":case"readonly":return Qe(d.innerType,a,c);case"pipe":return Qe(d.in,a,c)||Qe(d.out,a,c);case"union":return d.options?.some((p)=>Qe(p,a,c))??!1;default:return!1}}function Xt(i,a=new Set){if(!Zt(i)||a.has(i))return!1;a.add(i);let c=i._zod.def;switch(c.type){case"default":case"prefault":return!0;case"optional":case"nullable":case"catch":case"readonly":return Xt(c.innerType,a);case"pipe":return Xt(c.in,a);case"union":return c.options?.some((d)=>Xt(d,a))??!1;default:return!1}}async function Li(i){let{resolveSettingsForSdk:a}=await import("./core-t4mxrz5y.mjs");return a(i)}var Fi=new Set(["bypassPermissions","auto","acceptEdits"]),Ki=new Set(["project"]),Ui=new Set(["project","local"]);function $i(i){let a=i.effective.permissions?.defaultMode;if(!a||!Fi.has(a))return i.effective;for(let c=i.sources.length-1;c>=0;c--){let d=i.sources[c];if(d.settings.permissions?.defaultMode!==void 0){if((jt.includes(a)?Ui:Ki).has(d.source)){let{defaultMode:f,...m}=i.effective.permissions??{};return{...i.effective,permissions:m}}return i.effective}}return i.effective}export{Z as AbortError,xt as BUILTIN_TOOL_NAMES,zt as EXIT_REASONS,N as HOOK_EVENTS,Re as LEGACY_TOOL_NAME_ALIASES,Tt as ORG_POLICY_LIMIT_PREFIXES,Wt as SYSTEM_PROMPT_DYNAMIC_BOUNDARY,Ot as USAGE_LIMIT_ERROR_PREFIXES,kt as USAGE_TRANSITION_PREFIXES,wt as USAGE_WARNING_PREFIXES,xi as createSdkMcpServer,ki as deleteSession,$i as filterEscalatingDefaultMode,Ei as prewarm,yi as query,vi as renameSession,Li as resolveSettings,Ci as startup,wi as tagSession,Pi as tool};