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