| 2176 | `;function eBz(q,K,_){return async(z,Y,$,A,O,w)=>{let j=w??await uX(z,Y,$,A,O);if(j.behavior!=="ask")return j;if(K.signal.aborted)return{behavior:"ask",message:um};let H=$.getAppState(),J=await z.description(Y,{isNonInteractiveSession:$.options.isNonInteractiveSession,toolPermissionContext:H.toolPermissionContext,tools:$.options.tools});if(K.signal.aborted)return{behavior:"ask",message:um};let M=EE6();if(M)return new Promise((X)=>{let P=!1,W=Date.now(),D=()=>{_?.(Date.now()-W)},f=()=>{if(P)return;P=!0,D(),X({behavior:"ask",message:um}),M((G)=>G.filter((Z)=>Z.toolUseID!==O))};K.signal.addEventListener("abort",f,{once:!0}),M((G)=>[...G,{assistantMessage:A,tool:z,description:J,input:Y,toolUseContext:$,toolUseID:O,permissionResult:j,permissionPromptStartTimeMs:W,workerBadge:q.color?{name:q.agentName,color:q.color}:void 0,onUserInteraction(){},onAbort(){if(P)return;P=!0,K.signal.removeEventListener("abort",f),D(),X({behavior:"ask",message:um})},async onAllow(Z,T,v,V){if(P)return;if(P=!0,K.signal.removeEventListener("abort",f),D(),ru(T),T.length>0){let S=C7K();if(S){let R=$.getAppState(),x=XN(R.toolPermissionContext,T);S(x,{preserveMode:!0})}}let E=v?.trim();X({behavior:"allow",updatedInput:Z,userModified:!1,acceptFeedback:E||void 0,...V&&V.length>0&&{contentBlocks:V}})},onReject(Z,T){if(P)return;P=!0,K.signal.removeEventListener("abort",f),D();let v=Z?`${Ve6}${Z}`:um;X({behavior:"ask",message:v,contentBlocks:T})},async recheckPermission(){if(P)return;let Z=await uX(z,Y,$,A,O);if(Z.behavior==="allow")P=!0,K.signal.removeEventListener("abort",f),D(),M((T)=>T.filter((v)=>v.toolUseID!==O)),X({...Z,updatedInput:Y,userModified:!1})}}])});return new Promise((X)=>{let P=cC8({toolName:z.name,toolUseId:O,input:Y,description:J,permissionSuggestions:j.suggestions,workerId:q.agentId,workerName:q.agentName,workerColor:q.color,teamName:q.teamName});iC8({requestId:P.id,toolUseId:O,onAllow(G,Z,T,v){f(),ru(Z);let V=G&&Object.keys(G).length>0?G:Y;X({behavior:"allow",updatedInput:V,userModified:!1,...v&&v.length>0&&{contentBlocks:v}})},onReject(G,Z){f();let T=G?`${Ve6}${G}`:um;X({behavior:"ask",message:T,contentBlocks:Z})}}),lC8(P);let W=setInterval(async(G,Z,T,v,V)=>{if(G.signal.aborted){Z(),T({behavior:"ask",message:um});return}let E=await Qo(v.agentName,v.teamName);for(let S=0;S<E.length;S++){let R=E[S];if(R&&!R.read){let x=i26(R.text);if(x&&x.request_id===V.id){if(await Pe6(v.agentName,v.teamName,S),x.subtype==="success")NE6({requestId:x.request_id,decision:"approved",updatedInput:x.response?.updated_input,permissionUpdates:x.response?.permission_updates});else NE6({requestId:x.request_id,decision:"rejected",feedback:x.error});return}}}},tBz,K,f,X,q,P),D=()=>{f(),X({behavior:"ask",message:um})};K.signal.addEventListener("abort",D,{once:!0});function f(){clearInterval(W),k7K(P.id),K.signal.removeEventListener("abort",D)}})}}function Ti1(q,K,_,z){let Y=_?` color="${_}"`:"",$=z?` summary="${z}"`:"";return`<${dJ} teammate_id="${q}"${Y}${$}> |
| 2182 | ${q.description}`;return K}async function u7K(q,K){try{let _=await LD(q),z=Kgz(_);if(!z)return;let Y=await cn1(q,z.id,K);if(!Y.success){N(`[inProcessRunner] Failed to claim task #${z.id}: ${Y.reason}`);return}return await TQ(q,z.id,{status:"in_progress"}),N(`[inProcessRunner] Claimed task #${z.id}: ${z.subject}`),_gz(z)}catch(_){N(`[inProcessRunner] Error checking task list: ${_}`);return}}async function zgz(q,K,_,z,Y,$){N(`[inProcessRunner] ${q.agentName} starting poll loop (abort=${K.signal.aborted})`);let O=0;while(!K.signal.aborted){let j=z().tasks[_];if(j&&j.type==="in_process_teammate"&&j.pendingUserMessages.length>0){let J=j.pendingUserMessages[0];return Y((M)=>{let X=M.tasks[_];if(!X||X.type!=="in_process_teammate")return M;return{...M,tasks:{...M.tasks,[_]:{...X,pendingUserMessages:X.pendingUserMessages.slice(1)}}}}),N(`[inProcessRunner] ${q.agentName} found pending user message (poll #${O})`),{type:"new_message",message:J,from:"user"}}if(O>0)await R7(500);if(O++,K.signal.aborted)return N(`[inProcessRunner] ${q.agentName} aborted while waiting (poll #${O})`),{type:"aborted"};N(`[inProcessRunner] ${q.agentName} poll #${O}: checking mailbox`);try{let J=await Qo(q.agentName,q.teamName),M=-1,X=null;for(let W=0;W<J.length;W++){let D=J[W];if(D&&!D.read){let f=n46(D.text);if(f){M=W,X=f;break}}}if(M!==-1){let W=J[M],D=$7(J.slice(0,M),(f)=>!f.read);return N(`[inProcessRunner] ${q.agentName} received shutdown request from ${X?.from} (prioritized over ${D} unread messages)`),await Pe6(q.agentName,q.teamName,M),{type:"shutdown_request",request:X,originalMessage:W.text}}let P=-1;for(let W=0;W<J.length;W++){let D=J[W];if(D&&!D.read&&D.from===wz){P=W;break}}if(P===-1)P=J.findIndex((W)=>!W.read);if(P!==-1){let W=J[P];if(W)return N(`[inProcessRunner] ${q.agentName} received new message from ${W.from} (index ${P})`),await Pe6(q.agentName,q.teamName,P),{type:"new_message",message:W.text,from:W.from,color:W.color,summary:W.summary}}}catch(J){N(`[inProcessRunner] ${q.agentName} poll error: ${J}`)}let H=await u7K($,q.agentName);if(H)return{type:"new_message",message:H,from:"task-list"}}return N(`[inProcessRunner] ${q.agentName} exiting poll loop (abort=${K.signal.aborted}, polls=${O})`),{type:"aborted"}}async function Ygz(q){let{identity:K,taskId:_,prompt:z,description:Y,agentDefinition:$,teammateContext:A,toolUseContext:O,abortController:w,model:j,systemPrompt:H,systemPromptMode:J,allowedTools:M,allowPermissionPrompts:X,invokingRequestId:P}=q,{setAppState:W}=O;N(`[inProcessRunner] Starting agent loop for ${K.agentId}`);let D={agentId:K.agentId,parentSessionId:K.parentSessionId,agentName:K.agentName,teamName:K.teamName,agentColor:K.color,planModeRequired:K.planModeRequired,isTeamLead:!1,agentType:"teammate",invokingRequestId:P,invocationKind:"spawn",invocationEmitted:!1},f;if(J==="replace"&&H)f=H;else{let S=[...await QP(O.options.tools,O.options.mainLoopModel,void 0,O.options.mcpClients),Gi1];if($){let R=$.getSystemPrompt();if(R)S.push(` |