| 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` |