| 7834 | `,isMeta:!0}),...q]}async function rgK(q,K){if(j16())return;let[{tools:_},z,Y,$]=await Promise.all([Ua6(q),gD(K),bO(),tw()]),A=$.gitStatus?.length??0,O=Y.claudeMd?.length??0,w=A+O,j=Z8(),H=aL6(K),J=oL6(H,j),M=await FG8(j,AbortSignal.timeout(1000),J),X=0,P=0,W=0,D=0,f=0,G=z.filter((T)=>!T.isMcp);X=_.length,D=G.length;let Z=new Set;for(let T of _){let v=T.name.split("__");if(v.length>=3&&v[1])Z.add(v[1])}P=Z.size;for(let T of _){let v="inputJSONSchema"in T&&T.inputJSONSchema?T.inputJSONSchema:ua(T.inputSchema);W+=E3(g6(v))}for(let T of G){let v="inputJSONSchema"in T&&T.inputJSONSchema?T.inputJSONSchema:ua(T.inputSchema);f+=E3(g6(v))}d("tengu_context_size",{git_status_size:A,claude_md_size:O,total_context_size:w,project_file_count_rounded:M,mcp_tools_count:X,mcp_servers_count:P,mcp_tools_tokens:W,non_mcp_tools_count:D,non_mcp_tools_tokens:f})}function zZK(q,K,_){switch(q.name){case kX:{let z=mX(_),Y=nP(_);return fx8(),z!==null?{...K,plan:z,planFilePath:Y}:K}case R4.name:{let z=R4.inputSchema.parse(K),{command:Y,timeout:$,description:A}=z,O=Z8(),w=Y.replace(`cd ${O} && `,"");if(Z1()==="windows")w=w.replace(`cd ${ff(O)} && `,"");if(w=w.replace(/\\\\;/g,"\\;"),/^echo\s+["']?[^|&;><]*["']?$/i.test(w.trim()))d("tengu_bash_tool_simple_echo",{});let j="run_in_background"in z?z.run_in_background:void 0;return{command:w,description:A,...$!==void 0&&{timeout:$},...A!==void 0&&{description:A},...j!==void 0&&{run_in_background:j},..."dangerouslyDisableSandbox"in z&&z.dangerouslyDisableSandbox!==void 0&&{dangerouslyDisableSandbox:z.dangerouslyDisableSandbox}}}case UX.name:{let z=UX.inputSchema.parse(K),{file_path:Y,edits:$}=g$K({file_path:z.file_path,edits:[{old_string:z.old_string,new_string:z.new_string,replace_all:z.replace_all}]});return{replace_all:$[0].replace_all,file_path:Y,old_string:$[0].old_string,new_string:$[0].new_string}}case QX.name:{let z=QX.inputSchema.parse(K),Y=/\.(md|mdx)$/i.test(z.file_path);return{file_path:z.file_path,content:Y?z.content:Ls1(z.content)}}case ak:{let z=K,Y=z.task_id??z.agentId??z.bash_id,$=z.timeout??(typeof z.wait_up_to==="number"?z.wait_up_to*1000:void 0);return{task_id:Y??"",block:z.block??!0,timeout:$??30000}}default:return K}}function YZK(q,K){switch(q.name){case kX:{if(K&&typeof K==="object"&&(("plan"in K)||("planFilePath"in K))){let{plan:_,planFilePath:z,...Y}=K;return Y}return K}case UX.name:{if(K&&typeof K==="object"&&"edits"in K){let{old_string:_,new_string:z,replace_all:Y,...$}=K;return $}return K}default:return K}}var xSY,ngK=!1;var fH6=y(()=>{rL();jN();H16();o1();k8();PD();p0();LK6();Uj6();ka();BD();pf8();ON();Z$();i$();HG();I7();_8();m8();i1();Az();Tz();SJ();vK();KC();l8();VD8();NB();dp8();xSY={[kX]:["launchSwarm","teammateCount"],[v4]:["name","team_name","mode"]}});import{createHash as mSY}from"crypto";function BSY(q){let K=q.find((z)=>z.type==="user");if(!K)return"";let _=K.message.content;if(typeof _==="string")return _;if(Array.isArray(_)){let z=_.find((Y)=>Y.type==="text");if(z&&z.type==="text")return z.text}return""}function k_7(q,K){let z=[4,7,20].map((A)=>q[A]||"0").join(""),Y=`${pSY}${z}${K}`;return mSY("sha256").update(Y).digest("hex").slice(0,3)}function ogK(q){let K=BSY(q);return k_7(K,{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION)}var pSY="59cf53e54c78";var V_7=()=>{};function tgK(q){let{hasThinking:K=!1,isRedactThinkingActive:_=!1,clearAllThinking:z=!1}=q??{},Y=[];if(K&&!_)Y.push({type:"clear_thinking_20251015",keep:z?{type:"thinking_turns",value:1}:"all"});return Y.length>0?{edits:Y}:void 0}var agK=180000,sgK=40000,gSY,FSY;var egK=y(()=>{IY();E2();qM();NO6();Hr();m8();gSY=[...jr,i9,n3,Cq,Sj,$N],FSY=[X4,tK,nW]});function N_7(q,K){let _=-1;for(let z=0;z<q.length;z++){let Y=q[z];if(Y&&typeof Y==="object"&&"type"in Y&&Y.type==="tool_result")_=z}if(_>=0){let z=_+1;if(q.splice(z,0,K),z===q.length-1)q.push({type:"text",text:"."})}else{let z=Math.max(0,q.length-1);q.splice(z,0,K)}}import{randomUUID as IQ8}from"crypto";function np8(q){let K=process.env.CLAUDE_CODE_EXTRA_BODY,_={};if(K)try{let z=m5(K);if(z&&typeof z==="object"&&!Array.isArray(z))_={...z};else N(`CLAUDE_CODE_EXTRA_BODY env var must be a JSON object, but was given ${K}`,{level:"error"})}catch(z){N(`Error parsing CLAUDE_CODE_EXTRA_BODY: ${d6(z)}`,{level:"error"})}if(q&&q.length>0)if(_.anthropic_beta&&Array.isArray(_.anthropic_beta)){let z=_.anthropic_beta,Y=q.filter(($)=>!z.includes($));_.anthropic_beta=[...z,...Y]}else _.anthropic_beta=q;return _}function qFK(q){if(i6(process.env.DISABLE_PROMPT_CACHING))return!1;if(i6(process.env.DISABLE_PROMPT_CACHING_HAIKU)){let K=PH();if(q===K)return!1}if(i6(process.env.DISABLE_PROMPT_CACHING_SONNET)){let K=Av();if(q===K)return!1}if(i6(process.env.DISABLE_PROMPT_CACHING_OPUS)){let K=NV();if(q===K)return!1}return!0}function pU({scope:q,querySource:K}={}){return{type:"ephemeral",...QSY(K)&&{ttl:"1h"},...q==="global"&&{scope:q}}}function QSY(q){if(E7()==="bedrock"&&i6(process.env.ENABLE_PROMPT_CACHING_1H_BEDROCK))return!0;let K=ti8();if(K===null)K=d7()&&!WN.isUsingOverage,ei8(K);if(!K)return!1;let _=ai8();if(_===null)_=g8("tengu_prompt_cache_1h_config",{}).allowlist??[],si8(_);return q!==void 0&&_.some((z)=>z.endsWith("*")?q.startsWith(z.slice(0,-1)):q===z)}function dSY(q,K,_,z,Y){if(!fL(Y)||"effort"in K)return;if(q===void 0)z.push(EX1);else if(typeof q==="string")K.effort=q,z.push(EX1)}function cSY(q,K,_){if(!q||"task_budget"in K||!q16())return;if(K.task_budget={type:"tokens",total:q.total,...q.remaining!==void 0&&{remaining:q.remaining}},!_.includes(LX1))_.push(LX1)}function Pq6(){let q={},K=process.env.CLAUDE_CODE_EXTRA_METADATA;if(K){let _=m5(K,!1);if(_&&typeof _==="object"&&!Array.isArray(_))q=_;else N(`CLAUDE_CODE_EXTRA_METADATA env var must be a JSON object, but was given ${K}`,{level:"error"})}return{user_id:g6({...q,device_id:CS(),account_uuid:B_()?.accountUuid??"",session_id:N8()})}}async function zFK(q,K){if(K)return!0;try{let _=PH(),z=qL(_);return await Vy4(dk8(()=>eE({apiKey:q,maxRetries:3,model:_,source:"verify_api_key"}),async(Y)=>{let $=[{role:"user",content:"test"}];return await Y.beta.messages.create({model:_,max_tokens:1,messages:$,temperature:1,...z.length>0&&{betas:z},metadata:Pq6(),...np8()}),!0},{maxRetries:2,model:_,thinkingConfig:{type:"disabled"}}))}catch(_){let z=_;if(_ instanceof Uu)z=_.originalError;if(H6(z),z instanceof Error&&z.message.includes('{"type":"error","error":{"type":"authentication_error","message":"invalid x-api-key"}}'))return!1;throw z}}function lSY(q,K=!1,_,z){if(K)if(typeof q.message.content==="string")return{role:"user",content:[{type:"text",text:q.message.content,..._&&{cache_control:pU({querySource:z})}}]};else return{role:"user",content:q.message.content.map((Y,$)=>({...Y,...$===q.message.content.length-1?_?{cache_control:pU({querySource:z})}:{}:{}}))};return{role:"user",content:Array.isArray(q.message.content)?[...q.message.content]:q.message.content}}function nSY(q,K=!1,_,z){if(K)if(typeof q.message.content==="string")return{role:"assistant",content:[{type:"text",text:q.message.content,..._&&{cache_control:pU({querySource:z})}}]};else return{role:"assistant",content:q.message.content.map((Y,$)=>({...Y,...$===q.message.content.length-1&&Y.type!=="thinking"&&Y.type!=="redacted_thinking"?_?{cache_control:pU({querySource:z})}:{}:{}}))};return{role:"assistant",content:q.message.content}}async function Ed({messages:q,systemPrompt:K,thinkingConfig:_,tools:z,signal:Y,options:$}){let A;for await(let O of e87(q,async function*(){yield*YFK(q,K,_,z,Y,$)}))if(O.type==="assistant")A=O;if(!A){if(Y.aborted)throw new V_;throw Error("No assistant message found")}return A}async function*fR6({messages:q,systemPrompt:K,thinkingConfig:_,tools:z,signal:Y,options:$}){return yield*e87(q,async function*(){yield*YFK(q,K,_,z,Y,$)})}function iSY(q){if(!("isLsp"in q)||!q.isLsp)return!1;let K=WL6();return K.status==="pending"||K.status==="not-started"}function rSY(){let q=parseInt(process.env.API_TIMEOUT_MS||"",10);if(q)return q;return i6(process.env.CLAUDE_CODE_REMOTE)?120000:300000}async function*KFK(q,K,_,z,Y,$){let A=rSY(),O=dk8(()=>eE({maxRetries:0,model:q.model,fetchOverride:q.fetchOverride,source:q.source}),async(j,H,J)=>{let M=Date.now(),X=_(J);Y(X),z(H,M,X.max_tokens);let P=_CY(X,KCY);try{return await j.beta.messages.create({...P,model:uf(P.model)},{signal:K.signal,timeout:A})}catch(W){if(W instanceof V_)throw W;throw c8("error","cli_nonstreaming_fallback_error"),d("tengu_nonstreaming_fallback_error",{model:q.model,error:W instanceof Error?W.name:"unknown",attempt:H,timeout_ms:A,request_id:$??"unknown"}),W}},{model:K.model,fallbackModel:K.fallbackModel,thinkingConfig:K.thinkingConfig,...BK()&&{fastMode:K.fastMode},signal:K.signal,initialConsecutive529Errors:K.initialConsecutive529Errors,querySource:K.querySource}),w;do if(w=await O.next(),!w.done&&w.value.type==="system")yield w.value;while(!w.done);return w.value}function oSY(q){for(let K=q.length-1;K>=0;K--){let _=q[K];if(_.type==="assistant"&&_.requestId)return _.requestId}return}function uQ8(q){return q.type==="image"||q.type==="document"}function _FK(q){return q.type==="tool_result"}function aSY(q,K){let _=0;for(let z of q){if(!Array.isArray(z.message.content))continue;for(let Y of z.message.content){if(uQ8(Y))_++;if(_FK(Y)&&Array.isArray(Y.content)){for(let $ of Y.content)if(uQ8($))_++}}}if(_-=K,_<=0)return q;return q.map((z)=>{if(_<=0)return z;let Y=z.message.content;if(!Array.isArray(Y))return z;let $=_,A=Y.map((O)=>{if(_<=0||!_FK(O)||!Array.isArray(O.content))return O;let w=O.content.filter((j)=>{if(_>0&&uQ8(j))return _--,!1;return!0});return w.length===O.content.length?O:{...O,content:w}}).filter((O)=>{if(_>0&&uQ8(O))return _--,!1;return!0});return $===_?z:{...z,message:{...z.message,content:A}}})}async function*YFK(q,K,_,z,Y,$){if(!d7()&&Uz6($.model)&&(await gS("tengu-off-switch",{activated:!1})).activated){d("tengu_off_switch_query",{}),yield bB8(Error(Aj6),$.model);return}let A=oSY(q),O=E7()==="bedrock"&&$.model.includes("application-inference-profile")?await eH8($.model)??$.model:$.model;g3("query_tool_schema_build_start");let w=$.querySource.startsWith("repl_main_thread")||$.querySource.startsWith("agent:")||$.querySource==="sdk"||$.querySource==="hook_agent"||$.querySource==="verification_agent",j=OD8($.model,{isAgenticQuery:w});if(UU())j.push(hX1);let H;if(w&&UU()){let x6=$.advisorModel,b6=Zx4();if(b6!==void 0){if(uf(b6.baseModel)===uf($.model))x6=b6.advisorModel}if(x6){let Q6=uf(A5(x6));if(!nw6($.model))N(`[AdvisorTool] Skipping advisor - base model ${$.model} does not support advisor`);else if(!QN6(Q6))N(`[AdvisorTool] Skipping advisor - ${Q6} is not a valid advisor model`);else H=Q6,N(`[AdvisorTool] Server-side tool enabled with ${H} as the advisor model`)}}let J=await W18($.model,z,$.getToolPermissionContext,$.agents,"query"),M=new Set;if(J){for(let x6 of z)if(yC(x6))M.add(x6.name)}if(J&&M.size===0&&!$.hasPendingMcpServers)N("Tool search disabled: no deferred tools available to search"),J=!1;let X;if(J){let x6=iQ(q);X=z.filter((b6)=>{if(!M.has(b6.name))return!0;if(g_(b6,CP))return!0;return x6.has(b6.name)})}else X=z.filter((x6)=>!g_(x6,CP));let P=J?eSq():null;if(P&&E7()!=="bedrock"){if(!j.includes(P))j.push(P)}let W=!1,D="",f=fG6(),G=(x6)=>J&&(M.has(x6.name)||iSY(x6)),Z=f&&X.some((x6)=>x6.isMcp===!0&&!G(x6));if(f&&!j.includes(pF6))j.push(pF6);let T=f?Z?"none":"system_prompt":"none",v=await Promise.all(X.map((x6)=>Qp8(x6,{getToolPermissionContext:$.getToolPermissionContext,tools:z,agents:$.agents,allowedAgentTypes:$.allowedAgentTypes,model:$.model,deferLoading:G(x6)})));if(J){let x6=$7(X,(b6)=>M.has(b6.name));N(`Dynamic tool loading: ${x6}/${M.size} deferred tools included`)}g3("query_tool_schema_build_end"),d("tengu_api_before_normalize",{preNormalizedMessageCount:q.length}),g3("query_message_normalization_start");let V=bP(q,X);if(g3("query_message_normalization_end"),!J)V=V.map((x6)=>{switch(x6.type){case"user":return O77(x6);case"assistant":return n0K(x6);default:return x6}});if(V=KZK(V),!j.includes(hX1))V=_ZK(V);V=aSY(V,Yj4),d("tengu_api_after_normalize",{postNormalizedMessageCount:V.length});let E=ogK(V);if(J&&!V18()){let x6=z.filter((b6)=>M.has(b6.name)).map(si6).sort().join(` |
| 7839 | `),querySource:$.querySource,tools:g6(C)}:void 0,e=ug4($.model,q6,V,g),i=Date.now(),$6=Date.now(),M6=0,j6=[],G6=void 0,w6=void 0,o=void 0,s=void 0;function a(){if(sSY(G6),G6=void 0,s)s.body?.cancel().catch(()=>{}),s=void 0}let n=W?Rj4():null,l=W?hj4():[],A6,J6=(x6)=>{let b6=[...j];if(!b6.includes(s66)&&eT1(x6.model))b6.push(s66);let Q6=E7()==="bedrock"?[...Kv1(x6.model),...P?[P]:[]]:[],Y6=np8(Q6),_6={...Y6.output_config??{}};if(dSY(t,_6,Y6,b6,$.model),cSY($.taskBudget,_6,b6),$.outputFormat&&!("format"in _6)){if(_6.format=$.outputFormat,j$6($.model)&&!b6.includes(t66))b6.push(t66)}let F6=x6?.maxTokensOverride||$.maxOutputTokensOverride||Z18($.model),W6=_.type!=="disabled"&&!i6(process.env.CLAUDE_CODE_DISABLE_THINKING),v6=void 0;if(W6&&a54($.model))if(!i6(process.env.CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING)&&fT8($.model))v6={type:"adaptive"};else{let h1=oSq($.model);if(_.type==="enabled"&&_.budgetTokens!==void 0)h1=_.budgetTokens;h1=Math.min(F6-1,h1),v6={budget_tokens:h1,type:"enabled"}}let m6=tgK({hasThinking:W6,isRedactThinkingActive:b6.includes(BJ8),clearAllThinking:K6}),K8=$.enablePromptCaching??qFK(x6.model),H8;if(BK()&&oJ()&&!yg()&&jJ($.model)&&!!x6.fastMode)H8="fast";if(U&&!b6.includes(RX1))b6.push(RX1);if(F&&q16()&&w&&!b6.includes(x06))b6.push(x06);let X1=W&&E7()==="firstParty"&&$.querySource==="repl_main_thread";if(c&&E7()==="firstParty"&&$.querySource==="repl_main_thread"&&!b6.includes(D))b6.push(D),N("Cache editing beta header enabled for cached microcompact");let j1=!W6?$.temperatureOverride??1:void 0;return A6=b6,{model:uf($.model),messages:eSY(V,K8,$.querySource,X1,n,l,$.skipCacheWrite),system:I,tools:C,tool_choice:$.toolChoice,...B&&{betas:b6},metadata:Pq6(),max_tokens:F6,thinking:v6,...j1!==void 0&&{temperature:j1},...m6&&B&&b6.includes(pJ8)&&{context_management:m6},...Y6,...Object.keys(_6).length>0&&{output_config:_6},...H8!==void 0&&{speed:H8}}};{let x6=J6({model:$.model,thinkingConfig:_}),b6=x6.messages.length,Q6=B?x6.betas??[]:[],Y6=x6.thinking?.type??"disabled",_6=x6.output_config?.effort;$.getToolPermissionContext().then((F6)=>{BWK({model:$.model,messagesLength:b6,temperature:$.temperatureOverride??1,betas:Q6,permissionMode:F6.mode,querySource:$.querySource,queryTracking:$.queryTracking,thinkingType:Y6,effortValue:_6,fastMode:g,previousRequestId:A})})}let X6=[],f6=0,N6=void 0,Z6=[],V6=n0,y6=0,T6=null,n6=!1,o6,I6=0,C6=void 0,l6=void 0,S6=g,E6=!1;try{let K8=function(){if(v6!==null)clearTimeout(v6),v6=null;if(m6!==null)clearTimeout(m6),m6=null},H8=function(){if(K8(),!Q6)return;v6=setTimeout((M8)=>{N(`Streaming idle warning: no chunks received for ${M8/1000}s`,{level:"warn"}),c8("warn","cli_streaming_idle_warning")},_6,_6),m6=setTimeout(()=>{F6=!0,W6=performance.now(),N(`Streaming idle timeout: no chunks received for ${Y6/1000}s, aborting stream`,{level:"error"}),c8("error","cli_streaming_idle_timeout"),d("tengu_streaming_idle_timeout",{model:$.model,request_id:w6??"unknown",timeout_ms:Y6}),a()},Y6)};g3("query_client_creation_start");let x6=dk8(()=>eE({maxRetries:0,model:$.model,fetchOverride:$.fetchOverride,source:$.querySource}),async(M8,X1,j1)=>{M6=X1,S6=j1.fastMode??!1,$6=Date.now(),j6.push($6),g3("query_client_creation_end");let h1=J6(j1);if(N$8(h1,$.querySource),I6=h1.max_tokens,g3("query_api_request_sent"),!$.agentId)HM("api_request_sent");o=E7()==="firstParty"&&WP()?IQ8():void 0;let T7=await M8.beta.messages.create({...h1,stream:!0},{signal:Y,...o&&{headers:{[XG6]:o}}}).withResponse();return g3("query_response_headers_received"),w6=T7.request_id,s=T7.response,T7.data},{model:$.model,fallbackModel:$.fallbackModel,thinkingConfig:_,...BK()?{fastMode:g}:!1,signal:Y,querySource:$.querySource}),b6;do if(b6=await x6.next(),!("controller"in b6.value))yield b6.value;while(!b6.done);G6=b6.value,X6.length=0,f6=0,N6=void 0,Z6.length=0,V6=n0,T6=null,E6=!1;let Q6=i6(process.env.CLAUDE_ENABLE_STREAM_WATCHDOG),Y6=parseInt(process.env.CLAUDE_STREAM_IDLE_TIMEOUT_MS||"",10)||90000,_6=Y6/2,F6=!1,W6=null,v6=null,m6=null;H8(),$p8("api_call");try{let M8=!0,X1=null,j1=30000,h1=0,T7=0;for await(let Y1 of G6){H8();let Y7=Date.now();if(X1!==null){let P7=Y7-X1;if(P7>j1)T7++,h1+=P7,N(`Streaming stall detected: ${(P7/1000).toFixed(1)}s gap between events (stall #${T7})`,{level:"warn"}),d("tengu_streaming_stall",{stall_duration_ms:P7,stall_count:T7,total_stall_time_ms:h1,event_type:Y1.type,model:$.model,request_id:w6??"unknown"})}if(X1=Y7,M8){if(N("Stream started - received first chunk"),g3("query_first_chunk_received"),!$.agentId)HM("first_chunk");_WK(),M8=!1}switch(Y1.type){case"message_start":{N6=Y1.message,f6=Date.now()-$6,V6=iK6(V6,Y1.message?.usage);break}case"content_block_start":switch(Y1.content_block.type){case"tool_use":Z6[Y1.index]={...Y1.content_block,input:""};break;case"server_tool_use":if(Z6[Y1.index]={...Y1.content_block,input:""},Y1.content_block.name==="advisor")E6=!0,N("[AdvisorTool] Advisor tool called"),d("tengu_advisor_tool_call",{model:$.model,advisor_model:H??"unknown"});break;case"text":Z6[Y1.index]={...Y1.content_block,text:""};break;case"thinking":Z6[Y1.index]={...Y1.content_block,thinking:"",signature:""};break;default:if(Z6[Y1.index]={...Y1.content_block},Y1.content_block.type==="advisor_tool_result")E6=!1,N("[AdvisorTool] Advisor tool result received");break}break;case"content_block_delta":{let P7=Z6[Y1.index],L1=Y1.delta;if(!P7)throw d("tengu_streaming_error",{error_type:"content_block_not_found_delta",part_type:Y1.type,part_index:Y1.index}),RangeError("Content block not found");switch(L1.type){case"citations_delta":break;case"input_json_delta":if(P7.type!=="tool_use"&&P7.type!=="server_tool_use")throw d("tengu_streaming_error",{error_type:"content_block_type_mismatch_input_json",expected_type:"tool_use",actual_type:P7.type}),Error("Content block is not a input_json block");if(typeof P7.input!=="string")throw d("tengu_streaming_error",{error_type:"content_block_input_not_string",input_type:typeof P7.input}),Error("Content block input is not a string");P7.input+=L1.partial_json;break;case"text_delta":if(P7.type!=="text")throw d("tengu_streaming_error",{error_type:"content_block_type_mismatch_text",expected_type:"text",actual_type:P7.type}),Error("Content block is not a text block");P7.text+=L1.text;break;case"signature_delta":if(P7.type!=="thinking")throw d("tengu_streaming_error",{error_type:"content_block_type_mismatch_thinking_signature",expected_type:"thinking",actual_type:P7.type}),Error("Content block is not a thinking block");P7.signature=L1.signature;break;case"thinking_delta":if(P7.type!=="thinking")throw d("tengu_streaming_error",{error_type:"content_block_type_mismatch_thinking_delta",expected_type:"thinking",actual_type:P7.type}),Error("Content block is not a thinking block");P7.thinking+=L1.thinking;break}break}case"content_block_stop":{let P7=Z6[Y1.index];if(!P7)throw d("tengu_streaming_error",{error_type:"content_block_not_found_stop",part_type:Y1.type,part_index:Y1.index}),RangeError("Content block not found");if(!N6)throw d("tengu_streaming_error",{error_type:"partial_message_not_found",part_type:Y1.type}),Error("Message not found");let L1={message:{...N6,content:SB8([P7],z,$.agentId)},requestId:w6??void 0,type:"assistant",uuid:IQ8(),timestamp:new Date().toISOString(),...!1,...H&&{advisorModel:H}};X6.push(L1),yield L1;break}case"message_delta":{V6=iK6(V6,Y1.usage),T6=Y1.delta.stop_reason;let P7=X6.at(-1);if(P7)P7.message.usage=V6,P7.message.stop_reason=T6;let L1=q86(O,V6);y6+=QL6(L1,V6,$.model);let B7=jZK(Y1.delta.stop_reason,$.model);if(B7)yield B7;if(T6==="max_tokens")d("tengu_max_tokens_reached",{max_tokens:I6}),yield q_({content:`${dP}: Claude's response exceeded the ${I6} output token maximum. To configure this behavior, set the CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable.`,apiError:"max_output_tokens",error:"max_output_tokens"});if(T6==="model_context_window_exceeded")d("tengu_context_window_exceeded",{max_tokens:I6,output_tokens:V6.output_tokens}),yield q_({content:`${dP}: The model has reached its context window limit.`,apiError:"max_output_tokens",error:"max_output_tokens"});break}case"message_stop":break}yield{type:"stream_event",event:Y1,...Y1.type==="message_start"?{ttftMs:f6}:void 0}}if(K8(),F6){let Y1=W6!==null?Math.round(performance.now()-W6):-1;throw c8("info","cli_stream_loop_exited_after_watchdog_clean"),d("tengu_stream_loop_exited_after_watchdog",{request_id:w6??"unknown",exit_delay_ms:Y1,exit_path:"clean",model:$.model}),W6=null,Error("Stream idle timeout - no chunks received")}if(!N6||X6.length===0&&!T6)throw N(!N6?"Stream completed without receiving message_start event - triggering non-streaming fallback":"Stream completed with message_start but no content blocks completed - triggering non-streaming fallback",{level:"error"}),d("tengu_stream_no_events",{model:$.model,request_id:w6??"unknown"}),Error("Stream ended without receiving any events");if(T7>0)N(`Streaming completed with ${T7} stall(s), total stall time: ${(h1/1000).toFixed(1)}s`,{level:"warn"}),d("tengu_streaming_stall_summary",{stall_count:T7,total_stall_time_ms:h1,model:$.model,request_id:w6??"unknown"});let X7=s;if(X7)um1(X7.headers),C6=X7.headers}catch(M8){if(K8(),F6&&W6!==null){let T7=Math.round(performance.now()-W6);c8("info","cli_stream_loop_exited_after_watchdog_error"),d("tengu_stream_loop_exited_after_watchdog",{request_id:w6??"unknown",exit_delay_ms:T7,exit_path:"error",error_name:M8 instanceof Error?M8.name:"unknown",model:$.model})}if(M8 instanceof V_)if(Y.aborted){if(N(`Streaming aborted by user: ${d6(M8)}`),E6)d("tengu_advisor_tool_interrupted",{model:$.model,advisor_model:H??"unknown"});throw M8}else throw N(`Streaming timeout (SDK abort): ${M8.message}`,{level:"error"}),new KB({message:"Request timed out"});if(i6(process.env.CLAUDE_CODE_DISABLE_NONSTREAMING_FALLBACK)||g8("tengu_disable_streaming_to_non_streaming_fallback",!1))throw N(`Error streaming (non-streaming fallback disabled): ${d6(M8)}`,{level:"error"}),d("tengu_streaming_fallback_to_non_streaming",{model:$.model,error:M8 instanceof Error?M8.name:String(M8),attemptNumber:M6,maxOutputTokens:I6,thinkingType:_.type,fallback_disabled:!0,request_id:w6??"unknown",fallback_cause:F6?"watchdog":"other"}),M8;if(N(`Error streaming, falling back to non-streaming mode: ${d6(M8)}`,{level:"error"}),n6=!0,$.onStreamingFallback)$.onStreamingFallback();d("tengu_streaming_fallback_to_non_streaming",{model:$.model,error:M8 instanceof Error?M8.name:String(M8),attemptNumber:M6,maxOutputTokens:I6,thinkingType:_.type,fallback_disabled:!1,request_id:w6??"unknown",fallback_cause:F6?"watchdog":"other"}),c8("info","cli_nonstreaming_fallback_started"),d("tengu_nonstreaming_fallback_started",{request_id:w6??"unknown",model:$.model,fallback_cause:F6?"watchdog":"other"});let j1=yield*KFK({model:$.model,source:$.querySource},{model:$.model,fallbackModel:$.fallbackModel,thinkingConfig:_,...BK()&&{fastMode:g},signal:Y,initialConsecutive529Errors:xO6(M8)?1:0,querySource:$.querySource},J6,(T7,X7,Y1)=>{M6=T7,I6=Y1},(T7)=>N$8(T7,$.querySource),w6),h1={message:{...j1,content:SB8(j1.content,z,$.agentId)},requestId:w6??void 0,type:"assistant",uuid:IQ8(),timestamp:new Date().toISOString(),...!1,...H&&{advisorModel:H}};X6.push(h1),o6=h1,yield h1}finally{K8()}}catch(x6){if(x6 instanceof IO6)throw x6;if(!n6&&x6 instanceof Uu&&x6.originalError instanceof Qq&&x6.originalError.status===404){let Q6=x6.originalError.requestID??"unknown";if(N("Streaming endpoint returned 404, falling back to non-streaming mode",{level:"warn"}),n6=!0,$.onStreamingFallback)$.onStreamingFallback();d("tengu_streaming_fallback_to_non_streaming",{model:$.model,error:"404_stream_creation",attemptNumber:M6,maxOutputTokens:I6,thinkingType:_.type,request_id:Q6,fallback_cause:"404_stream_creation"});try{let Y6=yield*KFK({model:$.model,source:$.querySource},{model:$.model,fallbackModel:$.fallbackModel,thinkingConfig:_,...BK()&&{fastMode:g},signal:Y},J6,(F6,W6,v6)=>{M6=F6,I6=v6},(F6)=>N$8(F6,$.querySource),Q6),_6={message:{...Y6,content:SB8(Y6.content,z,$.agentId)},requestId:w6??void 0,type:"assistant",uuid:IQ8(),timestamp:new Date().toISOString(),...!1,...H&&{advisorModel:H}};X6.push(_6),o6=_6,yield _6}catch(Y6){if(Y6 instanceof IO6)throw Y6;N(`Non-streaming fallback also failed: ${d6(Y6)}`,{level:"error"});let _6=Y6,F6=$.model;if(Y6 instanceof Uu)_6=Y6.originalError,F6=Y6.retryContext.model;if(_6 instanceof Qq)ZN8(_6);let W6=w6||(_6 instanceof Qq?_6.requestID:void 0)||(_6 instanceof Qq?_6.error?.request_id:void 0);if(R87({error:_6,model:F6,messageCount:V.length,messageTokens:NL(V),durationMs:Date.now()-$6,durationMsIncludingRetries:Date.now()-i,attempt:M6,requestId:W6,clientRequestId:o,didFallBackToNonStreaming:n6,queryTracking:$.queryTracking,querySource:$.querySource,llmSpan:e,fastMode:S6,previousRequestId:A}),_6 instanceof V_){a();return}yield bB8(_6,F6,{messages:q,messagesForAPI:V}),a();return}}else{N(`Error in API request: ${d6(x6)}`,{level:"error"});let Q6=x6,Y6=$.model;if(x6 instanceof Uu)Q6=x6.originalError,Y6=x6.retryContext.model;if(Q6 instanceof Qq)ZN8(Q6);let _6=w6||(Q6 instanceof Qq?Q6.requestID:void 0)||(Q6 instanceof Qq?Q6.error?.request_id:void 0);if(R87({error:Q6,model:Y6,messageCount:V.length,messageTokens:NL(V),durationMs:Date.now()-$6,durationMsIncludingRetries:Date.now()-i,attempt:M6,requestId:_6,clientRequestId:o,didFallBackToNonStreaming:n6,queryTracking:$.queryTracking,querySource:$.querySource,llmSpan:e,fastMode:S6,previousRequestId:A}),Q6 instanceof V_){a();return}yield bB8(Q6,Y6,{messages:q,messagesForAPI:V}),a();return}}finally{if(Ap8("api_call"),a(),o6){let x6=o6.message.usage;V6=iK6(n0,x6),T6=o6.message.stop_reason;let b6=q86(O,x6);y6+=QL6(b6,x6,$.model)}}if(w6&&!Au()&&($.querySource.startsWith("repl_main_thread")||$.querySource==="sdk"))Ki8(w6);let R6=V.length,h6=NL(V);$.getToolPermissionContext().then((x6)=>{gWK({model:X6[0]?.message.model??N6?.model??$.model,preNormalizedModel:$.model,usage:V6,start:$6,startIncludingRetries:i,attempt:M6,messageCount:R6,messageTokens:h6,requestId:w6??null,stopReason:T6,ttftMs:f6,didFallBackToNonStreaming:n6,querySource:$.querySource,headers:C6,costUSD:y6,queryTracking:$.queryTracking,permissionMode:x6.mode,newMessages:X6,llmSpan:e,globalCacheStrategy:T,requestSetupMs:$6-i,attemptStartTimes:j6,fastMode:S6,previousRequestId:A,betas:A6})}),a()}function sSY(q){if(!q)return;try{if(!q.controller.signal.aborted)q.controller.abort()}catch{}}function iK6(q,K){if(!K)return{...q};return{input_tokens:K.input_tokens!==null&&K.input_tokens>0?K.input_tokens:q.input_tokens,cache_creation_input_tokens:K.cache_creation_input_tokens!==null&&K.cache_creation_input_tokens>0?K.cache_creation_input_tokens:q.cache_creation_input_tokens,cache_read_input_tokens:K.cache_read_input_tokens!==null&&K.cache_read_input_tokens>0?K.cache_read_input_tokens:q.cache_read_input_tokens,output_tokens:K.output_tokens??q.output_tokens,server_tool_use:{web_search_requests:K.server_tool_use?.web_search_requests??q.server_tool_use.web_search_requests,web_fetch_requests:K.server_tool_use?.web_fetch_requests??q.server_tool_use.web_fetch_requests},service_tier:q.service_tier,cache_creation:{ephemeral_1h_input_tokens:K.cache_creation?.ephemeral_1h_input_tokens??q.cache_creation.ephemeral_1h_input_tokens,ephemeral_5m_input_tokens:K.cache_creation?.ephemeral_5m_input_tokens??q.cache_creation.ephemeral_5m_input_tokens},...{},inference_geo:q.inference_geo,iterations:K.iterations??q.iterations,speed:K.speed??q.speed}}function Ep8(q,K){return{input_tokens:q.input_tokens+K.input_tokens,cache_creation_input_tokens:q.cache_creation_input_tokens+K.cache_creation_input_tokens,cache_read_input_tokens:q.cache_read_input_tokens+K.cache_read_input_tokens,output_tokens:q.output_tokens+K.output_tokens,server_tool_use:{web_search_requests:q.server_tool_use.web_search_requests+K.server_tool_use.web_search_requests,web_fetch_requests:q.server_tool_use.web_fetch_requests+K.server_tool_use.web_fetch_requests},service_tier:K.service_tier,cache_creation:{ephemeral_1h_input_tokens:q.cache_creation.ephemeral_1h_input_tokens+K.cache_creation.ephemeral_1h_input_tokens,ephemeral_5m_input_tokens:q.cache_creation.ephemeral_5m_input_tokens+K.cache_creation.ephemeral_5m_input_tokens},...{},inference_geo:K.inference_geo,iterations:K.iterations,speed:K.speed}}function tSY(q){return q!==null&&typeof q==="object"&&"type"in q&&q.type==="tool_result"&&"tool_use_id"in q}function eSY(q,K,_,z=!1,Y,$,A=!1){d("tengu_api_cache_breakpoints",{totalMessageCount:q.length,cachingEnabled:K,skipCacheWrite:A});let O=A?q.length-2:q.length-1,w=q.map((J,M)=>{let X=M===O;if(J.type==="user")return lSY(J,X,K,_);return nSY(J,X,K,_)});if(!z)return w;let j=new Set,H=(J)=>{let M=J.edits.filter((X)=>{if(j.has(X.cache_reference))return!1;return j.add(X.cache_reference),!0});return{...J,edits:M}};for(let J of $??[]){let M=w[J.userMessageIndex];if(M&&M.role==="user"){if(!Array.isArray(M.content))M.content=[{type:"text",text:M.content}];let X=H(J.block);if(X.edits.length>0)N_7(M.content,X)}}if(Y&&w.length>0){let J=H(Y);if(J.edits.length>0)for(let M=w.length-1;M>=0;M--){let X=w[M];if(X&&X.role==="user"){if(!Array.isArray(X.content))X.content=[{type:"text",text:X.content}];N_7(X.content,J),Sj4(M,Y),N(`Added cache_edits block with ${J.edits.length} deletion(s) to message[${M}]: ${J.edits.map((P)=>P.cache_reference).join(", ")}`);break}}}if(K){let J=-1;for(let M=0;M<w.length;M++){let X=w[M];if(Array.isArray(X.content)){for(let P of X.content)if(P&&typeof P==="object"&&"cache_control"in P)J=M}}if(J>=0)for(let M=0;M<J;M++){let X=w[M];if(X.role!=="user"||!Array.isArray(X.content))continue;let P=!1;for(let W=0;W<X.content.length;W++){let D=X.content[W];if(D&&tSY(D)){if(!P)X.content=[...X.content],P=!0;X.content[W]=Object.assign({},D,{cache_reference:D.tool_use_id})}}}}return w}function qCY(q,K,_){return v_7(q,{skipGlobalCacheForSystemPrompt:_?.skipGlobalCacheForSystemPrompt}).map((z)=>{return{type:"text",text:z.text,...K&&z.cacheScope!==null&&{cache_control:pU({scope:z.cacheScope,querySource:_?.querySource})}}})}async function RG({systemPrompt:q=iK([]),userPrompt:K,outputFormat:_,signal:z,options:Y}){return(await lp8([U8({content:q.map((A)=>({type:"text",text:A}))}),U8({content:K})],async()=>{let A=[U8({content:K})];return[await Ed({messages:A,systemPrompt:q,thinkingConfig:{type:"disabled"},tools:[],signal:z,options:{...Y,model:PH(),enablePromptCaching:Y.enablePromptCaching??!1,outputFormat:_,async getToolPermissionContext(){return MX()}}})]}))[0]}async function OQ8({systemPrompt:q=iK([]),userPrompt:K,outputFormat:_,signal:z,options:Y}){return(await lp8([U8({content:q.map((A)=>({type:"text",text:A}))}),U8({content:K})],async()=>{let A=[U8({content:K})];return[await Ed({messages:A,systemPrompt:q,thinkingConfig:{type:"disabled"},tools:[],signal:z,options:{...Y,enablePromptCaching:Y.enablePromptCaching??!1,outputFormat:_,async getToolPermissionContext(){return MX()}}})]}))[0]}function _CY(q,K){let _=Math.min(q.max_tokens,K),z={...q};if(z.thinking?.type==="enabled"&&z.thinking.budget_tokens)z.thinking={...z.thinking,budget_tokens:Math.min(z.thinking.budget_tokens,_-1)};return{...z,max_tokens:_}}function zCY(){return g8("tengu_otk_slot_v1",!1)}function Z18(q){let K=t86(q),_=zCY()?Math.min(K.default,rSq):K.default;return GK6("CLAUDE_CODE_MAX_OUTPUT_TOKENS",process.env.CLAUDE_CODE_MAX_OUTPUT_TOKENS,_,K.upperLimit).effective}var USY,KCY=64000;var ew=y(()=>{Az();pf8();Bq();fH6();G7();HG();V1();fP();q0();m8();y8();V_7();E8();i1();aq();EG();o1();ZU();egK();Ft();v8();e66();Tb();o1();eq6();Ou();G7();HG();cC();fP();_8();oY();q0();xf();ww6();mr6();tp8();wn();MH6();WL();RC();e66();rF();u68();vO();GF6();aq();rR6();l8();w46();k8();EC();uQ();NJ();q17();PG6();SC();J18();Q76();Wr();USY=Eq(mK6)});function YCY(q){let K=q.find((Y)=>Y.role==="user");if(!K)return"";let _=K.content;if(typeof _==="string")return _;let z=_.find((Y)=>Y.type==="text");return z?.type==="text"?z.text:""}async function CN(q){let{model:K,system:_,messages:z,tools:Y,tool_choice:$,output_format:A,max_tokens:O=1024,maxRetries:w=2,signal:j,skipSystemPromptPrefix:H,temperature:J,thinking:M,stop_sequences:X}=q,P=await eE({maxRetries:w,model:K,source:"side_query"}),W=[...qL(K)];if(A&&j$6(K)&&!W.includes(t66))W.push(t66);let D=YCY(z),f=k_7(D,{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION),G=mf8(f),Z=[G?{type:"text",text:G}:null,...H?[]:[{type:"text",text:uf8({isNonInteractive:!1,hasAppendSystemPrompt:!1})}],...Array.isArray(_)?_:_?[{type:"text",text:_}]:[]].filter((I)=>I!==null),T;if(M===!1)T={type:"disabled"};else if(M!==void 0)T={type:"enabled",budget_tokens:Math.min(M,O-1)};let v=uf(K),V=Date.now(),E=await P.beta.messages.create({model:v,max_tokens:O,system:Z,messages:z,...Y&&{tools:Y},...$&&{tool_choice:$},...A&&{output_config:{format:A}},...J!==void 0&&{temperature:J},...X&&{stop_sequences:X},...T&&{thinking:T},...W.length>0&&{betas:W},metadata:Pq6()},{signal:j}),S=E._request_id??void 0,R=Date.now(),x=i36();return d("tengu_api_success",{requestId:S,querySource:q.querySource,model:v,inputTokens:E.usage.input_tokens,outputTokens:E.usage.output_tokens,cachedInputTokens:E.usage.cache_read_input_tokens??0,uncachedInputTokens:E.usage.cache_creation_input_tokens??0,durationMsIncludingRetries:R-V,timeSinceLastApiCallMs:x!==null?R-x:void 0}),mb6(R),E}var nq6=y(()=>{v8();e66();pf8();k8();ew();PG6();HG();V_7();aq()});var zF1={};T8(zF1,{runClaudeInChromeMcpServer:()=>JCY,createChromeContext:()=>AFK});import{format as cq8}from"util";function wCY(q){return $FK.some((K)=>K===q)}function jCY(){if(!g8("tengu_copper_bridge",!1))return;if(i6(process.env.USE_LOCAL_OAUTH)||i6(process.env.LOCAL_BRIDGE))return"ws://localhost:8765";if(i6(process.env.USE_STAGING_OAUTH))return"wss://bridge-staging.claudeusercontent.com";return"wss://bridge.claudeusercontent.com"}function HCY(){return i6(process.env.USE_LOCAL_OAUTH)||i6(process.env.LOCAL_BRIDGE)}function AFK(q){let K=new OFK,_=jCY();K.info(`Bridge URL: ${_??"none (using native socket)"}`);let z=q?.CLAUDE_CHROME_PERMISSION_MODE??process.env.CLAUDE_CHROME_PERMISSION_MODE,Y;if(z)if(wCY(z))Y=z;else K.warn(`Invalid CLAUDE_CHROME_PERMISSION_MODE "${z}". Valid values: ${$FK.join(", ")}`);return{serverName:"Claude in Chrome",logger:K,socketPath:ey8(),getSocketPaths:jR4,clientTypeId:"claude-code",onAuthenticationError:()=>{K.warn("Authentication error occurred. Please ensure you are logged into the Claude browser extension with the same claude.ai account as Claude Code.")},onToolCallDisconnected:()=>{return`Browser extension is not connected. Please ensure the Claude browser extension is installed and running (${$CY}), and that you are logged into claude.ai with the same account as Claude Code. If this is your first time connecting to Chrome, you may need to restart Chrome for the installation to take effect. If you continue to experience issues, please report a bug: ${ACY}`},onExtensionPaired:($,A)=>{b8((O)=>{if(O.chromeExtension?.pairedDeviceId===$&&O.chromeExtension?.pairedDeviceName===A)return O;return{...O,chromeExtension:{pairedDeviceId:$,pairedDeviceName:A}}}),K.info(`Paired with "${A}" (${$.slice(0,8)})`)},getPersistedDeviceId:()=>{return j8().chromeExtension?.pairedDeviceId},..._&&{bridgeConfig:{url:_,getUserId:async()=>{return j8().oauthAccount?.accountUuid},getOAuthToken:async()=>{return Kq()?.accessToken??""},...HCY()&&{devUserId:"dev_user_local"}}},...Y&&{initialPermissionMode:Y},...!1,trackEvent:($,A)=>{let O={};if(A)for(let[w,j]of Object.entries(A)){let H=w==="status"?"bridge_status":w;if(typeof j==="boolean"||typeof j==="number")O[H]=j;else if(typeof j==="string"&&OCY.has(H))O[H]=j}d($,O)}}}async function JCY(){d$6(),tG6();let q=AFK(),K=oz8(q),_=new g96,z=!1,Y=async()=>{if(z)return;z=!0,await ji(),await T16(),process.exit(0)};process.stdin.on("end",()=>void Y()),process.stdin.on("error",()=>void Y()),N("[Claude in Chrome] Starting MCP server"),await K.connect(_),N("[Claude in Chrome] MCP server started")}class OFK{silly(q,...K){N(cq8(q,...K),{level:"debug"})}debug(q,...K){N(cq8(q,...K),{level:"debug"})}info(q,...K){N(cq8(q,...K),{level:"info"})}warn(q,...K){N(cq8(q,...K),{level:"warn"})}error(q,...K){N(cq8(q,...K),{level:"error"})}}var $CY="https://claude.ai/chrome",ACY="https://github.com/anthropics/claude-code/issues/new?labels=bug,claude-in-chrome",OCY,$FK;var YF1=y(()=>{zm6();sz8();sG6();Hi();o1();k8();xc6();G7();V1();_8();m8();nq6();cC();OCY=new Set(["bridge_status","error_type","tool_name"]),$FK=["ask","skip_all_permission_checks","follow_a_plan"]});var XFK={};T8(XFK,{sendChromeMessage:()=>Es,runChromeNativeHost:()=>GCY});import{appendFile as MCY,chmod as wFK,mkdir as XCY,readdir as jFK,rmdir as PCY,stat as WCY,unlink as y_7}from"fs/promises";import{createServer as DCY}from"net";import{platform as E_7}from"os";import{join as fCY}from"path";function a2(q,...K){if(HFK){let _=new Date().toISOString(),z=K.length>0?" "+g6(K):"",Y=`[${_}] [Claude Chrome Native Host] ${q}${z} |