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

Function HqK

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

Source from the content-addressed store, hash-verified

2190`).filter(Boolean).slice(1),J=H.length,M=J%2===1,X=Math.floor((J-1)/2),P=H[X]||H[H.length-1];A=await a8(h0,["split-window","-t",P,M?"-v":"-h","-P","-F","#{pane_id}"])}if(A.code!==0)throw Error(`Failed to create teammate pane: ${A.stderr}`);let O=A.stdout.trim();return N(`[TmuxBackend] Created teammate pane for ${q}: ${O}`),await this.setPaneBorderColor(O,K),await this.setPaneTitle(O,q,K),await this.rebalancePanesWithLeader(z),await zqK(),{paneId:O,isFirstTeammate:$}}async createTeammatePaneExternal(q,K){let{windowTarget:_,paneId:z}=await this.createExternalSwarmSession(),Y=await this.getCurrentWindowPaneCount(_,!0);if(Y===null)throw Error("Could not determine pane count for swarm window");let $=!KqK&&Y===1,A;if($)A=z,KqK=!0,N(`[TmuxBackend] Using initial pane for first teammate ${q}: ${A}`),await this.enablePaneBorderStatus(_,!0);else{let w=(await S0(["list-panes","-t",_,"-F","#{pane_id}"])).stdout.trim().split(`
2191`).filter(Boolean),j=w.length,H=j%2===1,J=Math.floor((j-1)/2),M=w[J]||w[w.length-1],X=await S0(["split-window","-t",M,H?"-v":"-h","-P","-F","#{pane_id}"]);if(X.code!==0)throw Error(`Failed to create teammate pane: ${X.stderr}`);A=X.stdout.trim(),N(`[TmuxBackend] Created teammate pane for ${q}: ${A}`)}return await this.setPaneBorderColor(A,K,!0),await this.setPaneTitle(A,q,K,!0),await this.rebalancePanesTiled(_),await zqK(),{paneId:A,isFirstTeammate:$}}async rebalancePanesWithLeader(q){let _=(await mm(["list-panes","-t",q,"-F","#{pane_id}"])).stdout.trim().split(`
2192`).filter(Boolean);if(_.length<=2)return;await mm(["select-layout","-t",q,"main-vertical"]);let z=_[0];await mm(["resize-pane","-t",z,"-x","30%"]),N(`[TmuxBackend] Rebalanced ${_.length-1} teammate panes with leader`)}async rebalancePanesTiled(q){let _=(await S0(["list-panes","-t",q,"-F","#{pane_id}"])).stdout.trim().split(`
2193`).filter(Boolean);if(_.length<=1)return;await S0(["select-layout","-t",q,"tiled"]),N(`[TmuxBackend] Rebalanced ${_.length} teammate panes with tiled layout`)}}var KqK=!1,qb8=null,_qK,wgz=200;var AqK=y(()=>{_8();XK();E8();wb();Jb();_qK=Promise.resolve();Ii1(xi1)});var wqK={};T8(wqK,{ITermBackend:()=>ui1});function Hgz(){let q,K=new Promise((z)=>{q=z}),_=OqK;return OqK=K,_.then(()=>q)}function _b8(q){return a8(XE6,q)}function Jgz(q){let K=q.match(/Created new pane:\s*(.+)/);if(K&&K[1])return K[1].trim();return""}function Mgz(){let q=process.env.ITERM_SESSION_ID;if(!q)return null;let K=q.indexOf(":");if(K===-1)return null;return q.slice(K+1)}class ui1{type="iterm2";displayName="iTerm2";supportsHideShow=!1;async isAvailable(){let q=vQ();if(N(`[ITermBackend] isAvailable check: inITerm2=${q}`),!q)return N("[ITermBackend] isAvailable: false (not in iTerm2)"),!1;let K=await Je6();return N(`[ITermBackend] isAvailable: ${K} (it2 CLI ${K?"found":"not found"})`),K}async isRunningInside(){let q=vQ();return N(`[ITermBackend] isRunningInside: ${q}`),q}async createTeammatePaneInSwarmView(q,K){N(`[ITermBackend] createTeammatePaneInSwarmView called for ${q} with color ${K}`);let _=await Hgz();try{while(!0){let z=!Kb8;N(`[ITermBackend] Creating pane: isFirstTeammate=${z}, existingPanes=${VQ.length}`);let Y,$;if(z){let w=Mgz();if(w)Y=["session","split","-v","-s",w],N(`[ITermBackend] First split from leader session: ${w}`);else Y=["session","split","-v"],N("[ITermBackend] First split from active session (no leader ID)")}else if($=VQ[VQ.length-1],$)Y=["session","split","-s",$],N(`[ITermBackend] Subsequent split from teammate session: ${$}`);else Y=["session","split"],N("[ITermBackend] Subsequent split from active session (no teammate ID)");let A=await _b8(Y);if(A.code!==0){if($){let w=await _b8(["session","list"]);if(w.code===0&&!w.stdout.includes($)){N(`[ITermBackend] Split failed targeting dead session ${$}, pruning and retrying: ${A.stderr}`);let j=VQ.indexOf($);if(j!==-1)VQ.splice(j,1);if(VQ.length===0)Kb8=!1;continue}}throw Error(`Failed to create iTerm2 split pane: ${A.stderr}`)}if(z)Kb8=!0;let O=Jgz(A.stdout);if(!O)throw Error(`Failed to parse session ID from split output: ${A.stdout}`);return N(`[ITermBackend] Created teammate pane for ${q}: ${O}`),VQ.push(O),{paneId:O,isFirstTeammate:z}}}finally{_()}}async sendCommandToPane(q,K,_){let Y=await _b8(q?["session","run","-s",q,K]:["session","run",K]);if(Y.code!==0)throw Error(`Failed to send command to iTerm2 pane ${q}: ${Y.stderr}`)}async setPaneBorderColor(q,K,_){}async setPaneTitle(q,K,_,z){}async enablePaneBorderStatus(q,K){}async rebalancePanes(q,K){N("[ITermBackend] Pane rebalancing not implemented for iTerm2")}async killPane(q,K){let _=await _b8(["session","close","-f","-s",q]),z=VQ.indexOf(q);if(z!==-1)VQ.splice(z,1);if(VQ.length===0)Kb8=!1;return _.code===0}async hidePane(q,K){return N("[ITermBackend] hidePane not supported in iTerm2"),!1}async showPane(q,K,_){return N("[ITermBackend] showPane not supported in iTerm2"),!1}}var VQ,Kb8=!1,OqK;var jqK=y(()=>{_8();XK();wb();Jb();VQ=[],OqK=Promise.resolve();mi1(ui1)});var MqK={};T8(MqK,{resetBackendDetection:()=>ci1,registerTmuxBackend:()=>Ii1,registerITermBackend:()=>mi1,markInProcessFallback:()=>Qi1,isInProcessEnabled:()=>pm,getTeammateExecutor:()=>Wgz,getResolvedTeammateMode:()=>di1,getInProcessBackend:()=>JqK,getCachedDetectionResult:()=>Ui1,getCachedBackend:()=>SE6,getBackendByType:()=>t26,ensureBackendsRegistered:()=>hE6,detectAndGetBackend:()=>r46});async function hE6(){if(pi1)return;await Promise.resolve().then(() => (AqK(),$qK)),await Promise.resolve().then(() => (jqK(),wqK)),pi1=!0}function Ii1(q){Bi1=q}function mi1(q){N(`[registry] registerITermBackend called, class=${q?.name||"undefined"}`),gi1=q}function $b8(){if(!Bi1)throw Error("TmuxBackend not registered. Import TmuxBackend.ts before using the registry.");return new Bi1}function HqK(){if(!gi1)throw Error("ITermBackend not registered. Import ITermBackend.ts before using the registry.");return new gi1}async function r46(){if(await hE6(),oL)return N(`[BackendRegistry] Using cached backend: ${oL.backend.type}`),oL;N("[BackendRegistry] Starting backend detection...");let q=await xm(),K=vQ();if(N(`[BackendRegistry] Environment: insideTmux=${q}, inITerm2=${K}`),q){N("[BackendRegistry] Selected: tmux (running inside tmux session)");let z=$b8();return RE6=z,oL={backend:z,isNative:!0,needsIt2Setup:!1},oL}if(K){let z=d7K();if(z)N("[BackendRegistry] User prefers tmux over iTerm2, skipping iTerm2 detection");else{let $=await Je6();if(N(`[BackendRegistry] iTerm2 detected, it2 CLI available: ${$}`),$){N("[BackendRegistry] Selected: iterm2 (native iTerm2 with it2 CLI)");let A=HqK();return RE6=A,oL={backend:A,isNative:!0,needsIt2Setup:!1},oL}}let Y=await l46();if(N(`[BackendRegistry] it2 not available, tmux available: ${Y}`),Y){N("[BackendRegistry] Selected: tmux (fallback in iTerm2, it2 setup recommended)");let $=$b8();return RE6=$,oL={backend:$,isNative:!1,needsIt2Setup:!z},oL}throw N("[BackendRegistry] ERROR: iTerm2 detected but no it2 CLI and no tmux"),Error("iTerm2 detected but it2 CLI not installed. Install it2 with: pip install it2")}let _=await l46();if(N(`[BackendRegistry] Not in tmux or iTerm2, tmux available: ${_}`),_){N("[BackendRegistry] Selected: tmux (external session mode)");let z=$b8();return RE6=z,oL={backend:z,isNative:!1,needsIt2Setup:!1},oL}throw N("[BackendRegistry] ERROR: No pane backend available"),Error(Xgz())}function Xgz(){switch(Z1()){case"macos":return`To use agent swarms, install tmux:
2194 brew install tmux
2195Then start a tmux session with: tmux new-session -s claude`;case"linux":case"wsl":return`To use agent swarms, install tmux:

Callers 2

r46Function · 0.85
t26Function · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected