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

Method spawn

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

Source from the content-addressed store, hash-verified

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(`
2183# Custom Agent Instructions
2184${R}`);if($.memory)d("tengu_agent_memory_loaded",{...{},scope:$.memory,source:"in-process-teammate"})}if(J==="append"&&H)S.push(H);f=S.join(`
2185`)}let G={agentType:K.agentName,whenToUse:`In-process teammate: ${K.agentName}`,getSystemPrompt:()=>f,tools:$?.tools?[...new Set([...$.tools,wD,au,Mw6,TN,Gq6,Tq6,bL])]:["*"],source:"projectSettings",permissionMode:"default",...$?.model?{model:$.model}:{}},Z=[],T=Ti1("team-lead",z,void 0,Y),v=T,V=!1;await u7K(K.parentSessionId,K.agentName);try{Im(_,(x)=>({...x,messages:F26(x.messages,U8({content:T}))}),W);let E=O.contentReplacementState?Pa6():void 0;while(!w.signal.aborted&&!V){N(`[inProcessRunner] ${K.agentId} processing prompt: ${v.substring(0,50)}...`);let x=P3();Im(_,(w6)=>({...w6,currentWorkAbortController:x}),W);let I=U8({content:v}),B=[I],p=Z,C=yG(Z);if(C>Ne6(O.options.mainLoopModel)){N(`[inProcessRunner] ${K.agentId} compacting history (${C} tokens)`);let w6={...O,readFileState:gu(O.readFileState),onCompactProgress:void 0,setStreamMode:void 0},o=await LE6(Z,w6,{systemPrompt:iK([]),userContext:{},systemContext:{},toolUseContext:w6,forkContextMessages:[]},!0,void 0,!0);if(p=lo(o),Xr(),E)E=Pa6();Z.length=0,Z.push(...p),Im(_,(s)=>({...s,messages:[...p,I]}),W)}let g=p.length>0?[...p]:void 0;Z.push(I);let F=dw6(),U=cw6(O.options.tools),c=[],t=O.getAppState().tasks[_],q6=t&&t.type==="in_process_teammate"?t.permissionMode:"default",e={...G,permissionMode:q6},i=!1;if(await $f8(A,async()=>{return KF(D,async()=>{Im(_,(w6)=>({...w6,status:"running",isIdle:!1}),W);for await(let w6 of iN({agentDefinition:e,promptMessages:B,toolUseContext:O,canUseTool:eBz(K,x,(o)=>{Im(_,(s)=>({...s,totalPausedMs:(s.totalPausedMs??0)+o}),W)}),isAsync:!0,canShowPermissionPrompts:X??!0,forkContextMessages:g,querySource:"agent:custom",override:{abortController:x},model:j,preserveToolUseResults:!0,availableTools:O.options.tools,allowedTools:M,contentReplacementState:E})){if(w.signal.aborted){N(`[inProcessRunner] ${K.agentId} lifecycle aborted`);break}if(x.signal.aborted){N(`[inProcessRunner] ${K.agentId} current work aborted (Escape pressed)`),i=!0;break}c.push(w6),Z.push(w6),oq6(F,w6,U,O.options.tools);let o=Ao(F);Im(_,(s)=>{let a=s.inProgressToolUseIDs;if(w6.type==="assistant"){for(let n of w6.message.content)if(n.type==="tool_use")a=new Set([...a??[],n.id])}else if(w6.type==="user"){let n=w6.message.content;if(Array.isArray(n)){for(let l of n)if(typeof l==="object"&&"type"in l&&l.type==="tool_result"){if(a)a=new Set(a),a.delete(l.tool_use_id)}}}return{...s,progress:o,messages:F26(s.messages,w6),inProgressToolUseIDs:a}},W)}return{success:!0,messages:c}})}),Im(_,(w6)=>({...w6,currentWorkAbortController:void 0}),W),w.signal.aborted)break;if(i){N(`[inProcessRunner] ${K.agentId} work interrupted, returning to idle`);let w6=q_({content:co});Im(_,(o)=>({...o,messages:F26(o.messages,w6)}),W)}let M6=O.getAppState().tasks[_],j6=M6?.type==="in_process_teammate"&&M6.isIdle;if(Im(_,(w6)=>{return w6.onIdleCallbacks?.forEach((o)=>o()),{...w6,isIdle:!0,onIdleCallbacks:[]}},W),!j6)await I7K(K.agentName,K.color,K.teamName,{idleReason:i?"interrupted":"available",summary:Te6(Z)});else N(`[inProcessRunner] Skipping duplicate idle notification for ${K.agentName}`);N(`[inProcessRunner] ${K.agentId} finished prompt, waiting for next`);let G6=await zgz(K,w,_,O.getAppState,W,K.parentSessionId);switch(G6.type){case"shutdown_request":N(`[inProcessRunner] ${K.agentId} received shutdown request - passing to model`),v=Ti1(G6.request?.from||"team-lead",G6.originalMessage),rC8(_,U8({content:v}),W);break;case"new_message":if(N(`[inProcessRunner] ${K.agentId} received new message from ${G6.from}`),G6.from==="user")v=G6.message;else v=Ti1(G6.from,G6.message,G6.color,G6.summary),rC8(_,U8({content:v}),W);break;case"aborted":N(`[inProcessRunner] ${K.agentId} aborted while waiting`),V=!0;break}}let S=!1,R;if(Im(_,(x)=>{if(x.status!=="running")return S=!0,x;return R=x.toolUseId,x.onIdleCallbacks?.forEach((I)=>I()),x.unregisterCleanup?.(),{...x,status:"completed",notified:!0,endTime:Date.now(),messages:x.messages?.length?[x.messages.at(-1)]:void 0,pendingUserMessages:[],inProgressToolUseIDs:void 0,abortController:void 0,unregisterCleanup:void 0,currentWorkAbortController:void 0,onIdleCallbacks:[]}},W),Zw(_),CV6(_,W),!S)ZN(_,"completed",{toolUseId:R,summary:K.agentId});return Qw6(K.agentId),{success:!0,messages:Z}}catch(E){let S=E instanceof Error?E.message:"Unknown error";N(`[inProcessRunner] Agent ${K.agentId} failed: ${S}`);let R=!1,x;if(Im(_,(I)=>{if(I.status!=="running")return R=!0,I;return x=I.toolUseId,I.onIdleCallbacks?.forEach((B)=>B()),I.unregisterCleanup?.(),{...I,status:"failed",notified:!0,error:S,isIdle:!0,endTime:Date.now(),onIdleCallbacks:[],messages:I.messages?.length?[I.messages.at(-1)]:void 0,pendingUserMessages:[],inProgressToolUseIDs:void 0,abortController:void 0,unregisterCleanup:void 0,currentWorkAbortController:void 0}},W),Zw(_),CV6(_,W),!R)ZN(_,"failed",{toolUseId:x,summary:K.agentId});return await I7K(K.agentName,K.color,K.teamName,{idleReason:"failed",completedStatus:"failed",failureReason:S}),Qw6(K.agentId),{success:!1,error:S,messages:Z}}}function oC8(q){let K=q.identity.agentId;Ygz(q).catch((_)=>{N(`[inProcessRunner] Unhandled error in ${K}: ${_}`)})}var tBz=500;var vi1=y(()=>{rL();RY();yE6();k8();io();no();EC();Hb();gP();i46();DN();i1();Ij();J0();EG();B2();Ou();_8();NG();i1();LH();Fj();pC();l8();gj();JG();RJ();gN6();IG();vE6()});class m7K{type="in-process";context=null;setContext(q){this.context=q}async isAvailable(){return!0}async spawn(q){if(!this.context)return N(`[InProcessBackend] spawn() called without context for ${q.name}`),{success:!1,agentId:`${q.name}@${q.teamName}`,error:"InProcessBackend not initialized. Call setContext() before spawn()."};N(`[InProcessBackend] spawn() called for ${q.name}`);let K=await aC8({name:q.name,teamName:q.teamName,prompt:q.prompt,color:q.color,planModeRequired:q.planModeRequired??!1},this.context);if(K.success&&K.taskId&&K.teammateContext&&K.abortController)oC8({identity:{agentId:K.agentId,agentName:q.name,teamName:q.teamName,color:q.color,planModeRequired:q.planModeRequired??!1,parentSessionId:K.teammateContext.parentSessionId},taskId:K.taskId,prompt:q.prompt,teammateContext:K.teammateContext,toolUseContext:{...this.context,messages:[]},abortController:K.abortController,model:q.model,systemPrompt:q.systemPrompt,systemPromptMode:q.systemPromptMode,allowedTools:q.permissions,allowPermissionPrompts:q.allowPermissionPrompts}),N(`[InProcessBackend] Started agent execution for ${K.agentId}`);return{success:K.success,agentId:K.agentId,taskId:K.taskId,abortController:K.abortController,error:K.error}}async sendMessage(q,K){N(`[InProcessBackend] sendMessage() to ${q}: ${K.text.substring(0,50)}...`);let _=we6(q);if(!_)throw N(`[InProcessBackend] Invalid agentId format: ${q}`),Error(`Invalid agentId format: ${q}. Expected format: agentName@teamName`);let{agentName:z,teamName:Y}=_;await R_(z,{text:K.text,from:K.from,color:K.color,timestamp:K.timestamp??new Date().toISOString()},Y),N(`[InProcessBackend] sendMessage() completed for ${q}`)}async terminate(q,K){if(N(`[InProcessBackend] terminate() called for ${q}: ${K}`),!this.context)return N(`[InProcessBackend] terminate() failed: no context set for ${q}`),!1;let _=this.context.getAppState(),z=kQ(q,_.tasks);if(!z)return N(`[InProcessBackend] terminate() failed: task not found for ${q}`),!1;if(z.shutdownRequested)return N(`[InProcessBackend] terminate(): shutdown already requested for ${q}`),!0;let Y=`shutdown-${q}-${Date.now()}`,$=DE6({requestId:Y,from:"team-lead",reason:K}),A=z.identity.agentName;return await R_(A,{from:"team-lead",text:g6($),timestamp:new Date().toISOString()},z.identity.teamName),ki1(z.id,this.context.setAppState),N(`[InProcessBackend] terminate() sent shutdown request to ${q}`),!0}async kill(q){if(N(`[InProcessBackend] kill() called for ${q}`),!this.context)return N(`[InProcessBackend] kill() failed: no context set for ${q}`),!1;let K=this.context.getAppState(),_=kQ(q,K.tasks);if(!_)return N(`[InProcessBackend] kill() failed: task not found for ${q}`),!1;let z=sC8(_.id,this.context.setAppState);return N(`[InProcessBackend] kill() ${z?"succeeded":"failed"} for ${q}`),z}async isActive(q){if(N(`[InProcessBackend] isActive() called for ${q}`),!this.context)return N(`[InProcessBackend] isActive() failed: no context set for ${q}`),!1;let K=this.context.getAppState(),_=kQ(q,K.tasks);if(!_)return N(`[InProcessBackend] isActive(): task not found for ${q}`),!1;let z=_.status==="running",Y=_.abortController?.signal.aborted??!0,$=z&&!Y;return N(`[InProcessBackend] isActive() for ${q}: ${$} (running=${z}, aborted=${Y})`),$}}function p7K(){return new m7K}var B7K=y(()=>{Hb();_8();l8();RJ();vi1();tC8()});import{homedir as eC8}from"os";async function g7K(){if((await a8("which",["uv"])).code===0)return N("[it2Setup] Found uv (will use uv tool install)"),"uvx";if((await a8("which",["pipx"])).code===0)return N("[it2Setup] Found pipx package manager"),"pipx";if((await a8("which",["pip"])).code===0)return N("[it2Setup] Found pip package manager"),"pip";if((await a8("which",["pip3"])).code===0)return N("[it2Setup] Found pip3 package manager"),"pip";return N("[it2Setup] No Python package manager found"),null}async function $gz(){return(await a8("which",["it2"])).code===0}async function F7K(q){N(`[it2Setup] Installing it2 using ${q}`);let K;switch(q){case"uvx":K=await S7("uv",["tool","install","it2"],{cwd:eC8()});break;case"pipx":K=await S7("pipx",["install","it2"],{cwd:eC8()});break;case"pip":if(K=await S7("pip",["install","--user","it2"],{cwd:eC8()}),K.code!==0)K=await S7("pip3",["install","--user","it2"],{cwd:eC8()});break}if(K.code!==0){let _=K.stderr||"Unknown installation error";return H6(Error(`[it2Setup] Failed to install it2: ${_}`)),{success:!1,error:_,packageManager:q}}return N("[it2Setup] it2 installed successfully"),{success:!0,packageManager:q}}async function Vi1(){if(N("[it2Setup] Verifying it2 setup..."),!await $gz())return{success:!1,error:"it2 CLI is not installed or not in PATH"};let K=await a8("it2",["session","list"]);if(K.code!==0){let _=K.stderr.toLowerCase();if(_.includes("api")||_.includes("python")||_.includes("connection refused")||_.includes("not enabled"))return N("[it2Setup] Python API not enabled in iTerm2"),{success:!1,error:"Python API not enabled in iTerm2 preferences",needsPythonApiEnabled:!0};return{success:!1,error:K.stderr||"Failed to communicate with iTerm2"}}return N("[it2Setup] it2 setup verified successfully"),{success:!0}}function U7K(){return["Almost done! Enable the Python API in iTerm2:",""," iTerm2 → Settings → General → Magic → Enable Python API","","After enabling, you may need to restart iTerm2."]}function Ni1(){if(j8().iterm2It2SetupComplete!==!0)b8((K)=>({...K,iterm2It2SetupComplete:!0})),N("[it2Setup] Marked it2 setup as complete")}function Q7K(q){if(j8().preferTmuxOverIterm2!==q)b8((_)=>({..._,preferTmuxOverIterm2:q})),N(`[it2Setup] Set preferTmuxOverIterm2 = ${q}`)}function d7K(){return j8().preferTmuxOverIterm2===!0}var yi1=y(()=>{V1();_8();XK();E8()});var Ri1={};T8(Ri1,{setCliTeammateModeOverride:()=>Agz,getTeammateModeFromSnapshot:()=>a26,getCliTeammateModeOverride:()=>Ei1,clearCliTeammateModeOverride:()=>Li1,captureTeammateModeSnapshot:()=>c7K});function Agz(q){ye6=q}function Ei1(){return ye6}function Li1(q){ye6=null,o26=q,N(`[TeammateModeSnapshot] CLI override cleared, new mode: ${q}`)}function c7K(){if(ye6)o26=ye6,N(`[TeammateModeSnapshot] Captured from CLI override: ${o26}`);else o26=j8().teammateMode??"auto",N(`[TeammateModeSnapshot] Captured from config: ${o26}`)}function a26(){if(o26===null)H6(Error("getTeammateModeFromSnapshot called before capture - this indicates an initialization bug")),c7K();return o26??"auto"}var o26=null,ye6=null;var s26=y(()=>{V1();_8();E8()});function l7K(){if(process.env[ME6])return process.env[ME6];return jj()?process.execPath:process.argv[1]}function n7K(q){let K=[],{planModeRequired:_,permissionMode:z}=q||{};if(_);else if(z==="bypassPermissions"||s36())K.push("--dangerously-skip-permissions");else if(z==="acceptEdits")K.push("--permission-mode acceptEdits");let Y=yx();if(Y)K.push(`--model ${E4([Y])}`);let $=xt();if($)K.push(`--settings ${E4([$])}`);let A=ep();for(let j of A)K.push(`--plugin-dir ${E4([j])}`);let O=a26();K.push(`--teammate-mode ${O}`);let w=lb6();if(w===!0)K.push("--chrome");else if(w===!1)K.push("--no-chrome");return K.join(" ")}function Ee6(){let q=["CLAUDECODE=1","CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1"];for(let K of Ogz){let _=process.env[K];if(_!==void 0&&_!=="")q.push(`${K}=${E4([_])}`)}return q.join(" ")}var Ogz;var hi1=y(()=>{v8();NX();s26();Ogz=["CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","CLAUDE_CODE_USE_FOUNDRY","ANTHROPIC_BASE_URL","CLAUDE_CONFIG_DIR","CLAUDE_CODE_REMOTE","CLAUDE_CODE_REMOTE_MEMORY_DIR","HTTPS_PROXY","https_proxy","HTTP_PROXY","http_proxy","NO_PROXY","no_proxy","SSL_CERT_FILE","NODE_EXTRA_CA_CERTS","REQUESTS_CA_BUNDLE","CURL_CA_BUNDLE"]});async function bi1(){return(await r46()).backend}function ro(q){let K=Si1.get(q);if(K)return K;let _=GJ[Ci1%GJ.length];return Si1.set(q,_),Ci1++,_}function i7K(){Si1.clear(),Ci1=0}async function r7K(){let{isInsideTmux:q}=await Promise.resolve().then(() => (wb(),en1));return q()}async function o7K(q,K){return(await bi1()).createTeammatePaneInSwarmView(q,K)}async function a7K(q,K=!1){return(await bi1()).enablePaneBorderStatus(q,K)}async function s7K(q,K,_=!1){return(await bi1()).sendCommandToPane(q,K,_)}var Si1,Ci1=0;var Le6=y(()=>{$0();Jb();Si1=new Map});class t7K{type;backend;context=null;spawnedTeammates;cleanupRegistered=!1;constructor(q){this.backend=q,this.type=q.type,this.spawnedTeammates=new Map}setContext(q){this.context=q}async isAvailable(){return this.backend.isAvailable()}async spawn(q){let K=iL(q.name,q.teamName);if(!this.context)return N(`[PaneBackendExecutor] spawn() called without context for ${q.name}`),{success:!1,agentId:K,error:"PaneBackendExecutor not initialized. Call setContext() before spawn()."};try{let _=q.color??ro(K),{paneId:z,isFirstTeammate:Y}=await this.backend.createTeammatePaneInSwarmView(q.name,_),$=await xm();if(Y&&$)await this.backend.enablePaneBorderStatus();let A=l7K(),O=[`--agent-id ${E4([K])}`,`--agent-name ${E4([q.name])}`,`--team-name ${E4([q.teamName])}`,`--agent-color ${E4([_])}`,`--parent-session-id ${E4([q.parentSessionId||N8()])}`,q.planModeRequired?"--plan-mode-required":""].filter(Boolean).join(" "),w=this.context.getAppState(),j=n7K({planModeRequired:q.planModeRequired,permissionMode:w.toolPermissionContext.mode});if(q.model)j=j.split(" ").filter((P,W,D)=>P!=="--model"&&D[W-1]!=="--model").join(" "),j=j?`${j} --model ${E4([q.model])}`:`--model ${E4([q.model])}`;let H=j?` ${j}`:"",J=q.cwd,M=Ee6(),X=`cd ${E4([J])} && env ${M} ${E4([A])} ${O}${H}`;if(await this.backend.sendCommandToPane(z,X,!$),this.spawnedTeammates.set(K,{paneId:z,insideTmux:$}),!this.cleanupRegistered)this.cleanupRegistered=!0,pq(async()=>{for(let[P,W]of this.spawnedTeammates)N(`[PaneBackendExecutor] Cleanup: killing pane for ${P}`),await this.backend.killPane(W.paneId,!W.insideTmux);this.spawnedTeammates.clear()});return await R_(q.name,{from:"team-lead",text:q.prompt,timestamp:new Date().toISOString()},q.teamName),N(`[PaneBackendExecutor] Spawned teammate ${K} in pane ${z}`),{success:!0,agentId:K,paneId:z}}catch(_){let z=_ instanceof Error?_.message:String(_);return N(`[PaneBackendExecutor] Failed to spawn ${K}: ${z}`),{success:!1,agentId:K,error:z}}}async sendMessage(q,K){N(`[PaneBackendExecutor] sendMessage() to ${q}: ${K.text.substring(0,50)}...`);let _=we6(q);if(!_)throw Error(`Invalid agentId format: ${q}. Expected format: agentName@teamName`);let{agentName:z,teamName:Y}=_;await R_(z,{text:K.text,from:K.from,color:K.color,timestamp:K.timestamp??new Date().toISOString()},Y),N(`[PaneBackendExecutor] sendMessage() completed for ${q}`)}async terminate(q,K){N(`[PaneBackendExecutor] terminate() called for ${q}: ${K}`);let _=we6(q);if(!_)return N("[PaneBackendExecutor] terminate() failed: invalid agentId format"),!1;let{agentName:z,teamName:Y}=_,$={type:"shutdown_request",requestId:`shutdown-${q}-${Date.now()}`,from:"team-lead",reason:K};return await R_(z,{from:"team-lead",text:g6($),timestamp:new Date().toISOString()},Y),N(`[PaneBackendExecutor] terminate() sent shutdown request to ${q}`),!0}async kill(q){N(`[PaneBackendExecutor] kill() called for ${q}`);let K=this.spawnedTeammates.get(q);if(!K)return N(`[PaneBackendExecutor] kill() failed: teammate ${q} not found in spawned map`),!1;let{paneId:_,insideTmux:z}=K,Y=await this.backend.killPane(_,!z);if(Y)this.spawnedTeammates.delete(q),N(`[PaneBackendExecutor] kill() succeeded for ${q}`);else N(`[PaneBackendExecutor] kill() failed for ${q}`);return Y}async isActive(q){if(N(`[PaneBackendExecutor] isActive() called for ${q}`),!this.spawnedTeammates.get(q))return N(`[PaneBackendExecutor] isActive(): teammate ${q} not found`),!1;return!0}}function e7K(q){return new t7K(q)}var qqK=y(()=>{v8();NX();c9();_8();l8();RJ();hi1();Le6();wb()});var $qK={};T8($qK,{TmuxBackend:()=>xi1});function zqK(){return R7(wgz)}function jgz(){let q,K=new Promise((z)=>{q=z}),_=_qK;return _qK=K,_.then(()=>q)}function YqK(q){return{red:"red",blue:"blue",green:"green",yellow:"yellow",purple:"magenta",orange:"colour208",pink:"colour205",cyan:"cyan"}[q]}function mm(q){return a8(h0,q)}function S0(q){return a8(h0,["-L",JE6(),...q])}class xi1{type="tmux";displayName="tmux";supportsHideShow=!0;async isAvailable(){return l46()}async isRunningInside(){return xm()}async createTeammatePaneInSwarmView(q,K){let _=await jgz();try{if(await this.isRunningInside())return await this.createTeammatePaneWithLeader(q,K);return await this.createTeammatePaneExternal(q,K)}finally{_()}}async sendCommandToPane(q,K,_=!1){let Y=await(_?S0:mm)(["send-keys","-t",q,K,"Enter"]);if(Y.code!==0)throw Error(`Failed to send command to pane ${q}: ${Y.stderr}`)}async setPaneBorderColor(q,K,_=!1){let z=YqK(K),Y=_?S0:mm;await Y(["select-pane","-t",q,"-P",`bg=default,fg=${z}`]),await Y(["set-option","-p","-t",q,"pane-border-style",`fg=${z}`]),await Y(["set-option","-p","-t",q,"pane-active-border-style",`fg=${z}`])}async setPaneTitle(q,K,_,z=!1){let Y=YqK(_),$=z?S0:mm;await $(["select-pane","-t",q,"-T",K]),await $(["set-option","-p","-t",q,"pane-border-format",`#[fg=${Y},bold] #{pane_title} #[default]`])}async enablePaneBorderStatus(q,K=!1){let _=q||await this.getCurrentWindowTarget();if(!_)return;await(K?S0:mm)(["set-option","-w","-t",_,"pane-border-status","top"])}async rebalancePanes(q,K){if(K)await this.rebalancePanesWithLeader(q);else await this.rebalancePanesTiled(q)}async killPane(q,K=!1){return(await(K?S0:mm)(["kill-pane","-t",q])).code===0}async hidePane(q,K=!1){let _=K?S0:mm;await _(["new-session","-d","-s",tn1]);let z=await _(["break-pane","-d","-s",q,"-t",`${tn1}:`]);if(z.code===0)N(`[TmuxBackend] Hidden pane ${q}`);else N(`[TmuxBackend] Failed to hide pane ${q}: ${z.stderr}`);return z.code===0}async showPane(q,K,_=!1){let z=_?S0:mm,Y=await z(["join-pane","-h","-s",q,"-t",K]);if(Y.code!==0)return N(`[TmuxBackend] Failed to show pane ${q}: ${Y.stderr}`),!1;N(`[TmuxBackend] Showed pane ${q} in ${K}`),await z(["select-layout","-t",K,"main-vertical"]);let A=(await z(["list-panes","-t",K,"-F","#{pane_id}"])).stdout.trim().split(`
2186`).filter(Boolean);if(A[0])await z(["resize-pane","-t",A[0],"-x","30%"]);return!0}async getCurrentPaneId(){let q=SC8();if(q)return q;let K=await a8(h0,["display-message","-p","#{pane_id}"]);if(K.code!==0)return N(`[TmuxBackend] Failed to get current pane ID (exit ${K.code}): ${K.stderr}`),null;return K.stdout.trim()}async getCurrentWindowTarget(){if(qb8)return qb8;let q=SC8(),K=["display-message"];if(q)K.push("-t",q);K.push("-p","#{session_name}:#{window_index}");let _=await a8(h0,K);if(_.code!==0)return N(`[TmuxBackend] Failed to get current window target (exit ${_.code}): ${_.stderr}`),null;return qb8=_.stdout.trim(),qb8}async getCurrentWindowPaneCount(q,K=!1){let _=q||await this.getCurrentWindowTarget();if(!_)return null;let z=["list-panes","-t",_,"-F","#{pane_id}"],Y=K?await S0(z):await mm(z);if(Y.code!==0)return H6(Error(`[TmuxBackend] Failed to get pane count for ${_} (exit ${Y.code}): ${Y.stderr}`)),null;return $7(Y.stdout.trim().split(`
2187`),Boolean)}async hasSessionInSwarm(q){return(await S0(["has-session","-t",q])).code===0}async createExternalSwarmSession(){if(!await this.hasSessionInSwarm(nN)){let $=await S0(["new-session","-d","-s",nN,"-n",HE6,"-P","-F","#{pane_id}"]);if($.code!==0)throw Error(`Failed to create swarm session: ${$.stderr||"Unknown error"}`);let A=$.stdout.trim(),O=`${nN}:${HE6}`;return N(`[TmuxBackend] Created external swarm session with window ${O}, pane ${A}`),{windowTarget:O,paneId:A}}let _=(await S0(["list-windows","-t",nN,"-F","#{window_name}"])).stdout.trim().split(`

Callers

nothing calls this directly

Calls 15

iLFunction · 0.85
NFunction · 0.85
roFunction · 0.85
xmFunction · 0.85
l7KFunction · 0.85
E4Function · 0.85
N8Function · 0.85
n7KFunction · 0.85
Ee6Function · 0.85
pqFunction · 0.85
R_Function · 0.85
filterMethod · 0.80

Tested by

no test coverage detected