xevol 0.9.10 → 0.9.11
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/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -429,6 +429,6 @@ Read about how to prevent this error on https://github.com/vadimdemedes/ink/#isr
|
|
|
429
429
|
`)}function Zw(A){if(!A)return"—";try{let E=new Date(A);if(Number.isNaN(E.getTime()))return"—";let I=new Date,F=I.getTime()-E.getTime(),G=Math.floor(F/60000),J=Math.floor(F/3600000),N=Math.floor(F/86400000);if(G<1)return"just now";if(G<60)return`${G}m ago`;if(J<24)return`${J}h ago`;if(N<7)return`${N}d ago`;let L=String(E.getMonth()+1).padStart(2,"0"),X=String(E.getDate()).padStart(2,"0");if(E.getFullYear()===I.getFullYear())return`${L}-${X}`;return`${E.getFullYear()}-${L}-${X}`}catch{return"—"}}var rB=GD(nE(),1);function eS(A){let E=A.list??A.data??A.transcriptions??A.items??A.results??[],I=A.pagination??A.meta??{},F=A.page??I.page??1,G=A.limit??I.limit??E.length,J=A.total??I.total??E.length,N=A.totalPages??I.totalPages??(G?Math.ceil(J/G):1);return{items:E,page:F,limit:G,total:J,totalPages:N}}function A$(A){if(!A)return null;if(A.analysis&&typeof A.analysis==="object")return A.analysis;if(A.data&&typeof A.data==="object")return A.data;return A}function YZ({params:A,navigation:E,onBack:I,terminal:F,setFooterHints:G,setFooterStatus:J}){let[N]=IE.useState(A?.status),[L]=IE.useState(A?.sort),[X,S]=IE.useState(!1),[y,m]=IE.useState(""),[W,$]=IE.useState(""),[T,_]=IE.useState(0),[j,r]=IE.useState([]),[DA,s]=IE.useState(!1),[CA,QA]=IE.useState(!1),[NA,wA]=IE.useState(!1),[qA,UA]=IE.useState(!1),[nA,hA]=IE.useState(!1),[uD,KD]=IE.useState(null);IE.useEffect(()=>{if(!uD)return;let FD=setTimeout(()=>KD(null),5000);return()=>clearTimeout(FD)},[uD]);let jD=y.trim(),{page:jA,limit:$A,total:gA,totalPages:ZA,setPagination:XA,nextPage:RA,prevPage:QD}=UZ(1,20),TD=IE.useRef(null),a=IE.useRef(jA),{data:b,loading:l,error:OA,refresh:PA}=qF("/v1/transcriptions",{query:{page:jA,limit:$A,status:N,sort:L,q:jD||void 0}},[jA,$A,N,L,jD]),mA=b??TD.current;IE.useEffect(()=>{if(b)TD.current=b},[b]),IE.useEffect(()=>{if(jA!==a.current)_(0),a.current=jA},[jA]);let sA=IE.useRef(!1);IE.useEffect(()=>{if(sA.current)return;sA.current=!0,(async()=>{let nD=(await RB())?.default?.limit;if(typeof nD==="number"&&nD>0&&nD!==20)XA({limit:nD,page:1})})()},[XA]),IE.useEffect(()=>{if(!X)return;let FD=setTimeout(()=>{m(W),XA({page:1})},300);return()=>{clearTimeout(FD)}},[X,W,XA]);let qD=IE.useMemo(()=>eS(mA??{}),[mA]);IE.useEffect(()=>{XA({total:qD.total,totalPages:qD.totalPages})},[qD.total,qD.totalPages,XA]);let xD=IE.useMemo(()=>{return qD.items.map((FD)=>{let nD=FD.duration??FD.durationSec??FD.durationSeconds??FD.lengthSec;return{id:mI(FD,["id","transcriptionId","_id"]),title:mI(FD,["title","videoTitle","name"]),status:mI(FD,["status","state"]),duration:YH(nD??"—"),created:Zw(FD.createdAt)}})},[qD.items]);IE.useEffect(()=>{if(T>=xD.length)_(Math.max(0,xD.length-1))},[xD.length,T]);let dD=xD[T],tD=IE.useMemo(()=>new Set(j),[j]),ID=j.length,uB=6+(X?2:y?1:0)+(DA||CA?1:0)+(NA||qA||nA?1:0)+(uD?1:0)+(OA?1:0)+(l&&!mA?1:0),i=3,TA=Math.max(1,F.rows-uB),xA=Math.max(1,Math.floor(TA/i)),hD=Math.max(0,xD.length-xA),iD=Math.min(Math.max(0,T-Math.floor(xA/2)),hD),DB=xD.slice(iD,iD+xA);IE.useEffect(()=>{if(CA||DA)G([{key:"y/n",description:"confirm"},{key:"Esc",description:"cancel"}]);else if(X)G([{key:"Esc",description:"cancel"},{key:"Enter",description:"apply"}]);else{let FD=[{key:"↑/↓",description:"move"},{key:"Enter",description:"view"},{key:"Space",description:"select"}];if(ID>0)FD.push({key:"D",description:"delete sel."}),FD.push({key:"E",description:"export sel."}),FD.push({key:"x",description:"clear sel."});if(ZA>1)FD.push({key:"n/p",description:"page"});FD.push({key:"/",description:"search"}),FD.push({key:"r",description:"refresh"}),G(FD)}J(ID>0?`${ID} selected`:void 0)},[CA,DA,X,ID,G,J]);let xB=IE.useCallback(async()=>{if(!dD)return;wA(!0),KD(null);try{let FD=await RB()??{},{token:nD,expired:JB}=vB(FD);if(!nD){KD(JB?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN.");return}let KB=yB(FD);await OB(`/v1/transcriptions/${dD.id}`,{method:"DELETE",token:nD,apiUrl:KB}),KD(`Deleted ${dD.id}`),await PA()}catch(FD){KD(FD.message)}finally{wA(!1)}},[dD,PA]),mE=IE.useCallback(async()=>{if(j.length===0){KD("No transcriptions selected.");return}UA(!0),KD(null);try{let FD=await RB()??{},{token:nD,expired:JB}=vB(FD);if(!nD){KD(JB?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN.");return}let KB=yB(FD);for(let QE of j)await OB(`/v1/transcriptions/${QE}`,{method:"DELETE",token:nD,apiUrl:KB});KD(`Deleted ${j.length} transcriptions`),r([]),await PA()}catch(FD){KD(FD.message)}finally{UA(!1)}},[PA,j]),UE=IE.useCallback(async()=>{if(j.length===0){KD("No transcriptions selected.");return}hA(!0),KD(null);try{let FD=await RB()??{},{token:nD,expired:JB}=vB(FD);if(!nD){KD(JB?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN.");return}let KB=yB(FD),QE=0;for(let rE of j){let WC=await OB(`/v1/analysis/${rE}`,{token:nD,apiUrl:KB}),HE=A$(WC);if(!HE)continue;let cE=Lw(HE);if(!cE.trim())continue;let bC=`xevol-${rE}.md`,P=tS.join(process.cwd(),bC);await oS.writeFile(P,cE,"utf8"),QE+=1}KD(`Exported ${QE} transcription${QE===1?"":"s"}`)}catch(FD){KD(FD.message)}finally{hA(!1)}},[j]),bu=IE.useCallback(()=>{if(!dD)return;let FD=`https://xevol.com/t/${encodeURIComponent(dD.id)}`;Yw(FD),KD(`Opened ${dD.id} in browser`)},[dD]);return rC((FD,nD)=>{let JB=FD.toLowerCase();if(CA){if(JB==="y")QA(!1),mE();if(JB==="n"||nD.escape)QA(!1),KD("Batch delete canceled");return}if(DA){if(JB==="y")s(!1),xB();if(JB==="n"||nD.escape)s(!1),KD("Delete canceled");return}if(X){if(nD.escape)$(""),m(""),S(!1),XA({page:1});return}if(nD.escape||nD.backspace){I();return}if((nD.upArrow||JB==="k")&&xD.length>0){_((KB)=>Math.max(0,KB-1));return}if((nD.downArrow||JB==="j")&&xD.length>0){_((KB)=>Math.min(xD.length-1,KB+1));return}if(nD.return){if(dD)E.push("detail",{id:dD.id});return}if(FD==="D"){if(ID>0)QA(!0);else KD("No transcriptions selected.");return}if(FD==="E"){UE();return}if(FD===" "){if(dD)r((KB)=>KB.includes(dD.id)?KB.filter((QE)=>QE!==dD.id):[...KB,dD.id]);return}if(JB==="x"){r([]);return}if(JB==="n"){RA();return}if(JB==="p"){QD();return}if(FD==="/"){$(y),S(!0);return}if(JB==="d"){if(dD)s(!0);return}if(JB==="o"){bu();return}if(JB==="r")PA()}),rB.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[X&&rB.jsxDEV(iA,{flexDirection:"column",marginBottom:1,children:[rB.jsxDEV(iA,{children:[rB.jsxDEV(cA,{color:eA.secondary,children:"/ "},void 0,!1,void 0,this),rB.jsxDEV(e6,{value:W,onChange:$,onSubmit:()=>{m(W),S(!1),XA({page:1})}},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rB.jsxDEV(cA,{color:eA.secondary,children:["Searching: ",W||"…"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!X&&y&&rB.jsxDEV(iA,{marginBottom:1,children:rB.jsxDEV(cA,{color:eA.secondary,children:["Filter: ",y]},void 0,!0,void 0,this)},void 0,!1,void 0,this),l&&!mA&&rB.jsxDEV(aC,{label:"Fetching transcriptions…"},void 0,!1,void 0,this),OA&&rB.jsxDEV(cA,{color:eA.error,children:[OA," (press r to retry)"]},void 0,!0,void 0,this),!l&&!OA&&xD.length===0&&!TD.current&&rB.jsxDEV(cA,{color:eA.secondary,children:"No transcriptions found."},void 0,!1,void 0,this),xD.length>0&&rB.jsxDEV(iA,{flexDirection:"column",children:DB.map((FD,nD)=>{let KB=iD+nD===T,QE=tD.has(FD.id);return rB.jsxDEV(iA,{flexDirection:"row",marginBottom:1,children:[rB.jsxDEV(iA,{width:2,children:rB.jsxDEV(cA,{color:KB?eA.primary:eA.secondary,children:KB?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),rB.jsxDEV(iA,{width:3,children:rB.jsxDEV(cA,{color:QE?eA.primary:eA.secondary,children:QE?"☑":"☐"},void 0,!1,void 0,this)},void 0,!1,void 0,this),rB.jsxDEV(iA,{flexDirection:"column",flexGrow:1,children:[rB.jsxDEV(iA,{flexDirection:"row",justifyContent:"space-between",children:[rB.jsxDEV(cA,{color:KB?eA.primary:void 0,children:FD.title},void 0,!1,void 0,this),rB.jsxDEV(cA,{color:eA.secondary,children:FD.created},void 0,!1,void 0,this)]},void 0,!0,void 0,this),rB.jsxDEV(iA,{flexDirection:"row",children:[rB.jsxDEV(AG,{status:FD.status},void 0,!1,void 0,this),rB.jsxDEV(cA,{color:eA.secondary,children:[" ",FD.status]},void 0,!0,void 0,this),rB.jsxDEV(cA,{color:eA.secondary,children:[" · ",FD.duration]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},FD.id,!0,void 0,this)})},void 0,!1,void 0,this),CA&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(cA,{color:eA.warning,children:["Delete ",ID," selected transcriptions? (y/n)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),DA&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(cA,{color:eA.warning,children:["Delete ",dD?.title,"? (y/n)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),NA&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(aC,{label:"Deleting transcription…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),qA&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(aC,{label:"Deleting selected…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),nA&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(aC,{label:"Exporting selected…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),uD&&rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(cA,{color:eA.secondary,children:uD},void 0,!1,void 0,this)},void 0,!1,void 0,this),rB.jsxDEV(iA,{marginTop:1,children:rB.jsxDEV(cA,{color:eA.secondary,children:["Page ",jA," / ",ZA," · ",gA," total"]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var LZ=GD(hB(),1);var vQ=GD(nE(),1),D$=[{key:"",action:"Dashboard",section:"dashboard"},{key:"↑/↓ / j/k",action:"Move selection"},{key:"Enter",action:"Select menu item / transcription"},{key:"r",action:"Refresh data"},{key:"",action:"Transcription List",section:"list"},{key:"↑/↓",action:"Move selection"},{key:"Enter",action:"View transcription"},{key:"Space",action:"Toggle selection"},{key:"D",action:"Batch delete selected"},{key:"E",action:"Batch export selected"},{key:"x",action:"Clear selection"},{key:"d",action:"Delete current"},{key:"n / p",action:"Next / previous page"},{key:"/",action:"Live search"},{key:"o",action:"Open in browser"},{key:"r",action:"Refresh list"},{key:"",action:"Detail / Spike Viewer",section:"detail"},{key:"↑/↓ / j/k",action:"Scroll content"},{key:"s",action:"View spikes (detail)"},{key:"e",action:"Export to markdown"},{key:"o",action:"Open in browser"},{key:"",action:"Global",section:"global"},{key:"Esc / Backspace",action:"Go back"},{key:"?",action:"Toggle help"},{key:"q",action:"Quit"}];function ZZ({onClose:A,setFooterHints:E}){return LZ.useEffect(()=>{E([{key:"Esc",description:"close"},{key:"q",description:"quit"}])},[E]),rC((I,F)=>{if(F.escape||F.backspace)A()}),vQ.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[vQ.jsxDEV(cA,{color:eA.primary,children:"Keybindings"},void 0,!1,void 0,this),vQ.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:D$.map((I,F)=>{if(I.section)return vQ.jsxDEV(iA,{marginTop:F>0?1:0,children:vQ.jsxDEV(cA,{color:eA.accent,children:I.action},void 0,!1,void 0,this)},`section-${I.section}`,!1,void 0,this);return vQ.jsxDEV(iA,{flexDirection:"row",children:[vQ.jsxDEV(iA,{width:16,children:vQ.jsxDEV(cA,{color:eA.secondary,children:I.key},void 0,!1,void 0,this)},void 0,!1,void 0,this),vQ.jsxDEV(cA,{children:I.action},void 0,!1,void 0,this)]},`${I.key}-${F}`,!0,void 0,this)})},void 0,!1,void 0,this),vQ.jsxDEV(iA,{marginTop:1,children:vQ.jsxDEV(cA,{color:eA.secondary,children:"Press ? or Esc to close."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var M2=GD(hB(),1);var xC=GD(nE(),1),eM=null;var BG=[{label:"\uD83D\uDCCB Transcriptions",value:"transcriptions"},{label:"➕ Add URL",value:"add-url"},{label:"\uD83C\uDFE2 Workspaces",value:"workspaces"},{label:"\uD83D\uDD27 Settings",value:"settings"},{label:"❓ Help",value:"help"},{label:"\uD83D\uDEAA Quit",value:"quit"}];function B$(A){return A.list??A.data??A.transcriptions??A.items??A.results??[]}function XZ({version:A,navigation:E,setFooterHints:I,setFooterStatus:F}){let{exit:G}=r4(),[J,N]=M2.useState(0),{data:L,loading:X,error:S,refresh:y}=qF("/v1/transcriptions",{query:{limit:3}},[]),m=L??eM;M2.useEffect(()=>{if(L)eM=L},[L]);let W=X&&!eM;M2.useEffect(()=>{I([{key:"↑/↓",description:"move"},{key:"Enter",description:"select/toggle"},{key:"a",description:"add URL"},{key:"r",description:"refresh"},{key:"?",description:"help"},{key:"q",description:"quit"}]),F(void 0)},[I,F]);let $=M2.useMemo(()=>{return B$(m??{}).slice(0,3).map((j)=>({id:mI(j,["id","transcriptionId","_id"]),title:mI(j,["title","videoTitle","name"]),created:Zw(j.createdAt)}))},[m]),T=BG.length+$.length;return M2.useEffect(()=>{if(J>=T)N(Math.max(0,T-1))},[T,J]),rC((_,j)=>{let r=_.toLowerCase();if(j.upArrow||r==="k"){if(T>0)N((DA)=>DA<=0?T-1:DA-1);return}if(j.downArrow||r==="j"){if(T>0)N((DA)=>DA>=T-1?0:DA+1);return}if(r==="r"){y();return}if(r==="a"){E.push("add-url");return}if(j.return)if(J<BG.length){let DA=BG[J];if(DA.value==="transcriptions"){E.push("list");return}if(DA.value==="add-url"){E.push("add-url");return}if(DA.value==="workspaces"){E.push("workspaces");return}if(DA.value==="settings"){E.push("settings");return}if(DA.value==="help"){E.push("help");return}if(DA.value==="quit")G()}else{let DA=J-BG.length,s=$[DA];if(s?.id)E.push("detail",{id:s.id})}}),xC.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[xC.jsxDEV(iA,{flexDirection:"column",marginBottom:1,children:BG.map((_,j)=>{let r=J===j;return xC.jsxDEV(iA,{flexDirection:"row",children:[xC.jsxDEV(iA,{width:2,children:xC.jsxDEV(cA,{color:r?eA.primary:eA.secondary,children:r?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),xC.jsxDEV(cA,{color:r?eA.primary:void 0,children:_.label},void 0,!1,void 0,this)]},_.value,!0,void 0,this)})},void 0,!1,void 0,this),xC.jsxDEV(iA,{flexDirection:"column",children:[xC.jsxDEV(cA,{color:eA.secondary,children:"Recent transcriptions"},void 0,!1,void 0,this),W&&xC.jsxDEV(iA,{marginTop:1,children:xC.jsxDEV(aC,{label:"Loading recent…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),S&&xC.jsxDEV(iA,{marginTop:1,children:xC.jsxDEV(cA,{color:eA.error,children:[S," (press r to retry)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),!W&&!S&&$.length===0&&xC.jsxDEV(iA,{marginTop:1,children:xC.jsxDEV(cA,{color:eA.secondary,children:"No recent transcriptions."},void 0,!1,void 0,this)},void 0,!1,void 0,this),!W&&!S&&$.length>0&&xC.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:$.map((_,j)=>{let r=BG.length+j,DA=J===r;return xC.jsxDEV(iA,{flexDirection:"row",children:[xC.jsxDEV(iA,{width:2,children:xC.jsxDEV(cA,{color:DA?eA.primary:eA.secondary,children:DA?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),xC.jsxDEV(iA,{flexDirection:"row",justifyContent:"space-between",flexGrow:1,children:[xC.jsxDEV(cA,{color:DA?eA.primary:void 0,children:_.title},void 0,!1,void 0,this),xC.jsxDEV(cA,{color:eA.secondary,children:_.created},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},_.id,!0,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var uE=GD(hB(),1);import{promises as E$}from"fs";import C$ from"path";function T8(A,E){if(E<=0)return[];let I=[],F=A.split(/\r?\n/);for(let G of F){if(!G.trim()){I.push("");continue}let J=G.trim().split(/\s+/),N="";for(let L of J){if(N.length===0){if(L.length<=E)N=L;else{for(let X=0;X<L.length;X+=E)I.push(L.slice(X,X+E));N=""}continue}if(N.length+1+L.length<=E){N=`${N} ${L}`;continue}if(I.push(N),L.length<=E)N=L;else{for(let X=0;X<L.length;X+=E)I.push(L.slice(X,X+E));N=""}}if(N.length>0)I.push(N)}return I}var UB=GD(nE(),1),AU=["formatted","summary","wisdom","insights","facts"];function I$(A){if(!A)return null;if(A.analysis&&typeof A.analysis==="object")return A.analysis;if(A.data&&typeof A.data==="object")return A.data;return A}function u$(A){if(!A)return"—";let E=new Date(A);if(Number.isNaN(E.getTime()))return"—";return E.toLocaleString()}function Q$(A){let E=[],I=[];for(let F of AU){let G=A.find((J)=>J.id===F);if(G)E.push(G)}for(let F of A)if(!AU.includes(F.id))I.push(F);return I.sort((F,G)=>F.name.localeCompare(G.name)),[...E,...I]}function F$(A){try{let E=JSON.parse(A.data);if(E.type==="token")return{action:"append",content:E.content??""};if(E.type==="full")return{action:"replace",content:E.content??""};if(E.type==="done")return{action:"done",content:""};if(E.type==="error")return{action:"error",content:E.error??"Unknown stream error"}}catch{}if(A.event==="complete")try{let E=JSON.parse(A.data);return{action:"replace",content:E.content??E.data??E.markdown??A.data}}catch{return{action:"replace",content:A.data}}if(A.event==="chunk"||A.event==="delta"||!A.event)try{let E=JSON.parse(A.data);return{action:"append",content:E.text??E.content??E.chunk??E.delta??A.data}}catch{return{action:"append",content:A.data}}if(A.event==="done"||A.event==="end")return{action:"done",content:""};return null}function qZ({id:A,navigation:E,onBack:I,terminal:F,setFooterHints:G}){let[J,N]=uE.useState("transcript"),[L,X]=uE.useState(0),[S,y]=uE.useState(null),[m,W]=uE.useState(!1),[$,T]=uE.useState(0),[_,j]=uE.useState(null),[r,DA]=uE.useState(!1),[s,CA]=uE.useState(null),[QA,NA]=uE.useState(!1),[wA,qA]=uE.useState(null);uE.useEffect(()=>{if(!S)return;let FD=setTimeout(()=>y(null),5000);return()=>clearTimeout(FD)},[S]);let{data:UA,loading:nA,error:hA,refresh:uD}=qF(`/v1/analysis/${A}`,{},[A]),KD=uE.useRef(null),jD=UA??KD.current;uE.useEffect(()=>{if(UA)KD.current=UA},[UA]);let jA=nA&&!jD,$A=uE.useMemo(()=>I$(jD),[jD]),{data:gA,loading:ZA,error:XA,refresh:RA}=qF("/v1/prompts",{},[]),QD=uE.useRef(null),TD=gA??QD.current;uE.useEffect(()=>{if(gA)QD.current=gA},[gA]);let a=ZA&&!TD,b=uE.useMemo(()=>{let FD=TD?.prompts??TD?.data??[];return Q$(FD.map((nD)=>({id:nD.id??nD.slug??"",name:nD.name??nD.title??nD.id??"",description:nD.description??""})))},[TD]);uE.useEffect(()=>{if($>=b.length&&b.length>0)T(Math.max(0,b.length-1))},[$,b.length]);let l=oB($A??{},["title","videoTitle","name"])??"Untitled",OA=oB($A??{},["channel","channelTitle","author"])??"Unknown",PA=oB($A??{},["status","state"])??"—",mA=E2($A?.duration??$A?.durationSec??$A?.durationSeconds),sA=oB($A??{},["lang","outputLang","language"])??"—",qD=u$($A?.createdAt),xD=$A?.cleanContent??$A?.content??$A?.transcript??"",dD=Math.max(20,F.columns-4),tD=uE.useMemo(()=>T8(xD||"No transcript content available.",dD),[xD,dD]),ID=uE.useMemo(()=>T8(_||"",dD),[_,dD]),uB=12+(S?2:0),i=Math.max(4,F.rows-uB),TA=J==="transcript"?tD:_!==null?ID:[],xA=Math.max(0,TA.length-i);uE.useEffect(()=>{X((FD)=>Math.min(FD,xA))},[xA]),uE.useEffect(()=>{X(0),DB.current=!1},[J]);let hD=uE.useCallback(async(FD)=>{qA(FD.name),j(""),CA(null),NA(!0),X(0);let nD=await RB()??{},{token:JB,expired:KB}=vB(nD);if(!JB){CA(KB?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN."),NA(!1);return}let QE=yB(nD);try{let rE=await OB(`/spikes/${A}`,{method:"POST",body:{promptId:FD.id,outputLang:"en"},token:JB,apiUrl:QE});NA(!1);let WC=rE.content??rE.markdown;if(WC){j(WC);return}let HE=rE.spikeId??rE.id;if(!HE){CA("No spikeId returned from API");return}DA(!0);let cE="",bC=new AbortController;iD.current=bC;try{for await(let P of C2(`/spikes/stream/${HE}`,{token:JB,apiUrl:QE,signal:bC.signal})){let IA=F$(P);if(!IA)continue;if(IA.action==="append")cE+=IA.content,j(cE);else if(IA.action==="replace")cE=IA.content,j(cE);else if(IA.action==="error"){CA(IA.content);break}else if(IA.action==="done")break}}finally{DA(!1),iD.current=null}}catch(rE){NA(!1),DA(!1),CA(rE.message)}},[A]),iD=uE.default.useRef(null);uE.useEffect(()=>{return()=>{iD.current?.abort()}},[]);let DB=uE.default.useRef(!1);uE.useEffect(()=>{if(r&&J==="spikes"&&!DB.current)X(xA)},[xA,r,J]),uE.useEffect(()=>{let FD=[{key:"Tab/1/2",description:"switch tab"}];if(J==="transcript")G([...FD,{key:"↑/↓",description:"scroll"},{key:"e",description:"export"},{key:"o",description:"open"},{key:"r",description:"refresh"},{key:"Esc",description:"back"}]);else if(_!==null)G([...FD,{key:"↑/↓",description:"scroll"},{key:"Esc",description:"back to prompts"}]);else G([...FD,{key:"↑/↓",description:"move"},{key:"Enter",description:"run spike"},{key:"r",description:"refresh"},{key:"Esc",description:"back"}])},[G,J,_]);let xB=uE.useCallback(async()=>{if(!$A){y("No transcription loaded.");return}W(!0),y(null);try{let FD=Lw($A);if(!FD.trim()){y("No transcript content available.");return}let nD=`xevol-${A}.md`,JB=C$.join(process.cwd(),nD);await E$.writeFile(JB,FD,"utf8"),y(`Exported to ${nD}`)}catch(FD){y(FD.message)}finally{W(!1)}},[$A,A]),mE=uE.useCallback(()=>{let FD=oB($A??{},["url","youtubeUrl","videoUrl"])??`https://xevol.com/t/${encodeURIComponent(A)}`;Yw(FD),y("Opened in browser")},[$A,A]);rC((FD,nD)=>{let JB=FD.toLowerCase();if(nD.tab){N((KB)=>KB==="transcript"?"spikes":"transcript"),j(null),qA(null);return}if(FD==="1"){N("transcript"),j(null),qA(null);return}if(FD==="2"){N("spikes"),j(null),qA(null);return}if(nD.escape||nD.backspace){if(J==="spikes"&&_!==null){iD.current?.abort(),j(null),qA(null),DA(!1),CA(null),X(0);return}I();return}if(JB==="r"){if(J==="spikes")RA();else uD();return}if(J==="transcript"){if(nD.upArrow||JB==="k"){X((KB)=>Math.max(0,KB-1));return}if(nD.downArrow||JB==="j"){X((KB)=>Math.min(xA,KB+1));return}if(JB==="e"){xB();return}if(JB==="o"){mE();return}}if(J==="spikes")if(_!==null){if(nD.upArrow||JB==="k"){DB.current=!0,X((KB)=>Math.max(0,KB-1));return}if(nD.downArrow||JB==="j"){X((KB)=>{let QE=Math.min(xA,KB+1);if(QE>=xA)DB.current=!1;return QE});return}}else{if(nD.upArrow||JB==="k"){T((KB)=>Math.max(0,KB-1));return}if(nD.downArrow||JB==="j"){T((KB)=>Math.min(b.length-1,KB+1));return}if(nD.return&&b[$]&&!QA&&!r){hD(b[$]);return}}});let UE=TA.slice(L,L+i),bu=UB.jsxDEV(iA,{flexDirection:"row",marginBottom:1,children:[UB.jsxDEV(cA,{color:J==="transcript"?eA.primary:eA.secondary,bold:J==="transcript",children:[J==="transcript"?"▸ ":" ","Transcript"]},void 0,!0,void 0,this),UB.jsxDEV(cA,{color:eA.secondary,children:" │ "},void 0,!1,void 0,this),UB.jsxDEV(cA,{color:J==="spikes"?eA.primary:eA.secondary,bold:J==="spikes",children:[J==="spikes"?"▸ ":" ","Spikes"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this);return UB.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[jA&&UB.jsxDEV(aC,{label:"Fetching transcription…"},void 0,!1,void 0,this),hA&&UB.jsxDEV(cA,{color:eA.error,children:[hA," (press r to retry)"]},void 0,!0,void 0,this),!jA&&!hA&&$A&&UB.jsxDEV(iA,{flexDirection:"column",children:[UB.jsxDEV(cA,{color:eA.primary,children:l},void 0,!1,void 0,this),UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(cA,{color:eA.secondary,children:["Channel: ",OA]},void 0,!0,void 0,this)},void 0,!1,void 0,this),UB.jsxDEV(iA,{flexDirection:"row",children:[UB.jsxDEV(cA,{color:eA.secondary,children:"Status: "},void 0,!1,void 0,this),UB.jsxDEV(AG,{status:PA},void 0,!1,void 0,this),UB.jsxDEV(cA,{color:eA.secondary,children:[" ",PA]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),UB.jsxDEV(iA,{flexDirection:"row",children:[UB.jsxDEV(cA,{color:eA.secondary,children:["Duration: ",mA]},void 0,!0,void 0,this),UB.jsxDEV(cA,{color:eA.secondary,children:[" · Lang: ",sA]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),UB.jsxDEV(iA,{children:UB.jsxDEV(cA,{color:eA.secondary,children:["Created: ",qD]},void 0,!0,void 0,this)},void 0,!1,void 0,this),UB.jsxDEV(iA,{marginTop:1,children:bu},void 0,!1,void 0,this),J==="transcript"&&UB.jsxDEV(iA,{flexDirection:"column",children:UB.jsxDEV(cA,{children:UE.join(`
|
|
430
430
|
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this),J==="spikes"&&_===null&&UB.jsxDEV(iA,{flexDirection:"column",children:[a&&UB.jsxDEV(aC,{label:"Fetching prompts…"},void 0,!1,void 0,this),XA&&UB.jsxDEV(cA,{color:eA.error,children:[XA," (press r to retry)"]},void 0,!0,void 0,this),!a&&!XA&&b.length===0&&UB.jsxDEV(cA,{color:eA.secondary,children:"No prompts available."},void 0,!1,void 0,this),!a&&!XA&&(()=>{let FD=Math.max(4,F.rows-14),nD=Math.max(0,b.length-FD),JB=Math.min(Math.max(0,$-Math.floor(FD/2)),nD);return b.slice(JB,JB+FD).map((QE,rE)=>{let HE=JB+rE===$,cE=AU.includes(QE.id);return UB.jsxDEV(iA,{children:[UB.jsxDEV(iA,{width:2,children:UB.jsxDEV(cA,{color:HE?eA.primary:eA.secondary,children:HE?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),UB.jsxDEV(iA,{flexDirection:"row",children:UB.jsxDEV(cA,{color:HE?eA.primary:void 0,children:[cE?"★ ":" ",QE.name]},void 0,!0,void 0,this)},void 0,!1,void 0,this)]},QE.id,!0,void 0,this)})})()]},void 0,!0,void 0,this),J==="spikes"&&_!==null&&UB.jsxDEV(iA,{flexDirection:"column",children:[UB.jsxDEV(cA,{color:eA.primary,children:[wA??"Spike",QA?" · creating…":r?" · streaming…":""]},void 0,!0,void 0,this),s&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(cA,{color:eA.error,children:[s," (press r to retry)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),QA&&!_&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(aC,{label:"Generating spike…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),r&&!_&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(aC,{label:"Waiting for content…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),!QA&&!r&&!s&&!_&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(cA,{color:eA.secondary,children:"No content returned."},void 0,!1,void 0,this)},void 0,!1,void 0,this),_?UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(cA,{children:UE.join(`
|
|
431
431
|
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),!jA&&!hA&&!$A&&UB.jsxDEV(cA,{color:eA.secondary,children:"No transcription data available."},void 0,!1,void 0,this),m&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(aC,{label:"Exporting…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),S&&UB.jsxDEV(iA,{marginTop:1,children:UB.jsxDEV(cA,{color:eA.secondary,children:S},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var pI=GD(hB(),1);var sC=GD(nE(),1);function g$(A){return A.spikes??A.data??A.items??[]}function zZ(A){return A.markdown??A.content??A.text??A.body??""}function G$(A){if(A.event==="complete")try{let E=JSON.parse(A.data);return E.data??E.content??E.markdown??""}catch{return A.data}if(A.event==="chunk"||A.event==="delta"||!A.event)try{let E=JSON.parse(A.data);return E.text??E.content??E.chunk??E.delta??A.data}catch{return A.data}if(A.event==="done"||A.event==="end"){if(!A.data||A.data==="[DONE]")return null;try{let E=JSON.parse(A.data);return E.content??E.text??null}catch{return null}}return null}function WZ({id:A,onBack:E,terminal:I,setFooterHints:F}){let[G,J]=pI.useState(0),[N,L]=pI.useState(null),[X,S]=pI.useState(0),[y,m]=pI.useState(""),[W,$]=pI.useState(!1),[T,_]=pI.useState(null),{data:j,loading:r,error:DA,refresh:s}=qF("/spikes",{query:{transcriptionId:A}},[A]),CA=pI.useMemo(()=>g$(j??{}),[j]);pI.useEffect(()=>{if(G>=CA.length)J(Math.max(0,CA.length-1))},[G,CA.length]),pI.useEffect(()=>{if(N)F([{key:"↑/↓",description:"scroll"},{key:"r",description:"retry"},{key:"Esc",description:"back"}]);else F([{key:"↑/↓",description:"move"},{key:"Enter",description:"view"},{key:"r",description:"refresh"},{key:"Esc",description:"back"}])},[N,F]);let QA=CA[G];pI.useEffect(()=>{let jD=!0,jA=new AbortController;return(async()=>{if(!N){m(""),$(!1),_(null);return}let gA=oB(N,["status","state"]),ZA=gA?String(gA).toLowerCase():"",XA=oB(N,["id","spikeId"])?.toString(),RA=zZ(N);if(m(RA),_(null),!XA)return;if(ZA!=="pending"&&ZA!=="processing")return;let QD=await RB()??{},{token:TD,expired:a}=vB(QD);if(!TD){_(a?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN.");return}let b=yB(QD);$(!0);let l=RA??"";try{let OA=[`/stream/spikes/${XA}`,`/spikes/stream/${XA}`],PA=!1,mA=null;for(let sA of OA)try{for await(let qD of C2(sA,{token:TD,apiUrl:b,signal:jA.signal})){if(!jD)return;if(qD.event==="error"){_(`Stream error: ${qD.data}`);continue}let xD=G$(qD);if(xD)l+=xD,m(l)}PA=!0,mA=null;break}catch(qD){if(mA=qD,jA.signal.aborted)return}if(!PA&&mA)throw mA}catch(OA){if(jD)_(OA.message)}finally{if(jD)$(!1)}})(),()=>{jD=!1,jA.abort()}},[N]);let NA=Math.max(20,I.columns-4),wA=N?y||zZ(N):"",qA=pI.useMemo(()=>T8(wA||"No spike content available.",NA),[wA,NA]),UA=7+(T?1:0)+(W?1:0),nA=Math.max(4,I.rows-UA),hA=Math.max(0,qA.length-nA),uD=pI.default.useRef(!1);pI.useEffect(()=>{if(W&&!uD.current)S(hA);else if(!W)S((jD)=>Math.min(jD,hA))},[hA,W]),rC((jD,jA)=>{let $A=jD.toLowerCase();if(N){if(jA.escape||jA.backspace){L(null),S(0);return}if($A==="r"){_(null),L({...N});return}if(jA.upArrow||$A==="k"){uD.current=!0,S((gA)=>Math.max(0,gA-1));return}if(jA.downArrow||$A==="j")S((gA)=>{let ZA=Math.min(hA,gA+1);if(ZA>=hA)uD.current=!1;return ZA});return}if(jA.escape||jA.backspace){E();return}if(jA.upArrow&&CA.length>0){J((gA)=>Math.max(0,gA-1));return}if(jA.downArrow&&CA.length>0){J((gA)=>Math.min(CA.length-1,gA+1));return}if($A==="r"){s();return}if(jA.return&&QA)L(QA),S(0)});let KD=qA.slice(X,X+nA);return sC.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[r&&sC.jsxDEV(aC,{label:"Fetching spikes…"},void 0,!1,void 0,this),DA&&sC.jsxDEV(cA,{color:eA.error,children:[DA," (press r to retry)"]},void 0,!0,void 0,this),!r&&!DA&&N&&sC.jsxDEV(iA,{flexDirection:"column",children:[sC.jsxDEV(cA,{color:eA.primary,children:["Spike: ",oB(N,["promptName","promptId","prompt"])??"Spike"]},void 0,!0,void 0,this),W&&sC.jsxDEV(iA,{marginTop:1,children:sC.jsxDEV(cA,{color:eA.secondary,children:"streaming…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),T&&sC.jsxDEV(iA,{marginTop:1,children:sC.jsxDEV(cA,{color:eA.error,children:[T," (press r to retry)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),sC.jsxDEV(iA,{marginTop:1,children:sC.jsxDEV(cA,{children:KD.join(`
|
|
432
|
-
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!r&&!DA&&!N&&sC.jsxDEV(iA,{flexDirection:"column",children:[CA.length===0&&sC.jsxDEV(cA,{color:eA.secondary,children:"No spikes found."},void 0,!1,void 0,this),CA.map((jD,jA)=>{let $A=jA===G,gA=oB(jD,["promptName","promptId","prompt"])??"Spike",ZA=oB(jD,["status","state"])??"—";return sC.jsxDEV(iA,{children:[sC.jsxDEV(iA,{width:2,children:sC.jsxDEV(cA,{color:$A?eA.primary:eA.secondary,children:$A?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),sC.jsxDEV(iA,{flexDirection:"row",children:[sC.jsxDEV(AG,{status:ZA},void 0,!1,void 0,this),sC.jsxDEV(cA,{color:$A?eA.primary:void 0,children:[" ",gA]},void 0,!0,void 0,this),sC.jsxDEV(cA,{color:eA.secondary,children:[" (",ZA,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},oB(jD,["id","spikeId"])??`${gA}-${jA}`,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var OZ=GD(hB(),1);var s4=GD(nE(),1);function _Z({title:A,onBack:E,setFooterHints:I}){return OZ.useEffect(()=>{I([{key:"Esc",description:"back"},{key:"q",description:"quit"}])},[I]),rC((F,G)=>{if(G.escape||G.backspace)E()}),s4.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[s4.jsxDEV(cA,{color:eA.primary,children:A},void 0,!1,void 0,this),s4.jsxDEV(iA,{marginTop:1,children:s4.jsxDEV(cA,{color:eA.secondary,children:"Coming soon."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var dI=GD(hB(),1);var bE=GD(nE(),1),P8=["en","de","es","fr","it","ja","kk","ko","ru"];function H$(A){let E=A.usage??{},I=A.limits??{},F=A.period??"month",G=A.current_period_end,J=A.plan??"free",N=A.status??"active",L=E.transcriptions??0,X=I.transcriptions??"∞",S=[];if(S.push(`Status: ${N}`),S.push(`Plan: ${J}`),S.push(`Usage: ${L} / ${X} transcriptions (this ${F})`),G){let y=new Date(G);if(!Number.isNaN(y.getTime())){let m=Math.max(0,Math.ceil((y.getTime()-Date.now())/86400000));S.push(`Renews: ${y.toLocaleDateString()} (${m} days)`)}}return S}function SZ({onBack:A,setFooterHints:E}){let[I,F]=dI.useState(null),[G,J]=dI.useState(!0),[N,L]=dI.useState(null),[X,S]=dI.useState(null),[y,m]=dI.useState(0),[W,$]=dI.useState(null),[T,_]=dI.useState(""),{data:j,loading:r,error:DA}=qF("/auth/cli/status"),s=dI.useMemo(()=>j?H$(j):[],[j]);dI.useEffect(()=>{if(!X)return;let NA=setTimeout(()=>S(null),5000);return()=>clearTimeout(NA)},[X]),dI.useEffect(()=>{let NA=!0;return(async()=>{J(!0),L(null);try{let wA=await RB()??{};if(NA)F(wA)}catch(wA){if(NA)L(wA.message)}finally{if(NA)J(!1)}})(),()=>{NA=!1}},[]),dI.useEffect(()=>{E([{key:"↑/↓",description:"move"},{key:"Enter",description:"edit/confirm"},{key:"Tab",description:"confirm"},{key:"Esc",description:"back/cancel"},{key:"q",description:"quit"}])},[E]);let CA=dI.useMemo(()=>{let NA=I??{};return[{key:"apiUrl",label:"API URL",value:NA.apiUrl??uJ,editable:!1},{key:"default.lang",label:"Default language",value:NA.default?.lang??"—",editable:!0},{key:"default.limit",label:"Default page limit",value:NA.default?.limit?.toString()??"—",editable:!0},{key:"workspaceId",label:"Active workspace",value:NA.workspaceId??"—",editable:!1}]},[I]),QA=dI.useCallback(async()=>{if(!W)return;if(!I)return;S(null),L(null);let NA={...I};if(W==="apiUrl"){let wA=T.trim();NA.apiUrl=wA.length>0?wA:void 0}if(W==="default.lang"){let wA=T.trim(),qA=P8.includes(wA)?wA:"en";NA.default={...NA.default,lang:qA}}if(W==="default.limit"){let wA=Number(T.trim());if(!Number.isFinite(wA)||wA<=0){L("Default page limit must be a positive number.");return}NA.default={...NA.default,limit:wA}}try{await FJ(NA),F(NA),S("Saved settings."),$(null)}catch(wA){L(wA.message)}},[I,T,W]);return rC((NA,wA)=>{let qA=NA.toLowerCase();if(W){if(wA.escape){$(null),_(""),S("Edit canceled.");return}if(wA.tab){QA();return}if(W==="default.lang"){let UA=Math.max(0,P8.indexOf(T));if(wA.upArrow||wA.leftArrow){let nA=UA<=0?P8.length-1:UA-1;_(P8[nA]);return}if(wA.downArrow||wA.rightArrow){let nA=UA>=P8.length-1?0:UA+1;_(P8[nA]);return}if(wA.return)QA();return}return}if(wA.escape||wA.backspace){A();return}if(qA==="r"){J(!0),L(null),S(null),(async()=>{try{let UA=await RB()??{};F(UA)}catch(UA){L(UA.message)}finally{J(!1)}})();return}if(wA.upArrow||qA==="k"){m((UA)=>Math.max(0,UA-1));return}if(wA.downArrow||qA==="j"){m((UA)=>Math.min(CA.length-1,UA+1));return}if(wA.return){let UA=CA[y];if(!UA?.editable)return;if($(UA.key),UA.key==="default.lang"){let nA=P8.includes(UA.value)?UA.value:"en";_(nA);return}_(UA.value==="—"?"":UA.value)}}),bE.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[bE.jsxDEV(cA,{color:eA.primary,children:"Settings"},void 0,!1,void 0,this),bE.jsxDEV(iA,{flexDirection:"column",marginTop:1,marginBottom:1,children:[bE.jsxDEV(cA,{color:eA.secondary,bold:!0,children:"Usage"},void 0,!1,void 0,this),r&&bE.jsxDEV(aC,{label:"Loading usage…"},void 0,!1,void 0,this),DA&&bE.jsxDEV(cA,{color:eA.error,children:DA},void 0,!1,void 0,this),!r&&!DA&&j&&bE.jsxDEV(iA,{flexDirection:"column",children:s.map((NA)=>bE.jsxDEV(cA,{color:eA.secondary,children:NA},NA,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(aC,{label:"Loading settings…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),N&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.error,children:[N," (press r to retry)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),!G&&!N&&bE.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:[CA.map((NA,wA)=>{let qA=wA===y,UA=W===NA.key,nA=UA&&(NA.key==="apiUrl"||NA.key==="default.limit"),hA=UA&&NA.key==="default.lang";return bE.jsxDEV(iA,{flexDirection:"row",marginBottom:1,children:[bE.jsxDEV(iA,{width:2,children:bE.jsxDEV(cA,{color:qA?eA.primary:eA.secondary,children:qA?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),bE.jsxDEV(iA,{width:20,children:bE.jsxDEV(cA,{color:qA?eA.primary:void 0,children:NA.label},void 0,!1,void 0,this)},void 0,!1,void 0,this),bE.jsxDEV(iA,{flexGrow:1,children:nA?bE.jsxDEV(e6,{value:T,onChange:_,onSubmit:()=>void QA()},void 0,!1,void 0,this):hA?bE.jsxDEV(cA,{color:eA.primary,children:T||NA.value},void 0,!1,void 0,this):bE.jsxDEV(cA,{color:eA.secondary,children:NA.value},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},NA.key,!0,void 0,this)}),bE.jsxDEV(cA,{color:eA.secondary,children:"Workspace changes use the workspace switch."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==="default.lang"&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.secondary,children:"Use ↑/↓ to change language · Enter/Tab to confirm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),X&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.secondary,children:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Du=GD(hB(),1);var zC=GD(nE(),1),w$=/^https?:\/\/(?:www\.|m\.|music\.)?(?:youtube\.com\/(?:watch|shorts|live|embed)|youtu\.be\/)/i;function R$(A){if(A.event==="complete")try{let E=JSON.parse(A.data);return E.data??E.content??E.markdown??""}catch{return A.data}if(A.event==="chunk"||A.event==="delta"||!A.event)try{let E=JSON.parse(A.data);return E.text??E.content??E.chunk??E.delta??A.data}catch{return A.data}if(A.event==="done"||A.event==="end"){if(!A.data||A.data==="[DONE]")return null;try{let E=JSON.parse(A.data);return E.content??E.text??null}catch{return null}}return null}function $Z({onBack:A,terminal:E,setFooterHints:I}){let[F,G]=Du.useState(""),[J,N]=Du.useState("input"),[L,X]=Du.useState(""),[S,y]=Du.useState(""),[m,W]=Du.useState(""),[$,T]=Du.useState(0),[_,j]=Du.useState("");Du.useEffect(()=>{if(J==="input")I([{key:"Enter",description:"submit"},{key:"Esc",description:"cancel"}]);else if(J==="done")I([{key:"↑/↓",description:"scroll"},{key:"Esc",description:"back"}]);else if(J==="error")I([{key:"r",description:"retry"},{key:"Esc",description:"back"}]);else if(J==="streaming")I([{key:"↑/↓",description:"scroll"},{key:"Esc",description:"back"}]);else I([{key:"",description:"Processing…"}])},[J,I]);let r=Math.max(20,E.columns-4),DA=T8(m||" ",r),s=10,CA=Math.max(4,E.rows-s),QA=Math.max(0,DA.length-CA),NA=Du.default.useRef(!1);Du.useEffect(()=>{if(J==="streaming"&&!NA.current)T(QA)},[QA,J]);let wA=Du.useCallback(async(nA)=>{try{let hA=await RB()??{},{token:uD,expired:KD}=vB(hA);if(!uD){y(KD?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN."),N("error");return}let jD=yB(hA);N("submitting"),X("Submitting URL…");let jA=await OB("/v1/add",{query:{url:nA,outputLang:"en"},token:uD,apiUrl:jD}),$A=z4(jA);if(!$A){y("No transcription ID returned from API."),N("error");return}N("processing");let gA=120,ZA=null;for(let PA=0;PA<gA;PA++){let mA=await OB(`/v1/status/${$A}`,{token:uD,apiUrl:jD}),sA=K8(mA)?.toLowerCase()??"pending",qD=PA*5;if(X(`Processing… (${qD}s)`),sA.includes("complete")){let xD=oB(mA,["title","videoTitle","name"]);if(xD)j(xD);ZA=mA;break}if(sA.includes("error")||sA.includes("failed")){y(`Transcription failed: ${sA}`),N("error");return}await new Promise((xD)=>setTimeout(xD,5000))}if(!ZA){y("Timed out waiting for transcription to complete."),N("error");return}N("creating-spike"),X("Creating spike…");let XA=await OB(`/spikes/${$A}`,{method:"POST",body:{promptId:"formatted",outputLang:"en"},token:uD,apiUrl:jD}),RA=XA.spikeId,QD=XA.content??XA.markdown;if(QD){W(QD),N("done");return}if(!RA){y("No spike ID returned — spike may not have been created."),N("error");return}N("streaming"),X("Streaming content…");let TD=new AbortController,a="",b=[`/stream/spikes/${RA}`,`/spikes/stream/${RA}`],l=!1,OA=null;for(let PA of b)try{for await(let mA of C2(PA,{token:uD,apiUrl:jD,signal:TD.signal})){if(mA.event==="error")continue;let sA=R$(mA);if(sA)a+=sA,W(a)}l=!0;break}catch(mA){OA=mA}if(!l&&OA){if(a)N("done");else y(OA.message),N("error");return}N("done")}catch(hA){y(hA.message),N("error")}},[]),qA=Du.useCallback((nA)=>{let hA=nA.trim();if(!hA)return;if(!w$.test(hA)){y("Not a valid YouTube URL."),N("error");return}wA(hA)},[wA]);rC((nA,hA)=>{if(J==="input"){if(hA.escape){A();return}return}if(J==="error"){if(hA.escape||hA.backspace){A();return}if(nA.toLowerCase()==="r"){y(""),N("input");return}return}if(J==="done"||J==="streaming"){if(hA.escape||hA.backspace){A();return}if(hA.upArrow||nA.toLowerCase()==="k"){NA.current=!0,T((uD)=>Math.max(0,uD-1));return}if(hA.downArrow||nA.toLowerCase()==="j"){T((uD)=>{let KD=Math.min(QA,uD+1);if(KD>=QA)NA.current=!1;return KD});return}}});let UA=DA.slice($,$+CA);return zC.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[zC.jsxDEV(cA,{color:eA.primary,children:"Add YouTube URL"},void 0,!1,void 0,this),J==="input"&&zC.jsxDEV(iA,{marginTop:1,flexDirection:"row",children:[zC.jsxDEV(cA,{color:eA.secondary,children:"URL: "},void 0,!1,void 0,this),zC.jsxDEV(e6,{value:F,onChange:G,onSubmit:qA,placeholder:"https://youtube.com/watch?v=..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(J==="submitting"||J==="processing"||J==="creating-spike")&&zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(aC,{label:L},void 0,!1,void 0,this)},void 0,!1,void 0,this),J==="streaming"&&zC.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:[_&&zC.jsxDEV(cA,{color:eA.secondary,children:_},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(aC,{label:"Streaming…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,flexDirection:"column",children:zC.jsxDEV(cA,{children:UA.join(`
|
|
432
|
+
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),!r&&!DA&&!N&&sC.jsxDEV(iA,{flexDirection:"column",children:[CA.length===0&&sC.jsxDEV(cA,{color:eA.secondary,children:"No spikes found."},void 0,!1,void 0,this),CA.map((jD,jA)=>{let $A=jA===G,gA=oB(jD,["promptName","promptId","prompt"])??"Spike",ZA=oB(jD,["status","state"])??"—";return sC.jsxDEV(iA,{children:[sC.jsxDEV(iA,{width:2,children:sC.jsxDEV(cA,{color:$A?eA.primary:eA.secondary,children:$A?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),sC.jsxDEV(iA,{flexDirection:"row",children:[sC.jsxDEV(AG,{status:ZA},void 0,!1,void 0,this),sC.jsxDEV(cA,{color:$A?eA.primary:void 0,children:[" ",gA]},void 0,!0,void 0,this),sC.jsxDEV(cA,{color:eA.secondary,children:[" (",ZA,")"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},oB(jD,["id","spikeId"])??`${gA}-${jA}`,!0,void 0,this)})]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var OZ=GD(hB(),1);var s4=GD(nE(),1);function _Z({title:A,onBack:E,setFooterHints:I}){return OZ.useEffect(()=>{I([{key:"Esc",description:"back"},{key:"q",description:"quit"}])},[I]),rC((F,G)=>{if(G.escape||G.backspace)E()}),s4.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[s4.jsxDEV(cA,{color:eA.primary,children:A},void 0,!1,void 0,this),s4.jsxDEV(iA,{marginTop:1,children:s4.jsxDEV(cA,{color:eA.secondary,children:"Coming soon."},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var dI=GD(hB(),1);var bE=GD(nE(),1),P8=["en","de","es","fr","it","ja","kk","ko","ru"];function H$(A){let E=A.usage??{},I=A.limits??{},F=A.period??"month",G=A.current_period_end,J=A.plan??"free",N=A.status??"active",L=E.transcriptions??0,X=I.transcriptions??"∞",S=[];if(S.push(`Status: ${N}`),S.push(`Plan: ${J}`),S.push(`Usage: ${L} / ${X} transcriptions (this ${F})`),G){let y=new Date(G);if(!Number.isNaN(y.getTime())){let m=Math.max(0,Math.ceil((y.getTime()-Date.now())/86400000));S.push(`Renews: ${y.toLocaleDateString()} (${m} days)`)}}return S}function SZ({onBack:A,setFooterHints:E}){let[I,F]=dI.useState(null),[G,J]=dI.useState(!0),[N,L]=dI.useState(null),[X,S]=dI.useState(null),[y,m]=dI.useState(0),[W,$]=dI.useState(null),[T,_]=dI.useState(""),{data:j,loading:r,error:DA}=qF("/auth/cli/status"),s=dI.useMemo(()=>j?H$(j):[],[j]);dI.useEffect(()=>{if(!X)return;let NA=setTimeout(()=>S(null),5000);return()=>clearTimeout(NA)},[X]),dI.useEffect(()=>{let NA=!0;return(async()=>{J(!0),L(null);try{let wA=await RB()??{};if(NA)F(wA)}catch(wA){if(NA)L(wA.message)}finally{if(NA)J(!1)}})(),()=>{NA=!1}},[]),dI.useEffect(()=>{E([{key:"↑/↓",description:"move"},{key:"Enter",description:"edit/confirm"},{key:"Tab",description:"confirm"},{key:"Esc",description:"back/cancel"},{key:"q",description:"quit"}])},[E]);let CA=dI.useMemo(()=>{let NA=I??{};return[{key:"apiUrl",label:"API URL",value:NA.apiUrl??uJ,editable:!1},{key:"default.lang",label:"Default language",value:NA.default?.lang??"—",editable:!0},{key:"default.limit",label:"Default page limit",value:NA.default?.limit?.toString()??"—",editable:!0},{key:"workspaceId",label:"Active workspace",value:NA.workspaceId??"—",editable:!1}]},[I]),QA=dI.useCallback(async()=>{if(!W)return;if(!I)return;S(null),L(null);let NA={...I};if(W==="apiUrl"){let wA=T.trim();NA.apiUrl=wA.length>0?wA:void 0}if(W==="default.lang"){let wA=T.trim(),qA=P8.includes(wA)?wA:"en";NA.default={...NA.default,lang:qA}}if(W==="default.limit"){let wA=Number(T.trim());if(!Number.isFinite(wA)||wA<=0){L("Default page limit must be a positive number.");return}NA.default={...NA.default,limit:wA}}try{await FJ(NA),F(NA),S("Saved settings."),$(null)}catch(wA){L(wA.message)}},[I,T,W]);return rC((NA,wA)=>{let qA=NA.toLowerCase();if(W){if(wA.escape){$(null),_(""),S("Edit canceled.");return}if(wA.tab){QA();return}if(W==="default.lang"){let UA=Math.max(0,P8.indexOf(T));if(wA.upArrow||wA.leftArrow){let nA=UA<=0?P8.length-1:UA-1;_(P8[nA]);return}if(wA.downArrow||wA.rightArrow){let nA=UA>=P8.length-1?0:UA+1;_(P8[nA]);return}if(wA.return)QA();return}return}if(wA.escape||wA.backspace){A();return}if(qA==="r"){J(!0),L(null),S(null),(async()=>{try{let UA=await RB()??{};F(UA)}catch(UA){L(UA.message)}finally{J(!1)}})();return}if(wA.upArrow||qA==="k"){m((UA)=>Math.max(0,UA-1));return}if(wA.downArrow||qA==="j"){m((UA)=>Math.min(CA.length-1,UA+1));return}if(wA.return){let UA=CA[y];if(!UA?.editable)return;if($(UA.key),UA.key==="default.lang"){let nA=P8.includes(UA.value)?UA.value:"en";_(nA);return}_(UA.value==="—"?"":UA.value)}}),bE.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[bE.jsxDEV(cA,{color:eA.primary,children:"Settings"},void 0,!1,void 0,this),bE.jsxDEV(iA,{flexDirection:"column",marginTop:1,marginBottom:1,children:[bE.jsxDEV(cA,{color:eA.secondary,bold:!0,children:"Usage"},void 0,!1,void 0,this),r&&bE.jsxDEV(aC,{label:"Loading usage…"},void 0,!1,void 0,this),DA&&bE.jsxDEV(cA,{color:eA.error,children:DA},void 0,!1,void 0,this),!r&&!DA&&j&&bE.jsxDEV(iA,{flexDirection:"column",children:s.map((NA)=>bE.jsxDEV(cA,{color:eA.secondary,children:NA},NA,!1,void 0,this))},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(aC,{label:"Loading settings…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),N&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.error,children:[N," (press r to retry)"]},void 0,!0,void 0,this)},void 0,!1,void 0,this),!G&&!N&&bE.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:[CA.map((NA,wA)=>{let qA=wA===y,UA=W===NA.key,nA=UA&&(NA.key==="apiUrl"||NA.key==="default.limit"),hA=UA&&NA.key==="default.lang";return bE.jsxDEV(iA,{flexDirection:"row",marginBottom:1,children:[bE.jsxDEV(iA,{width:2,children:bE.jsxDEV(cA,{color:qA?eA.primary:eA.secondary,children:qA?"›":" "},void 0,!1,void 0,this)},void 0,!1,void 0,this),bE.jsxDEV(iA,{width:20,children:bE.jsxDEV(cA,{color:qA?eA.primary:void 0,children:NA.label},void 0,!1,void 0,this)},void 0,!1,void 0,this),bE.jsxDEV(iA,{flexGrow:1,children:nA?bE.jsxDEV(e6,{value:T,onChange:_,onSubmit:()=>void QA()},void 0,!1,void 0,this):hA?bE.jsxDEV(cA,{color:eA.primary,children:T||NA.value},void 0,!1,void 0,this):bE.jsxDEV(cA,{color:eA.secondary,children:NA.value},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},NA.key,!0,void 0,this)}),bE.jsxDEV(cA,{color:eA.secondary,children:"Workspace changes use the workspace switch."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),W==="default.lang"&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.secondary,children:"Use ↑/↓ to change language · Enter/Tab to confirm"},void 0,!1,void 0,this)},void 0,!1,void 0,this),X&&bE.jsxDEV(iA,{marginTop:1,children:bE.jsxDEV(cA,{color:eA.secondary,children:X},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Du=GD(hB(),1);var zC=GD(nE(),1),w$=/^https?:\/\/(?:www\.|m\.|music\.)?(?:youtube\.com\/(?:watch|shorts|live|embed)|youtu\.be\/)/i;function R$(A){if(A.event==="complete")try{let E=JSON.parse(A.data);return E.data??E.content??E.markdown??""}catch{return A.data}if(A.event==="chunk"||A.event==="delta"||!A.event)try{let E=JSON.parse(A.data);return E.text??E.content??E.chunk??E.delta??A.data}catch{return A.data}if(A.event==="done"||A.event==="end"){if(!A.data||A.data==="[DONE]")return null;try{let E=JSON.parse(A.data);return E.content??E.text??null}catch{return null}}return null}function $Z({onBack:A,terminal:E,setFooterHints:I}){let[F,G]=Du.useState(""),[J,N]=Du.useState("input"),[L,X]=Du.useState(""),[S,y]=Du.useState(""),[m,W]=Du.useState(""),[$,T]=Du.useState(0),[_,j]=Du.useState("");Du.useEffect(()=>{if(J==="input")I([{key:"Enter",description:"submit"},{key:"Esc",description:"cancel"}]);else if(J==="done")I([{key:"↑/↓",description:"scroll"},{key:"Esc",description:"back"}]);else if(J==="error")I([{key:"r",description:"retry"},{key:"Esc",description:"back"}]);else if(J==="streaming")I([{key:"↑/↓",description:"scroll"},{key:"Esc",description:"back"}]);else I([])},[J,I]);let r=Math.max(20,E.columns-4),DA=T8(m||" ",r),s=10,CA=Math.max(4,E.rows-s),QA=Math.max(0,DA.length-CA),NA=Du.default.useRef(!1);Du.useEffect(()=>{if(J==="streaming"&&!NA.current)T(QA)},[QA,J]);let wA=Du.useCallback(async(nA)=>{try{let hA=await RB()??{},{token:uD,expired:KD}=vB(hA);if(!uD){y(KD?"Token expired. Run `xevol login` to re-authenticate.":"Not logged in. Use xevol login --token <token> or set XEVOL_TOKEN."),N("error");return}let jD=yB(hA);N("submitting"),X("Submitting URL…");let jA=await OB("/v1/add",{query:{url:nA,outputLang:"en"},token:uD,apiUrl:jD}),$A=z4(jA);if(!$A){y("No transcription ID returned from API."),N("error");return}N("processing");let gA=120,ZA=null;for(let PA=0;PA<gA;PA++){let mA=await OB(`/v1/status/${$A}`,{token:uD,apiUrl:jD}),sA=K8(mA)?.toLowerCase()??"pending",qD=PA*5;if(X(`Processing… (${qD}s)`),sA.includes("complete")){let xD=oB(mA,["title","videoTitle","name"]);if(xD)j(xD);ZA=mA;break}if(sA.includes("error")||sA.includes("failed")){y(`Transcription failed: ${sA}`),N("error");return}await new Promise((xD)=>setTimeout(xD,5000))}if(!ZA){y("Timed out waiting for transcription to complete."),N("error");return}N("creating-spike"),X("Creating spike…");let XA=await OB(`/spikes/${$A}`,{method:"POST",body:{promptId:"formatted",outputLang:"en"},token:uD,apiUrl:jD}),RA=XA.spikeId,QD=XA.content??XA.markdown;if(QD){W(QD),N("done");return}if(!RA){y("No spike ID returned — spike may not have been created."),N("error");return}N("streaming"),X("Streaming content…");let TD=new AbortController,a="",b=[`/stream/spikes/${RA}`,`/spikes/stream/${RA}`],l=!1,OA=null;for(let PA of b)try{for await(let mA of C2(PA,{token:uD,apiUrl:jD,signal:TD.signal})){if(mA.event==="error")continue;let sA=R$(mA);if(sA)a+=sA,W(a)}l=!0;break}catch(mA){OA=mA}if(!l&&OA){if(a)N("done");else y(OA.message),N("error");return}N("done")}catch(hA){y(hA.message),N("error")}},[]),qA=Du.useCallback((nA)=>{let hA=nA.trim();if(!hA)return;if(!w$.test(hA)){y("Not a valid YouTube URL."),N("error");return}wA(hA)},[wA]);rC((nA,hA)=>{if(J==="input"){if(hA.escape){A();return}return}if(J==="error"){if(hA.escape||hA.backspace){A();return}if(nA.toLowerCase()==="r"){y(""),N("input");return}return}if(J==="done"||J==="streaming"){if(hA.escape||hA.backspace){A();return}if(hA.upArrow||nA.toLowerCase()==="k"){NA.current=!0,T((uD)=>Math.max(0,uD-1));return}if(hA.downArrow||nA.toLowerCase()==="j"){T((uD)=>{let KD=Math.min(QA,uD+1);if(KD>=QA)NA.current=!1;return KD});return}}});let UA=DA.slice($,$+CA);return zC.jsxDEV(iA,{flexDirection:"column",paddingX:1,paddingY:1,children:[zC.jsxDEV(cA,{color:eA.primary,children:"Add YouTube URL"},void 0,!1,void 0,this),J==="input"&&zC.jsxDEV(iA,{marginTop:1,flexDirection:"row",children:[zC.jsxDEV(cA,{color:eA.secondary,children:"URL: "},void 0,!1,void 0,this),zC.jsxDEV(e6,{value:F,onChange:G,onSubmit:qA,placeholder:"https://youtube.com/watch?v=..."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),(J==="submitting"||J==="processing"||J==="creating-spike")&&zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(aC,{label:L},void 0,!1,void 0,this)},void 0,!1,void 0,this),J==="streaming"&&zC.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:[_&&zC.jsxDEV(cA,{color:eA.secondary,children:_},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(aC,{label:"Streaming…"},void 0,!1,void 0,this)},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,flexDirection:"column",children:zC.jsxDEV(cA,{children:UA.join(`
|
|
433
433
|
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J==="done"&&zC.jsxDEV(iA,{flexDirection:"column",marginTop:1,children:[_&&zC.jsxDEV(cA,{color:eA.secondary,children:_},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(cA,{color:eA.success,children:"✔ Complete"},void 0,!1,void 0,this)},void 0,!1,void 0,this),zC.jsxDEV(iA,{marginTop:1,flexDirection:"column",children:zC.jsxDEV(cA,{children:UA.join(`
|
|
434
434
|
`)},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this),J==="error"&&zC.jsxDEV(iA,{marginTop:1,flexDirection:"column",children:[zC.jsxDEV(cA,{color:eA.error,children:["Error: ",S]},void 0,!0,void 0,this),zC.jsxDEV(iA,{marginTop:1,children:zC.jsxDEV(cA,{color:eA.secondary,children:"Press r to retry, Esc to go back"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}var Ku=GD(nE(),1);function J$({version:A}){let{exit:E}=r4(),{stdout:I}=sM(),{currentScreen:F,params:G,push:J,pop:N,reset:L}=MZ("dashboard"),X=hQ.useMemo(()=>()=>L("dashboard"),[L]),[S,y]=hQ.useState([]),[m,W]=hQ.useState(void 0),[$,T]=hQ.useState(void 0),[_,j]=hQ.useState(void 0);hQ.useEffect(()=>{(async()=>{try{let NA=await RB()??{},{token:wA}=vB(NA);if(!wA)return;let qA=yB(NA),UA=await OB("/auth/cli/status",{token:wA,apiUrl:qA}),nA=UA.email??UA.user?.email?.toString(),hA=UA.plan??void 0;if(nA)T(nA);if(hA)j(hA)}catch{}})()},[]),hQ.useEffect(()=>{y([]),W(void 0)},[F]),rC((NA)=>{if(F==="add-url")return;if(NA==="q"){E();return}if(NA==="?")if(F==="help")N();else J("help")});let r=G,DA=typeof G.id==="string"?G.id:"",s=hQ.useMemo(()=>({columns:I.columns??80,rows:I.rows??24}),[I.columns,I.rows]),CA=hQ.useMemo(()=>({push:J}),[J]),QA;if(F==="dashboard")QA=Ku.jsxDEV(XZ,{version:A,navigation:CA,setFooterHints:y,setFooterStatus:W},void 0,!1,void 0,this);else if(F==="help")QA=Ku.jsxDEV(ZZ,{onClose:X,setFooterHints:y},void 0,!1,void 0,this);else if(F==="detail")QA=Ku.jsxDEV(qZ,{id:DA,navigation:CA,onBack:X,terminal:s,setFooterHints:y},void 0,!1,void 0,this);else if(F==="spike-viewer")QA=Ku.jsxDEV(WZ,{id:DA,onBack:X,terminal:s,setFooterHints:y},void 0,!1,void 0,this);else if(F==="workspaces")QA=Ku.jsxDEV(_Z,{title:"Workspaces",onBack:X,setFooterHints:y},void 0,!1,void 0,this);else if(F==="settings")QA=Ku.jsxDEV(SZ,{onBack:X,setFooterHints:y},void 0,!1,void 0,this);else if(F==="add-url")QA=Ku.jsxDEV($Z,{onBack:X,terminal:s,setFooterHints:y},void 0,!1,void 0,this);else QA=Ku.jsxDEV(YZ,{params:r,navigation:CA,onBack:X,terminal:s,setFooterHints:y,setFooterStatus:W},void 0,!1,void 0,this);return Ku.jsxDEV(iA,{flexDirection:"column",children:[Ku.jsxDEV(wZ,{version:A,screen:F,email:$,plan:_},void 0,!1,void 0,this),Ku.jsxDEV(iA,{flexDirection:"column",flexGrow:1,children:Ku.jsxDEV(iA,{flexDirection:"column",flexGrow:1,children:QA},F,!1,void 0,this)},void 0,!1,void 0,this),Ku.jsxDEV(RZ,{hints:S,status:m},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}function DU(A){rM(Ku.jsxDEV(J$,{version:A},void 0,!1,void 0,this))}var U$=M$(import.meta.url),{version:Xw}=U$("../package.json"),K$=new Set(["login","config","export","delete","open","workspace","tui"]);function N$(){let A=process.argv.slice(2);if(A.some((I)=>I==="--help"||I==="-h"||I==="--version"||I==="-V"||I==="--json"))return!1;let E=A.find((I)=>!I.startsWith("-"));if(E&&K$.has(E))return!1;return!0}var VI=new sU;VI.name("xevol").description("Xevol is a tool to consume, remix, make, publish, and offer systems, products, and workflows.").version(Xw).option("--token <token>","Override auth token").option("--no-color","Disable colored output").hook("preAction",async()=>{if(VI.opts().color===!1)LA.level=0;if(N$())await g5(Xw)});bN(VI);cN(VI);xN(VI);lN(VI);dN(VI);iN(VI);vN(VI);nN(VI);tN(VI);eN(VI);A5(VI);D5(VI);B5(VI);u5(VI);VI.command("tui").description("Launch the interactive TUI").action(()=>{DU(Xw)});var Y$=process.argv.slice(2);if(Y$.length===0)DU(Xw);else await VI.parseAsync(process.argv);
|