MCPcopy Index your code
hub / github.com/ChinaSiro/claude-code-sourcemap / Lq8

Function Lq8

package/cli.js:6760–6760  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

6758`)){if(!A)continue;let O;try{O=r8(A)}catch{continue}if(typeof O.type!=="string")continue;if(!XEY.has(O.type))continue;if(O.isSidechain===!0)continue;if(typeof O.timestamp!=="string")return null;let w=new Date(O.timestamp);if(Number.isNaN(w.getTime()))return null;return Lp(w)}return null}finally{await K.close()}}catch{return null}}function emK(){return{totalSessions:0,totalMessages:0,totalDays:0,activeDays:0,streaks:{currentStreak:0,longestStreak:0,currentStreakStart:null,longestStreakStart:null,longestStreakEnd:null},dailyActivity:[],dailyModelTokens:[],longestSession:null,modelUsage:{},firstSessionDate:null,lastSessionDate:null,peakActivityDay:null,peakActivityHour:null,totalSpeculationTimeSavedMs:0}}var XEY;var qpK=y(()=>{_8();y8();e7();vO();i1();_K();Hr();l8();H97();XEY=new Set(["user","assistant","attachment","system","progress"])});function DEY(q){return new Date(q).toLocaleDateString("en-US",{month:"short",day:"numeric"})}function fEY(q){let K=eU8.indexOf(q);return eU8[(K+1)%eU8.length]}function ZEY(){return P97("all").then((q)=>{if(!q||q.totalSessions===0)return{type:"empty"};return{type:"success",data:q}}).catch((q)=>{return{type:"error",message:q instanceof Error?q.message:"Failed to load stats"}})}function YpK(q){let K=z6(4),{onClose:_}=q,z;if(K[0]===Symbol.for("react.memo_cache_sentinel"))z=ZEY(),K[0]=z;else z=K[0];let Y=z,$;if(K[1]===Symbol.for("react.memo_cache_sentinel"))$=q7.default.createElement(u,{marginTop:1},q7.default.createElement(IK,null),q7.default.createElement(k,null," Loading your Claude Code stats…")),K[1]=$;else $=K[1];let A;if(K[2]!==_)A=q7.default.createElement(q7.Suspense,{fallback:$},q7.default.createElement(GEY,{allTimePromise:Y,onClose:_})),K[2]=_,K[3]=A;else A=K[3];return A}function GEY(q){let K=z6(34),{allTimePromise:_,onClose:z}=q,Y=q7.use(_),[$,A]=q7.useState("all"),O;if(K[0]===Symbol.for("react.memo_cache_sentinel"))O={},K[0]=O;else O=K[0];let[w,j]=q7.useState(O),[H,J]=q7.useState(!1),[M,X]=q7.useState("Overview"),[P,W]=q7.useState(null),D,f;if(K[1]!==$||K[2]!==w)D=()=>{if($==="all")return;if(w[$])return;let C=!1;return J(!0),P97($).then((g)=>{if(!C)j((F)=>({...F,[$]:g})),J(!1)}).catch(()=>{if(!C)J(!1)}),()=>{C=!0}},f=[$,w],K[1]=$,K[2]=w,K[3]=D,K[4]=f;else D=K[3],f=K[4];q7.useEffect(D,f);let G=$==="all"?Y.type==="success"?Y.data:null:w[$]??(Y.type==="success"?Y.data:null),Z=Y.type==="success"?Y.data:null,T;if(K[5]!==z)T=()=>{z("Stats dialog dismissed",{display:"system"})},K[5]=z,K[6]=T;else T=K[6];let v=T,V;if(K[7]===Symbol.for("react.memo_cache_sentinel"))V={context:"Confirmation"},K[7]=V;else V=K[7];P1("confirm:no",v,V);let E;if(K[8]!==M||K[9]!==$||K[10]!==G||K[11]!==z)E=(C,g)=>{if(g.ctrl&&(C==="c"||C==="d"))z("Stats dialog dismissed",{display:"system"});if(g.tab)X(TEY);if(C==="r"&&!g.ctrl&&!g.meta)A(fEY($));if(g.ctrl&&C==="s"&&G)CEY(G,M,W)},K[8]=M,K[9]=$,K[10]=G,K[11]=z,K[12]=E;else E=K[12];if(k4(E),Y.type==="error"){let C;if(K[13]!==Y.message)C=q7.default.createElement(u,{marginTop:1},q7.default.createElement(k,{color:"error"},"Failed to load stats: ",Y.message)),K[13]=Y.message,K[14]=C;else C=K[14];return C}if(Y.type==="empty"){let C;if(K[15]===Symbol.for("react.memo_cache_sentinel"))C=q7.default.createElement(u,{marginTop:1},q7.default.createElement(k,{color:"warning"},"No stats available yet. Start using Claude Code!")),K[15]=C;else C=K[15];return C}if(!G||!Z){let C;if(K[16]===Symbol.for("react.memo_cache_sentinel"))C=q7.default.createElement(u,{marginTop:1},q7.default.createElement(IK,null),q7.default.createElement(k,null," Loading stats…")),K[16]=C;else C=K[16];return C}let S;if(K[17]!==Z||K[18]!==$||K[19]!==G||K[20]!==H)S=q7.default.createElement(cO,{title:"Overview"},q7.default.createElement(vEY,{stats:G,allTimeStats:Z,dateRange:$,isLoading:H})),K[17]=Z,K[18]=$,K[19]=G,K[20]=H,K[21]=S;else S=K[21];let R;if(K[22]!==$||K[23]!==G||K[24]!==H)R=q7.default.createElement(cO,{title:"Models"},q7.default.createElement(NEY,{stats:G,dateRange:$,isLoading:H})),K[22]=$,K[23]=G,K[24]=H,K[25]=R;else R=K[25];let x;if(K[26]!==S||K[27]!==R)x=q7.default.createElement(u,{flexDirection:"row",gap:1,marginBottom:1},q7.default.createElement(Bb,{title:"",color:"claude",defaultTab:"Overview"},S,R)),K[26]=S,K[27]=R,K[28]=x;else x=K[28];let I=P?` · ${P}`:"",B;if(K[29]!==I)B=q7.default.createElement(u,{paddingLeft:2},q7.default.createElement(k,{dimColor:!0},"Esc to cancel · r to cycle dates · ctrl+s to copy",I)),K[29]=I,K[30]=B;else B=K[30];let p;if(K[31]!==B||K[32]!==x)p=q7.default.createElement(Q_,{color:"claude"},x,B),K[31]=B,K[32]=x,K[33]=p;else p=K[33];return p}function TEY(q){return q==="Overview"?"Models":"Overview"}function $pK(q){let K=z6(9),{dateRange:_,isLoading:z}=q,Y;if(K[0]!==_)Y=eU8.map((w,j)=>q7.default.createElement(k,{key:w},j>0&&q7.default.createElement(k,{dimColor:!0}," · "),w===_?q7.default.createElement(k,{bold:!0,color:"claude"},KpK[w]):q7.default.createElement(k,{dimColor:!0},KpK[w]))),K[0]=_,K[1]=Y;else Y=K[1];let $;if(K[2]!==Y)$=q7.default.createElement(u,null,Y),K[2]=Y,K[3]=$;else $=K[3];let A;if(K[4]!==z)A=z&&q7.default.createElement(IK,null),K[4]=z,K[5]=A;else A=K[5];let O;if(K[6]!==$||K[7]!==A)O=q7.default.createElement(u,{marginBottom:1,gap:1},$,A),K[6]=$,K[7]=A,K[8]=O;else O=K[8];return O}function vEY({stats:q,allTimeStats:K,dateRange:_,isLoading:z}){let{columns:Y}=t1(),$=Object.entries(q.modelUsage).sort(([,J],[,M])=>M.inputTokens+M.outputTokens-(J.inputTokens+J.outputTokens)),A=$[0],O=$.reduce((J,[,M])=>J+M.inputTokens+M.outputTokens,0),w=q7.useMemo(()=>ApK(q,O),[q,O]),j=_==="7d"?7:_==="30d"?30:q.totalDays,H=null;return q7.default.createElement(u,{flexDirection:"column",marginTop:1},K.dailyActivity.length>0&&q7.default.createElement(u,{flexDirection:"column",marginBottom:1},q7.default.createElement(B5,null,J97(K.dailyActivity,{terminalWidth:Y}))),q7.default.createElement($pK,{dateRange:_,isLoading:z}),q7.default.createElement(u,{flexDirection:"row",gap:4,marginBottom:1},q7.default.createElement(u,{flexDirection:"column",width:28},A&&q7.default.createElement(k,{wrap:"truncate"},"Favorite model:"," ",q7.default.createElement(k,{color:"claude",bold:!0},WH(A[0])))),q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Total tokens:"," ",q7.default.createElement(k,{color:"claude"},mK(O))))),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Sessions:"," ",q7.default.createElement(k,{color:"claude"},mK(q.totalSessions)))),q7.default.createElement(u,{flexDirection:"column",width:28},q.longestSession&&q7.default.createElement(k,{wrap:"truncate"},"Longest session:"," ",q7.default.createElement(k,{color:"claude"},I5(q.longestSession.duration))))),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Active days: ",q7.default.createElement(k,{color:"claude"},q.activeDays),q7.default.createElement(k,{color:"subtle"},"/",j))),q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Longest streak:"," ",q7.default.createElement(k,{color:"claude",bold:!0},q.streaks.longestStreak)," ",q.streaks.longestStreak===1?"day":"days"))),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q.peakActivityDay&&q7.default.createElement(k,{wrap:"truncate"},"Most active day:"," ",q7.default.createElement(k,{color:"claude"},DEY(q.peakActivityDay)))),q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Current streak:"," ",q7.default.createElement(k,{color:"claude",bold:!0},K.streaks.currentStreak)," ",K.streaks.currentStreak===1?"day":"days"))),!1,H&&q7.default.createElement(q7.default.Fragment,null,q7.default.createElement(u,{marginTop:1},q7.default.createElement(k,null,"Shot distribution")),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},H.buckets[0].label,":"," ",q7.default.createElement(k,{color:"claude"},H.buckets[0].count),q7.default.createElement(k,{color:"subtle"}," (",H.buckets[0].pct,"%)"))),q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},H.buckets[1].label,":"," ",q7.default.createElement(k,{color:"claude"},H.buckets[1].count),q7.default.createElement(k,{color:"subtle"}," (",H.buckets[1].pct,"%)")))),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},H.buckets[2].label,":"," ",q7.default.createElement(k,{color:"claude"},H.buckets[2].count),q7.default.createElement(k,{color:"subtle"}," (",H.buckets[2].pct,"%)"))),q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},H.buckets[3].label,":"," ",q7.default.createElement(k,{color:"claude"},H.buckets[3].count),q7.default.createElement(k,{color:"subtle"}," (",H.buckets[3].pct,"%)")))),q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:28},q7.default.createElement(k,{wrap:"truncate"},"Avg/session:"," ",q7.default.createElement(k,{color:"claude"},H.avgShots))))),w&&q7.default.createElement(u,{marginTop:1},q7.default.createElement(k,{color:"suggestion"},w)))}function ApK(q,K){let _=[];if(K>0){let Y=kEY.filter(($)=>K>=$.tokens);for(let $ of Y){let A=K/$.tokens;if(A>=2)_.push(`You've used ~${Math.floor(A)}x more tokens than ${$.name}`);else _.push(`You've used the same number of tokens as ${$.name}`)}}if(q.longestSession){let Y=q.longestSession.duration/60000;for(let $ of VEY){let A=Y/$.minutes;if(A>=2)_.push(`Your longest session is ~${Math.floor(A)}x longer than ${$.name}`)}}if(_.length===0)return"";let z=Math.floor(Math.random()*_.length);return _[z]}function NEY(q){let K=z6(15),{stats:_,dateRange:z,isLoading:Y}=q,{headerFocused:$,focusHeader:A}=$T(),[O,w]=q7.useState(0),{columns:j}=t1(),H=Object.entries(_.modelUsage).sort(hEY),J=!$,M;if(K[0]!==J)M={isActive:J},K[0]=J,K[1]=M;else M=K[1];if(k4((p,C)=>{if(C.downArrow&&O<H.length-4)w((g)=>Math.min(g+2,H.length-4));if(C.upArrow)if(O>0)w(REY);else A()},M),H.length===0){let p;if(K[2]===Symbol.for("react.memo_cache_sentinel"))p=q7.default.createElement(u,null,q7.default.createElement(k,{color:"subtle"},"No model usage data available")),K[2]=p;else p=K[2];return p}let X=H.reduce(LEY,0),P=OpK(_.dailyModelTokens,H.map(EEY),j),W=H.slice(O,O+4),D=Math.ceil(W.length/2),f=W.slice(0,D),G=W.slice(D),Z=O>0,T=O<H.length-4,v=H.length>4,V;if(K[3]!==z||K[4]!==Y)V=q7.default.createElement($pK,{dateRange:z,isLoading:Y}),K[3]=z,K[4]=Y,K[5]=V;else V=K[5];let E=u,S="column",R=36,x=G.map((p)=>{let[C,g]=p;return q7.default.createElement(_pK,{key:C,model:C,usage:g,totalTokens:X})}),I;if(K[6]!==E||K[7]!==x)I=q7.default.createElement(E,{flexDirection:S,width:R},x),K[6]=E,K[7]=x,K[8]=I;else I=K[8];let B;if(K[9]!==T||K[10]!==Z||K[11]!==H||K[12]!==O||K[13]!==v)B=v&&q7.default.createElement(u,{marginTop:1},q7.default.createElement(k,{color:"subtle"},Z?t6.arrowUp:" "," ",T?t6.arrowDown:" "," ",O+1,"-",Math.min(O+4,H.length)," of"," ",H.length," models (↑↓ to scroll)")),K[9]=T,K[10]=Z,K[11]=H,K[12]=O,K[13]=v,K[14]=B;else B=K[14];return q7.default.createElement(u,{flexDirection:"column",marginTop:1},P&&q7.default.createElement(u,{flexDirection:"column",marginBottom:1},q7.default.createElement(k,{bold:!0},"Tokens per Day"),q7.default.createElement(B5,null,P.chart),q7.default.createElement(k,{color:"subtle"},P.xAxisLabels),q7.default.createElement(u,null,P.legend.map(yEY))),V,q7.default.createElement(u,{flexDirection:"row",gap:4},q7.default.createElement(u,{flexDirection:"column",width:36},f.map((p)=>{let[C,g]=p;return q7.default.createElement(_pK,{key:C,model:C,usage:g,totalTokens:X})})),I),B)}function yEY(q,K){return q7.default.createElement(k,{key:q.model},K>0?" · ":"",q7.default.createElement(B5,null,q.coloredBullet)," ",q.model)}function EEY(q){let[K]=q;return K}function LEY(q,K){let[,_]=K;return q+_.inputTokens+_.outputTokens}function REY(q){return Math.max(q-2,0)}function hEY(q,K){let[,_]=q,[,z]=K;return z.inputTokens+z.outputTokens-(_.inputTokens+_.outputTokens)}function _pK(q){let K=z6(21),{model:_,usage:z,totalTokens:Y}=q,A=(z.inputTokens+z.outputTokens)/Y*100,O;if(K[0]!==A)O=A.toFixed(1),K[0]=A,K[1]=O;else O=K[1];let w=O,j;if(K[2]!==_)j=WH(_),K[2]=_,K[3]=j;else j=K[3];let H;if(K[4]!==j)H=q7.default.createElement(k,{bold:!0},j),K[4]=j,K[5]=H;else H=K[5];let J;if(K[6]!==w)J=q7.default.createElement(k,{color:"subtle"},"(",w,"%)"),K[6]=w,K[7]=J;else J=K[7];let M;if(K[8]!==H||K[9]!==J)M=q7.default.createElement(k,null,t6.bullet," ",H," ",J),K[8]=H,K[9]=J,K[10]=M;else M=K[10];let X;if(K[11]!==z.inputTokens)X=mK(z.inputTokens),K[11]=z.inputTokens,K[12]=X;else X=K[12];let P;if(K[13]!==z.outputTokens)P=mK(z.outputTokens),K[13]=z.outputTokens,K[14]=P;else P=K[14];let W;if(K[15]!==X||K[16]!==P)W=q7.default.createElement(k,{color:"subtle"}," ","In: ",X," · Out:"," ",P),K[15]=X,K[16]=P,K[17]=W;else W=K[17];let D;if(K[18]!==M||K[19]!==W)D=q7.default.createElement(u,{flexDirection:"column"},M,W),K[18]=M,K[19]=W,K[20]=D;else D=K[20];return D}function OpK(q,K,_){if(q.length<2||K.length===0)return null;let z=7,Y=_-z,$=Math.min(52,Math.max(20,Y)),A;if(q.length>=$)A=q.slice(-$);else{let P=Math.floor($/q.length);A=[];for(let W of q)for(let D=0;D<P;D++)A.push(W)}let O=sW(OF(j8().theme)),w=[RZ8(O.suggestion),RZ8(O.success),RZ8(O.warning)],j=[],H=[],J=K.slice(0,3);for(let P=0;P<J.length;P++){let W=J[P],D=A.map((f)=>f.tokensByModel[W]||0);if(D.some((f)=>f>0)){j.push(D);let f=[O.suggestion,O.success,O.warning];H.push({model:WH(W),coloredBullet:Ni(t6.bullet,f[P%f.length])})}}if(j.length===0)return null;let M=zpK.plot(j,{height:8,colors:w.slice(0,j.length),format:(P)=>{let W;if(P>=1e6)W=(P/1e6).toFixed(1)+"M";else if(P>=1000)W=(P/1000).toFixed(0)+"k";else W=P.toFixed(0);return W.padStart(6)}}),X=SEY(A,A.length,z);return{chart:M,legend:H,xAxisLabels:X}}function SEY(q,K,_){if(q.length===0)return"";let z=Math.min(4,Math.max(2,Math.floor(q.length/8))),Y=q.length-6,$=Math.floor(Y/(z-1))||1,A=[];for(let j=0;j<z;j++){let H=Math.min(j*$,q.length-1),M=new Date(q[H].date).toLocaleDateString("en-US",{month:"short",day:"numeric"});A.push({pos:H,label:M})}let O=" ".repeat(_),w=0;for(let{pos:j,label:H}of A){let J=Math.max(1,j-w);O+=" ".repeat(J)+H,w=j+H.length}return O}async function CEY(q,K,_){_("copying…");let z=bEY(q,K),Y=await rmK(z);_(Y.success?"copied!":"copy failed"),setTimeout(_,2000,null)}function bEY(q,K){let _=[];if(K==="Overview")_.push(...xEY(q));else _.push(...IEY(q));while(_.length>0&&VY(_[_.length-1]).trim()==="")_.pop();if(_.length>0){let z=_[_.length-1],Y=O1(z),$=K==="Overview"?70:80,A="/stats",O=Math.max(2,$-Y-6);_[_.length-1]=z+" ".repeat(O)+$8.gray("/stats")}return _.join(`
6759`)}function xEY(q){let K=[],_=sW(OF(j8().theme)),z=(D)=>Ni(D,_.claude),Y=18,$=40,A=18,O=(D,f,G,Z)=>{let T=(D+":").padEnd(18),v=T.length+f.length,V=Math.max(2,40-v),E=(G+":").padEnd(18);return T+z(f)+" ".repeat(V)+E+z(Z)};if(q.dailyActivity.length>0)K.push(J97(q.dailyActivity,{terminalWidth:56})),K.push("");let w=Object.entries(q.modelUsage).sort(([,D],[,f])=>f.inputTokens+f.outputTokens-(D.inputTokens+D.outputTokens)),j=w[0],H=w.reduce((D,[,f])=>D+f.inputTokens+f.outputTokens,0);if(j)K.push(O("Favorite model",WH(j[0]),"Total tokens",mK(H)));K.push(""),K.push(O("Sessions",mK(q.totalSessions),"Longest session",q.longestSession?I5(q.longestSession.duration):"N/A"));let J=`${q.streaks.currentStreak} ${q.streaks.currentStreak===1?"day":"days"}`,M=`${q.streaks.longestStreak} ${q.streaks.longestStreak===1?"day":"days"}`;K.push(O("Current streak",J,"Longest streak",M));let X=`${q.activeDays}/${q.totalDays}`,P=q.peakActivityHour!==null?`${q.peakActivityHour}:00-${q.peakActivityHour+1}:00`:"N/A";K.push(O("Active days",X,"Peak hour",P)),K.push("");let W=ApK(q,H);return K.push(z(W)),K.push($8.gray(`Stats from the last ${q.totalDays} days`)),K}function IEY(q){let K=[],_=Object.entries(q.modelUsage).sort(([,O],[,w])=>w.inputTokens+w.outputTokens-(O.inputTokens+O.outputTokens));if(_.length===0)return K.push($8.gray("No model usage data available")),K;let z=_[0],Y=_.reduce((O,[,w])=>O+w.inputTokens+w.outputTokens,0),$=OpK(q.dailyModelTokens,_.map(([O])=>O),80);if($){K.push($8.bold("Tokens per Day")),K.push($.chart),K.push($8.gray($.xAxisLabels));let O=$.legend.map((w)=>`${w.coloredBullet} ${w.model}`).join(" · ");K.push(O),K.push("")}K.push(`${t6.star} Favorite: ${$8.magenta.bold(WH(z?.[0]||""))} · ${t6.circle} Total: ${$8.magenta(mK(Y))} tokens`),K.push("");let A=_.slice(0,3);for(let[O,w]of A){let H=((w.inputTokens+w.outputTokens)/Y*100).toFixed(1);K.push(`${t6.bullet} ${$8.bold(WH(O))} ${$8.gray(`(${H}%)`)}`),K.push($8.dim(` In: ${mK(w.inputTokens)} · Out: ${mK(w.outputTokens)}`))}return K}var zpK,q7,KpK,eU8,kEY,VEY;var wpK=y(()=>{q8();x3();bq();CT();t4();s$6();Q5();s6();Oq();V1();U7();FmK();aq();omK();qpK();Tu();pP();gb();Q2();zpK=O6(xmK(),1),q7=O6(D6(),1);KpK={"7d":"Last 7 days","30d":"Last 30 days",all:"All time"},eU8=["all","7d","30d"];kEY=[{name:"The Little Prince",tokens:22000},{name:"The Old Man and the Sea",tokens:35000},{name:"A Christmas Carol",tokens:37000},{name:"Animal Farm",tokens:39000},{name:"Fahrenheit 451",tokens:60000},{name:"The Great Gatsby",tokens:62000},{name:"Slaughterhouse-Five",tokens:64000},{name:"Brave New World",tokens:83000},{name:"The Catcher in the Rye",tokens:95000},{name:"Harry Potter and the Philosopher's Stone",tokens:103000},{name:"The Hobbit",tokens:123000},{name:"1984",tokens:123000},{name:"To Kill a Mockingbird",tokens:130000},{name:"Pride and Prejudice",tokens:156000},{name:"Dune",tokens:244000},{name:"Moby-Dick",tokens:268000},{name:"Crime and Punishment",tokens:274000},{name:"A Game of Thrones",tokens:381000},{name:"Anna Karenina",tokens:468000},{name:"Don Quixote",tokens:520000},{name:"The Lord of the Rings",tokens:576000},{name:"The Count of Monte Cristo",tokens:603000},{name:"Les Misérables",tokens:689000},{name:"War and Peace",tokens:730000}],VEY=[{name:"a TED talk",minutes:18},{name:"an episode of The Office",minutes:22},{name:"listening to Abbey Road",minutes:47},{name:"a yoga class",minutes:60},{name:"a World Cup soccer match",minutes:90},{name:"a half marathon (average time)",minutes:120},{name:"the movie Inception",minutes:148},{name:"watching Titanic",minutes:195},{name:"a transatlantic flight",minutes:420},{name:"a full night of sleep",minutes:480}]});var jpK={};T8(jpK,{call:()=>uEY});var W97,uEY=async(q)=>{return W97.createElement(YpK,{onClose:q})};var HpK=y(()=>{wpK();W97=O6(D6(),1)});var mEY,JpK;var MpK=y(()=>{mEY={type:"local-jsx",name:"stats",description:"Show your Claude Code usage statistics and activity",load:()=>Promise.resolve().then(() => (HpK(),jpK))},JpK=mEY});var XpK;var PpK=y(()=>{XpK={isEnabled:()=>!1,isHidden:!0,name:"stub"}});var WpK;var DpK=y(()=>{WpK={isEnabled:()=>!1,isHidden:!0,name:"stub"}});function W_(q){return q.userFacingName?.()??q.name}function vs(q){return q.isEnabled?.()??!0}var ZpK={};T8(ZpK,{default:()=>UEY});function gEY(){let q=g8("tengu_kairos_brief_config",fpK),K=BEY().safeParse(q);return K.success?K.data:fpK}var BEY,fpK,FEY,UEY;var GpK=y(()=>{x7();v8();o1();k8();dQ();YI();BEY=B6(()=>L.object({enable_slash_command:L.boolean()})),fpK={enable_slash_command:!1};FEY={type:"local-jsx",name:"brief",description:"Toggle brief-only mode",isEnabled:()=>{return gEY().enable_slash_command},immediate:!0,load:()=>Promise.resolve({async call(q,K){let z=!K.getAppState().isBriefOnly;if(z&&!Dm8())return d("tengu_brief_mode_toggled",{enabled:!1,gated:!0,source:"slash_command"}),q("Brief tool is not enabled for your account",{display:"system"}),null;tp(z),K.setAppState(($)=>{if($.isBriefOnly===z)return $;return{...$,isBriefOnly:z}}),d("tengu_brief_mode_toggled",{enabled:z,gated:!1,source:"slash_command"});let Y=xk()?void 0:[`<system-reminder>
6760${z?`Brief mode is now enabled. Use the ${wD6} tool for all user-facing output — plain text outside it is hidden from the user's view.`:`Brief mode is now disabled. The ${wD6} tool is no longer available — reply with plain text.`}
6761</system-reminder>`];return q(z?"Brief-only mode enabled":"Brief-only mode disabled",{display:"system",metaMessages:Y}),null}})},UEY=FEY});var TpK={};T8(TpK,{shouldShowAppUpgradeMessage:()=>dEY,getEnvLessBridgeConfig:()=>Lq8,checkEnvLessBridgeMinVersion:()=>Rq8,DEFAULT_ENV_LESS_BRIDGE_CONFIG:()=>D97});async function Lq8(){let q=await Df8("tengu_bridge_repl_v2_config",D97),K=QEY().safeParse(q);return K.success?K.data:D97}async function Rq8(){let q=await Lq8();if(q.min_version&&bi({ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION,q.min_version))return`Your version of Claude Code (${{ISSUES_EXPLAINER:"report the issue at https://github.com/anthropics/claude-code/issues",PACKAGE_URL:"@anthropic-ai/claude-code",README_URL:"https://code.claude.com/docs/en/overview",VERSION:"2.1.88",FEEDBACK_CHANNEL:"https://github.com/anthropics/claude-code/issues",BUILD_TIME:"2026-03-30T21:59:52Z"}.VERSION}) is too old for Remote Control.
6762Version ${q.min_version} or higher is required. Run \`claude update\` to update.`;return null}async function dEY(){if(!mH6())return!1;return(await Lq8()).should_show_app_upgrade_message}var D97,QEY;var hq8=y(()=>{x7();o1();Jd();D97={init_retry_max_attempts:3,init_retry_base_delay_ms:500,init_retry_jitter_fraction:0.25,init_retry_max_delay_ms:4000,http_timeout_ms:1e4,uuid_dedup_buffer_size:2000,heartbeat_interval_ms:20000,heartbeat_jitter_fraction:0.1,token_refresh_buffer_ms:300000,teardown_archive_timeout_ms:1500,connect_timeout_ms:15000,min_version:"0.0.0",should_show_app_upgrade_message:!1},QEY=B6(()=>L.object({init_retry_max_attempts:L.number().int().min(1).max(10).default(3),init_retry_base_delay_ms:L.number().int().min(100).default(500),init_retry_jitter_fraction:L.number().min(0).max(1).default(0.25),init_retry_max_delay_ms:L.number().int().min(500).default(4000),http_timeout_ms:L.number().int().min(2000).default(1e4),uuid_dedup_buffer_size:L.number().int().min(100).max(50000).default(2000),heartbeat_interval_ms:L.number().int().min(5000).max(30000).default(20000),heartbeat_jitter_fraction:L.number().min(0).max(0.5).default(0.1),token_refresh_buffer_ms:L.number().int().min(30000).max(1800000).default(300000),teardown_archive_timeout_ms:L.number().int().min(500).max(2000).default(1500),connect_timeout_ms:L.number().int().min(5000).max(60000).default(15000),min_version:L.string().refine((q)=>{try{return bi(q,"0.0.0"),!0}catch{return!1}}).default("0.0.0"),should_show_app_upgrade_message:L.boolean().default(!1)}))});function vpK({onDone:q}){let K=DT.useRef(q);K.current=q;let _=DT.useCallback(()=>{K.current("dismiss")},[]);DT.useEffect(()=>{b8(($)=>{if($.remoteDialogSeen)return $;return{...$,remoteDialogSeen:!0}})},[]);let z=DT.useCallback(($)=>{K.current($)},[]);return DT.default.createElement(HY,{title:"Remote Control"},DT.default.createElement(u,{flexDirection:"column",paddingX:2,paddingY:1},DT.default.createElement(u,{marginBottom:1,flexDirection:"column"},DT.default.createElement(k,null,"Remote Control lets you access this CLI session from the web (claude.ai/code) or the Claude app, so you can pick up where you left off on any device."),DT.default.createElement(k,null," "),DT.default.createElement(k,null,"You can disconnect remote access anytime by running /remote-control again.")),DT.default.createElement(u,null,DT.default.createElement(H1,{options:[{label:"Enable Remote Control for this session",description:"Opens a secure connection to claude.ai.",value:"enable"},{label:"Never mind",description:"You can always enable it later with /remote-control.",value:"dismiss"}],onChange:z,onCancel:_}))))}function kpK(){if(j8().remoteDialogSeen)return!1;if(!ta())return!1;if(!Kq()?.accessToken)return!1;return!0}var DT;var f97=y(()=>{Jd();s6();G7();V1();p3();GD();DT=O6(D6(),1)});var VpK={};T8(VpK,{call:()=>$LY});function cEY(q){let K=z6(10),{onDone:_,name:z}=q,Y=s7(),$=P8(iEY),A=P8(nEY),O=P8(lEY),[w,j]=c56.useState(!1),H;if(K[0]!==z||K[1]!==_||K[2]!==$||K[3]!==A||K[4]!==O||K[5]!==Y)H=()=>{if(($||A)&&!O){j(!0);return}let M=!1;return(async()=>{let X=await YLY();if(M)return;if(X){d("tengu_bridge_command",{action:"preflight_failed"}),_(X,{display:"system"});return}if(kpK()){Y((P)=>{if(P.showRemoteCallout)return P;return{...P,showRemoteCallout:!0,replBridgeInitialName:z}}),_("",{display:"system"});return}d("tengu_bridge_command",{action:"connect"}),Y((P)=>{if(P.replBridgeEnabled&&!P.replBridgeOutboundOnly)return P;return{...P,replBridgeEnabled:!0,replBridgeExplicit:!0,replBridgeOutboundOnly:!1,replBridgeInitialName:z}}),_("Remote Control connecting…",{display:"system"})})(),()=>{M=!0}},K[0]=z,K[1]=_,K[2]=$,K[3]=A,K[4]=O,K[5]=Y,K[6]=H;else H=K[6];let J;if(K[7]===Symbol.for("react.memo_cache_sentinel"))J=[],K[7]=J;else J=K[7];if(c56.useEffect(H,J),w){let M;if(K[8]!==_)M=$A.createElement(rEY,{onDone:_}),K[8]=_,K[9]=M;else M=K[9];return M}return null}function lEY(q){return q.replBridgeOutboundOnly}function nEY(q){return q.replBridgeEnabled}function iEY(q){return q.replBridgeConnected}function rEY(q){let K=z6(61),{onDone:_}=q;yJ("bridge-disconnect-dialog");let z=s7(),Y=P8(zLY),$=P8(_LY),A=P8(KLY),[O,w]=c56.useState(2),[j,H]=c56.useState(!1),[J,M]=c56.useState(""),X=A?Y:$,P,W;if(K[0]!==X||K[1]!==j)P=()=>{if(!j||!X){M("");return}Qb(X,{type:"utf8",errorCorrectionLevel:"L",small:!0}).then(M).catch(()=>M(""))},W=[j,X],K[0]=X,K[1]=j,K[2]=P,K[3]=W;else P=K[2],W=K[3];c56.useEffect(P,W);let D;if(K[4]!==_||K[5]!==z)D=function(){z(qLY),d("tengu_bridge_command",{action:"disconnect"}),_(Hq8,{display:"system"})},K[4]=_,K[5]=z,K[6]=D;else D=K[6];let f=D,G;if(K[7]===Symbol.for("react.memo_cache_sentinel"))G=function(){H(eEY)},K[7]=G;else G=K[7];let Z=G,T;if(K[8]!==_)T=function(){_(void 0,{display:"skip"})},K[8]=_,K[9]=T;else T=K[9];let v=T,V,E;if(K[10]===Symbol.for("react.memo_cache_sentinel"))V=()=>w(tEY),E=()=>w(sEY),K[10]=V,K[11]=E;else V=K[10],E=K[11];let S;if(K[12]!==O||K[13]!==v||K[14]!==f)S={"select:next":V,"select:previous":E,"select:accept":()=>{if(O===0)f();else if(O===1)Z();else v()}},K[12]=O,K[13]=v,K[14]=f,K[15]=S;else S=K[15];let R;if(K[16]===Symbol.for("react.memo_cache_sentinel"))R={context:"Select"},K[16]=R;else R=K[16];o7(S,R);let x,I,B,p,C,g,F,U,c;if(K[17]!==X||K[18]!==v||K[19]!==J||K[20]!==j){let l=J?J.split(`
6763`).filter(aEY):[];I=R1,F="Remote Control",U=v,c=!0,x=u,B="column",p=1;let A6=X?` at ${X}`:"";if(K[30]!==A6)C=$A.createElement(k,null,"This session is available via Remote Control",A6,"."),K[30]=A6,K[31]=C;else C=K[31];g=j&&l.length>0&&$A.createElement(u,{flexDirection:"column"},l.map(oEY)),K[17]=X,K[18]=v,K[19]=J,K[20]=j,K[21]=x,K[22]=I,K[23]=B,K[24]=p,K[25]=C,K[26]=g,K[27]=F,K[28]=U,K[29]=c}else x=K[21],I=K[22],B=K[23],p=K[24],C=K[25],g=K[26],F=K[27],U=K[28],c=K[29];let K6=O===0,t;if(K[32]===Symbol.for("react.memo_cache_sentinel"))t=$A.createElement(k,null,"Disconnect this session"),K[32]=t;else t=K[32];let q6;if(K[33]!==K6)q6=$A.createElement(mU,{isFocused:K6},t),K[33]=K6,K[34]=q6;else q6=K[34];let e=O===1,i=j?"Hide QR code":"Show QR code",$6;if(K[35]!==i)$6=$A.createElement(k,null,i),K[35]=i,K[36]=$6;else $6=K[36];let M6;if(K[37]!==e||K[38]!==$6)M6=$A.createElement(mU,{isFocused:e},$6),K[37]=e,K[38]=$6,K[39]=M6;else M6=K[39];let j6=O===2,G6;if(K[40]===Symbol.for("react.memo_cache_sentinel"))G6=$A.createElement(k,null,"Continue"),K[40]=G6;else G6=K[40];let w6;if(K[41]!==j6)w6=$A.createElement(mU,{isFocused:j6},G6),K[41]=j6,K[42]=w6;else w6=K[42];let o;if(K[43]!==q6||K[44]!==M6||K[45]!==w6)o=$A.createElement(u,{flexDirection:"column"},q6,M6,w6),K[43]=q6,K[44]=M6,K[45]=w6,K[46]=o;else o=K[46];let s;if(K[47]===Symbol.for("react.memo_cache_sentinel"))s=$A.createElement(k,{dimColor:!0},"Enter to select · Esc to continue"),K[47]=s;else s=K[47];let a;if(K[48]!==x||K[49]!==B||K[50]!==p||K[51]!==C||K[52]!==g||K[53]!==o)a=$A.createElement(x,{flexDirection:B,gap:p},C,g,o,s),K[48]=x,K[49]=B,K[50]=p,K[51]=C,K[52]=g,K[53]=o,K[54]=a;else a=K[54];let n;if(K[55]!==I||K[56]!==F||K[57]!==U||K[58]!==c||K[59]!==a)n=$A.createElement(I,{title:F,onCancel:U,hideInputGuide:c},a),K[55]=I,K[56]=F,K[57]=U,K[58]=c,K[59]=a,K[60]=n;else n=K[60];return n}function oEY(q,K){return $A.createElement(k,{key:K},q)}function aEY(q){return q.length>0}function sEY(q){return(q-1+3)%3}function tEY(q){return(q+1)%3}function eEY(q){return!q}function qLY(q){if(!q.replBridgeEnabled)return q;return{...q,replBridgeEnabled:!1,replBridgeExplicit:!1,replBridgeOutboundOnly:!1}}function KLY(q){return q.replBridgeSessionActive}function _LY(q){return q.replBridgeConnectUrl}function zLY(q){return q.replBridgeSessionUrl}async function YLY(){let{waitForPolicyLimitsToLoad:q,isPolicyAllowed:K}=await Promise.resolve().then(() => (ZD(),dF1));if(await q(),!K("allow_remote_control"))return"Remote Control is disabled by your organization's policy.";let _=await dq7();if(_)return _;let Y=mH6()?await Rq8():X78();if(Y)return Y;if(!Ay())return kS6;return N("[bridge] Prerequisites passed, enabling bridge"),null}async function $LY(q,K,_){let z=_.trim()||void 0;return $A.createElement(cEY,{onDone:q,name:z})}var $A,c56;var NpK=y(()=>{q8();MS6();Ea();Jd();hq8();e4();Ra6();f97();T0();s6();Oq();k8();C7();_8();$A=O6(D6(),1),c56=O6(D6(),1)});var EpK={};T8(EpK,{default:()=>OLY});function ypK(){return ta()}var ALY,OLY;var LpK=y(()=>{Jd();ALY={type:"local-jsx",name:"remote-control",aliases:["rc"],description:"Connect this terminal for remote-control sessions",argumentHint:"[name]",isEnabled:ypK,get isHidden(){return!ypK()},immediate:!0,load:()=>Promise.resolve().then(() => (NpK(),VpK))},OLY=ALY});import{basename as hpK}from"path";function SpK(q){return q.replace(/([a-z])([A-Z])/g,"$1 $2").split(/[-_./\s]+/).map((K)=>K.trim()).filter((K)=>K.length>2&&K.length<=20)}function jLY(q){let K=hpK(q).replace(/\.[^.]+$/,"");return SpK(K)}async function Z97(q){let K=new Set(wLY);try{let _=Fz();if(_){let z=hpK(_);if(z.length>2&&z.length<=50)K.add(z)}}catch{}try{let _=await oM();if(_)for(let z of SpK(_))K.add(z)}catch{}if(q)for(let _ of q){if(K.size>=RpK)break;for(let z of jLY(_))K.add(z)}return[...K].slice(0,RpK)}var wLY,RpK=50;var CpK=y(()=>{v8();E5();wLY=["MCP","symlink","grep","regex","localhost","codebase","TypeScript","JSON","OAuth","webhook","gRPC","dotfiles","subagent","worktree"]});var IpK={};T8(IpK,{useVoice:()=>WLY,normalizeLanguageForSTT:()=>Sq8,computeLevel:()=>xpK,FIRST_PRESS_FALLBACK_MS:()=>MLY});function Sq8(q){if(!q)return{code:G97};let K=q.toLowerCase().trim();if(!K)return{code:G97};if(bpK.has(K))return{code:K};let _=HLY[K];if(_)return{code:_};let z=K.split("-")[0];if(z&&bpK.has(z))return{code:z};return{code:G97,fellBackFrom:q}}function xpK(q){let K=q.length>>1;if(K===0)return 0;let _=0;for(let $=0;$<q.length-1;$+=2){let A=(q[$]|q[$+1]<<8)<<16>>16;_+=A*A}let z=Math.sqrt(_/K),Y=Math.min(z/2000,1);return Math.sqrt(Y)}function WLY({onTranscript:q,onError:K,enabled:_,focusMode:z}){let[Y,$]=I$.useState("idle"),A=I$.useRef("idle"),O=I$.useRef(null),w=I$.useRef(""),j=I$.useRef(q),H=I$.useRef(K),J=I$.useRef(null),M=I$.useRef(null),X=I$.useRef(!1),P=I$.useRef(null),W=I$.useRef(!1),D=I$.useRef(null),f=I$.useRef(!1),G=I$.useRef(0),Z=I$.useRef(0),T=I$.useRef(!1),v=I$.useRef([]),V=I$.useRef(!1),E=I$.useRef(0),S=I$.useRef(0),R=I$.useRef(!1),x=I$.useRef(!1),I=I$.useRef([]),B=CO(),p=gl6();j.current=q,H.current=K;function C(t){A.current=t,$(t),p((q6)=>{if(q6.voiceState===t)return q6;return{...q6,voiceState:t}})}let g=I$.useCallback(()=>{if(Z.current++,J.current)clearTimeout(J.current),J.current=null;if(M.current)clearTimeout(M.current),M.current=null;if(P.current)clearTimeout(P.current),P.current=null;if(D.current)clearTimeout(D.current),D.current=null;if(f.current=!1,ks?.stopRecording(),O.current)O.current.close(),O.current=null;w.current="",I.current=[],v.current=[],p((t)=>{if(t.voiceInterimTranscript===""&&!t.voiceAudioLevels.length)return t;return{...t,voiceInterimTranscript:"",voiceAudioLevels:[]}})},[p]);function F(){N("[voice] finishRecording: stopping recording, transitioning to processing"),E.current++;let t=W.current;W.current=!1,C("processing"),ks?.stopRecording();let q6=Date.now()-G.current,e=R.current,i=T.current,$6=S.current,M6=x.current,j6=Z.current,G6=()=>Z.current!==j6;N("[voice] Recording stopped"),(O.current?O.current.finalize():Promise.resolve(void 0)).then(async(o)=>{if(G6())return;if(o==="no_data_timeout"&&e&&M6&&!t&&$6===0&&w.current.trim()===""&&!V.current&&v.current.length>0){if(V.current=!0,N(`[voice] Silent-drop detected (no_data_timeout, ${String(v.current.length)} chunks); replaying on fresh connection`),d("tengu_voice_silent_drop_replay",{recordingDurationMs:q6,chunkCount:v.current.length}),O.current)O.current.close(),O.current=null;let a=v.current;if(await R7(250),G6())return;let n=Sq8(N7().language),l=await Z97();if(G6())return;if(await new Promise((A6)=>{Sm8({onTranscript:(J6,X6)=>{if(G6())return;if(X6&&J6.trim()){if(w.current)w.current+=" ";w.current+=J6.trim()}},onError:()=>A6(),onClose:()=>{},onReady:(J6)=>{if(G6()){J6.close(),A6();return}O.current=J6;let X6=32000,f6=[],N6=0;for(let Z6 of a){if(N6>0&&N6+Z6.length>X6)J6.send(Buffer.concat(f6)),f6=[],N6=0;f6.push(Z6),N6+=Z6.length}if(f6.length)J6.send(Buffer.concat(f6));J6.finalize().then(()=>{J6.close(),A6()})}},{language:n.code,keyterms:l}).then((J6)=>{if(!J6)A6()},()=>A6())}),G6())return}v.current=[];let s=w.current.trim();if(N(`[voice] Final transcript assembled (${String(s.length)} chars): "${s.slice(0,200)}"`),d("tengu_voice_recording_completed",{transcriptChars:s.length+$6,recordingDurationMs:q6,hadAudioSignal:e,retried:i,silentDropRetried:V.current,wsConnected:M6,focusTriggered:t}),O.current)O.current.close(),O.current=null;if(s)N(`[voice] Injecting transcript (${String(s.length)} chars)`),j.current(s);else if($6===0&&q6>2000)if(!M6)H.current?.("Voice connection failed. Check your network and try again.");else if(!e)H.current?.("No audio detected from microphone. Check that the correct input device is selected and that Claude Code has microphone access.");else H.current?.("No speech detected.");w.current="",p((a)=>{if(a.voiceInterimTranscript==="")return a;return{...a,voiceInterimTranscript:""}}),C("idle")}).catch((o)=>{if(H6(x1(o)),!G6())C("idle")})}I$.useEffect(()=>{if(_&&!ks)Promise.resolve().then(() => (CR6(),SR6)).then((t)=>{ks=t})},[_]);function U(){if(D.current)clearTimeout(D.current);D.current=setTimeout((t,q6,e,i,$6)=>{if(t.current=null,q6.current==="recording"&&e.current)N("[voice] Focus silence timeout — tearing down session"),i.current=!0,$6()},XLY,D,A,W,f,F)}I$.useEffect(()=>{if(!_||!z){if(W.current&&A.current==="recording")N("[voice] Focus mode disabled during recording, finishing"),F();return}let t=!1;if(B&&A.current==="idle"&&!f.current){let q6=()=>{if(t||A.current!=="idle"||f.current)return;N("[voice] Focus gained, starting recording session"),W.current=!0,c(),U()};if(ks)q6();else Promise.resolve().then(() => (CR6(),SR6)).then((e)=>{ks=e,q6()})}else if(!B){if(f.current=!1,A.current==="recording")N("[voice] Focus lost, finishing recording"),F()}return()=>{t=!0}},[_,z,B]);async function c(){if(!ks){H.current?.("Voice module not loaded yet. Try again in a moment.");return}C("recording"),G.current=Date.now(),w.current="",X.current=!1,R.current=!1,T.current=!1,V.current=!1,v.current=[],S.current=0,x.current=!1;let t=++Z.current,q6=await ks.checkRecordingAvailability();if(!q6.available){N(`[voice] Recording not available: ${q6.reason??"unknown"}`),H.current?.(q6.reason??"Audio recording is not available."),g(),C("idle");return}N("[voice] Starting recording session, connecting voice stream"),p((o)=>{if(!o.voiceError)return o;return{...o,voiceError:null}});let e=[];if(N("[voice] startRecording: buffering audio while WebSocket connects"),I.current=[],!await ks.startRecording((o)=>{let s=Buffer.from(o);if(!W.current)v.current.push(s);if(O.current)O.current.send(s);else e.push(s);let a=xpK(o);if(!R.current&&a>0.01)R.current=!0;let n=I.current;if(n.length>=PLY)n.shift();n.push(a);let l=[...n];I.current=l,p((A6)=>({...A6,voiceAudioLevels:l}))},()=>{if(A.current==="recording")F()},{silenceDetection:!1})){H6(Error("[voice] Recording failed — no audio tool found")),H.current?.("Failed to start audio capture. Check that your microphone is accessible."),g(),C("idle"),p((o)=>({...o,voiceError:"Recording failed — no audio tool found"}));return}let $6=N7().language,M6=Sq8($6);d("tengu_voice_recording_started",{focusTriggered:W.current,sttLanguage:M6.code,sttLanguageIsDefault:!$6?.trim(),sttLanguageFellBack:M6.fellBackFrom!==void 0,systemLocaleLanguage:rJ7()});let j6=!1,G6=()=>Z.current!==t,w6=(o)=>{let s=E.current;Sm8({onTranscript:(a,n)=>{if(G6())return;if(j6=!0,N(`[voice] onTranscript: isFinal=${String(n)} text="${a}"`),n&&a.trim())if(W.current)N(`[voice] Focus mode: flushing final transcript immediately: "${a.trim()}"`),j.current(a.trim()),S.current+=a.trim().length,p((l)=>{if(l.voiceInterimTranscript==="")return l;return{...l,voiceInterimTranscript:""}}),w.current="",U();else{if(w.current)w.current+=" ";w.current+=a.trim(),N(`[voice] Accumulated final transcript: "${w.current}"`),p((l)=>{let A6=w.current;if(l.voiceInterimTranscript===A6)return l;return{...l,voiceInterimTranscript:A6}})}else if(!n){if(W.current)U();let l=a.trim(),A6=w.current?w.current+(l?" "+l:""):l;p((J6)=>{if(J6.voiceInterimTranscript===A6)return J6;return{...J6,voiceInterimTranscript:A6}})}},onError:(a,n)=>{if(G6()){N(`[voice] ignoring onError from stale session: ${a}`);return}if(E.current!==s){N(`[voice] ignoring stale onError from superseded attempt: ${a}`);return}if(!n?.fatal&&!j6&&A.current==="recording"){if(!T.current){T.current=!0,N(`[voice] early voice_stream error (pre-transcript), retrying once: ${a}`),d("tengu_voice_stream_early_retry",{}),O.current=null,E.current++,setTimeout((l,A6,J6)=>{if(l.current==="recording")A6(J6)},250,A,w6,o);return}}E.current++,H6(Error(`[voice] voice_stream error: ${a}`)),H.current?.(`Voice stream error: ${a}`),e.length=0,W.current=!1,g(),C("idle")},onClose:()=>{},onReady:(a)=>{if(G6()||A.current!=="recording"){a.close();return}O.current=a,x.current=!0;let n=32000;if(e.length>0){let l=0;for(let X6 of e)l+=X6.length;let A6=[[]],J6=0;for(let X6 of e){if(J6>0&&J6+X6.length>n)A6.push([]),J6=0;A6[A6.length-1].push(X6),J6+=X6.length}N(`[voice] onReady: flushing ${String(e.length)} buffered chunks (${String(l)} bytes) as ${String(A6.length)} coalesced frame(s)`);for(let X6 of A6)a.send(Buffer.concat(X6))}if(e.length=0,M.current)clearTimeout(M.current);if(X.current)M.current=setTimeout((l,A6,J6)=>{if(l.current=null,A6.current==="recording")J6()},T97,M,A,F)}},{language:M6.code,keyterms:o}).then((a)=>{if(G6()){a?.close();return}if(!a){N("[voice] Failed to connect to voice_stream (no OAuth token?)"),H.current?.("Voice mode requires a Claude.ai account. Please run /login to sign in."),e.length=0,g(),C("idle");return}if(A.current!=="recording"){e.length=0,a.close();return}})};Z97().then(w6)}let K6=I$.useCallback((t=JLY)=>{if(!_||!ae1())return;if(W.current)return;if(z&&f.current){N("[voice] Re-arming focus recording after silence timeout"),f.current=!1,W.current=!0,c(),U();return}let q6=A.current;if(q6==="processing")return;if(q6==="idle")N("[voice] handleKeyEvent: idle, starting recording session immediately"),c(),P.current=setTimeout((e,i,$6,M6,j6)=>{if(e.current=null,i.current==="recording"&&!$6.current)N("[voice] No auto-repeat seen, arming release timer via fallback"),$6.current=!0,M6.current=setTimeout((G6,w6,o)=>{if(G6.current=null,w6.current==="recording")o()},T97,M6,i,j6)},t,P,A,X,M,F);else if(q6==="recording"){if(X.current=!0,P.current)clearTimeout(P.current),P.current=null}if(M.current)clearTimeout(M.current);if(A.current==="recording"&&X.current)M.current=setTimeout((e,i,$6)=>{if(e.current=null,i.current==="recording")$6()},T97,M,A,F)},[_,z,g]);return I$.useEffect(()=>{if(!_&&A.current!=="idle")g(),C("idle");return()=>{g()}},[_,g]),{state:Y,handleKeyEvent:K6}}var I$,G97="en",HLY,bpK,ks=null,T97=200,JLY=600,MLY=2000,XLY=5000,PLY=16;var v97=y(()=>{NA6();hl6();k8();CpK();Cm8();_8();y8();mk();E8();U1();I$=O6(D6(),1),HLY={english:"en",spanish:"es",español:"es",espanol:"es",french:"fr",français:"fr",francais:"fr",japanese:"ja",日本語:"ja",german:"de",deutsch:"de",portuguese:"pt",português:"pt",portugues:"pt",italian:"it",italiano:"it",korean:"ko",한국어:"ko",hindi:"hi",हिन्दी:"hi",हिंदी:"hi",indonesian:"id","bahasa indonesia":"id",bahasa:"id",russian:"ru",русский:"ru",polish:"pl",polski:"pl",turkish:"tr",türkçe:"tr",turkce:"tr",dutch:"nl",nederlands:"nl",ukrainian:"uk",українська:"uk",greek:"el",ελληνικά:"el",czech:"cs",čeština:"cs",cestina:"cs",danish:"da",dansk:"da",swedish:"sv",svenska:"sv",norwegian:"no",norsk:"no"},bpK=new Set(["en","es","fr","ja","de","pt","it","ko","hi","id","ru","pl","tr","nl","uk","el","cs","da","sv","no"])});var upK={};T8(upK,{call:()=>fLY});var DLY=2,fLY=async()=>{if(!KH6()){if(!WJ())return{type:"text",value:"Voice mode requires a Claude.ai account. Please run /login to sign in."};return{type:"text",value:"Voice mode is not available."}}let q=N7();if(q.voiceEnabled===!0){if(W7("userSettings",{voiceEnabled:!1}).error)return{type:"text",value:"Failed to update settings. Check your settings file for syntax errors."};return WX.notifyChange("userSettings"),d("tengu_voice_toggled",{enabled:!1}),{type:"text",value:"Voice mode disabled."}}let{isVoiceStreamAvailable:_}=await Promise.resolve().then(() => (Cm8(),se1)),{checkRecordingAvailability:z}=await Promise.resolve().then(() => (CR6(),SR6)),Y=await z();if(!Y.available)return{type:"text",value:Y.reason??"Voice mode is not available in this environment."};if(!_())return{type:"text",value:"Voice mode requires a Claude.ai account. Please run /login to sign in."};let{checkVoiceDependencies:$,requestMicrophonePermission:A}=await Promise.resolve().then(() => (CR6(),SR6)),O=await $();if(!O.available)return{type:"text",value:`No audio recording tool found.${O.installCommand?`

Callers 3

Rq8Function · 0.85
dEYFunction · 0.85
CIYFunction · 0.85

Calls 2

Df8Function · 0.85
safeParseMethod · 0.80

Tested by

no test coverage detected