import{Ah as C,Gh as D,Hh as j,Mh as x,aP as E,cP as c,lO as M}from"./cli-0.5.3-jbzr8k4s.mjs";import"./cli-0.5.3-me9jkw92.mjs";import"./cli-0.5.3-bqmztzjc.mjs";import"./cli-0.5.3-ytqxzjff.mjs";import"./cli-0.5.3-h6n812td.mjs";import"./cli-0.5.3-hg8c6qbh.mjs";import"./cli-0.5.3-39jr2yrx.mjs";import"./cli-0.5.3-42e2paz8.mjs";import"./cli-0.5.3-mn45xfck.mjs";import"./cli-0.5.3-m884a3pk.mjs";import"./cli-0.5.3-4f9xxrem.mjs";import"./cli-0.5.3-gr8nsa2k.mjs";import"./cli-0.5.3-yj9nbd9d.mjs";import"./cli-0.5.3-55kd38ff.mjs";import"./cli-0.5.3-e6bjcfwg.mjs";import"./cli-0.5.3-4dbxtwh3.mjs";import"./cli-0.5.3-m0kfmb79.mjs";import"./cli-0.5.3-8zq9vdtg.mjs";import"./cli-0.5.3-vmx7agj7.mjs";import"./cli-0.5.3-h8xs2818.mjs";import"./cli-0.5.3-wcx7cnw5.mjs";import"./cli-0.5.3-9zbakvbf.mjs";import"./cli-0.5.3-hx550gz2.mjs";import"./cli-0.5.3-842pf3t4.mjs";import"./cli-0.5.3-wxead1ct.mjs";import"./cli-0.5.3-s1hz35ye.mjs";import"./cli-0.5.3-g0svn6bx.mjs";import"./cli-0.5.3-sfdh3pkx.mjs";import"./cli-0.5.3-d8tjnxcj.mjs";import"./cli-0.5.3-6zfw1732.mjs";import"./cli-0.5.3-ptjdgcsy.mjs";import"./cli-0.5.3-tp3jye12.mjs";import"./cli-0.5.3-vqmxwet2.mjs";import"./cli-0.5.3-rch86nhn.mjs";import"./cli-0.5.3-zg2apr51.mjs";import"./cli-0.5.3-ngnshpb7.mjs";import"./cli-0.5.3-e58xste9.mjs";import"./cli-0.5.3-6163zevg.mjs";import"./cli-0.5.3-jmkkd5ph.mjs";import"./cli-0.5.3-1vt6twff.mjs";import"./cli-0.5.3-7017ez65.mjs";import"./cli-0.5.3-ea94acj4.mjs";import"./cli-0.5.3-3k22nqvy.mjs";import"./cli-0.5.3-63q4g3zt.mjs";import"./cli-0.5.3-dyhbm5kp.mjs";import"./cli-0.5.3-vpcrbd8n.mjs";import"./cli-0.5.3-jdw3ajfv.mjs";import"./cli-0.5.3-qg4a557t.mjs";import{V8 as U,V_ as w,Y8 as N,d$ as S}from"./cli-0.5.3-t65dek0m.mjs";import"./cli-0.5.3-kavpx97n.mjs";import"./cli-0.5.3-9bdwhdys.mjs";import"./cli-0.5.3-ttc72eq3.mjs";import"./cli-0.5.3-g75gdzrp.mjs";import"./cli-0.5.3-1rg2r7n7.mjs";import"./cli-0.5.3-6j2jk6dt.mjs";import"./cli-0.5.3-66650sba.mjs";import{Lea as v,Nea as k}from"./cli-0.5.3-9vh3vpap.mjs";import{qfa as O,vfa as I}from"./cli-0.5.3-n3cxyxpg.mjs";import"./cli-0.5.3-kbvzmaax.mjs";import"./cli-0.5.3-7wdgps7z.mjs";import"./cli-0.5.3-c8bcrqa4.mjs";import{gma as b,pia as z,via as F}from"./cli-0.5.3-qrvd6cmy.mjs";import"./cli-0.5.3-2dk1sk8w.mjs";import{Xma as T}from"./cli-0.5.3-0df3r78b.mjs";import{randomUUID as p}from"crypto";import{mkdir as y,readFile as f,writeFile as u}from"fs/promises";function g(Q){let G=Q?.message?.content;if(!G)return"Branched conversation";let X=typeof G==="string"?G:G.find((Z)=>Z.type==="text")?.text;if(!X)return"Branched conversation";return X.replace(/\s+/g," ").trim().slice(0,100)||"Branched conversation"}async function d(Q){let G=p(),X=z(),Z=x(F()),Y=j(G),V=D();await y(Z,{recursive:!0,mode:448});let K;try{K=await f(V)}catch{throw Error("No conversation to branch")}if(K.length===0)throw Error("No conversation to branch");let _=U(K),W=_.filter((A)=>C(A)&&!A.isSidechain),H=_.filter((A)=>A.type==="content-replacement"&&A.sessionId===X).flatMap((A)=>A.replacements);if(W.length===0)throw Error("No messages to branch");let $=null,q=[],B=[];for(let A of W){let L={...A,sessionId:G,parentUuid:$,isSidechain:!1,forkedFrom:{sessionId:X,messageUuid:A.uuid}},J={...A,sessionId:G};if(B.push(J),q.push(O(L)),A.type!=="progress")$=A.uuid}if(H.length>0){let A={type:"content-replacement",sessionId:G,replacements:H};q.push(O(A))}return await u(Y,q.join(`
`)+`
`,{encoding:"utf8",mode:384}),{sessionId:G,title:Q,forkPath:Y,serializedMessages:B,contentReplacementRecords:H}}async function m(Q){let G=`${Q} (Branch)`;if((await E(G,{exact:!0})).length===0)return G;let Z=await E(`${Q} (Branch`),Y=new Set([1]),V=new RegExp(`^${w(Q)} \\(Branch(?: (\\d+))?\\)$`);for(let _ of Z){let W=_.customTitle?.match(V);if(W)if(W[1])Y.add(parseInt(W[1],10));else Y.add(1)}let K=2;while(Y.has(K))K++;return`${Q} (Branch ${K})`}async function AA(Q,G,X){let Z=X?.trim()||void 0,Y=z();try{let{sessionId:V,title:K,forkPath:_,serializedMessages:W,contentReplacementRecords:H}=await d(Z),$=new Date,q=g(W.find((P)=>P.type==="user")),A=await m(K??q);await M(V,A,_),v("tengu_conversation_forked",{message_count:W.length,has_custom_title:!!K});let L={date:$.toISOString().split("T")[0],messages:W,fullPath:_,value:$.getTime(),created:$,modified:$,firstPrompt:q,messageCount:W.length,isSidechain:!1,sessionId:V,customTitle:A,contentReplacements:H},J=K?` "${K}"`:"",R=`
To resume the original: claude -r ${Y}`,h=`Branched conversation${J}. You are now in the branch.${R}`;if(G.resume)await G.resume(V,L,"fork"),Q(h,{display:"system"});else Q(`Branched conversation${J}. Resume with: /resume ${V}`);return null}catch(V){let K=V instanceof Error?V.message:"Unknown error occurred";return Q(`Failed to branch conversation: ${K}`),null}}var l=T(()=>{b();k();N();c();I();S()});l();export{g as deriveFirstPrompt,AA as call};
