import{GW as X,MW as JT,NW as ST,nX as IT}from"./cli-0.5.3-842pf3t4.mjs";import{V3 as K,W3 as UT}from"./cli-0.5.3-ea94acj4.mjs";import{Caa as z,Faa as V,H6 as o,K8 as s,Kaa as l,Laa as d,M7 as BT,N7 as VT,P6 as Y,Q8 as XT,R6 as n,U8 as FT,X8 as qT,Y8 as _T,Yaa as D,eaa as f,gaa as YT,u9 as Q,w9 as OT,z6 as H}from"./cli-0.5.3-t65dek0m.mjs";import{Xda as E,Yda as KT}from"./cli-0.5.3-6j2jk6dt.mjs";import{Dfa as QT,qfa as GT,rfa as $T,vfa as zT,zfa as P}from"./cli-0.5.3-n3cxyxpg.mjs";import{Jga as u,Lga as LT}from"./cli-0.5.3-c8bcrqa4.mjs";import{Fma as r,Gma as ZT}from"./cli-0.5.3-2dk1sk8w.mjs";import{Xma as I}from"./cli-0.5.3-0df3r78b.mjs";function m(){let T=f(E(),P().existsSync)!==null,w=s(E());return[{key:"workspace",text:"Ask Claude to create a new app or clone a repository",isComplete:!1,isCompletable:!0,isEnabled:w},{key:"claudemd",text:"Set up repo instructions (/init creates AGENTS.md or updates existing CLAUDE.md; either file counts)",isComplete:T,isCompletable:!0,isEnabled:!w}]}function M(){return m().filter(({isCompletable:T,isEnabled:w})=>T&&w).every(({isComplete:T})=>T)}var k=I(()=>{KT();XT();QT();YT()});function a(){if(l().hasCompletedProjectOnboarding)return;if(M())d((T)=>({...T,hasCompletedProjectOnboarding:!0}))}var fT;var h=I(()=>{ZT();D();k();k();fT=r(()=>{let T=l();if(T.hasCompletedProjectOnboarding||T.projectOnboardingSeenCount>=4||process.env.IS_DEMO)return!1;return!M()})});import{stat as i}from"fs/promises";import{homedir as xT}from"os";import{join as HT}from"path";function RT(T){z((w)=>({...w,appleTerminalSetupInProgress:!0,appleTerminalBackupPath:T}))}function L(){z((T)=>({...T,appleTerminalSetupInProgress:!1}))}function WT(){let T=V();return{inProgress:T.appleTerminalSetupInProgress??!1,backupPath:T.appleTerminalBackupPath||null}}function _(){return HT(xT(),"Library","Preferences","com.apple.Terminal.plist")}async function t(){let T=_(),w=`${T}.bak`;try{let{code:v}=await Y("defaults",["export","com.apple.Terminal",T]);if(v!==0)return null;try{await i(T)}catch{return null}return await Y("defaults",["export","com.apple.Terminal",w]),RT(w),w}catch(v){return H(v),null}}async function e(){let{inProgress:T,backupPath:w}=WT();if(!T)return{status:"no_backup"};if(!w)return L(),{status:"no_backup"};try{await i(w)}catch{return L(),{status:"no_backup"}}try{let{code:v}=await Y("defaults",["import","com.apple.Terminal",w]);if(v!==0)return{status:"failed",backupPath:w};return await Y("killall",["cfprefsd"]),L(),{status:"restored"}}catch(v){return H(Error(`Failed to restore Terminal.app settings with: ${v}`)),L(),{status:"failed",backupPath:w}}}var TT=I(()=>{D();n();o()});import{randomBytes as y}from"crypto";import{copyFile as N,mkdir as c,readFile as p,writeFile as C}from"fs/promises";import{homedir as g,platform as A}from"os";import{dirname as MT,join as R}from"path";import{pathToFileURL as AT}from"url";function jT(){let T=process.env.VSCODE_GIT_ASKPASS_MAIN??"",w=process.env.PATH??"";return T.includes(".vscode-server")||T.includes(".cursor-server")||T.includes(".windsurf-server")||w.includes(".vscode-server")||w.includes(".cursor-server")||w.includes(".windsurf-server")}function Ww(){if(!Q.terminal||!(Q.terminal in j))return null;return j[Q.terminal]??null}function Z(T){if(!JT())return T;return`\x1B]8;;${AT(T).href}\x07${T}\x1B]8;;\x07`}function uT(){return A()==="darwin"&&Q.terminal==="Apple_Terminal"||Q.terminal==="vscode"||Q.terminal==="cursor"||Q.terminal==="windsurf"||Q.terminal==="alacritty"||Q.terminal==="zed"}async function ET(T){let w="";switch(Q.terminal){case"Apple_Terminal":w=await kT(T);break;case"vscode":w=await b("VSCode",T);break;case"cursor":w=await b("Cursor",T);break;case"windsurf":w=await b("Windsurf",T);break;case"alacritty":w=await lT(T);break;case"zed":w=await DT(T);break;case null:break}return z((v)=>{if(["vscode","cursor","windsurf","alacritty","zed"].includes(Q.terminal??"")){if(v.shiftEnterKeyBindingInstalled===!0)return v;return{...v,shiftEnterKeyBindingInstalled:!0}}else if(Q.terminal==="Apple_Terminal"){if(v.optionAsMetaKeyInstalled===!0)return v;return{...v,optionAsMetaKeyInstalled:!0}}return v}),a(),w}function Lw(){return V().shiftEnterKeyBindingInstalled===!0}function zw(){return V().hasUsedBackslashReturn===!0}function Vw(){if(!V().hasUsedBackslashReturn)z((w)=>({...w,hasUsedBackslashReturn:!0}))}async function _w(T,w,v){if(Q.terminal&&Q.terminal in j){let $=`Shift+Enter is natively supported in ${j[Q.terminal]}.

No configuration needed. Just use Shift+Enter to add newlines.`;return T($),null}if(!uT()){let $=Q.terminal||"your current terminal",B=BT(),J="";if(B==="macos")J=`   • macOS: Apple Terminal
`;else if(B==="windows")J=`   • Windows: Windows Terminal
`;let F=`Terminal setup cannot be run from ${$}.

This command configures a convenient Shift+Enter shortcut for multi-line prompts.
${K.dim("Note: You can already use backslash (\\\\) + return to add newlines.")}

To set up the shortcut (optional):
1. Exit tmux/screen temporarily
2. Run /terminal-setup directly in one of these terminals:
${J}   • IDE: VSCode, Cursor, Windsurf, Zed
   • Other: Alacritty
3. Return to tmux/screen - settings will persist

${K.dim("Note: iTerm2, WezTerm, Ghostty, Kitty, and Warp support Shift+Enter natively.")}`;return T(F),null}let q=await ET(w.options.theme);return T(q),null}async function b(T="VSCode",w){if(jT())return`${X("warning",w)(`Cannot install keybindings from a remote ${T} session.`)}${G}${G}${T} keybindings must be installed on your local machine, not the remote server.${G}${G}To install the Shift+Enter keybinding:${G}1. Open ${T} on your local machine (not connected to remote)${G}2. Open the Command Palette (Cmd/Ctrl+Shift+P) → "Preferences: Open Keyboard Shortcuts (JSON)"${G}3. Add this keybinding (the file must be a JSON array):${G}${G}${K.dim(`[
  {
    "key": "shift+enter",
    "command": "workbench.action.terminal.sendSequence",
    "args": { "text": "\\u001b\\r" },
    "when": "terminalFocus"
  }
]`)}${G}`;let v=T==="VSCode"?"Code":T,q=R(g(),A()==="win32"?R("AppData","Roaming",v,"User"):A()==="darwin"?R("Library","Application Support",v,"User"):R(".config",v,"User")),$=R(q,"keybindings.json");try{await c(q,{recursive:!0});let B="[]",J=[],F=!1;try{B=await p($,{encoding:"utf-8"}),F=!0,J=FT(B)??[]}catch(x){if(!u(x))throw x}if(F){let x=y(4).toString("hex"),S=`${$}.${x}.bak`;try{await N($,S)}catch{return`${X("warning",w)(`Error backing up existing ${T} terminal keybindings. Bailing out.`)}${G}${K.dim(`See ${Z($)}`)}${G}${K.dim(`Backup path: ${Z(S)}`)}${G}`}}if(J.find((x)=>x.key==="shift+enter"&&x.command==="workbench.action.terminal.sendSequence"&&x.when==="terminalFocus"))return`${X("warning",w)(`Found existing ${T} terminal Shift+Enter key binding. Remove it to continue.`)}${G}${K.dim(`See ${Z($)}`)}${G}`;let U=qT(B,{key:"shift+enter",command:"workbench.action.terminal.sendSequence",args:{text:"\x1B\r"},when:"terminalFocus"});return await C($,U,{encoding:"utf-8"}),`${X("success",w)(`Installed ${T} terminal Shift+Enter key binding`)}${G}${K.dim(`See ${Z($)}`)}${G}`}catch(B){throw H(B),Error(`Failed to install ${T} terminal Shift+Enter key binding`)}}async function wT(T){let{code:w}=await Y("/usr/libexec/PlistBuddy",["-c",`Add :'Window Settings':'${T}':useOptionAsMetaKey bool true`,_()]);if(w!==0){let{code:v}=await Y("/usr/libexec/PlistBuddy",["-c",`Set :'Window Settings':'${T}':useOptionAsMetaKey true`,_()]);if(v!==0)return H(Error(`Failed to enable Option as Meta key for Terminal.app profile: ${T}`)),!1}return!0}async function vT(T){let{code:w}=await Y("/usr/libexec/PlistBuddy",["-c",`Add :'Window Settings':'${T}':Bell bool false`,_()]);if(w!==0){let{code:v}=await Y("/usr/libexec/PlistBuddy",["-c",`Set :'Window Settings':'${T}':Bell false`,_()]);if(v!==0)return H(Error(`Failed to disable audio bell for Terminal.app profile: ${T}`)),!1}return!0}async function kT(T){try{if(!await t())throw Error("Failed to create backup of Terminal.app preferences, bailing out");let{stdout:v,code:q}=await Y("defaults",["read","com.apple.Terminal","Default Window Settings"]);if(q!==0||!v.trim())throw Error("Failed to read default Terminal.app profile");let{stdout:$,code:B}=await Y("defaults",["read","com.apple.Terminal","Startup Window Settings"]);if(B!==0||!$.trim())throw Error("Failed to read startup Terminal.app profile");let J=!1,F=v.trim(),W=await wT(F),O=await vT(F);if(W||O)J=!0;let U=$.trim();if(U!==F){let x=await wT(U),S=await vT(U);if(x||S)J=!0}if(!J)throw Error("Failed to enable Option as Meta key or disable audio bell for any Terminal.app profile");return await Y("killall",["cfprefsd"]),L(),`${X("success",T)("Configured Terminal.app settings:")}${G}${X("success",T)('- Enabled "Use Option as Meta key"')}${G}${X("success",T)("- Switched to visual bell")}${G}${K.dim("Option+Enter will now enter a newline.")}${G}${K.dim("You must restart Terminal.app for changes to take effect.",T)}${G}`}catch(w){H(w);let v=await e(),q="Failed to enable Option as Meta key for Terminal.app.";if(v.status==="restored")throw Error(`${q} Your settings have been restored from backup.`);else if(v.status==="failed")throw Error(`${q} Restoring from backup failed, try manually with: defaults import com.apple.Terminal ${v.backupPath}`);else throw Error(`${q} No backup was available to restore from.`)}}async function lT(T){let v=[],q=process.env.XDG_CONFIG_HOME;if(q)v.push(R(q,"alacritty","alacritty.toml"));else v.push(R(g(),".config","alacritty","alacritty.toml"));if(A()==="win32"){let F=process.env.APPDATA;if(F)v.push(R(F,"alacritty","alacritty.toml"))}let $=null,B="",J=!1;for(let F of v)try{B=await p(F,{encoding:"utf-8"}),$=F,J=!0;break}catch(W){if(!u(W))throw W}if(!$)$=v[0]??null;if(!$)throw Error("No valid config path found for Alacritty");try{if(J){if(B.includes('mods = "Shift"')&&B.includes('key = "Return"'))return`${X("warning",T)("Found existing Alacritty Shift+Enter key binding. Remove it to continue.")}${G}${K.dim(`See ${Z($)}`)}${G}`;let W=y(4).toString("hex"),O=`${$}.${W}.bak`;try{await N($,O)}catch{return`${X("warning",T)("Error backing up existing Alacritty config. Bailing out.")}${G}${K.dim(`See ${Z($)}`)}${G}${K.dim(`Backup path: ${Z(O)}`)}${G}`}}else await c(MT($),{recursive:!0});let F=B;if(B&&!B.endsWith(`
`))F+=`
`;return F+=`
[[keyboard.bindings]]
key = "Return"
mods = "Shift"
chars = "\\u001B\\r"
`,await C($,F,{encoding:"utf-8"}),`${X("success",T)("Installed Alacritty Shift+Enter key binding")}${G}${X("success",T)("You may need to restart Alacritty for changes to take effect")}${G}${K.dim(`See ${Z($)}`)}${G}`}catch(F){throw H(F),Error("Failed to install Alacritty Shift+Enter key binding")}}async function DT(T){let w=R(g(),".config","zed"),v=R(w,"keymap.json");try{await c(w,{recursive:!0});let q="[]",$=!1;try{q=await p(v,{encoding:"utf-8"}),$=!0}catch(J){if(!u(J))throw J}if($){if(q.includes("shift-enter"))return`${X("warning",T)("Found existing Zed Shift+Enter key binding. Remove it to continue.")}${G}${K.dim(`See ${Z(v)}`)}${G}`;let J=y(4).toString("hex"),F=`${v}.${J}.bak`;try{await N(v,F)}catch{return`${X("warning",T)("Error backing up existing Zed keymap. Bailing out.")}${G}${K.dim(`See ${Z(v)}`)}${G}${K.dim(`Backup path: ${Z(F)}`)}${G}`}}let B;try{if(B=$T(q),!Array.isArray(B))B=[]}catch{B=[]}return B.push({context:"Terminal",bindings:{"shift-enter":["terminal::SendText","\x1B\r"]}}),await C(v,GT(B,null,2)+`
`,{encoding:"utf-8"}),`${X("success",T)("Installed Zed Shift+Enter key binding")}${G}${K.dim(`See ${Z(v)}`)}${G}`}catch(q){throw H(q),Error("Failed to install Zed Shift+Enter key binding")}}var G=`
`,j;var bT=I(()=>{UT();ST();IT();h();TT();D();OT();LT();n();_T();o();VT();zT();j={ghostty:"Ghostty",kitty:"Kitty","iTerm.app":"iTerm2",WezTerm:"WezTerm",WarpTerminal:"Warp"}});
export{a as HT,h as IT,e as JT,TT as KT,Ww as LT,uT as MT,ET as NT,Lw as OT,zw as PT,Vw as QT,_w as RT,bT as ST};
