import{n as e}from"./chunk-DR8-3Aex.js";import{n as t,t as n}from"./defineProperty-80gRi2ZW.js";import{l as r,p as i}from"./debug-otxXY3j-.js";import{r as a,t as o}from"./execFileNoThrow-azCkYhmF.js";import{Fd as s,Rd as c}from"./loadAgentsDir-C_wFhytF.js";import{c as l,i as u,r as d}from"./detection-95TCHkW8.js";function f(){let e,t=new Promise(t=>{e=t}),n=v;return v=t,n.then(()=>e)}function p(e){return o(`it2`,e)}function m(e){let t=e.match(/Created new pane:\s*(.+)/);return t&&t[1]?t[1].trim():``}function h(){let e=process.env.ITERM_SESSION_ID;if(!e)return null;let t=e.indexOf(`:`);return t===-1?null:e.slice(t+1)}var g,_,v,y;e((()=>{r(),a(),d(),s(),t(),g=[],_=!1,v=Promise.resolve(),y=class{constructor(){n(this,`type`,`iterm2`),n(this,`displayName`,`iTerm2`),n(this,`supportsHideShow`,!1)}async isAvailable(){let e=u();if(i(`[ITermBackend] isAvailable check: inITerm2=${e}`),!e)return i(`[ITermBackend] isAvailable: false (not in iTerm2)`),!1;let t=await l();return i(`[ITermBackend] isAvailable: ${t} (it2 CLI ${t?`found`:`not found`})`),t}async isRunningInside(){let e=u();return i(`[ITermBackend] isRunningInside: ${e}`),e}async createTeammatePaneInSwarmView(e,t){i(`[ITermBackend] createTeammatePaneInSwarmView called for ${e} with color ${t}`);let n=await f();try{for(;;){let t=!_;i(`[ITermBackend] Creating pane: isFirstTeammate=${t}, existingPanes=${g.length}`);let n,r;if(t){let e=h();e?(n=[`session`,`split`,`-v`,`-s`,e],i(`[ITermBackend] First split from leader session: ${e}`)):(n=[`session`,`split`,`-v`],i(`[ITermBackend] First split from active session (no leader ID)`))}else r=g[g.length-1],r?(n=[`session`,`split`,`-s`,r],i(`[ITermBackend] Subsequent split from teammate session: ${r}`)):(n=[`session`,`split`],i(`[ITermBackend] Subsequent split from active session (no teammate ID)`));let a=await p(n);if(a.code!==0){if(r){let e=await p([`session`,`list`]);if(e.code===0&&!e.stdout.includes(r)){i(`[ITermBackend] Split failed targeting dead session ${r}, pruning and retrying: ${a.stderr}`);let e=g.indexOf(r);e!==-1&&g.splice(e,1),g.length===0&&(_=!1);continue}}throw Error(`Failed to create iTerm2 split pane: ${a.stderr}`)}t&&(_=!0);let o=m(a.stdout);if(!o)throw Error(`Failed to parse session ID from split output: ${a.stdout}`);return i(`[ITermBackend] Created teammate pane for ${e}: ${o}`),g.push(o),{paneId:o,isFirstTeammate:t}}}finally{n()}}async sendCommandToPane(e,t,n){let r=await p(e?[`session`,`run`,`-s`,e,t]:[`session`,`run`,t]);if(r.code!==0)throw Error(`Failed to send command to iTerm2 pane ${e}: ${r.stderr}`)}async setPaneBorderColor(e,t,n){}async setPaneTitle(e,t,n,r){}async enablePaneBorderStatus(e,t){}async rebalancePanes(e,t){i(`[ITermBackend] Pane rebalancing not implemented for iTerm2`)}async killPane(e,t){let n=await p([`session`,`close`,`-f`,`-s`,e]),r=g.indexOf(e);return r!==-1&&g.splice(r,1),g.length===0&&(_=!1),n.code===0}async hidePane(e,t){return i(`[ITermBackend] hidePane not supported in iTerm2`),!1}async showPane(e,t,n){return i(`[ITermBackend] showPane not supported in iTerm2`),!1}},c(y)}))();export{};