MCPcopy Index your code
hub / github.com/ChinaSiro/claude-code-sourcemap / sPK

Function sPK

package/cli.js:4100–4100  ·  view source on GitHub ↗
(q)

Source from the content-addressed store, hash-verified

4098
4099${$}`}function K87(q){if(q instanceof AE)return[`Exit code ${q.code}`,q.interrupted?j0:"",q.stderr,q.stdout];let K=[q.message];if("stderr"in q&&typeof q.stderr==="string")K.push(q.stderr);if("stdout"in q&&typeof q.stdout==="string")K.push(q.stdout);return K}function dPK(q){if(q.length===0)return"";return q.reduce((K,_,z)=>{let Y=String(_);if(typeof _==="number")return`${String(K)}[${Y}]`;return z===0?Y:`${String(K)}.${Y}`},"")}function cPK(q,K){let _=K.issues.filter((O)=>O.code==="invalid_type"&&O.message.includes("received undefined")).map((O)=>dPK(O.path)),z=K.issues.filter((O)=>O.code==="unrecognized_keys").flatMap((O)=>O.keys),Y=K.issues.filter((O)=>O.code==="invalid_type"&&!O.message.includes("received undefined")).map((O)=>{let w=O,j=O.message.match(/received (\w+)/),H=j?j[1]:"unknown";return{param:dPK(O.path),expected:w.expected,received:H}}),$=K.message,A=[];if(_.length>0){let O=_.map((w)=>`The required parameter \`${w}\` is missing`);A.push(...O)}if(z.length>0){let O=z.map((w)=>`An unexpected parameter \`${w}\` was provided`);A.push(...O)}if(Y.length>0){let O=Y.map(({param:w,expected:j,received:H})=>`The parameter \`${w}\` type is expected as \`${j}\` but provided as \`${H}\``);A.push(...O)}if(A.length>0)$=`${q} failed due to the following ${A.length>1?"issues":"issue"}:
4100${A.join(`
4101`)}`;return $}var Op8=y(()=>{y8();i1()});function _87(q){switch(q){case"allow":return"allowed";case"deny":return"denied";default:return"asked for confirmation for"}}async function*lPK(q,K,_,z,Y,$,A,O,w){let j=Date.now();try{let J=q.getAppState().toolPermissionContext.mode,M=$;for await(let X of $87(K.name,_,Y,M,q,J,q.abortController.signal))try{if(X.message?.type==="attachment"&&X.message.attachment.type==="hook_cancelled"){d("tengu_post_tool_hooks_cancelled",{toolName:wK(K.name),queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth}),yield{message:V4({type:"hook_cancelled",hookName:`PostToolUse:${K.name}`,toolUseID:_,hookEvent:"PostToolUse"})};continue}if(X.message&&!(X.message.type==="attachment"&&X.message.attachment.type==="hook_blocking_error"))yield{message:X.message};if(X.blockingError)yield{message:V4({type:"hook_blocking_error",hookName:`PostToolUse:${K.name}`,toolUseID:_,hookEvent:"PostToolUse",blockingError:X.blockingError})};if(X.preventContinuation){yield{message:V4({type:"hook_stopped_continuation",message:X.stopReason||"Execution stopped by PostToolUse hook",hookName:`PostToolUse:${K.name}`,toolUseID:_,hookEvent:"PostToolUse"})};return}if(X.additionalContexts&&X.additionalContexts.length>0)yield{message:V4({type:"hook_additional_context",content:X.additionalContexts,hookName:`PostToolUse:${K.name}`,toolUseID:_,hookEvent:"PostToolUse"})};if(X.updatedMCPToolOutput&&ov(K))M=X.updatedMCPToolOutput,yield{updatedMCPToolOutput:M}}catch(P){let W=Date.now()-j;d("tengu_post_tool_hook_error",{messageID:z,toolName:wK(K.name),isMcp:K.isMcp??!1,duration:W,queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth,...O?{mcpServerType:O}:{},...A?{requestId:A}:{}}),yield{message:V4({type:"hook_error_during_execution",content:oR6(P),hookName:`PostToolUse:${K.name}`,toolUseID:_,hookEvent:"PostToolUse"})}}}catch(H){H6(H)}}async function*nPK(q,K,_,z,Y,$,A,O,w,j){let H=Date.now();try{let M=q.getAppState().toolPermissionContext.mode;for await(let X of A87(K.name,_,Y,$,q,A,M,q.abortController.signal))try{if(X.message?.type==="attachment"&&X.message.attachment.type==="hook_cancelled"){d("tengu_post_tool_failure_hooks_cancelled",{toolName:wK(K.name),queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth}),yield{message:V4({type:"hook_cancelled",hookName:`PostToolUseFailure:${K.name}`,toolUseID:_,hookEvent:"PostToolUseFailure"})};continue}if(X.message&&!(X.message.type==="attachment"&&X.message.attachment.type==="hook_blocking_error"))yield{message:X.message};if(X.blockingError)yield{message:V4({type:"hook_blocking_error",hookName:`PostToolUseFailure:${K.name}`,toolUseID:_,hookEvent:"PostToolUseFailure",blockingError:X.blockingError})};if(X.additionalContexts&&X.additionalContexts.length>0)yield{message:V4({type:"hook_additional_context",content:X.additionalContexts,hookName:`PostToolUseFailure:${K.name}`,toolUseID:_,hookEvent:"PostToolUseFailure"})}}catch(P){let W=Date.now()-H;d("tengu_post_tool_failure_hook_error",{messageID:z,toolName:wK(K.name),isMcp:K.isMcp??!1,duration:W,queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth,...w?{mcpServerType:w}:{},...O?{requestId:O}:{}}),yield{message:V4({type:"hook_error_during_execution",content:oR6(P),hookName:`PostToolUseFailure:${K.name}`,toolUseID:_,hookEvent:"PostToolUseFailure"})}}}catch(J){H6(J)}}async function iPK(q,K,_,z,Y,$,A){let O=K.requiresUserInteraction?.(),w=z.requireCanUseTool;if(q?.behavior==="allow"){let J=q.updatedInput??_,M=O&&q.updatedInput!==void 0;if(O&&!M||w)return N(`Hook approved tool use for ${K.name}, but canUseTool is required`),{decision:await Y(K,J,z,$,A),input:J};let X=await aPK(K,J,z);if(X===null)return N(M?`Hook satisfied user interaction for ${K.name} via updatedInput`:`Hook approved tool use for ${K.name}, bypassing permission prompt`),{decision:q,input:J};if(X.behavior==="deny")return N(`Hook approved tool use for ${K.name}, but deny rule overrides: ${X.message}`),{decision:X,input:J};return N(`Hook approved tool use for ${K.name}, but ask rule requires prompt`),{decision:await Y(K,J,z,$,A),input:J}}if(q?.behavior==="deny")return N(`Hook denied tool use for ${K.name}`),{decision:q,input:_};let j=q?.behavior==="ask"?q:void 0,H=q?.behavior==="ask"&&q.updatedInput?q.updatedInput:_;return{decision:await Y(K,H,z,$,A,j),input:H}}async function*rPK(q,K,_,z,Y,$,A,O){let w=Date.now();try{let j=q.getAppState();for await(let H of Y87(K.name,z,_,q,j.toolPermissionContext.mode,q.abortController.signal,void 0,q.requestPrompt,K.getToolUseSummary?.(_)))try{if(H.message)yield{type:"message",message:{message:H.message}};if(H.blockingError){let J=z87(`PreToolUse:${K.name}`,H.blockingError);yield{type:"hookPermissionResult",hookPermissionResult:{behavior:"deny",message:J,decisionReason:{type:"hook",hookName:`PreToolUse:${K.name}`,reason:J}}}}if(H.preventContinuation){if(yield{type:"preventContinuation",shouldPreventContinuation:!0},H.stopReason)yield{type:"stopReason",stopReason:H.stopReason}}if(H.permissionBehavior!==void 0){N(`Hook result has permissionBehavior=${H.permissionBehavior}`);let J={type:"hook",hookName:`PreToolUse:${K.name}`,hookSource:H.hookSource,reason:H.hookPermissionDecisionReason};if(H.permissionBehavior==="allow")yield{type:"hookPermissionResult",hookPermissionResult:{behavior:"allow",updatedInput:H.updatedInput,decisionReason:J}};else if(H.permissionBehavior==="ask")yield{type:"hookPermissionResult",hookPermissionResult:{behavior:"ask",updatedInput:H.updatedInput,message:H.hookPermissionDecisionReason||`Hook PreToolUse:${K.name} ${_87(H.permissionBehavior)} this tool`,decisionReason:J}};else yield{type:"hookPermissionResult",hookPermissionResult:{behavior:H.permissionBehavior,message:H.hookPermissionDecisionReason||`Hook PreToolUse:${K.name} ${_87(H.permissionBehavior)} this tool`,decisionReason:J}}}if(H.updatedInput&&H.permissionBehavior===void 0)yield{type:"hookUpdatedInput",updatedInput:H.updatedInput};if(H.additionalContexts&&H.additionalContexts.length>0)yield{type:"additionalContext",message:{message:V4({type:"hook_additional_context",content:H.additionalContexts,hookName:`PreToolUse:${K.name}`,toolUseID:z,hookEvent:"PreToolUse"})}};if(q.abortController.signal.aborted){d("tengu_pre_tool_hooks_cancelled",{toolName:wK(K.name),queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth}),yield{type:"message",message:{message:V4({type:"hook_cancelled",hookName:`PreToolUse:${K.name}`,toolUseID:z,hookEvent:"PreToolUse"})}},yield{type:"stop"};return}}catch(J){H6(J);let M=Date.now()-w;d("tengu_pre_tool_hook_error",{messageID:Y,toolName:wK(K.name),isMcp:K.isMcp??!1,duration:M,queryChainId:q.queryTracking?.chainId,queryDepth:q.queryTracking?.depth,...A?{mcpServerType:A}:{},...$?{requestId:$}:{}}),yield{type:"message",message:{message:V4({type:"hook_error_during_execution",content:oR6(J),hookName:`PreToolUse:${K.name}`,toolUseID:z,hookEvent:"PreToolUse"})}},yield{type:"stop"}}}catch(j){H6(j),yield{type:"stop"};return}}var oPK=y(()=>{k8();kj();lP();_8();y$();E8();Fj();Op8();NJ()});function v5Y(q){if(q instanceof uk)return q.telemetryMessage.slice(0,200);if(q instanceof Error){let K=s1(q);if(typeof K==="string")return`Error:${K}`;if(q.name&&q.name!=="Error"&&q.name.length>3)return q.name.slice(0,60);return"Error"}return"UnknownError"}function k5Y(q,K){switch(q){case"session":return K==="allow"?"user_temporary":"user_reject";case"localSettings":case"userSettings":return K==="allow"?"user_permanent":"user_reject";default:return"config"}}function V5Y(q,K){if(!q)return"config";switch(q.type){case"permissionPromptTool":{let z=q.toolResult?.decisionClassification;if(z==="user_temporary"||z==="user_permanent"||z==="user_reject")return z;return K==="allow"?"user_temporary":"user_reject"}case"rule":return k5Y(q.rule.source,K);case"hook":return"hook";case"mode":case"classifier":case"subcommandResults":case"asyncAgent":case"sandboxOverride":case"workingDir":case"safetyCheck":case"other":return"config";default:{let _=q;return"config"}}}function sPK(q){let K=0;for(let _ of q)if(_.type==="user"&&_.imagePasteIds){for(let z of _.imagePasteIds)if(z>K)K=z}return K+1}function tPK(q,K){if(!q.startsWith("mcp__"))return;let _=nT(q);if(!_)return;return K.find((z)=>Z2(z.name)===_.serverName)}function N5Y(q,K){let _=tPK(q,K);if(_?.type==="connected")return _.config.type??"stdio";return}function y5Y(q,K){let _=tPK(q,K);if(_?.type!=="connected")return;return LN(_.config)}async function*fo6(q,K,_,z){let Y=q.name,$=L5(z.options.tools,Y);if(!$){let J=L5(UK6(),Y);if(J&&J.aliases?.includes(Y))$=J}let A=K.message.id,O=K.requestId,w=N5Y(Y,z.options.mcpClients),j=y5Y(Y,z.options.mcpClients);if(!$){let J=wK(Y);N(`Unknown tool ${Y}: ${q.id}`),d("tengu_tool_use_error",{error:`No such tool available: ${J}`,toolName:J,toolUseID:q.id,isMcp:Y.startsWith("mcp__"),queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(Y,w,j)}),yield{message:U8({content:[{type:"tool_result",content:`<tool_use_error>Error: No such tool available: ${Y}</tool_use_error>`,is_error:!0,tool_use_id:q.id}],toolUseResult:`Error: No such tool available: ${Y}`,sourceToolAssistantUUID:K.uuid})};return}let H=q.input;try{if(z.abortController.signal.aborted){d("tengu_tool_use_cancelled",{toolName:wK($.name),toolUseID:q.id,isMcp:$.isMcp??!1,queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF($.name,w,j)});let J=w87(q.id);J.content=aR6(Dj6),yield{message:U8({content:[J],toolUseResult:Dj6,sourceToolAssistantUUID:K.uuid})};return}for await(let J of E5Y($,q.id,H,z,_,K,A,O,w,j))yield J}catch(J){H6(J);let M=J instanceof Error?J.message:String(J),P=`Error calling tool${$?` (${$.name})`:""}: ${M}`;yield{message:U8({content:[{type:"tool_result",content:`<tool_use_error>${P}</tool_use_error>`,is_error:!0,tool_use_id:q.id}],toolUseResult:P,sourceToolAssistantUUID:K.uuid})}}}function E5Y(q,K,_,z,Y,$,A,O,w,j){let H=new Y18;return R5Y(q,K,_,z,Y,$,A,O,w,j,(J)=>{d("tengu_tool_use_progress",{messageID:A,toolName:wK(q.name),isMcp:q.isMcp??!1,queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)}),H.enqueue({message:ePK({toolUseID:J.toolUseID,parentToolUseID:K,data:J.data})})}).then((J)=>{for(let M of J)H.enqueue(M)}).catch((J)=>{H.error(J)}).finally(()=>{H.done()}),H}function L5Y(q,K,_){if(!yL())return null;if(!JH6(_))return null;if(!yC(q))return null;if(iQ(K).has(q.name))return null;return`
4102
4103This tool's schema was not sent to the API — it was not in the discovered-tool set derived from message history. `+`Without the schema in your prompt, typed parameters (arrays, numbers, booleans) get emitted as strings and the client-side parser rejects them. Load the tool first: call ${CP} with query "select:${q.name}", then retry this call.`}async function R5Y(q,K,_,z,Y,$,A,O,w,j,H){let J=q.inputSchema.safeParse(_);if(!J.success){let U=cPK(q.name,J.error),c=L5Y(q,z.messages,z.options.tools);if(c)d("tengu_deferred_tool_schema_not_sent",{toolName:wK(q.name),isMcp:q.isMcp??!1}),U+=c;return N(`${q.name} tool input error: ${U.slice(0,200)}`),d("tengu_tool_use_error",{error:"InputValidationError",errorDetails:U.slice(0,2000),messageID:A,toolName:wK(q.name),isMcp:q.isMcp??!1,queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)}),[{message:U8({content:[{type:"tool_result",content:`<tool_use_error>InputValidationError: ${U}</tool_use_error>`,is_error:!0,tool_use_id:K}],toolUseResult:`InputValidationError: ${J.error.message}`,sourceToolAssistantUUID:$.uuid})}]}let M=await q.validateInput?.(J.data,z);if(M?.result===!1)return N(`${q.name} tool validation error: ${M.message?.slice(0,200)}`),d("tengu_tool_use_error",{messageID:A,toolName:wK(q.name),error:M.message,errorCode:M.errorCode,isMcp:q.isMcp??!1,queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)}),[{message:U8({content:[{type:"tool_result",content:`<tool_use_error>${M.message}</tool_use_error>`,is_error:!0,tool_use_id:K}],toolUseResult:`Error: ${M.message}`,sourceToolAssistantUUID:$.uuid})}];if(q.name===_q&&J.data&&"command"in J.data){let U=z.getAppState();pPK(J.data.command,U.toolPermissionContext,z.abortController.signal,z.options.isNonInteractiveSession)}let X=[],P=J.data;if(q.name===_q&&P&&typeof P==="object"&&"_simulatedSedEdit"in P){let{_simulatedSedEdit:U,...c}=P;P=c}let W=P,D=q.backfillObservableInput&&typeof P==="object"&&P!==null?{...P}:null;if(D)q.backfillObservableInput(D),P=D;let f=!1,G,Z,T=[],v=Date.now();for await(let U of rPK(z,q,P,K,$.message.id,O,w,j))switch(U.type){case"message":if(U.message.message.type==="progress")H(U.message.message);else{X.push(U.message);let c=U.message.message.attachment;if(c&&"command"in c&&c.command!==void 0&&"durationMs"in c&&c.durationMs!==void 0)T.push({command:c.command,durationMs:c.durationMs})}break;case"hookPermissionResult":Z=U.hookPermissionResult;break;case"hookUpdatedInput":P=U.updatedInput;break;case"preventContinuation":f=U.shouldPreventContinuation;break;case"stopReason":G=U.stopReason;break;case"additionalContext":X.push(U.message);break;case"stop":return d36()?.observe("pre_tool_hook_duration_ms",Date.now()-v),X.push({message:U8({content:[w87(K)],toolUseResult:`Error: ${G}`,sourceToolAssistantUUID:$.uuid})}),X}let V=Date.now()-v;if(d36()?.observe("pre_tool_hook_duration_ms",V),V>=O87)N(`Slow PreToolUse hooks: ${V}ms for ${q.name} (${T.length} hooks)`,{level:"info"});let E={};if(P&&typeof P==="object"){if(q.name===Cq&&"file_path"in P)E.file_path=String(P.file_path);else if((q.name===X4||q.name===tK)&&"file_path"in P)E.file_path=String(P.file_path);else if(q.name===_q&&"command"in P){let U=P;E.full_command=U.command}}mg4(q.name,E,bH()?g6(P):void 0),pg4();let S=z.getAppState().toolPermissionContext.mode,R=Date.now(),x=await iPK(Z,q,P,z,Y,$,K),I=x.decision;P=x.input;let B=Date.now()-R;if(B>=O87&&S==="auto")N(`Slow permission decision: ${B}ms for ${q.name} (mode=${S}, behavior=${I.behavior})`,{level:"info"});if(I.behavior!=="ask"&&!z.toolDecisions?.has(K)){let U=I.behavior==="allow"?"accept":"reject",c=V5Y(I.decisionReason,I.behavior);if(EA("tool_decision",{decision:U,source:c,tool_name:wK(q.name)}),Am1(q.name))Om1(q,P,U,c).then((K6)=>Ub6()?.add(1,K6))}if(I.decisionReason?.type==="hook"&&I.decisionReason.hookName==="PermissionRequest"&&I.behavior!=="ask")X.push({message:V4({type:"hook_permission_decision",decision:I.behavior,toolUseID:K,hookEvent:"PermissionRequest"})});if(I.behavior!=="allow"){N(`${q.name} tool permission denied`);let U=z.toolDecisions?.get(K);BU1("reject",U?.source||"unknown"),kR8(),d("tengu_tool_use_can_use_tool_rejected",{messageID:A,toolName:wK(q.name),queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)});let c=I.message;if(f&&!c)c=`Execution stopped by PreToolUse hook${G?`: ${G}`:""}`;let K6=[{type:"tool_result",content:c,is_error:!0,tool_use_id:K}],t=I.behavior==="ask"?I.contentBlocks:void 0;if(t?.length)K6.push(...t);let q6;if(t?.length){let e=$7(t,(i)=>i.type==="image");if(e>0){let i=sPK(z.messages);q6=Array.from({length:e},($6,M6)=>i+M6)}}if(X.push({message:U8({content:K6,imagePasteIds:q6,toolUseResult:`Error: ${c}`,sourceToolAssistantUUID:$.uuid})}),I.decisionReason?.type==="classifier"&&I.decisionReason.classifier==="auto-mode"){let e=!1;for await(let i of j87(q.name,K,P,I.decisionReason.reason??"Permission denied",z,S,z.abortController.signal))if(i.retry)e=!0;if(e)X.push({message:U8({content:"The PermissionDenied hook indicated this command is now approved. You may retry it if you would like.",isMeta:!0})})}return X}if(d("tengu_tool_use_can_use_tool_allowed",{messageID:A,toolName:wK(q.name),queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)}),I.updatedInput!==void 0)P=I.updatedInput;let p=Arq(P),C={};if(Jf8()){if(q.name===_q&&"command"in P){let K6=P;C={bash_command:K6.command.trim().split(/\s+/)[0]||"",full_command:K6.command,...K6.timeout!==void 0&&{timeout:K6.timeout},...K6.description!==void 0&&{description:K6.description},..."dangerouslyDisableSandbox"in K6&&{dangerouslyDisableSandbox:K6.dangerouslyDisableSandbox}}}let U=uV1(q.name);if(U)C.mcp_server_name=U.serverName,C.mcp_tool_name=U.mcpToolName;let c=$rq(q.name,P);if(c)C.skill_name=c}let g=z.toolDecisions?.get(K);BU1(g?.decision||"unknown",g?.source||"unknown"),Bg4();let F=Date.now();if($p8("tool_exec"),D&&P!==W&&typeof P==="object"&&P!==null&&"file_path"in P&&"file_path"in W&&P.file_path===D.file_path)W={...P,file_path:W.file_path};else if(P!==D)W=P;try{let U=await q.call(W,{...z,toolUseId:K,userModified:I.userModified??!1},Y,$,(l)=>{H({toolUseID:l.toolUseID,data:l.data})}),c=Date.now()-F;if(a58(c),U.data&&typeof U.data==="object"){let l={};if(q.name===Cq&&"content"in U.data){if("file_path"in P)l.file_path=String(P.file_path);l.content=String(U.data.content)}if((q.name===X4||q.name===tK)&&"file_path"in P){if(l.file_path=String(P.file_path),q.name===X4&&"diff"in U.data)l.diff=String(U.data.diff);if(q.name===tK&&"content"in P)l.content=String(P.content)}if(q.name===_q&&"command"in P){let A6=P;if(l.bash_command=A6.command,"output"in U.data)l.output=String(U.data.output)}if(Object.keys(l).length>0)gg4("tool.output",l)}if(typeof U==="object"&&"structured_output"in U)X.push({message:V4({type:"structured_output",data:U.structured_output})});gU1({success:!0});let K6=U.data&&typeof U.data==="object"?g6(U.data):String(U.data??"");kR8(K6);let t=q.mapToolResultToToolResultBlockParam(U.data,K),q6=t.content,e=!q6?0:typeof q6==="string"?q6.length:g6(q6).length,i;if(P&&typeof P==="object"){if((q.name===Cq||q.name===X4||q.name===tK)&&"file_path"in P)i=M16(String(P.file_path));else if(q.name===nW&&"notebook_path"in P)i=M16(String(P.notebook_path));else if(q.name===_q&&"command"in P){let l=P;i=Orq(l.command,l._simulatedSedEdit?.filePath)}}if(d("tengu_tool_use_success",{messageID:A,toolName:wK(q.name),isMcp:q.isMcp??!1,durationMs:c,preToolHookDurationMs:V,toolResultSizeBytes:e,...i!==void 0&&{fileExtension:i},queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)}),Jf8()&&(q.name===_q||q.name===s9)&&"command"in P&&typeof P.command==="string"&&P.command.match(/\bgit\s+commit\b/)&&U.data&&typeof U.data==="object"&&"stdout"in U.data){let l=Ea1(String(U.data.stdout));if(l)C.git_commit_id=l}let $6=ov(q)?CB1(q.name):null;EA("tool_result",{tool_name:wK(q.name),success:"true",duration_ms:String(c),...Object.keys(C).length>0&&{tool_parameters:g6(C)},...p&&{tool_input:p},tool_result_size_bytes:String(e),...g&&{decision_source:g.source,decision_type:g.decision},...$6&&{mcp_server_scope:$6}});let M6=U.data,j6=[],G6=U.contextModifier,w6=U.mcpMeta;async function o(l,A6){let X6=[A6?await lR4(A6,q.name,q.maxResultSizeChars):await fN6(q,l,K)];if("acceptFeedback"in I&&I.acceptFeedback)X6.push({type:"text",text:I.acceptFeedback});let f6="contentBlocks"in I?I.contentBlocks:void 0;if(f6?.length)X6.push(...f6);let N6;if(f6?.length){let Z6=$7(f6,(V6)=>V6.type==="image");if(Z6>0){let V6=sPK(z.messages);N6=Array.from({length:Z6},(y6,T6)=>V6+T6)}}X.push({message:U8({content:X6,imagePasteIds:N6,toolUseResult:z.agentId&&!z.preserveToolUseResults?void 0:l,mcpMeta:z.agentId?void 0:w6,sourceToolAssistantUUID:$.uuid}),contextModifier:G6?{toolUseID:K,modifyContext:G6}:void 0})}if(!ov(q))await o(M6,t);let s=[],a=Date.now();for await(let l of lPK(z,q,K,$.message.id,P,M6,O,w,j))if("updatedMCPToolOutput"in l){if(ov(q))M6=l.updatedMCPToolOutput}else if(ov(q)){if(j6.push(l),l.message.type==="attachment"){let A6=l.message.attachment;if("command"in A6&&A6.command!==void 0&&"durationMs"in A6&&A6.durationMs!==void 0)s.push({command:A6.command,durationMs:A6.durationMs})}}else if(X.push(l),l.message.type==="attachment"){let A6=l.message.attachment;if("command"in A6&&A6.command!==void 0&&"durationMs"in A6&&A6.durationMs!==void 0)s.push({command:A6.command,durationMs:A6.durationMs})}let n=Date.now()-a;if(n>=O87)N(`Slow PostToolUse hooks: ${n}ms for ${q.name} (${s.length} hooks)`,{level:"info"});if(ov(q))await o(M6);if(U.newMessages&&U.newMessages.length>0)for(let l of U.newMessages)X.push({message:l});if(f)X.push({message:V4({type:"hook_stopped_continuation",message:G||"Execution stopped by hook",hookName:`PreToolUse:${q.name}`,toolUseID:K,hookEvent:"PreToolUse"})});for(let l of j6)X.push(l);return X}catch(U){let c=Date.now()-F;if(a58(c),gU1({success:!1,error:d6(U)}),kR8(),U instanceof wL8)z.setAppState((e)=>{let i=U.serverName,$6=e.mcp.clients.findIndex((G6)=>G6.name===i);if($6===-1)return e;let M6=e.mcp.clients[$6];if(!M6||M6.type!=="connected")return e;let j6=[...e.mcp.clients];return j6[$6]={name:i,type:"needs-auth",config:M6.config},{...e,mcp:{...e.mcp,clients:j6}}});if(!(U instanceof Uz)){let e=d6(U);if(N(`${q.name} tool error (${c}ms): ${e.slice(0,200)}`),!(U instanceof AE))H6(U);d("tengu_tool_use_error",{messageID:A,toolName:wK(q.name),error:v5Y(U),isMcp:q.isMcp??!1,queryChainId:z.queryTracking?.chainId,queryDepth:z.queryTracking?.depth,...w&&{mcpServerType:w},...j&&{mcpServerBaseUrl:j},...O&&{requestId:O},...zF(q.name,w,j)});let i=ov(q)?CB1(q.name):null;EA("tool_result",{tool_name:wK(q.name),use_id:K,success:"false",duration_ms:String(c),error:d6(U),...Object.keys(C).length>0&&{tool_parameters:g6(C)},...p&&{tool_input:p},...g&&{decision_source:g.source,decision_type:g.decision},...i&&{mcp_server_scope:i}})}let K6=oR6(U),t=U instanceof Uz,q6=[];for await(let e of nPK(z,q,K,A,P,K6,t,O,w,j))q6.push(e);return[{message:U8({content:[{type:"tool_result",content:K6,is_error:!0,tool_use_id:K}],toolUseResult:`Error: ${K6}`,mcpMeta:z.agentId?void 0:U instanceof jL8?U.mcpMeta:void 0,sourceToolAssistantUUID:$.uuid})},...q6]}finally{if(Ap8("tool_exec"),g)z.toolDecisions?.delete(K)}}var O87=2000;var em1=y(()=>{k8();kj();v8();KN8();Bq();DN();IY();E2();Q68();rF();BD();lP();_8();y8();y$();E8();i1();rR6();l8();q87();nu();w46();Op8();IG();RC();PD();ok();NJ();oPK()});class $18{toolDefinitions;canUseTool;tools=[];toolUseContext;hasErrored=!1;erroredToolDescription="";siblingAbortController;discarded=!1;progressAvailableResolve;constructor(q,K,_){this.toolDefinitions=q;this.canUseTool=K;this.toolUseContext=_,this.siblingAbortController=bC(_.abortController)}discard(){this.discarded=!0}addTool(q,K){let _=L5(this.toolDefinitions,q.name);if(!_){this.tools.push({id:q.id,block:q,assistantMessage:K,status:"completed",isConcurrencySafe:!0,pendingProgress:[],results:[U8({content:[{type:"tool_result",content:`<tool_use_error>Error: No such tool available: ${q.name}</tool_use_error>`,is_error:!0,tool_use_id:q.id}],toolUseResult:`Error: No such tool available: ${q.name}`,sourceToolAssistantUUID:K.uuid})]});return}let z=_.inputSchema.safeParse(q.input),Y=z?.success?(()=>{try{return Boolean(_.isConcurrencySafe(z.data))}catch{return!1}})():!1;this.tools.push({id:q.id,block:q,assistantMessage:K,status:"queued",isConcurrencySafe:Y,pendingProgress:[]}),this.processQueue()}canExecuteTool(q){let K=this.tools.filter((_)=>_.status==="executing");return K.length===0||q&&K.every((_)=>_.isConcurrencySafe)}async processQueue(){for(let q of this.tools){if(q.status!=="queued")continue;if(this.canExecuteTool(q.isConcurrencySafe))await this.executeTool(q);else if(!q.isConcurrencySafe)break}}createSyntheticErrorMessage(q,K,_){if(K==="user_interrupted")return U8({content:[{type:"tool_result",content:aR6(fj6),is_error:!0,tool_use_id:q}],toolUseResult:"User rejected tool use",sourceToolAssistantUUID:_.uuid});if(K==="streaming_fallback")return U8({content:[{type:"tool_result",content:"<tool_use_error>Error: Streaming fallback - tool execution discarded</tool_use_error>",is_error:!0,tool_use_id:q}],toolUseResult:"Streaming fallback - tool execution discarded",sourceToolAssistantUUID:_.uuid});let z=this.erroredToolDescription,Y=z?`Cancelled: parallel tool call ${z} errored`:"Cancelled: parallel tool call errored";return U8({content:[{type:"tool_result",content:`<tool_use_error>${Y}</tool_use_error>`,is_error:!0,tool_use_id:q}],toolUseResult:Y,sourceToolAssistantUUID:_.uuid})}getAbortReason(q){if(this.discarded)return"streaming_fallback";if(this.hasErrored)return"sibling_error";if(this.toolUseContext.abortController.signal.aborted){if(this.toolUseContext.abortController.signal.reason==="interrupt")return this.getToolInterruptBehavior(q)==="cancel"?"user_interrupted":null;return"user_interrupted"}return null}getToolInterruptBehavior(q){let K=L5(this.toolDefinitions,q.block.name);if(!K?.interruptBehavior)return"block";try{return K.interruptBehavior()}catch{return"block"}}getToolDescription(q){let K=q.block.input,_=K?.command??K?.file_path??K?.pattern??"";if(typeof _==="string"&&_.length>0){let z=_.length>40?_.slice(0,40)+"…":_;return`${q.block.name}(${z})`}return q.block.name}updateInterruptibleState(){let q=this.tools.filter((K)=>K.status==="executing");this.toolUseContext.setHasInterruptibleToolInProgress?.(q.length>0&&q.every((K)=>this.getToolInterruptBehavior(K)==="cancel"))}async executeTool(q){q.status="executing",this.toolUseContext.setInProgressToolUseIDs(($)=>new Set($).add(q.id)),this.updateInterruptibleState();let K=[],_=[],Y=(async()=>{let $=this.getAbortReason(q);if($){K.push(this.createSyntheticErrorMessage(q.id,$,q.assistantMessage)),q.results=K,q.contextModifiers=_,q.status="completed",this.updateInterruptibleState();return}let A=bC(this.siblingAbortController);A.signal.addEventListener("abort",()=>{if(A.signal.reason!=="sibling_error"&&!this.toolUseContext.abortController.signal.aborted&&!this.discarded)this.toolUseContext.abortController.abort(A.signal.reason)},{once:!0});let O=fo6(q.block,q.assistantMessage,this.canUseTool,{...this.toolUseContext,abortController:A}),w=!1;for await(let j of O){let H=this.getAbortReason(q);if(H&&!w){K.push(this.createSyntheticErrorMessage(q.id,H,q.assistantMessage));break}if(j.message.type==="user"&&Array.isArray(j.message.message.content)&&j.message.message.content.some((M)=>M.type==="tool_result"&&M.is_error===!0)){if(w=!0,q.block.name===_q)this.hasErrored=!0,this.erroredToolDescription=this.getToolDescription(q),this.siblingAbortController.abort("sibling_error")}if(j.message)if(j.message.type==="progress"){if(q.pendingProgress.push(j.message),this.progressAvailableResolve)this.progressAvailableResolve(),this.progressAvailableResolve=void 0}else K.push(j.message);if(j.contextModifier)_.push(j.contextModifier.modifyContext)}if(q.results=K,q.contextModifiers=_,q.status="completed",this.updateInterruptibleState(),!q.isConcurrencySafe&&_.length>0)for(let j of _)this.toolUseContext=j(this.toolUseContext)})();q.promise=Y,Y.finally(()=>{this.processQueue()})}*getCompletedResults(){if(this.discarded)return;for(let q of this.tools){while(q.pendingProgress.length>0)yield{message:q.pendingProgress.shift(),newContext:this.toolUseContext};if(q.status==="yielded")continue;if(q.status==="completed"&&q.results){q.status="yielded";for(let K of q.results)yield{message:K,newContext:this.toolUseContext};h5Y(this.toolUseContext,q.id)}else if(q.status==="executing"&&!q.isConcurrencySafe)break}}hasPendingProgress(){return this.tools.some((q)=>q.pendingProgress.length>0)}async*getRemainingResults(){if(this.discarded)return;while(this.hasUnfinishedTools()){await this.processQueue();for(let q of this.getCompletedResults())yield q;if(this.hasExecutingTools()&&!this.hasCompletedResults()&&!this.hasPendingProgress()){let q=this.tools.filter((_)=>_.status==="executing"&&_.promise).map((_)=>_.promise),K=new Promise((_)=>{this.progressAvailableResolve=_});if(q.length>0)await Promise.race([...q,K])}}for(let q of this.getCompletedResults())yield q}hasCompletedResults(){return this.tools.some((q)=>q.status==="completed")}hasExecutingTools(){return this.tools.some((q)=>q.status==="executing")}hasUnfinishedTools(){return this.tools.some((q)=>q.status!=="yielded")}getUpdatedContext(){return this.toolUseContext}}function h5Y(q,K){q.setInProgressToolUseIDs((_)=>{let z=new Set(_);return z.delete(K),z})}var qWK=y(()=>{i1();Bq();B2();em1()});function O18(){if(!A18)return;wE().clearMarks(),J87.clear(),H87=null,KWK++,g3("query_user_input_received")}function g3(q){if(!A18)return;let K=wE();if(K.mark(q),J87.set(q,process.memoryUsage()),q==="query_first_chunk_received"&&H87===null){let _=K.getEntriesByType("mark");if(_.length>0)H87=_[_.length-1]?.startTime??0}}function _WK(){if(!A18)return;g3("query_profile_end")}function S5Y(q,K){if(K==="query_user_input_received")return"";if(q>1000)return" ⚠️ VERY SLOW";if(q>100)return" ⚠️ SLOW";if(K.includes("git_status")&&q>50)return" ⚠️ git status";if(K.includes("tool_schema")&&q>50)return" ⚠️ tool schemas";if(K.includes("client_creation")&&q>50)return" ⚠️ client creation";return""}function C5Y(){if(!A18)return"Query profiling not enabled (set CLAUDE_CODE_PROFILE_QUERY=1)";let K=wE().getEntriesByType("mark");if(K.length===0)return"No query profiling checkpoints recorded";let _=[];_.push("=".repeat(80)),_.push(`QUERY PROFILING REPORT - Query #${KWK}`),_.push("=".repeat(80)),_.push("");let z=K[0]?.startTime??0,Y=z,$=0,A=0;for(let j of K){let H=j.startTime-z,J=j.startTime-Y;if(_.push(f98(H,J,j.name,J87.get(j.name),10,9,S5Y(J,j.name))),j.name==="query_api_request_sent")$=H;if(j.name==="query_first_chunk_received")A=H;Y=j.startTime}let O=K[K.length-1],w=O?O.startTime-z:0;if(_.push(""),_.push("-".repeat(80)),A>0){let j=$,H=A-$,J=(j/A*100).toFixed(1),M=(H/A*100).toFixed(1);_.push(`Total TTFT: ${Sx(A)}ms`),_.push(` - Pre-request overhead: ${Sx(j)}ms (${J}%)`),_.push(` - Network latency: ${Sx(H)}ms (${M}%)`)}else _.push(`Total time: ${Sx(w)}ms`);return _.push(b5Y(K,z)),_.push("=".repeat(80)),_.join(`

Callers 2

R5YFunction · 0.85
oFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected