import{$h as j,Uh as C,_h as D,aQ as E,cQ as c,ei as x,lP as M}from"./cli-0.5.12-zc0qwdy2.mjs";import"./cli-0.5.12-whfz3xsx.mjs";import"./cli-0.5.12-z100r543.mjs";import"./cli-0.5.12-bzab36pn.mjs";import"./cli-0.5.12-pp1549k7.mjs";import"./cli-0.5.12-9mq24qzr.mjs";import"./cli-0.5.12-7repzgzv.mjs";import"./cli-0.5.12-pdqnfqg3.mjs";import"./cli-0.5.12-c2yq69h9.mjs";import"./cli-0.5.12-kez9r81a.mjs";import"./cli-0.5.12-zbcr8cbk.mjs";import"./cli-0.5.12-2wf629mh.mjs";import"./cli-0.5.12-ghtxkxqx.mjs";import"./cli-0.5.12-xg7a0dy4.mjs";import"./cli-0.5.12-s0h788we.mjs";import"./cli-0.5.12-m22yxpb9.mjs";import"./cli-0.5.12-cw1qs4bg.mjs";import"./cli-0.5.12-yq8ds97a.mjs";import"./cli-0.5.12-qew4mzgp.mjs";import"./cli-0.5.12-gwg1e43k.mjs";import"./cli-0.5.12-36swspqa.mjs";import"./cli-0.5.12-4dn79vqp.mjs";import"./cli-0.5.12-f5pfjvdk.mjs";import"./cli-0.5.12-fqp5s15p.mjs";import"./cli-0.5.12-rc1p9wk6.mjs";import"./cli-0.5.12-x479axrj.mjs";import"./cli-0.5.12-ysy6e9rz.mjs";import"./cli-0.5.12-cqv7z22w.mjs";import"./cli-0.5.12-7cn41yy7.mjs";import"./cli-0.5.12-34cd39ve.mjs";import"./cli-0.5.12-m2gh4ewc.mjs";import"./cli-0.5.12-c6whkxmz.mjs";import"./cli-0.5.12-w3hy6c60.mjs";import"./cli-0.5.12-5d3qcvf5.mjs";import"./cli-0.5.12-f141d2qa.mjs";import"./cli-0.5.12-khvy67r3.mjs";import"./cli-0.5.12-pycnjaeg.mjs";import"./cli-0.5.12-8v5w8znc.mjs";import"./cli-0.5.12-ctqkj6ve.mjs";import"./cli-0.5.12-cbevkwg4.mjs";import"./cli-0.5.12-w00qj83e.mjs";import"./cli-0.5.12-nbcjwzzn.mjs";import"./cli-0.5.12-3t06hwwh.mjs";import"./cli-0.5.12-057c2cp2.mjs";import"./cli-0.5.12-ecgx5n54.mjs";import{W8 as U,Z8 as N,a$ as w,k$ as S}from"./cli-0.5.12-g4wb8mj2.mjs";import"./cli-0.5.12-vp5smcs1.mjs";import"./cli-0.5.12-y2kq7fe8.mjs";import"./cli-0.5.12-7vxpqr5a.mjs";import"./cli-0.5.12-hvtcdcev.mjs";import"./cli-0.5.12-asbn3d19.mjs";import"./cli-0.5.12-k1crwtdc.mjs";import{dfa as v,ffa as I}from"./cli-0.5.12-2jxq8gnm.mjs";import{Kfa as O,Pfa as k}from"./cli-0.5.12-p5ps8gf0.mjs";import"./cli-0.5.12-hp0508v9.mjs";import"./cli-0.5.12-tfdwzg37.mjs";import"./cli-0.5.12-60w1a0bs.mjs";import{Aia as z,Gia as F,rma as b}from"./cli-0.5.12-c8f4daey.mjs";import"./cli-0.5.12-0qasc0ef.mjs";import"./cli-0.5.12-f8850v2j.mjs";import"./cli-0.5.12-495d826j.mjs";import"./cli-0.5.12-rt0k97yj.mjs";import"./cli-0.5.12-1vyz0tt9.mjs";import{aoa as T}from"./cli-0.5.12-xzeb7mtb.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();I();N();c();k();S()});l();export{g as deriveFirstPrompt,AA as call};
