viba-cli 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +2 -2
- package/.next/fallback-build-manifest.json +2 -2
- package/.next/prerender-manifest.json +3 -3
- package/.next/server/app/_global-error.html +2 -2
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/new/page/server-reference-manifest.json +23 -23
- package/.next/server/app/new/page.js.nft.json +1 -1
- package/.next/server/app/new/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page/server-reference-manifest.json +23 -23
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/session/[sessionId]/page/server-reference-manifest.json +49 -34
- package/.next/server/app/session/[sessionId]/page.js +1 -1
- package/.next/server/app/session/[sessionId]/page.js.nft.json +1 -1
- package/.next/server/app/session/[sessionId]/page_client-reference-manifest.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__41b2f23a._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__41b2f23a._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__528f3aa4._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__528f3aa4._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__58bd04dc._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__58bd04dc._.js.map +1 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__8174ed94._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__8174ed94._.js.map +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f1bfaf02._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__f1bfaf02._.js.map +1 -1
- package/.next/server/chunks/ssr/{_db0dffc3._.js → _9646ad08._.js} +2 -2
- package/.next/server/chunks/ssr/{_db0dffc3._.js.map → _9646ad08._.js.map} +1 -1
- package/.next/server/chunks/ssr/{_3ddedfc7._.js → _c0358c5b._.js} +3 -3
- package/.next/server/chunks/ssr/{_3ddedfc7._.js.map → _c0358c5b._.js.map} +1 -1
- package/.next/server/chunks/ssr/{_876ebecd._.js → _d93713cd._.js} +2 -2
- package/.next/server/chunks/ssr/{_876ebecd._.js.map → _d93713cd._.js.map} +1 -1
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js +2 -2
- package/.next/server/chunks/ssr/src_app_session_[sessionId]_SessionPageClient_tsx_dab490d7._.js.map +1 -1
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js +1 -1
- package/.next/server/chunks/ssr/src_components_GitRepoSelector_tsx_05c81afa._.js.map +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +2 -2
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +68 -53
- package/.next/static/chunks/{ab57497e68933ba8.js → 3d7671157273c83e.js} +2 -2
- package/.next/static/chunks/{213d40ee98c50fa4.js → 60c8799280c0a2aa.js} +3 -3
- package/.next/static/chunks/{1d5180fde0ab1786.js → d704653fa3877078.js} +1 -1
- package/.next/static/chunks/dc895d87368362da.css +3 -0
- package/.next/static/chunks/{e84f81a4a97e78fe.js → ddf168739520f2c8.js} +1 -1
- package/.next/static/chunks/fa5aedf8f5b6b1cf.js +3 -0
- package/package.json +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__36769160._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__36769160._.js.map +0 -1
- package/.next/static/chunks/37ee090b9f9f2c10.js +0 -3
- package/.next/static/chunks/7611b8b4cbbc4eb6.css +0 -3
- /package/.next/static/{w_uhsrEhAgpd7YNGPM5oc → jf6waTxzXtuKxCuxb-dhb}/_buildManifest.js +0 -0
- /package/.next/static/{w_uhsrEhAgpd7YNGPM5oc → jf6waTxzXtuKxCuxb-dhb}/_clientMiddlewareManifest.json +0 -0
- /package/.next/static/{w_uhsrEhAgpd7YNGPM5oc → jf6waTxzXtuKxCuxb-dhb}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[96514,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(70106);let e=(0,d.default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);var f=a.i(10948),g=a.i(15618);let h=(0,d.default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),i=(0,d.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),j=(0,d.default)("folder-cog",[["path",{d:"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3",key:"128dxu"}],["path",{d:"m14.305 19.53.923-.382",key:"3m78fa"}],["path",{d:"m15.228 16.852-.923-.383",key:"npixar"}],["path",{d:"m16.852 15.228-.383-.923",key:"5xggr7"}],["path",{d:"m16.852 20.772-.383.924",key:"dpfhf9"}],["path",{d:"m19.148 15.228.383-.923",key:"1reyyz"}],["path",{d:"m19.53 21.696-.382-.924",key:"1goivc"}],["path",{d:"m20.772 16.852.924-.383",key:"htqkph"}],["path",{d:"m20.772 19.148.924.383",key:"9w9pjp"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}]]),k=(0,d.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),l=(0,d.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);var m=a.i(81560),n=a.i(25015),o=a.i(5050);let p=(0,o.createServerReference)("40c1e8b3d5e6522c1f7bc5040818c62ff7e9aebaba",o.callServer,void 0,o.findSourceMapURL,"checkDirectoryAccessible"),q=(0,o.createServerReference)("40b8c0e92fc4b126387567d056c1c4fc01f75e70d8",o.callServer,void 0,o.findSourceMapURL,"listDirectories");var r=a.i(15956),s=a.i(92596),t=a.i(210);let u=(0,d.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var v=a.i(11431);function w({title:a,initialPath:d,onSelect:e,onCancel:f,checkRepo:g}){let[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a=!0;return(async()=>{try{let b=await (0,r.getHomeDirectory)();if(!a)return;k(b),i(d||b)}catch(b){if(console.error("Failed to resolve home directory:",b),!a)return;x("Failed to access your home directory."),i(d||"/")}})(),()=>{a=!1}},[d]),(0,c.useEffect)(()=>{if(!h)return;let a=!0;return(async()=>{o(!0),x(null);try{let b=await q(h);if(!a)return;if(0===b.length&&j&&h!==j){let b=await p(h);if(!a)return;if(!b){x(`Could not access "${h}". Showing home directory.`),i(j);return}}let c=b.map(a=>({name:a.name,path:a.path,isDirectory:a.isDirectory,isGitRepo:a.isGitRepo}));m(c)}catch(b){if(console.error(b),!a)return;if(j&&h!==j){x(`Could not access "${h}". Showing home directory.`),i(j);return}m([]),x("Failed to load directory contents")}finally{a&&o(!1)}})(),()=>{a=!1}},[h,j]);let y=async a=>{if(g&&!await g(a)){x("Selected directory is not a valid git repository."),setTimeout(()=>x(null),3e3);return}await e(a)},z=async()=>{await y(h)};return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",children:(0,b.jsxs)("div",{className:"bg-base-200 rounded-lg shadow-xl w-full max-w-3xl h-[80vh] flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between p-4 border-b border-base-300",children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(s.Folder,{className:"w-5 h-5"}),a||"Browse Local Repository"]}),(0,b.jsx)("button",{onClick:f,className:"btn btn-sm btn-ghost btn-circle",children:"✕"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-base-300",children:[(0,b.jsx)("button",{onClick:()=>{let a=(0,v.getDirName)(h);a&&a!==h&&i(a)},className:"btn btn-sm btn-square btn-ghost",title:"Go Up",disabled:"/"===h||!h,children:(0,b.jsx)(t.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("div",{className:"flex-1 overflow-x-auto whitespace-nowrap px-2 font-mono text-sm",children:h}),(0,b.jsx)("button",{onClick:z,className:"btn btn-sm btn-primary",children:"Select Current Folder"})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-2",children:n?(0,b.jsx)("div",{className:"flex justify-center items-center h-full",children:(0,b.jsx)("span",{className:"loading loading-spinner loading-lg"})}):w?(0,b.jsx)("div",{className:"alert alert-error",children:w}):0===l.length?(0,b.jsx)("div",{className:"text-center text-base-content/50 mt-10",children:"Empty directory"}):(0,b.jsx)("div",{className:"grid grid-cols-1 gap-1",children:l.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between p-2 hover:bg-base-100 rounded-md cursor-pointer transition-colors",onClick:()=>{i(a.path)},children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 overflow-hidden",children:[(0,b.jsx)(s.Folder,{className:`w-5 h-5 ${a.isGitRepo?"text-primary":"text-base-content/70"}`}),(0,b.jsx)("span",{className:"truncate",children:a.name}),a.isGitRepo&&(0,b.jsx)("span",{className:"badge badge-xs badge-primary",children:"git"})]}),a.isGitRepo&&(0,b.jsxs)("button",{className:"btn btn-xs btn-primary",onClick:b=>{b.stopPropagation(),y(a.path)},title:`Select ${a.name}`,children:[(0,b.jsx)(u,{className:"w-3 h-3"}),"Select"]})]},a.path))})}),(0,b.jsx)("div",{className:"p-3 border-t border-base-300 text-xs text-base-content/50 text-center",children:'Navigate to a folder and click "Select Current Folder" to choose it.'})]})})}let x=(0,o.createServerReference)("40558db8f5d1953a6fad1157bf4e29bb0978c539eb",o.callServer,void 0,o.findSourceMapURL,"checkIsGitRepo"),y=(0,o.createServerReference)("40d6e1c12cda92b6d1dab3518ca9341ec9b4066d0c",o.callServer,void 0,o.findSourceMapURL,"getBranches"),z=(0,o.createServerReference)("6013b2df34cc557ab76b08385a5c29ba803eb58d38",o.callServer,void 0,o.findSourceMapURL,"checkoutBranch");var A=a.i(25745);let B=(0,o.createServerReference)("7f193f6f22e1f43cee233084148ac8f13fccc6c39d",o.callServer,void 0,o.findSourceMapURL,"getStartupScript"),C=(0,o.createServerReference)("7ff8c568510143aeb5854dff829f0273adf16dca4c",o.callServer,void 0,o.findSourceMapURL,"getDefaultDevServerScript"),D=(0,o.createServerReference)("7f1aaadeb918470b5dbcb97bd0c8a3d3c6661d5a5d",o.callServer,void 0,o.findSourceMapURL,"listRepoFiles");var E=a.i(83159);let F=(0,o.createServerReference)("408af8b78187d763c6f77dca22138a5014521b1ece",o.callServer,void 0,o.findSourceMapURL,"checkAgentCliInstalled"),G=(0,o.createServerReference)("40e84a696156a790e4ef0a33a790d3209eabe7c707",o.callServer,void 0,o.findSourceMapURL,"installAgentCli"),H=(0,o.createServerReference)("40208b8bac3e1376842fb29c57f0dce7aeb24b1ac9",o.callServer,void 0,o.findSourceMapURL,"resolveRepositoryByName"),I=(0,o.createServerReference)("7052755a4fe6109bbb4e7b00db496dcf15be523aff",o.callServer,void 0,o.findSourceMapURL,"copySessionAttachments"),J=(0,o.createServerReference)("702005427292f9ee6d56c5cf059ffa4bc2595296df",o.callServer,void 0,o.findSourceMapURL,"createSession"),K=(0,o.createServerReference)("403c1a87bd98092d4acc5a5cf7c089f8979624b6e1",o.callServer,void 0,o.findSourceMapURL,"deleteSession"),L=(0,o.createServerReference)("4061cececc4de0a286db06ddd47bd395107c37f8c5",o.callServer,void 0,o.findSourceMapURL,"getSessionPrefillContext"),M=(0,o.createServerReference)("40936baf64c5a27f0e35ef4f0ebfae3160f8ebaf07",o.callServer,void 0,o.findSourceMapURL,"listSessions"),N=(0,o.createServerReference)("60b2c5bd8d211b6c5f4e22cd086f70e88a9c9dac4e",o.callServer,void 0,o.findSourceMapURL,"saveSessionLaunchContext");var O=a.i(94300),P=a.i(91342);let Q=(0,o.createServerReference)("602d68a4f24d9f2fcba7aa9d331d8e6547878f886b",o.callServer,void 0,o.findSourceMapURL,"updateRepoSettings");var R=a.i(50944),S=a.i(12627),T=a.i(71987);let U=a.i(35027).default,V="After each round of conversation, if work is completed and files changed, commit all changes with an appropriate git commit message. The commit message must include a clear title and a detailed body describing what changed and why, not just a title. No need to confirm when creating commits.",W={gemini:"gemini",codex:"codex",agent:"agent"},X={gemini:"Gemini CLI",codex:"Codex CLI",agent:"Cursor Agent CLI"};function Y({mode:a="home",repoPath:d=null,fromRepoName:o=null,prefillFromSession:p=null}){let[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(!1),[u,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),_=(0,R.useRouter)(),[aa,ab]=(0,c.useState)([]),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)([]),[ai,aj]=(0,c.useState)(null),[ak,al]=(0,c.useState)(""),[am,an]=(0,c.useState)(""),[ao,ap]=(0,c.useState)(""),[aq,ar]=(0,c.useState)(!1),[as,at]=(0,c.useState)(""),[au,av]=(0,c.useState)(""),[aw,ax]=(0,c.useState)([]),[ay,az]=(0,c.useState)([]),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(!1),[aE,aF]=(0,c.useState)(!1),[aG,aH]=(0,c.useState)(null),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(!1),[aM,aN]=(0,c.useState)(!1),[aO,aP]=(0,c.useState)(!1),[aQ,aR]=(0,c.useState)(null),[aS,aT]=(0,c.useState)(!1),[aU,aV]=(0,c.useState)(null),[aW,aX]=(0,c.useState)(""),[aY,aZ]=(0,c.useState)(!1),[a$,a_]=(0,c.useState)(null),a0=(0,c.useRef)(null),a1=ai&&ak?`Show Session Setup (${ai.name} / ${ak})`:"Show Session Setup",a2=(0,c.useCallback)(()=>{(0,S.notifySessionsUpdated)()},[]),a3=(0,c.useCallback)(async(a=Z)=>{try{let[b,c]=await Promise.all([M(),a?M(a):Promise.resolve([])]);ah(b),a&&af(c)}catch(a){console.error("Failed to refresh sessions",a)}},[Z]),a4=(0,c.useCallback)(a=>"gemini"===a||"codex"===a||"agent"===a?a:null,[]);(0,c.useEffect)(()=>{(async()=>{try{let[a,b]=await Promise.all([(0,O.getConfig)(),M()]);Y(a),ah(b)}catch(a){console.error("Failed to load data",a)}finally{aN(!0)}})()},[]),(0,c.useEffect)(()=>{let b=()=>{a3("new"===a?Z:null)},c=a=>{a.key===S.SESSIONS_UPDATED_STORAGE_KEY&&b()},d=()=>{b()},e=()=>{b()};return window.addEventListener("storage",c),window.addEventListener("focus",d),window.addEventListener(S.SESSIONS_UPDATED_EVENT,e),()=>{window.removeEventListener("storage",c),window.removeEventListener("focus",d),window.removeEventListener(S.SESSIONS_UPDATED_EVENT,e)}},[a,a3,Z]);let a5=async a=>{$(a),bu([]),await a8(a),await ba(a),await a3(a)},a6=async b=>{aF(!0),aJ(null);try{if(!await x(b))return aJ("Selected directory is not a valid git repository."),!1;let c=[...(u||await (0,O.getConfig)()).recentRepos];c.includes(b)?c=[b,...c.filter(a=>a!==b)]:c.unshift(b);let d=await (0,P.updateConfig)({recentRepos:c});if(Y(d),r(!1),"home"===a)return _.push(`/new?repo=${encodeURIComponent(b)}`),!0;return await a5(b),!0}catch(a){return console.error(a),aJ("Failed to open repository."),!1}finally{aF(!1)}},a7=async b=>{if("new"!==a)return;let c=b.target.value;if(!c||c===Z||!await a6(c))return;let d=new URLSearchParams;d.set("repo",c),p&&d.set("prefillFromSession",p),_.replace(`/new?${d.toString()}`)};(0,c.useEffect)(()=>{if("new"===a){if(!d){$(null),af([]),ab([]),ad("");return}d!==Z&&a6(d)}},[a,d,Z]),(0,c.useEffect)(()=>{if("new"!==a)return;if(d)return void aL(!1);let b=o?.trim()??"";if(!b)return void aL(!1);let c=!1;return(async()=>{aJ(null),aL(!0);let a=await H(b);if(c)return;if(!a.success){aJ(a.error||"Failed to search repositories."),aL(!1);return}if(!a.repoPath){aJ(`Could not find a matching repository for "${b}".`),aL(!1);return}let d=new URLSearchParams;d.set("repo",a.repoPath),p&&d.set("prefillFromSession",p),_.replace(`/new?${d.toString()}`)})(),()=>{c=!0}},[o,a,p,d,_]),(0,c.useEffect)(()=>{aD(!1),az([]),aB(null)},[p]),(0,c.useEffect)(()=>{if("new"!==a||!Z||!p||aC)return;let b=!1;return(async()=>{let a=await L(p);if(b)return;if(!a.success||!a.context){a.error&&aJ(a.error),aD(!0);return}let c=a.context;if(c.repoPath!==Z)return aD(!0);let d=U.find(a=>a.cli===c.agentProvider);d&&(aj(d),c.model&&("auto"===c.model||d.models.some(a=>a.id===c.model))?al(c.model):al("auto")),av(c.title||""),at(c.initialMessage||""),az(c.attachmentNames||[]),aB(c.sourceSessionName),ar(!0),aD(!0)})(),()=>{b=!0}},[aC,a,p,Z]);let a8=async a=>{let b=u||await (0,O.getConfig)();u||Y(b);let c=b.repoSettings[a]||{},d=c.agentProvider,e=c.agentModel,f=c.startupScript,g=c.devServerScript;if(d){let a=U.find(a=>a.cli===d);a?(aj(a),e&&("auto"===e||a.models.some(a=>a.id===e))?al(e):al("auto")):(aj(U[0]),al("auto"))}else aj(U[0]),al("auto");null!=f?an(f):an(await B(a)),null!=g?ap(g):ap(await C(a))},a9=async a=>{Y(await (0,P.updateConfig)({defaultRoot:a})),t(!1)},ba=async a=>{try{let b=await y(a);ab(b);let c=((u||await (0,O.getConfig)()).repoSettings[a]||{}).lastBranch,d=b.find(a=>a.current)?.name;if(c&&b.some(a=>a.name===c)){if(ad(c),c!==d)try{await z(a,c);let b=await y(a);ab(b)}catch(a){console.warn("Could not auto-checkout to remembered branch",a),d&&ad(d)}}else d&&ad(d)}catch(a){console.error("Failed to load branches",a),aJ("Failed to load branches.")}},bb=async a=>{let b=a.target.value;if(Z){aF(!0);try{await z(Z,b),ad(b);let a=await Q(Z,{lastBranch:b});Y(a);let c=await y(Z);ab(c)}catch{aJ(`Failed to checkout branch ${b}`)}finally{aF(!1)}}},bc=async a=>{let b=a.target.value,c=U.find(a=>a.cli===b);if(c&&Z){aj(c);let a="auto";al(a),Y(await Q(Z,{agentProvider:c.cli,agentModel:a}))}},bd=async a=>{let b=a.target.value;al(b),Z&&Y(await Q(Z,{agentModel:b}))},be=async a=>{an(a.target.value)},bf=async()=>{Z&&Y(await Q(Z,{startupScript:am}))},bg=async a=>{Z&&Y(await Q(Z,{devServerScript:a}))},bh=async()=>{await bg(ao)},bi=(0,c.useCallback)((a,b)=>{if(a.name&&a.name.trim().length>0)return a;let c=a.type&&a.type.split("/")[1]?.split("+")[0]||"bin";return new File([a],`pasted-file-${Date.now()}-${b+1}.${c}`,{type:a.type,lastModified:a.lastModified||Date.now()})},[]),bj=(0,c.useCallback)(a=>{0!==a.length&&ax(b=>{let c=new Map(b.map(a=>[a.name,a]));return a.forEach(a=>{c.set(a.name,a)}),Array.from(c.values())})},[]),[bk,bl]=(0,c.useState)(!1),[bm,bn]=(0,c.useState)([]),[,bo]=(0,c.useState)(""),[bp,bq]=(0,c.useState)(0),[br,bs]=(0,c.useState)(0),[bt,bu]=(0,c.useState)([]),bv=async a=>{let b=a.target.value,c=a.target.selectionStart;at(b),bq(c);let d=b.substring(0,c),e=d.lastIndexOf("@");if(-1!==e){let a=d.substring(e+1);if(!/\s/.test(a)){if(bo(a),bl(!0),Z){var f;let b,c=bt;0===bt.length&&bu(c=await D(Z)),f=c,b=a.toLowerCase(),bn([...[...aw.map(a=>a.name),...ay].filter(a=>a.toLowerCase().includes(b)),...f.filter(a=>a.toLowerCase().includes(b)).slice(0,20)]),bs(0)}return}}bl(!1)},bw=a=>{let b=as.substring(0,bp).lastIndexOf("@");if(-1!==b){let c=as.substring(0,b),d=as.substring(bp);at(`${c}@${a} ${d}`),bl(!1)}};(0,c.useEffect)(()=>{if("new"!==a||!Z)return;let b=a=>{let b=a.clipboardData;if(!b)return;let c=Array.from(b.items).filter(a=>"file"===a.kind).map(a=>a.getAsFile()).filter(a=>null!==a),d=(c.length>0?c:Array.from(b.files)).map((a,b)=>bi(a,b));0!==d.length&&(a.preventDefault(),bj(d))};return window.addEventListener("paste",b),()=>{window.removeEventListener("paste",b)}},[bj,a,bi,Z]);let bx=async(a,b)=>{if(a.stopPropagation(),u){let a=u.recentRepos.filter(a=>a!==b);Y(await (0,P.updateConfig)({recentRepos:a}))}},by=(0,c.useCallback)(()=>{if(!aS||!aW||!a0.current)return;let a=a0.current,b=(c=0)=>{if(c>40)return void a_("Timed out while waiting for terminal to initialize.");try{let d=a.contentWindow;if(d?.term){d.term.paste(`${aW}\r`),aZ(!0),a_(null),d.focus();return}setTimeout(()=>b(c+1),300)}catch(a){console.error("Failed to inject login command into terminal iframe:",a),a_("Could not access ttyd terminal. Ensure ttyd is running and try again.")}};setTimeout(()=>b(),500)},[aS,aW]),bz=(0,c.useCallback)(async()=>{let a=a4(ai?.cli);if(!a)return!0;let b=await F(a);if(!b.success)return aJ(b.error||`Failed to verify ${X[a]} installation status.`),!1;if(b.installed)return!0;aP(!0),aR(a),aJ(null);let c=await G(a);if(aP(!1),aR(null),!c.success)return aJ(c.error||`Failed to install ${X[a]}.`),!1;let d=await (0,A.startTtydProcess)();return d.success?(aV(a),aX(W[a]),aZ(!1),a_(null),aT(!0)):aJ(d.error||"Failed to start ttyd"),!1},[ai?.cli,a4]),bA=async(a={})=>{if(Z){aF(!0),aJ(null);try{if(!a.skipAgentSetup&&!await bz())return void aF(!1);let b=ao.trim();!b&&(b=await C(Z))&&ap(b),await bf(),await bg(b);let c=await (0,A.startTtydProcess)();if(!c.success){aJ(c.error||"Failed to start ttyd"),aF(!1);return}let d=await J(Z,ac||"main",{agent:ai?.cli||"agent",model:ak||"",title:au,devServerScript:b||void 0});if(d.success&&d.sessionName&&d.worktreePath&&d.branchName){let a=[],b=[];if(aw.length>0){let b=new FormData;aw.forEach(a=>b.append(a.name,a)),a=await (0,E.saveAttachments)(d.worktreePath,b)}if(aA&&ay.length>0){let a=await I(aA,d.worktreePath,ay);if(!a.success){aJ(a.error||"Failed to carry over attachments from source session"),aF(!1);return}b=a.copiedAttachmentNames}let c=Array.from(new Set([...a,...b])),e=as.trim(),f=e;f&&(f.includes(V)||(f=`${f}
|
|
1
|
+
module.exports=[96514,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(70106);let e=(0,d.default)("folder-git-2",[["path",{d:"M18 19a5 5 0 0 1-5-5v8",key:"sz5oeg"}],["path",{d:"M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5",key:"1w6njk"}],["circle",{cx:"13",cy:"12",r:"2",key:"1j92g6"}],["circle",{cx:"20",cy:"19",r:"2",key:"1obnsp"}]]);var f=a.i(10948),g=a.i(15618);let h=(0,d.default)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),i=(0,d.default)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),j=(0,d.default)("folder-cog",[["path",{d:"M10.3 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.98a2 2 0 0 1 1.69.9l.66 1.2A2 2 0 0 0 12 6h8a2 2 0 0 1 2 2v3.3",key:"128dxu"}],["path",{d:"m14.305 19.53.923-.382",key:"3m78fa"}],["path",{d:"m15.228 16.852-.923-.383",key:"npixar"}],["path",{d:"m16.852 15.228-.383-.923",key:"5xggr7"}],["path",{d:"m16.852 20.772-.383.924",key:"dpfhf9"}],["path",{d:"m19.148 15.228.383-.923",key:"1reyyz"}],["path",{d:"m19.53 21.696-.382-.924",key:"1goivc"}],["path",{d:"m20.772 16.852.924-.383",key:"htqkph"}],["path",{d:"m20.772 19.148.924.383",key:"9w9pjp"}],["circle",{cx:"18",cy:"18",r:"3",key:"1xkwt0"}]]),k=(0,d.default)("bot",[["path",{d:"M12 8V4H8",key:"hb8ula"}],["rect",{width:"16",height:"12",x:"4",y:"8",rx:"2",key:"enze0r"}],["path",{d:"M2 14h2",key:"vft8re"}],["path",{d:"M20 14h2",key:"4cs60a"}],["path",{d:"M15 13v2",key:"1xurst"}],["path",{d:"M9 13v2",key:"rq6x2g"}]]),l=(0,d.default)("cpu",[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]]);var m=a.i(81560),n=a.i(25015),o=a.i(5050);let p=(0,o.createServerReference)("40462636c960751092e7156c887ecd5c775d22267d",o.callServer,void 0,o.findSourceMapURL,"checkDirectoryAccessible"),q=(0,o.createServerReference)("4080bbb13e50e3eba66c4221569be548e143f60923",o.callServer,void 0,o.findSourceMapURL,"listDirectories");var r=a.i(41724),s=a.i(92596),t=a.i(210);let u=(0,d.default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);var v=a.i(11431);function w({title:a,initialPath:d,onSelect:e,onCancel:f,checkRepo:g}){let[h,i]=(0,c.useState)(""),[j,k]=(0,c.useState)(""),[l,m]=(0,c.useState)([]),[n,o]=(0,c.useState)(!1),[w,x]=(0,c.useState)(null);(0,c.useEffect)(()=>{let a=!0;return(async()=>{try{let b=await (0,r.getHomeDirectory)();if(!a)return;k(b),i(d||b)}catch(b){if(console.error("Failed to resolve home directory:",b),!a)return;x("Failed to access your home directory."),i(d||"/")}})(),()=>{a=!1}},[d]),(0,c.useEffect)(()=>{if(!h)return;let a=!0;return(async()=>{o(!0),x(null);try{let b=await q(h);if(!a)return;if(0===b.length&&j&&h!==j){let b=await p(h);if(!a)return;if(!b){x(`Could not access "${h}". Showing home directory.`),i(j);return}}let c=b.map(a=>({name:a.name,path:a.path,isDirectory:a.isDirectory,isGitRepo:a.isGitRepo}));m(c)}catch(b){if(console.error(b),!a)return;if(j&&h!==j){x(`Could not access "${h}". Showing home directory.`),i(j);return}m([]),x("Failed to load directory contents")}finally{a&&o(!1)}})(),()=>{a=!1}},[h,j]);let y=async a=>{if(g&&!await g(a)){x("Selected directory is not a valid git repository."),setTimeout(()=>x(null),3e3);return}await e(a)},z=async()=>{await y(h)};return(0,b.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm p-4",children:(0,b.jsxs)("div",{className:"bg-base-200 rounded-lg shadow-xl w-full max-w-3xl h-[80vh] flex flex-col",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between p-4 border-b border-base-300",children:[(0,b.jsxs)("h2",{className:"text-xl font-bold flex items-center gap-2",children:[(0,b.jsx)(s.Folder,{className:"w-5 h-5"}),a||"Browse Local Repository"]}),(0,b.jsx)("button",{onClick:f,className:"btn btn-sm btn-ghost btn-circle",children:"✕"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2 p-3 bg-base-300",children:[(0,b.jsx)("button",{onClick:()=>{let a=(0,v.getDirName)(h);a&&a!==h&&i(a)},className:"btn btn-sm btn-square btn-ghost",title:"Go Up",disabled:"/"===h||!h,children:(0,b.jsx)(t.ArrowLeft,{className:"w-4 h-4"})}),(0,b.jsx)("div",{className:"flex-1 overflow-x-auto whitespace-nowrap px-2 font-mono text-sm",children:h}),(0,b.jsx)("button",{onClick:z,className:"btn btn-sm btn-primary",children:"Select Current Folder"})]}),(0,b.jsx)("div",{className:"flex-1 overflow-y-auto p-2",children:n?(0,b.jsx)("div",{className:"flex justify-center items-center h-full",children:(0,b.jsx)("span",{className:"loading loading-spinner loading-lg"})}):w?(0,b.jsx)("div",{className:"alert alert-error",children:w}):0===l.length?(0,b.jsx)("div",{className:"text-center text-base-content/50 mt-10",children:"Empty directory"}):(0,b.jsx)("div",{className:"grid grid-cols-1 gap-1",children:l.map(a=>(0,b.jsxs)("div",{className:"flex items-center justify-between p-2 hover:bg-base-100 rounded-md cursor-pointer transition-colors",onClick:()=>{i(a.path)},children:[(0,b.jsxs)("div",{className:"flex items-center gap-3 overflow-hidden",children:[(0,b.jsx)(s.Folder,{className:`w-5 h-5 ${a.isGitRepo?"text-primary":"text-base-content/70"}`}),(0,b.jsx)("span",{className:"truncate",children:a.name}),a.isGitRepo&&(0,b.jsx)("span",{className:"badge badge-xs badge-primary",children:"git"})]}),a.isGitRepo&&(0,b.jsxs)("button",{className:"btn btn-xs btn-primary",onClick:b=>{b.stopPropagation(),y(a.path)},title:`Select ${a.name}`,children:[(0,b.jsx)(u,{className:"w-3 h-3"}),"Select"]})]},a.path))})}),(0,b.jsx)("div",{className:"p-3 border-t border-base-300 text-xs text-base-content/50 text-center",children:'Navigate to a folder and click "Select Current Folder" to choose it.'})]})})}let x=(0,o.createServerReference)("40b790cb2cdb35e06c06c9a2319b231de1a9918ded",o.callServer,void 0,o.findSourceMapURL,"checkIsGitRepo"),y=(0,o.createServerReference)("4089064505ffd748138851e0e1544d9782c6caada2",o.callServer,void 0,o.findSourceMapURL,"getBranches"),z=(0,o.createServerReference)("6047ec78f51eb3ba4d0f2f7505f4851c80a977bddd",o.callServer,void 0,o.findSourceMapURL,"checkoutBranch");var A=a.i(2188);let B=(0,o.createServerReference)("7faf927cccd227030a200d885543981c7cc79dbf4c",o.callServer,void 0,o.findSourceMapURL,"getStartupScript"),C=(0,o.createServerReference)("7f8d87a4b65f3c6dabb9653e6f30ebf96b7939f13c",o.callServer,void 0,o.findSourceMapURL,"getDefaultDevServerScript"),D=(0,o.createServerReference)("7f4e5bfeb4532f37deed85bda3fc5bc056e2c2cf21",o.callServer,void 0,o.findSourceMapURL,"listRepoFiles");var E=a.i(30926);let F=(0,o.createServerReference)("40d566ae8fed2a04afea397f5023c2603b87c3d3eb",o.callServer,void 0,o.findSourceMapURL,"checkAgentCliInstalled"),G=(0,o.createServerReference)("40f772d16818593780dde18587d2be3dc31326b8ac",o.callServer,void 0,o.findSourceMapURL,"installAgentCli"),H=(0,o.createServerReference)("40209f820f23d86c9dde01cbf9bd008331914d1d50",o.callServer,void 0,o.findSourceMapURL,"resolveRepositoryByName"),I=(0,o.createServerReference)("707a6615571bb96b003d90d7bc50874388d612f696",o.callServer,void 0,o.findSourceMapURL,"copySessionAttachments"),J=(0,o.createServerReference)("702d43ade6a73f828eb152e2c4f7f2fcdb42fc70ee",o.callServer,void 0,o.findSourceMapURL,"createSession"),K=(0,o.createServerReference)("404d988b33c2c9e63917259bd7ccb5bfd5d339f0bc",o.callServer,void 0,o.findSourceMapURL,"deleteSession"),L=(0,o.createServerReference)("409cd756b10078a1c8332ce2c59e91f893be6662f0",o.callServer,void 0,o.findSourceMapURL,"getSessionPrefillContext"),M=(0,o.createServerReference)("40284adf4b914d3ad527c2eeb12b193682a600cd1b",o.callServer,void 0,o.findSourceMapURL,"listSessions"),N=(0,o.createServerReference)("601bb6a36e43a8c6bcd08f490c9ad76229dcfa442a",o.callServer,void 0,o.findSourceMapURL,"saveSessionLaunchContext");var O=a.i(2205),P=a.i(85695);let Q=(0,o.createServerReference)("60fff778365d399740d59ecef8dcbdd1aca58b47b2",o.callServer,void 0,o.findSourceMapURL,"updateRepoSettings");var R=a.i(50944),S=a.i(12627),T=a.i(71987);let U=a.i(35027).default,V="After each round of conversation, if work is completed and files changed, commit all changes with an appropriate git commit message. The commit message must include a clear title and a detailed body describing what changed and why, not just a title. No need to confirm when creating commits.",W={gemini:"gemini",codex:"codex",agent:"agent"},X={gemini:"Gemini CLI",codex:"Codex CLI",agent:"Cursor Agent CLI"};function Y({mode:a="home",repoPath:d=null,fromRepoName:o=null,prefillFromSession:p=null}){let[q,r]=(0,c.useState)(!1),[s,t]=(0,c.useState)(!1),[u,Y]=(0,c.useState)(null),[Z,$]=(0,c.useState)(null),_=(0,R.useRouter)(),[aa,ab]=(0,c.useState)([]),[ac,ad]=(0,c.useState)(""),[ae,af]=(0,c.useState)([]),[ag,ah]=(0,c.useState)([]),[ai,aj]=(0,c.useState)(null),[ak,al]=(0,c.useState)(""),[am,an]=(0,c.useState)(""),[ao,ap]=(0,c.useState)(""),[aq,ar]=(0,c.useState)(!1),[as,at]=(0,c.useState)(""),[au,av]=(0,c.useState)(""),[aw,ax]=(0,c.useState)([]),[ay,az]=(0,c.useState)([]),[aA,aB]=(0,c.useState)(null),[aC,aD]=(0,c.useState)(!1),[aE,aF]=(0,c.useState)(!1),[aG,aH]=(0,c.useState)(null),[aI,aJ]=(0,c.useState)(null),[aK,aL]=(0,c.useState)(!1),[aM,aN]=(0,c.useState)(!1),[aO,aP]=(0,c.useState)(!1),[aQ,aR]=(0,c.useState)(null),[aS,aT]=(0,c.useState)(!1),[aU,aV]=(0,c.useState)(null),[aW,aX]=(0,c.useState)(""),[aY,aZ]=(0,c.useState)(!1),[a$,a_]=(0,c.useState)(null),a0=(0,c.useRef)(null),a1=ai&&ak?`Show Session Setup (${ai.name} / ${ak})`:"Show Session Setup",a2=(0,c.useCallback)(()=>{(0,S.notifySessionsUpdated)()},[]),a3=(0,c.useCallback)(async(a=Z)=>{try{let[b,c]=await Promise.all([M(),a?M(a):Promise.resolve([])]);ah(b),a&&af(c)}catch(a){console.error("Failed to refresh sessions",a)}},[Z]),a4=(0,c.useCallback)(a=>"gemini"===a||"codex"===a||"agent"===a?a:null,[]);(0,c.useEffect)(()=>{(async()=>{try{let[a,b]=await Promise.all([(0,O.getConfig)(),M()]);Y(a),ah(b)}catch(a){console.error("Failed to load data",a)}finally{aN(!0)}})()},[]),(0,c.useEffect)(()=>{let b=()=>{a3("new"===a?Z:null)},c=a=>{a.key===S.SESSIONS_UPDATED_STORAGE_KEY&&b()},d=()=>{b()},e=()=>{b()};return window.addEventListener("storage",c),window.addEventListener("focus",d),window.addEventListener(S.SESSIONS_UPDATED_EVENT,e),()=>{window.removeEventListener("storage",c),window.removeEventListener("focus",d),window.removeEventListener(S.SESSIONS_UPDATED_EVENT,e)}},[a,a3,Z]);let a5=async a=>{$(a),bu([]),await a8(a),await ba(a),await a3(a)},a6=async b=>{aF(!0),aJ(null);try{if(!await x(b))return aJ("Selected directory is not a valid git repository."),!1;let c=[...(u||await (0,O.getConfig)()).recentRepos];c.includes(b)?c=[b,...c.filter(a=>a!==b)]:c.unshift(b);let d=await (0,P.updateConfig)({recentRepos:c});if(Y(d),r(!1),"home"===a)return _.push(`/new?repo=${encodeURIComponent(b)}`),!0;return await a5(b),!0}catch(a){return console.error(a),aJ("Failed to open repository."),!1}finally{aF(!1)}},a7=async b=>{if("new"!==a)return;let c=b.target.value;if(!c||c===Z||!await a6(c))return;let d=new URLSearchParams;d.set("repo",c),p&&d.set("prefillFromSession",p),_.replace(`/new?${d.toString()}`)};(0,c.useEffect)(()=>{if("new"===a){if(!d){$(null),af([]),ab([]),ad("");return}d!==Z&&a6(d)}},[a,d,Z]),(0,c.useEffect)(()=>{if("new"!==a)return;if(d)return void aL(!1);let b=o?.trim()??"";if(!b)return void aL(!1);let c=!1;return(async()=>{aJ(null),aL(!0);let a=await H(b);if(c)return;if(!a.success){aJ(a.error||"Failed to search repositories."),aL(!1);return}if(!a.repoPath){aJ(`Could not find a matching repository for "${b}".`),aL(!1);return}let d=new URLSearchParams;d.set("repo",a.repoPath),p&&d.set("prefillFromSession",p),_.replace(`/new?${d.toString()}`)})(),()=>{c=!0}},[o,a,p,d,_]),(0,c.useEffect)(()=>{aD(!1),az([]),aB(null)},[p]),(0,c.useEffect)(()=>{if("new"!==a||!Z||!p||aC)return;let b=!1;return(async()=>{let a=await L(p);if(b)return;if(!a.success||!a.context){a.error&&aJ(a.error),aD(!0);return}let c=a.context;if(c.repoPath!==Z)return aD(!0);let d=U.find(a=>a.cli===c.agentProvider);d&&(aj(d),c.model&&("auto"===c.model||d.models.some(a=>a.id===c.model))?al(c.model):al("auto")),av(c.title||""),at(c.initialMessage||""),az(c.attachmentNames||[]),aB(c.sourceSessionName),ar(!0),aD(!0)})(),()=>{b=!0}},[aC,a,p,Z]);let a8=async a=>{let b=u||await (0,O.getConfig)();u||Y(b);let c=b.repoSettings[a]||{},d=c.agentProvider,e=c.agentModel,f=c.startupScript,g=c.devServerScript;if(d){let a=U.find(a=>a.cli===d);a?(aj(a),e&&("auto"===e||a.models.some(a=>a.id===e))?al(e):al("auto")):(aj(U[0]),al("auto"))}else aj(U[0]),al("auto");null!=f?an(f):an(await B(a)),null!=g?ap(g):ap(await C(a))},a9=async a=>{Y(await (0,P.updateConfig)({defaultRoot:a})),t(!1)},ba=async a=>{try{let b=await y(a);ab(b);let c=((u||await (0,O.getConfig)()).repoSettings[a]||{}).lastBranch,d=b.find(a=>a.current)?.name;if(c&&b.some(a=>a.name===c)){if(ad(c),c!==d)try{await z(a,c);let b=await y(a);ab(b)}catch(a){console.warn("Could not auto-checkout to remembered branch",a),d&&ad(d)}}else d&&ad(d)}catch(a){console.error("Failed to load branches",a),aJ("Failed to load branches.")}},bb=async a=>{let b=a.target.value;if(Z){aF(!0);try{await z(Z,b),ad(b);let a=await Q(Z,{lastBranch:b});Y(a);let c=await y(Z);ab(c)}catch{aJ(`Failed to checkout branch ${b}`)}finally{aF(!1)}}},bc=async a=>{let b=a.target.value,c=U.find(a=>a.cli===b);if(c&&Z){aj(c);let a="auto";al(a),Y(await Q(Z,{agentProvider:c.cli,agentModel:a}))}},bd=async a=>{let b=a.target.value;al(b),Z&&Y(await Q(Z,{agentModel:b}))},be=async a=>{an(a.target.value)},bf=async()=>{Z&&Y(await Q(Z,{startupScript:am}))},bg=async a=>{Z&&Y(await Q(Z,{devServerScript:a}))},bh=async()=>{await bg(ao)},bi=(0,c.useCallback)((a,b)=>{if(a.name&&a.name.trim().length>0)return a;let c=a.type&&a.type.split("/")[1]?.split("+")[0]||"bin";return new File([a],`pasted-file-${Date.now()}-${b+1}.${c}`,{type:a.type,lastModified:a.lastModified||Date.now()})},[]),bj=(0,c.useCallback)(a=>{0!==a.length&&ax(b=>{let c=new Map(b.map(a=>[a.name,a]));return a.forEach(a=>{c.set(a.name,a)}),Array.from(c.values())})},[]),[bk,bl]=(0,c.useState)(!1),[bm,bn]=(0,c.useState)([]),[,bo]=(0,c.useState)(""),[bp,bq]=(0,c.useState)(0),[br,bs]=(0,c.useState)(0),[bt,bu]=(0,c.useState)([]),bv=async a=>{let b=a.target.value,c=a.target.selectionStart;at(b),bq(c);let d=b.substring(0,c),e=d.lastIndexOf("@");if(-1!==e){let a=d.substring(e+1);if(!/\s/.test(a)){if(bo(a),bl(!0),Z){var f;let b,c=bt;0===bt.length&&bu(c=await D(Z)),f=c,b=a.toLowerCase(),bn([...[...aw.map(a=>a.name),...ay].filter(a=>a.toLowerCase().includes(b)),...f.filter(a=>a.toLowerCase().includes(b)).slice(0,20)]),bs(0)}return}}bl(!1)},bw=a=>{let b=as.substring(0,bp).lastIndexOf("@");if(-1!==b){let c=as.substring(0,b),d=as.substring(bp);at(`${c}@${a} ${d}`),bl(!1)}};(0,c.useEffect)(()=>{if("new"!==a||!Z)return;let b=a=>{let b=a.clipboardData;if(!b)return;let c=Array.from(b.items).filter(a=>"file"===a.kind).map(a=>a.getAsFile()).filter(a=>null!==a),d=(c.length>0?c:Array.from(b.files)).map((a,b)=>bi(a,b));0!==d.length&&(a.preventDefault(),bj(d))};return window.addEventListener("paste",b),()=>{window.removeEventListener("paste",b)}},[bj,a,bi,Z]);let bx=async(a,b)=>{if(a.stopPropagation(),u){let a=u.recentRepos.filter(a=>a!==b);Y(await (0,P.updateConfig)({recentRepos:a}))}},by=(0,c.useCallback)(()=>{if(!aS||!aW||!a0.current)return;let a=a0.current,b=(c=0)=>{if(c>40)return void a_("Timed out while waiting for terminal to initialize.");try{let d=a.contentWindow;if(d?.term){d.term.paste(`${aW}\r`),aZ(!0),a_(null),d.focus();return}setTimeout(()=>b(c+1),300)}catch(a){console.error("Failed to inject login command into terminal iframe:",a),a_("Could not access ttyd terminal. Ensure ttyd is running and try again.")}};setTimeout(()=>b(),500)},[aS,aW]),bz=(0,c.useCallback)(async()=>{let a=a4(ai?.cli);if(!a)return!0;let b=await F(a);if(!b.success)return aJ(b.error||`Failed to verify ${X[a]} installation status.`),!1;if(b.installed)return!0;aP(!0),aR(a),aJ(null);let c=await G(a);if(aP(!1),aR(null),!c.success)return aJ(c.error||`Failed to install ${X[a]}.`),!1;let d=await (0,A.startTtydProcess)();return d.success?(aV(a),aX(W[a]),aZ(!1),a_(null),aT(!0)):aJ(d.error||"Failed to start ttyd"),!1},[ai?.cli,a4]),bA=async(a={})=>{if(Z){aF(!0),aJ(null);try{if(!a.skipAgentSetup&&!await bz())return void aF(!1);let b=ao.trim();!b&&(b=await C(Z))&&ap(b),await bf(),await bg(b);let c=await (0,A.startTtydProcess)();if(!c.success){aJ(c.error||"Failed to start ttyd"),aF(!1);return}let d=await J(Z,ac||"main",{agent:ai?.cli||"agent",model:ak||"",title:au,devServerScript:b||void 0});if(d.success&&d.sessionName&&d.worktreePath&&d.branchName){let a=[],b=[];if(aw.length>0){let b=new FormData;aw.forEach(a=>b.append(a.name,a)),a=await (0,E.saveAttachments)(d.worktreePath,b)}if(aA&&ay.length>0){let a=await I(aA,d.worktreePath,ay);if(!a.success){aJ(a.error||"Failed to carry over attachments from source session"),aF(!1);return}b=a.copiedAttachmentNames}let c=Array.from(new Set([...a,...b])),e=as.trim(),f=e;f&&(f.includes(V)||(f=`${f}
|
|
2
2
|
|
|
3
3
|
${V}`)),f=f.replace(/@(\S+)/g,(a,b)=>c.includes(b)?`${d.worktreePath}-attachments/${b}`:b);let g=await N(d.sessionName,{title:au||void 0,initialMessage:f||void 0,rawInitialMessage:e||void 0,startupScript:am||void 0,attachmentNames:c,agentProvider:ai?.cli||"agent",model:ak||""});if(!g.success){aJ(g.error||"Failed to save session context"),aF(!1);return}let h=`/session/${d.sessionName}`;_.push(h),aF(!1)}else aJ(d.error||"Failed to create session worktree"),aF(!1)}catch(a){console.error(a),aJ("Failed to start session"),aF(!1)}}},bB=()=>{bA()},bC=async()=>{aT(!1),aV(null),aX(""),aZ(!1),a_(null),await bA({skipAgentSetup:!0})},bD=async a=>{if(Z){aF(!0);try{let b=await (0,A.startTtydProcess)();if(!b.success){aJ(b.error||"Failed to start ttyd"),aF(!1);return}let c=`/session/${a.sessionName}`;_.push(c),aF(!1)}catch(a){console.error(a),aJ("Failed to resume session"),aF(!1)}}},bE=async a=>{if(Z&&confirm(`Delete session "${a.sessionName}"?
|
|
4
4
|
|