chatlab-cli 0.31.2-beta.1 → 0.31.2

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.
Files changed (92) hide show
  1. package/dist/{chat-command-V6NYTTPD.mjs → chat-command-QPL4GNHP.mjs} +8 -8
  2. package/dist/{chunk-7TDYBU5L.mjs → chunk-3SZWD7UM.mjs} +4 -4
  3. package/dist/{chunk-WL2ISRYH.mjs → chunk-64FKPYPJ.mjs} +11 -11
  4. package/dist/{chunk-LWC7JQ2W.mjs → chunk-6JKKHPXY.mjs} +2 -2
  5. package/dist/{chunk-67HNEIKY.mjs → chunk-BSSR4ZYW.mjs} +1878 -2038
  6. package/dist/chunk-BSSR4ZYW.mjs.map +1 -0
  7. package/dist/{chunk-ZF67S6RY.mjs → chunk-F2NZ7HAY.mjs} +2 -2
  8. package/dist/{chunk-5G2INROS.mjs → chunk-GYPBWKAU.mjs} +356 -483
  9. package/dist/chunk-GYPBWKAU.mjs.map +1 -0
  10. package/dist/{chunk-XZ5FFDLX.mjs → chunk-IK7GJTGY.mjs} +131 -117
  11. package/dist/chunk-IK7GJTGY.mjs.map +1 -0
  12. package/dist/{chunk-HUKZ2PBC.mjs → chunk-OAXVKNPN.mjs} +2 -2
  13. package/dist/{chunk-54GVCXHZ.mjs → chunk-OQ6N4PDD.mjs} +2 -2
  14. package/dist/{chunk-SJQVAKFA.mjs → chunk-S5PQM5J4.mjs} +4 -5
  15. package/dist/chunk-S5PQM5J4.mjs.map +1 -0
  16. package/dist/{chunk-OIZ64ET3.mjs → chunk-ZCXCHKQV.mjs} +3 -3
  17. package/dist/cli.mjs +8 -8
  18. package/dist/contacts-worker.mjs +2 -2
  19. package/dist/global-insight-worker.mjs +1 -1
  20. package/dist/{http-AMDWRKOH.mjs → http-NOEWVWCP.mjs} +11 -11
  21. package/dist/{import-WIJHB4LH.mjs → import-RS3HW7ZM.mjs} +7 -7
  22. package/dist/index.mjs +11 -11
  23. package/dist/{mcp-NC5YNTM5.mjs → mcp-7F3G47Z4.mjs} +8 -8
  24. package/dist/people-relationships-worker.mjs +2 -2
  25. package/dist/semantic-index-worker.mjs +1 -1
  26. package/dist/{src-UY4GCVNF.mjs → src-MNH5S423.mjs} +6 -22
  27. package/dist/{stream-import-JKQYRISL.mjs → stream-import-BPCHGRAN.mjs} +7 -7
  28. package/dist/{worker-runtime-KKUOJJTN.mjs → worker-runtime-TTAXGQ5R.mjs} +5 -5
  29. package/dist-web/assets/{ActionToolsPanel-BL0GQR6r.css → ActionToolsPanel-CbWhu_Uv.css} +1 -1
  30. package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-CvvNqXuh.js +110 -0
  31. package/dist-web/assets/{BufferResource-i1amDJTV.js → BufferResource-Dh2kaMuP.js} +1 -1
  32. package/dist-web/assets/{CanvasRenderer-DGa7AjdC.js → CanvasRenderer-B8hHywwz.js} +1 -1
  33. package/dist-web/assets/{Filter-BTlq0yU-.js → Filter-Bap1KMW6.js} +1 -1
  34. package/dist-web/assets/{MessageExportModal-D9C5t_zF.js → MessageExportModal-H3-LAaXY.js} +1 -1
  35. package/dist-web/assets/{PageHeader-BEWr2vsg.js → PageHeader-CzTV_lyM.js} +1 -1
  36. package/dist-web/assets/{RelationshipGalaxyCanvas-CSgPNRif.js → RelationshipGalaxyCanvas-C6ZoUZNc.js} +3 -3
  37. package/dist-web/assets/{RelationshipGalaxyThreeCanvas-CBAnU8vN.js → RelationshipGalaxyThreeCanvas-DV6B-7XB.js} +1 -1
  38. package/dist-web/assets/{RenderTargetSystem-Ctlu222X.js → RenderTargetSystem-Dpgyoac_.js} +1 -1
  39. package/dist-web/assets/{TimeSelect.vue_vue_type_script_setup_true_lang-D5vov0eO.js → TimeSelect.vue_vue_type_script_setup_true_lang--Tbo7p-l.js} +1 -1
  40. package/dist-web/assets/{WebGLRenderer-D2Zvhmcw.js → WebGLRenderer-DICnsAm5.js} +1 -1
  41. package/dist-web/assets/{WebGPURenderer-BOtP6h9o.js → WebGPURenderer-Bf0gkRK9.js} +1 -1
  42. package/dist-web/assets/{base-BMjDSaj6.js → base-D5T8QZ8b.js} +1 -1
  43. package/dist-web/assets/{browserAll-BhwLvWQY.js → browserAll-DcoCy7xY.js} +1 -1
  44. package/dist-web/assets/{dateFormat-dteP1INW.js → dateFormat-BDOkdsCR.js} +1 -1
  45. package/dist-web/assets/{electron-DCgfulPE.js → electron-CmhzSjaH.js} +1 -1
  46. package/dist-web/assets/{fetch-BbU4MPPu.js → fetch-BJka-sCN.js} +1 -1
  47. package/dist-web/assets/{fetch-CubnKpLG.js → fetch-BddgpyKJ.js} +1 -1
  48. package/dist-web/assets/{fetch-DgXWr9nB.js → fetch-C1mlq5VY.js} +1 -1
  49. package/dist-web/assets/{fetch-rJA9qLvd.js → fetch-CNz28Lv5.js} +1 -1
  50. package/dist-web/assets/{fetch-D5BrGna5.js → fetch-D71bG6Fc.js} +1 -1
  51. package/dist-web/assets/{fetch-CpvfCafG.js → fetch-D8xv4lgE.js} +1 -1
  52. package/dist-web/assets/{fetch-6q7oz7ZO.js → fetch-DfTM4Dah.js} +1 -1
  53. package/dist-web/assets/{fetch-B_0HIxs5.js → fetch-DtcNaN3d.js} +1 -1
  54. package/dist-web/assets/{fetch-DvZuLuTE.js → fetch-TATpgXht.js} +1 -1
  55. package/dist-web/assets/{fetch-BxHdB6X1.js → fetch-dI5w8lYN.js} +1 -1
  56. package/dist-web/assets/{index-DXcFBsM1.js → index-Bs4ZX2-v.js} +1 -1
  57. package/dist-web/assets/index-CF59LLOG.js +25 -0
  58. package/dist-web/assets/{index-CLijvqy3.js → index-CJ3WtSLo.js} +1 -1
  59. package/dist-web/assets/{index-D7aKwT6w.js → index-CJS6FVuj.js} +3 -3
  60. package/dist-web/assets/{index-Cj2GU1SR.js → index-CY5yJhCJ.js} +1 -1
  61. package/dist-web/assets/{index-DaZnh1zP.js → index-DClxj4T2.js} +2 -2
  62. package/dist-web/assets/{index-BoalB6nB.js → index-De3ImZb9.js} +1 -1
  63. package/dist-web/assets/{index-CUzFFw5b.js → index-Dp3gCHpK.js} +1 -1
  64. package/dist-web/assets/{index-Bp5VKUF9.js → index-DphjBwbA.js} +1 -1
  65. package/dist-web/assets/{index-Bs15Yc7I.js → index-Dtbu8m1o.js} +1 -1
  66. package/dist-web/assets/{index-t6s0nOlb.js → index-a1ZrlsKo.js} +1 -1
  67. package/dist-web/assets/{index-BfGKlkx3.js → index-qZ7jnIna.js} +2 -2
  68. package/dist-web/assets/{index-WJCmqKnh.js → index-soX5gDgh.js} +1 -1
  69. package/dist-web/assets/{web-BoTDL3HM.js → web-H9T1dZys.js} +1 -1
  70. package/dist-web/assets/{webworkerAll-c0ZvpENM.js → webworkerAll-D1Kui8G8.js} +1 -1
  71. package/dist-web/index.html +1 -1
  72. package/package.json +1 -1
  73. package/dist/chunk-5G2INROS.mjs.map +0 -1
  74. package/dist/chunk-67HNEIKY.mjs.map +0 -1
  75. package/dist/chunk-SJQVAKFA.mjs.map +0 -1
  76. package/dist/chunk-XZ5FFDLX.mjs.map +0 -1
  77. package/dist-web/assets/ActionToolsPanel.vue_vue_type_script_setup_true_lang-DVdpZpfD.js +0 -110
  78. package/dist-web/assets/index-DeV8SAiM.js +0 -25
  79. /package/dist/{chat-command-V6NYTTPD.mjs.map → chat-command-QPL4GNHP.mjs.map} +0 -0
  80. /package/dist/{chunk-7TDYBU5L.mjs.map → chunk-3SZWD7UM.mjs.map} +0 -0
  81. /package/dist/{chunk-WL2ISRYH.mjs.map → chunk-64FKPYPJ.mjs.map} +0 -0
  82. /package/dist/{chunk-LWC7JQ2W.mjs.map → chunk-6JKKHPXY.mjs.map} +0 -0
  83. /package/dist/{chunk-ZF67S6RY.mjs.map → chunk-F2NZ7HAY.mjs.map} +0 -0
  84. /package/dist/{chunk-HUKZ2PBC.mjs.map → chunk-OAXVKNPN.mjs.map} +0 -0
  85. /package/dist/{chunk-54GVCXHZ.mjs.map → chunk-OQ6N4PDD.mjs.map} +0 -0
  86. /package/dist/{chunk-OIZ64ET3.mjs.map → chunk-ZCXCHKQV.mjs.map} +0 -0
  87. /package/dist/{http-AMDWRKOH.mjs.map → http-NOEWVWCP.mjs.map} +0 -0
  88. /package/dist/{import-WIJHB4LH.mjs.map → import-RS3HW7ZM.mjs.map} +0 -0
  89. /package/dist/{mcp-NC5YNTM5.mjs.map → mcp-7F3G47Z4.mjs.map} +0 -0
  90. /package/dist/{src-UY4GCVNF.mjs.map → src-MNH5S423.mjs.map} +0 -0
  91. /package/dist/{stream-import-JKQYRISL.mjs.map → stream-import-BPCHGRAN.mjs.map} +0 -0
  92. /package/dist/{worker-runtime-KKUOJJTN.mjs.map → worker-runtime-TTAXGQ5R.mjs.map} +0 -0
@@ -1 +1 @@
1
- import{_ as Z,d as J}from"./vendor-nuxt-ui-DUpPmItD.js";import{u as V,M as Q,s as W,t as X,k as E,r as H}from"./index-DeV8SAiM.js";import{_ as tt}from"./LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js";import{u as et,w as st}from"./annual-summary-time-range-CK0IIPsY.js";import{_ as at,C as nt,g as it}from"./base-BMjDSaj6.js";import{f as ot}from"./dateFormat-dteP1INW.js";import{_ as B}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BWJ6kuSC.js";import{d as P,P as r,Z as l,ad as z,ae as R,ag as t,a0 as s,u as n,_ as rt,c,Q as q,U as p,T as A,aa as G,w as lt,F as ct,a1 as N,$ as U,r as K}from"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import"./vendor-snapdom--nZvo8Sg.js";import"./vendor-echarts-B-i_56Av.js";import"./vendor-zrender-5DcYjSZk.js";const dt={class:"grid grid-cols-2 gap-x-3 gap-y-4 sm:grid-cols-3 lg:grid-cols-4"},ut={class:"mb-1.5 text-[10px] font-semibold text-gray-500 dark:text-zinc-400"},gt={class:"grid grid-cols-7 gap-0.5","aria-hidden":"true"},mt=["title"],ht=P({__name:"AnnualCalendarGrid",props:{range:{},data:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>Math.max(...e.data.map(u=>u.messageCount),1)),k=c(()=>new Map(e.data.map(u=>[u.date,u.messageCount]))),b=c(()=>new Date(e.range.startTs*1e3)),i=c(()=>new Date(e.range.endTs*1e3)),$=c(()=>{const u=b.value,D=i.value,f=[],m=e.range.year??u.getFullYear(),M=e.range.mode==="year"?new Date(m,0,1):new Date(u.getFullYear(),u.getMonth(),1),L=e.range.mode==="year"?new Date(m,11,1):new Date(D.getFullYear(),D.getMonth(),1);for(;M<=L;){const _=M.getFullYear(),S=M.getMonth(),C=`${_}-${String(S+1).padStart(2,"0")}`,a=new Date(_,S+1,0).getDate(),g=Array.from({length:a},(j,d)=>{const F=d+1,I=`${C}-${String(F).padStart(2,"0")}`,x=new Date(_,S,F),v=k.value.get(I)??0,T=x>=w(u)&&x<=w(D);return{key:I,day:F,count:v,inRange:T,level:T&&v>0?Math.max(1,Math.ceil(v/Y.value*4)):0}});f.push({key:C,label:e.range.mode==="year"?o("insight.monthLabel",{month:S+1}):C.replace("-","/"),leadingDays:(new Date(_,S,1).getDay()+6)%7,days:g}),M.setMonth(M.getMonth()+1)}return f});function w(u){return new Date(u.getFullYear(),u.getMonth(),u.getDate())}return(u,D)=>(r(),l("div",dt,[(r(!0),l(z,null,R($.value,f=>(r(),l("div",{key:f.key,class:"min-w-0"},[t("div",ut,s(f.label),1),t("div",gt,[(r(!0),l(z,null,R(f.leadingDays,m=>(r(),l("span",{key:`blank-${m}`,class:"aspect-square"}))),128)),(r(!0),l(z,null,R(f.days,m=>(r(),l("span",{key:m.key,class:rt(["aspect-square min-h-[5px] rounded-[2px] bg-gray-100 dark:bg-zinc-800",{"opacity-30":!m.inRange,"bg-pink-200 dark:bg-pink-950":m.level===1,"bg-pink-300 dark:bg-pink-800":m.level===2,"bg-pink-500 dark:bg-pink-600":m.level===3,"bg-pink-700 dark:bg-pink-400":m.level===4}]),title:`${m.key}: ${m.count} ${n(o)("insight.messages")}`},null,10,mt))),128))])]))),128))]))}}),xt=P({__name:"AnnualMessageTrend",props:{range:{},data:{},height:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>({labels:e.data.map(k=>e.range.mode==="year"?o("insight.monthLabel",{month:Number(k.month.slice(5))}):k.month.replace("-","/")),values:e.data.map(k=>k.messageCount)}));return(k,b)=>(r(),q(n(at),{data:Y.value,height:h.height??260,"border-radius":3},null,8,["data","height"]))}}),vt={class:"grid gap-4 lg:grid-cols-12"},pt={class:"relative z-10 min-w-0 p-5 sm:p-6"},yt={class:"flex flex-col gap-5 xl:flex-row xl:items-start xl:justify-between"},_t={class:"min-w-0"},kt={class:"text-2xl font-bold text-gray-900 dark:text-white sm:text-3xl"},ft={class:"mt-3 space-y-1.5 text-xs font-medium text-gray-500 dark:text-zinc-400"},bt={class:"flex items-center gap-2"},wt={class:"font-mono"},Dt={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},Ct={class:"grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4 xl:shrink-0"},$t={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Mt={class:"mt-1 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},St={class:"mt-7 flex items-center justify-between gap-3"},Tt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},zt={class:"text-[10px] text-gray-400 dark:text-zinc-500"},Yt={class:"mt-2"},Lt={class:"min-w-0 p-5 sm:p-6"},At={class:"flex items-start justify-between gap-4"},Rt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Nt={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},jt={class:"shrink-0 text-right"},Ft={class:"font-mono text-lg font-black tabular-nums text-gray-900 dark:text-white"},Bt={class:"text-[9px] text-gray-400 dark:text-zinc-500"},It={class:"mt-5"},Vt={class:"min-w-0 p-5 sm:p-6"},Pt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ot={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ut={key:0,class:"mt-5 grid grid-cols-2 gap-x-5 gap-y-4 sm:grid-cols-3"},qt={class:"flex items-end justify-between gap-2"},Et={class:"truncate text-xs font-medium text-gray-600 dark:text-zinc-300"},Gt={class:"font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Kt={class:"mt-2 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},Zt={class:"mt-1.5 font-mono text-[9px] text-gray-400 dark:text-zinc-500"},Jt={key:1,class:"flex h-28 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},Qt={class:"min-w-0 p-5 sm:p-6"},Wt={class:"flex items-start justify-between gap-3"},Xt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ht={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},te={class:"flex shrink-0 gap-3 text-right"},ee={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},se={class:"text-[9px] text-gray-400 dark:text-zinc-500"},ae={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},ne={key:0,class:"mt-5 flex h-24 items-end gap-2"},ie={class:"flex h-16 w-full items-end rounded-sm bg-gray-100 dark:bg-zinc-800"},oe=["title"],re={class:"w-full truncate text-center font-mono text-[8px] text-gray-400 dark:text-zinc-500"},le={key:1,class:"flex h-24 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},ce={class:"min-w-0 p-5 sm:p-6"},de={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},ue={class:"mt-4 grid grid-cols-3 divide-x divide-gray-200 dark:divide-white/10"},ge={class:"truncate font-mono text-sm font-black tabular-nums text-gray-900 dark:text-white"},me={class:"mt-1 truncate text-[9px] font-medium text-gray-500 dark:text-zinc-400"},he={class:"mt-0.5 truncate text-[8px] text-gray-400 dark:text-zinc-500"},xe=P({__name:"AnnualInsightBoard",props:{range:{},metrics:{},coverage:{},monthlyActivity:{},dailyActivity:{},messageTypes:{},textLength:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>e.range.mode==="year"?o("insight.overviewCard.yearTitle",{year:e.range.year}):o("insight.overviewCard.recentTitle")),k=c(()=>ot(e.range.startTs,e.range.endTs,"YYYY/MM/DD")),b=c(()=>[{key:"messages",value:e.metrics.sentMessageCount},{key:"activeDays",value:e.metrics.activeDayCount},{key:"contacts",value:e.metrics.directContactCount},{key:"dailyMessages",value:e.metrics.averageMessagesPerDay}]),i=c(()=>e.monthlyActivity.reduce((a,g)=>!a||g.messageCount>a.messageCount?g:a,null)),$=c(()=>e.dailyActivity.reduce((a,g)=>!a||g.messageCount>a.messageCount?g:a,null)),w=c(()=>[...e.messageTypes].sort((a,g)=>g.count-a.count).slice(0,6)),u=c(()=>e.messageTypes.reduce((a,g)=>a+g.count,0)),D=c(()=>e.messageTypes.find(a=>a.type===Q.TEXT)?.count??0),f=c(()=>C(D.value,u.value)),m=c(()=>Math.max(...e.textLength.buckets.map(a=>a.count),1)),M=c(()=>{const a=Math.max(1,Math.round((e.range.endTs-e.range.startTs)/86400)+1);return C(e.metrics.activeDayCount,a)}),L=c(()=>[{key:"dailyContacts",value:_(e.metrics.averageDirectContactsPerDay),detail:o("insight.overviewCard.perDay")},{key:"peakMonth",value:S(i.value?.month),detail:o("insight.overviewCard.messagesCount",{count:_(i.value?.messageCount??0)})},{key:"peakDay",value:$.value?.date.slice(5).replace("-","/")??"-",detail:o("insight.overviewCard.messagesCount",{count:_($.value?.messageCount??0)})}]);function _(a){return Number.isInteger(a)?a.toLocaleString():a.toLocaleString(void 0,{maximumFractionDigits:1})}function S(a){return a?e.range.mode==="year"?o("insight.monthLabel",{month:Number(a.slice(5))}):a.replace("-","/"):"-"}function C(a,g){return g>0?Math.round(a/g*100):0}return(a,g)=>{const j=Z;return r(),l("div",vt,[p(n(B),{class:"relative isolate lg:col-span-8"},{default:A(()=>[p(n(nt)),t("section",pt,[t("div",yt,[t("div",_t,[t("h2",kt,s(Y.value),1),t("div",ft,[t("div",bt,[p(j,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"}),t("span",wt,s(k.value),1)]),t("div",Dt,[p(j,{name:"i-heroicons-circle-stack",class:"h-4 w-4 opacity-70"}),t("span",null,s(n(o)("insight.status.coverage",{analyzed:h.coverage.analyzedSessions,total:h.coverage.totalSessions})),1)])])]),t("div",Ct,[(r(!0),l(z,null,R(b.value,d=>(r(),l("div",{key:d.key,class:"min-w-0"},[t("div",$t,s(_(d.value)),1),t("div",Mt,s(n(o)(`insight.kpis.${d.key}`)),1)]))),128))])]),t("div",St,[t("h3",Tt,s(n(o)("insight.sections.overview")),1),t("span",zt,s(n(o)("insight.sections.overviewDescription")),1)]),t("div",Yt,[p(xt,{range:h.range,data:h.monthlyActivity,height:210},null,8,["range","data"])])])]),_:1}),p(n(B),{class:"lg:col-span-4"},{default:A(()=>[t("section",Lt,[t("div",At,[t("div",null,[t("h3",Rt,s(n(o)("insight.overviewCard.activity")),1),t("p",Nt,s(n(o)("insight.sections.activityDescription")),1)]),t("div",jt,[t("div",Ft,s(h.metrics.activeDayCount),1),t("div",Bt,s(n(o)("insight.overviewCard.activeRate",{rate:M.value})),1)])]),t("div",It,[p(ht,{range:h.range,data:h.dailyActivity},null,8,["range","data"])])])]),_:1}),p(n(B),{class:"lg:col-span-5"},{default:A(()=>[t("section",Vt,[t("h3",Pt,s(n(o)("insight.sections.messageTypes")),1),t("p",Ot,s(n(o)("insight.sections.messageTypesDescription")),1),w.value.length?(r(),l("div",Ut,[(r(!0),l(z,null,R(w.value,d=>(r(),l("div",{key:d.type,class:"min-w-0"},[t("div",qt,[t("span",Et,s(n(it)(d.type,n(o))),1),t("span",Gt,s(C(d.count,u.value))+"% ",1)]),t("div",Kt,[t("div",{class:"h-full rounded-full bg-pink-500",style:G({width:`${C(d.count,u.value)}%`})},null,4)]),t("div",Zt,s(_(d.count)),1)]))),128))])):(r(),l("div",Jt,s(n(o)("insight.noData")),1))])]),_:1}),p(n(B),{class:"lg:col-span-3"},{default:A(()=>[t("section",Qt,[t("div",Wt,[t("div",null,[t("h3",Xt,s(n(o)("insight.sections.textLength")),1),t("p",Ht,s(n(o)("insight.overviewCard.textRatio"))+" "+s(f.value)+"% ",1)]),t("div",te,[t("div",null,[t("div",ee,s(h.textLength.median??"-"),1),t("div",se,s(n(o)("insight.length.median")),1)]),t("div",null,[t("div",ae,s(h.textLength.p90??"-"),1),g[0]||(g[0]=t("div",{class:"text-[9px] text-gray-400 dark:text-zinc-500"},"P90",-1))])])]),h.textLength.textMessageCount?(r(),l("div",ne,[(r(!0),l(z,null,R(h.textLength.buckets,d=>(r(),l("div",{key:d.key,class:"flex min-w-0 flex-1 flex-col items-center gap-2"},[t("div",ie,[t("div",{class:"w-full rounded-sm bg-blue-500/80 dark:bg-blue-400/80",style:G({height:`${Math.max(4,d.count/m.value*100)}%`}),title:`${d.key}: ${d.count}`},null,12,oe)]),t("span",re,s(d.key),1)]))),128))])):(r(),l("div",le,s(n(o)("insight.noTextData")),1))])]),_:1}),p(n(B),{class:"lg:col-span-4"},{default:A(()=>[t("section",ce,[t("h3",de,s(n(o)("insight.overviewCard.keyMetrics")),1),t("div",ue,[(r(!0),l(z,null,R(L.value,d=>(r(),l("div",{key:d.key,class:"min-w-0 px-3 first:pl-0 last:pr-0"},[t("div",ge,s(d.value),1),t("div",me,s(n(o)(`insight.overviewCard.${d.key}`)),1),t("div",he,s(d.detail),1)]))),128))])])]),_:1})])}}}),ve={class:"min-h-0 flex-1 overflow-y-auto"},pe={class:"mx-auto w-full max-w-[1120px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},ye={class:"min-w-0"},_e={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 backdrop-blur-sm dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},ke={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 backdrop-blur-sm dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},fe={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},be={key:0},we={key:1},je=P({__name:"index",setup(h){const{t:e}=V(),o=W(),{showSettings:Y}=X(o),k=new Date().getFullYear(),b=et(),i=K(null),$=K("");let w=null,u=0;const D=c(()=>{const x=b.modelValue.value?.state;return x?x.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:x.year??k,acceptStale:!0}:null}),f=c(()=>JSON.stringify(D.value)),m=c(()=>(i.value?.coverage.missingOwnerSessions??0)+(i.value?.coverage.unresolvedOwnerSessions??0)),M=c(()=>i.value?.task.status==="running"),L=c(()=>i.value?.metrics!==null&&i.value?.metrics!==void 0),_=c(()=>L.value&&i.value?.metrics?.sentMessageCount===0),S=c(()=>(i.value?.coverage.totalSessions??0)>0&&i.value?.coverage.analyzedSessions===0&&m.value>0),C=c(()=>b.modelValue.value?.state.mode==="year"?b.modelValue.value.state.year:void 0),a=c(()=>{const x=C.value,v=i.value?.latestDataYear;return x===void 0||v===null||v===void 0||x===v?null:{year:x,latestYear:v}});lt(f,()=>{d(),D.value&&(i.value=null,g(!1))},{immediate:!0}),st(Y,()=>{g(!1)}),ct(d);async function g(x){const v=D.value;if(!v)return;const T=++u;$.value="";try{const y=x?await E().recomputeAnnualSummary(v):await E().getAnnualSummary(v);if(T!==u)return;i.value=y,y.metrics&&b.setAvailableYears(y.availableDataYears),y.task.status==="running"&&j()}catch(y){if(T!==u)return;const O=y instanceof Error?y.message:String(y);$.value=O,H(`Global insight annual summary failed: ${O}`,y instanceof Error?y.stack:void 0)}}function j(){d(),w=setTimeout(()=>{g(!1)},900)}function d(){w&&(clearTimeout(w),w=null)}function F(){const x=i.value?.latestDataYear;x&&b.switchToYear(x)}function I(){o.openSettings("data","missing-owner")}return(x,v)=>{const T=Z,y=J;return r(),l("main",ve,[t("div",pe,[m.value>0?(r(),l("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:I},[p(T,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),t("span",ye,s(n(e)("insight.status.ownerIssues",{count:m.value})),1),p(T,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):N("",!0),i.value?.cache.status==="stale"||M.value&&L.value?(r(),l("div",_e,[p(T,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin text-amber-600 dark:text-amber-400"}),U(" "+s(n(e)("insight.status.updating")),1)])):N("",!0),$.value||i.value?.task.status==="failed"?(r(),l("div",ke,[t("span",null,s(n(e)("insight.status.failed")),1),p(y,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:v[0]||(v[0]=O=>g(!0))},{default:A(()=>[U(s(n(e)("insight.actions.retry")),1)]),_:1})])):N("",!0),!L.value&&!$.value&&i.value?.task.status!=="failed"?(r(),q(tt,{key:3,height:"min(52vh, 420px)",text:i.value?.task.status==="running"?n(e)("insight.status.computingProgress",{processed:i.value.task.processedSessions,total:i.value.task.totalSessions}):n(e)("insight.status.loading")},null,8,["text"])):i.value?.metrics&&i.value.textLength?(r(),l(z,{key:4},[_.value&&!S.value?(r(),l("div",fe,[a.value?(r(),l("span",be,s(n(e)("insight.status.noDataWithLatest",a.value)),1)):(r(),l("span",we,s(n(e)("insight.noData")),1)),a.value?(r(),q(y,{key:2,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:F},{default:A(()=>[U(s(n(e)("insight.actions.switchYear",{year:a.value.latestYear})),1)]),_:1})):N("",!0)])):N("",!0),p(xe,{range:i.value.range,metrics:i.value.metrics,coverage:i.value.coverage,"monthly-activity":i.value.monthlyActivity,"daily-activity":i.value.dailyActivity,"message-types":i.value.messageTypes,"text-length":i.value.textLength},null,8,["range","metrics","coverage","monthly-activity","daily-activity","message-types","text-length"])],64)):N("",!0)])])}}});export{je as default};
1
+ import{_ as Z,d as J}from"./vendor-nuxt-ui-DUpPmItD.js";import{u as V,M as Q,s as W,t as X,k as E,r as H}from"./index-CF59LLOG.js";import{_ as tt}from"./LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js";import{u as et,w as st}from"./annual-summary-time-range-CK0IIPsY.js";import{_ as at,C as nt,g as it}from"./base-D5T8QZ8b.js";import{f as ot}from"./dateFormat-BDOkdsCR.js";import{_ as B}from"./ThemeCard.vue_vue_type_script_setup_true_lang-BWJ6kuSC.js";import{d as P,P as r,Z as l,ad as z,ae as R,ag as t,a0 as s,u as n,_ as rt,c,Q as q,U as p,T as A,aa as G,w as lt,F as ct,a1 as N,$ as U,r as K}from"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-echarts-wordcloud-Ca8n6qS6.js";import"./vendor-snapdom--nZvo8Sg.js";import"./vendor-echarts-B-i_56Av.js";import"./vendor-zrender-5DcYjSZk.js";const dt={class:"grid grid-cols-2 gap-x-3 gap-y-4 sm:grid-cols-3 lg:grid-cols-4"},ut={class:"mb-1.5 text-[10px] font-semibold text-gray-500 dark:text-zinc-400"},gt={class:"grid grid-cols-7 gap-0.5","aria-hidden":"true"},mt=["title"],ht=P({__name:"AnnualCalendarGrid",props:{range:{},data:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>Math.max(...e.data.map(u=>u.messageCount),1)),k=c(()=>new Map(e.data.map(u=>[u.date,u.messageCount]))),b=c(()=>new Date(e.range.startTs*1e3)),i=c(()=>new Date(e.range.endTs*1e3)),$=c(()=>{const u=b.value,D=i.value,f=[],m=e.range.year??u.getFullYear(),M=e.range.mode==="year"?new Date(m,0,1):new Date(u.getFullYear(),u.getMonth(),1),L=e.range.mode==="year"?new Date(m,11,1):new Date(D.getFullYear(),D.getMonth(),1);for(;M<=L;){const _=M.getFullYear(),S=M.getMonth(),C=`${_}-${String(S+1).padStart(2,"0")}`,a=new Date(_,S+1,0).getDate(),g=Array.from({length:a},(j,d)=>{const F=d+1,I=`${C}-${String(F).padStart(2,"0")}`,x=new Date(_,S,F),v=k.value.get(I)??0,T=x>=w(u)&&x<=w(D);return{key:I,day:F,count:v,inRange:T,level:T&&v>0?Math.max(1,Math.ceil(v/Y.value*4)):0}});f.push({key:C,label:e.range.mode==="year"?o("insight.monthLabel",{month:S+1}):C.replace("-","/"),leadingDays:(new Date(_,S,1).getDay()+6)%7,days:g}),M.setMonth(M.getMonth()+1)}return f});function w(u){return new Date(u.getFullYear(),u.getMonth(),u.getDate())}return(u,D)=>(r(),l("div",dt,[(r(!0),l(z,null,R($.value,f=>(r(),l("div",{key:f.key,class:"min-w-0"},[t("div",ut,s(f.label),1),t("div",gt,[(r(!0),l(z,null,R(f.leadingDays,m=>(r(),l("span",{key:`blank-${m}`,class:"aspect-square"}))),128)),(r(!0),l(z,null,R(f.days,m=>(r(),l("span",{key:m.key,class:rt(["aspect-square min-h-[5px] rounded-[2px] bg-gray-100 dark:bg-zinc-800",{"opacity-30":!m.inRange,"bg-pink-200 dark:bg-pink-950":m.level===1,"bg-pink-300 dark:bg-pink-800":m.level===2,"bg-pink-500 dark:bg-pink-600":m.level===3,"bg-pink-700 dark:bg-pink-400":m.level===4}]),title:`${m.key}: ${m.count} ${n(o)("insight.messages")}`},null,10,mt))),128))])]))),128))]))}}),xt=P({__name:"AnnualMessageTrend",props:{range:{},data:{},height:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>({labels:e.data.map(k=>e.range.mode==="year"?o("insight.monthLabel",{month:Number(k.month.slice(5))}):k.month.replace("-","/")),values:e.data.map(k=>k.messageCount)}));return(k,b)=>(r(),q(n(at),{data:Y.value,height:h.height??260,"border-radius":3},null,8,["data","height"]))}}),vt={class:"grid gap-4 lg:grid-cols-12"},pt={class:"relative z-10 min-w-0 p-5 sm:p-6"},yt={class:"flex flex-col gap-5 xl:flex-row xl:items-start xl:justify-between"},_t={class:"min-w-0"},kt={class:"text-2xl font-bold text-gray-900 dark:text-white sm:text-3xl"},ft={class:"mt-3 space-y-1.5 text-xs font-medium text-gray-500 dark:text-zinc-400"},bt={class:"flex items-center gap-2"},wt={class:"font-mono"},Dt={class:"flex flex-wrap items-center gap-x-2 gap-y-1"},Ct={class:"grid grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4 xl:shrink-0"},$t={class:"font-mono text-xl font-black tabular-nums text-gray-900 dark:text-white"},Mt={class:"mt-1 truncate text-[10px] font-medium text-gray-500 dark:text-zinc-400"},St={class:"mt-7 flex items-center justify-between gap-3"},Tt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},zt={class:"text-[10px] text-gray-400 dark:text-zinc-500"},Yt={class:"mt-2"},Lt={class:"min-w-0 p-5 sm:p-6"},At={class:"flex items-start justify-between gap-4"},Rt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Nt={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},jt={class:"shrink-0 text-right"},Ft={class:"font-mono text-lg font-black tabular-nums text-gray-900 dark:text-white"},Bt={class:"text-[9px] text-gray-400 dark:text-zinc-500"},It={class:"mt-5"},Vt={class:"min-w-0 p-5 sm:p-6"},Pt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ot={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},Ut={key:0,class:"mt-5 grid grid-cols-2 gap-x-5 gap-y-4 sm:grid-cols-3"},qt={class:"flex items-end justify-between gap-2"},Et={class:"truncate text-xs font-medium text-gray-600 dark:text-zinc-300"},Gt={class:"font-mono text-xs font-black tabular-nums text-gray-900 dark:text-white"},Kt={class:"mt-2 h-1 overflow-hidden rounded-full bg-gray-100 dark:bg-zinc-800"},Zt={class:"mt-1.5 font-mono text-[9px] text-gray-400 dark:text-zinc-500"},Jt={key:1,class:"flex h-28 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},Qt={class:"min-w-0 p-5 sm:p-6"},Wt={class:"flex items-start justify-between gap-3"},Xt={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},Ht={class:"mt-1 text-[10px] text-gray-400 dark:text-zinc-500"},te={class:"flex shrink-0 gap-3 text-right"},ee={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},se={class:"text-[9px] text-gray-400 dark:text-zinc-500"},ae={class:"font-mono text-sm font-black text-gray-900 dark:text-white"},ne={key:0,class:"mt-5 flex h-24 items-end gap-2"},ie={class:"flex h-16 w-full items-end rounded-sm bg-gray-100 dark:bg-zinc-800"},oe=["title"],re={class:"w-full truncate text-center font-mono text-[8px] text-gray-400 dark:text-zinc-500"},le={key:1,class:"flex h-24 items-center justify-center text-xs text-gray-400 dark:text-zinc-600"},ce={class:"min-w-0 p-5 sm:p-6"},de={class:"text-[11px] font-bold uppercase text-pink-600 dark:text-pink-400"},ue={class:"mt-4 grid grid-cols-3 divide-x divide-gray-200 dark:divide-white/10"},ge={class:"truncate font-mono text-sm font-black tabular-nums text-gray-900 dark:text-white"},me={class:"mt-1 truncate text-[9px] font-medium text-gray-500 dark:text-zinc-400"},he={class:"mt-0.5 truncate text-[8px] text-gray-400 dark:text-zinc-500"},xe=P({__name:"AnnualInsightBoard",props:{range:{},metrics:{},coverage:{},monthlyActivity:{},dailyActivity:{},messageTypes:{},textLength:{}},setup(h){const e=h,{t:o}=V(),Y=c(()=>e.range.mode==="year"?o("insight.overviewCard.yearTitle",{year:e.range.year}):o("insight.overviewCard.recentTitle")),k=c(()=>ot(e.range.startTs,e.range.endTs,"YYYY/MM/DD")),b=c(()=>[{key:"messages",value:e.metrics.sentMessageCount},{key:"activeDays",value:e.metrics.activeDayCount},{key:"contacts",value:e.metrics.directContactCount},{key:"dailyMessages",value:e.metrics.averageMessagesPerDay}]),i=c(()=>e.monthlyActivity.reduce((a,g)=>!a||g.messageCount>a.messageCount?g:a,null)),$=c(()=>e.dailyActivity.reduce((a,g)=>!a||g.messageCount>a.messageCount?g:a,null)),w=c(()=>[...e.messageTypes].sort((a,g)=>g.count-a.count).slice(0,6)),u=c(()=>e.messageTypes.reduce((a,g)=>a+g.count,0)),D=c(()=>e.messageTypes.find(a=>a.type===Q.TEXT)?.count??0),f=c(()=>C(D.value,u.value)),m=c(()=>Math.max(...e.textLength.buckets.map(a=>a.count),1)),M=c(()=>{const a=Math.max(1,Math.round((e.range.endTs-e.range.startTs)/86400)+1);return C(e.metrics.activeDayCount,a)}),L=c(()=>[{key:"dailyContacts",value:_(e.metrics.averageDirectContactsPerDay),detail:o("insight.overviewCard.perDay")},{key:"peakMonth",value:S(i.value?.month),detail:o("insight.overviewCard.messagesCount",{count:_(i.value?.messageCount??0)})},{key:"peakDay",value:$.value?.date.slice(5).replace("-","/")??"-",detail:o("insight.overviewCard.messagesCount",{count:_($.value?.messageCount??0)})}]);function _(a){return Number.isInteger(a)?a.toLocaleString():a.toLocaleString(void 0,{maximumFractionDigits:1})}function S(a){return a?e.range.mode==="year"?o("insight.monthLabel",{month:Number(a.slice(5))}):a.replace("-","/"):"-"}function C(a,g){return g>0?Math.round(a/g*100):0}return(a,g)=>{const j=Z;return r(),l("div",vt,[p(n(B),{class:"relative isolate lg:col-span-8"},{default:A(()=>[p(n(nt)),t("section",pt,[t("div",yt,[t("div",_t,[t("h2",kt,s(Y.value),1),t("div",ft,[t("div",bt,[p(j,{name:"i-heroicons-calendar",class:"h-4 w-4 opacity-70"}),t("span",wt,s(k.value),1)]),t("div",Dt,[p(j,{name:"i-heroicons-circle-stack",class:"h-4 w-4 opacity-70"}),t("span",null,s(n(o)("insight.status.coverage",{analyzed:h.coverage.analyzedSessions,total:h.coverage.totalSessions})),1)])])]),t("div",Ct,[(r(!0),l(z,null,R(b.value,d=>(r(),l("div",{key:d.key,class:"min-w-0"},[t("div",$t,s(_(d.value)),1),t("div",Mt,s(n(o)(`insight.kpis.${d.key}`)),1)]))),128))])]),t("div",St,[t("h3",Tt,s(n(o)("insight.sections.overview")),1),t("span",zt,s(n(o)("insight.sections.overviewDescription")),1)]),t("div",Yt,[p(xt,{range:h.range,data:h.monthlyActivity,height:210},null,8,["range","data"])])])]),_:1}),p(n(B),{class:"lg:col-span-4"},{default:A(()=>[t("section",Lt,[t("div",At,[t("div",null,[t("h3",Rt,s(n(o)("insight.overviewCard.activity")),1),t("p",Nt,s(n(o)("insight.sections.activityDescription")),1)]),t("div",jt,[t("div",Ft,s(h.metrics.activeDayCount),1),t("div",Bt,s(n(o)("insight.overviewCard.activeRate",{rate:M.value})),1)])]),t("div",It,[p(ht,{range:h.range,data:h.dailyActivity},null,8,["range","data"])])])]),_:1}),p(n(B),{class:"lg:col-span-5"},{default:A(()=>[t("section",Vt,[t("h3",Pt,s(n(o)("insight.sections.messageTypes")),1),t("p",Ot,s(n(o)("insight.sections.messageTypesDescription")),1),w.value.length?(r(),l("div",Ut,[(r(!0),l(z,null,R(w.value,d=>(r(),l("div",{key:d.type,class:"min-w-0"},[t("div",qt,[t("span",Et,s(n(it)(d.type,n(o))),1),t("span",Gt,s(C(d.count,u.value))+"% ",1)]),t("div",Kt,[t("div",{class:"h-full rounded-full bg-pink-500",style:G({width:`${C(d.count,u.value)}%`})},null,4)]),t("div",Zt,s(_(d.count)),1)]))),128))])):(r(),l("div",Jt,s(n(o)("insight.noData")),1))])]),_:1}),p(n(B),{class:"lg:col-span-3"},{default:A(()=>[t("section",Qt,[t("div",Wt,[t("div",null,[t("h3",Xt,s(n(o)("insight.sections.textLength")),1),t("p",Ht,s(n(o)("insight.overviewCard.textRatio"))+" "+s(f.value)+"% ",1)]),t("div",te,[t("div",null,[t("div",ee,s(h.textLength.median??"-"),1),t("div",se,s(n(o)("insight.length.median")),1)]),t("div",null,[t("div",ae,s(h.textLength.p90??"-"),1),g[0]||(g[0]=t("div",{class:"text-[9px] text-gray-400 dark:text-zinc-500"},"P90",-1))])])]),h.textLength.textMessageCount?(r(),l("div",ne,[(r(!0),l(z,null,R(h.textLength.buckets,d=>(r(),l("div",{key:d.key,class:"flex min-w-0 flex-1 flex-col items-center gap-2"},[t("div",ie,[t("div",{class:"w-full rounded-sm bg-blue-500/80 dark:bg-blue-400/80",style:G({height:`${Math.max(4,d.count/m.value*100)}%`}),title:`${d.key}: ${d.count}`},null,12,oe)]),t("span",re,s(d.key),1)]))),128))])):(r(),l("div",le,s(n(o)("insight.noTextData")),1))])]),_:1}),p(n(B),{class:"lg:col-span-4"},{default:A(()=>[t("section",ce,[t("h3",de,s(n(o)("insight.overviewCard.keyMetrics")),1),t("div",ue,[(r(!0),l(z,null,R(L.value,d=>(r(),l("div",{key:d.key,class:"min-w-0 px-3 first:pl-0 last:pr-0"},[t("div",ge,s(d.value),1),t("div",me,s(n(o)(`insight.overviewCard.${d.key}`)),1),t("div",he,s(d.detail),1)]))),128))])])]),_:1})])}}}),ve={class:"min-h-0 flex-1 overflow-y-auto"},pe={class:"mx-auto w-full max-w-[1120px] space-y-6 px-4 py-5 sm:px-6 sm:py-6"},ye={class:"min-w-0"},_e={key:1,class:"flex items-center gap-2 rounded-xl border border-amber-100 bg-amber-50/50 px-4 py-2.5 text-xs text-amber-800 backdrop-blur-sm dark:border-amber-950/40 dark:bg-amber-950/20 dark:text-amber-300"},ke={key:2,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-red-200 bg-red-50/50 px-4 py-2.5 text-xs text-red-800 backdrop-blur-sm dark:border-red-950/40 dark:bg-red-950/20 dark:text-red-300"},fe={key:0,class:"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-gray-200 bg-white p-4 text-xs text-gray-600 dark:border-zinc-800 dark:bg-zinc-900/50 dark:text-zinc-300"},be={key:0},we={key:1},je=P({__name:"index",setup(h){const{t:e}=V(),o=W(),{showSettings:Y}=X(o),k=new Date().getFullYear(),b=et(),i=K(null),$=K("");let w=null,u=0;const D=c(()=>{const x=b.modelValue.value?.state;return x?x.mode==="recent"?{mode:"recent",days:365,acceptStale:!0}:{mode:"year",year:x.year??k,acceptStale:!0}:null}),f=c(()=>JSON.stringify(D.value)),m=c(()=>(i.value?.coverage.missingOwnerSessions??0)+(i.value?.coverage.unresolvedOwnerSessions??0)),M=c(()=>i.value?.task.status==="running"),L=c(()=>i.value?.metrics!==null&&i.value?.metrics!==void 0),_=c(()=>L.value&&i.value?.metrics?.sentMessageCount===0),S=c(()=>(i.value?.coverage.totalSessions??0)>0&&i.value?.coverage.analyzedSessions===0&&m.value>0),C=c(()=>b.modelValue.value?.state.mode==="year"?b.modelValue.value.state.year:void 0),a=c(()=>{const x=C.value,v=i.value?.latestDataYear;return x===void 0||v===null||v===void 0||x===v?null:{year:x,latestYear:v}});lt(f,()=>{d(),D.value&&(i.value=null,g(!1))},{immediate:!0}),st(Y,()=>{g(!1)}),ct(d);async function g(x){const v=D.value;if(!v)return;const T=++u;$.value="";try{const y=x?await E().recomputeAnnualSummary(v):await E().getAnnualSummary(v);if(T!==u)return;i.value=y,y.metrics&&b.setAvailableYears(y.availableDataYears),y.task.status==="running"&&j()}catch(y){if(T!==u)return;const O=y instanceof Error?y.message:String(y);$.value=O,H(`Global insight annual summary failed: ${O}`,y instanceof Error?y.stack:void 0)}}function j(){d(),w=setTimeout(()=>{g(!1)},900)}function d(){w&&(clearTimeout(w),w=null)}function F(){const x=i.value?.latestDataYear;x&&b.switchToYear(x)}function I(){o.openSettings("data","missing-owner")}return(x,v)=>{const T=Z,y=J;return r(),l("main",ve,[t("div",pe,[m.value>0?(r(),l("button",{key:0,type:"button",class:"inline-flex w-fit max-w-full items-center gap-2 rounded-lg bg-amber-50 px-3 py-2 text-left text-xs text-amber-800 transition-colors hover:bg-amber-100 dark:bg-amber-950/20 dark:text-amber-300 dark:hover:bg-amber-950/30",onClick:I},[p(T,{name:"i-heroicons-user-circle",class:"h-4 w-4 shrink-0"}),t("span",ye,s(n(e)("insight.status.ownerIssues",{count:m.value})),1),p(T,{name:"i-heroicons-arrow-right",class:"h-3.5 w-3.5 shrink-0 opacity-70"})])):N("",!0),i.value?.cache.status==="stale"||M.value&&L.value?(r(),l("div",_e,[p(T,{name:"i-heroicons-arrow-path",class:"h-4 w-4 shrink-0 animate-spin text-amber-600 dark:text-amber-400"}),U(" "+s(n(e)("insight.status.updating")),1)])):N("",!0),$.value||i.value?.task.status==="failed"?(r(),l("div",ke,[t("span",null,s(n(e)("insight.status.failed")),1),p(y,{size:"xs",color:"error",variant:"soft",icon:"i-heroicons-arrow-path",onClick:v[0]||(v[0]=O=>g(!0))},{default:A(()=>[U(s(n(e)("insight.actions.retry")),1)]),_:1})])):N("",!0),!L.value&&!$.value&&i.value?.task.status!=="failed"?(r(),q(tt,{key:3,height:"min(52vh, 420px)",text:i.value?.task.status==="running"?n(e)("insight.status.computingProgress",{processed:i.value.task.processedSessions,total:i.value.task.totalSessions}):n(e)("insight.status.loading")},null,8,["text"])):i.value?.metrics&&i.value.textLength?(r(),l(z,{key:4},[_.value&&!S.value?(r(),l("div",fe,[a.value?(r(),l("span",be,s(n(e)("insight.status.noDataWithLatest",a.value)),1)):(r(),l("span",we,s(n(e)("insight.noData")),1)),a.value?(r(),q(y,{key:2,size:"xs",variant:"soft",color:"neutral",icon:"i-heroicons-arrow-right",onClick:F},{default:A(()=>[U(s(n(e)("insight.actions.switchYear",{year:a.value.latestYear})),1)]),_:1})):N("",!0)])):N("",!0),p(xe,{range:i.value.range,metrics:i.value.metrics,coverage:i.value.coverage,"monthly-activity":i.value.monthlyActivity,"daily-activity":i.value.dailyActivity,"message-types":i.value.messageTypes,"text-length":i.value.textLength},null,8,["range","metrics","coverage","monthly-activity","daily-activity","message-types","text-length"])],64)):N("",!0)])])}}});export{je as default};
@@ -1 +1 @@
1
- import{f as n,r as s}from"./index-DeV8SAiM.js";import"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-nuxt-ui-DUpPmItD.js";import"./vendor-snapdom--nZvo8Sg.js";class d{async getVersion(){return"0.31.2"}async fetchRemoteConfig(t){try{const e=await fetch(t);return e.ok?{success:!0,data:(e.headers.get("content-type")||"").includes("application/json")||t.split("?")[0].endsWith(".json")?await e.json():await e.text()}:{success:!1,error:`HTTP ${e.status}`}}catch(e){return{success:!1,error:String(e)}}}setThemeSource(t){}async getOpenAtLogin(){return!1}async setOpenAtLogin(t){return{success:!1,error:"Not available in web mode"}}async getAnalyticsEnabled(){try{return(await(await n("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(t){try{return await(await n("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})})).json()}catch{return{success:!1}}}async trackDailyActive(t){await n("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{platform:"cli-web",locale:t}})}).catch(()=>{})}async showOpenDialog(t){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(t){if(globalThis.isSecureContext===!1)return{success:!1,error:"Image clipboard requires HTTPS or localhost"};if(typeof navigator>"u"||typeof navigator.clipboard?.write!="function"||typeof ClipboardItem>"u")return{success:!1,error:"Image clipboard is not supported by this browser"};try{const e=fetch(t).then(async r=>{if(!r.ok)throw new Error(`Failed to read screenshot data: HTTP ${r.status}`);const a=await r.blob();if(a.type!=="image/png")throw new Error(`Unsupported screenshot MIME type: ${a.type||"unknown"}`);return a});return await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),{success:!0}}catch(e){const r=e instanceof Error?`${e.name}: ${e.message}`:String(e);return s(`Image clipboard write failed: ${r}`,e instanceof Error?e.stack:void 0),{success:!1,error:r}}}async checkUpdate(){try{return await(await n("/_web/system/check-update")).json()}catch(t){return{hasUpdate:!1,currentVersion:"unknown",error:t instanceof Error?t.message:String(t)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{d as WebPlatformAdapter};
1
+ import{f as n,r as s}from"./index-CF59LLOG.js";import"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-nuxt-ui-DUpPmItD.js";import"./vendor-snapdom--nZvo8Sg.js";class d{async getVersion(){return"0.31.2"}async fetchRemoteConfig(t){try{const e=await fetch(t);return e.ok?{success:!0,data:(e.headers.get("content-type")||"").includes("application/json")||t.split("?")[0].endsWith(".json")?await e.json():await e.text()}:{success:!1,error:`HTTP ${e.status}`}}catch(e){return{success:!1,error:String(e)}}}setThemeSource(t){}async getOpenAtLogin(){return!1}async setOpenAtLogin(t){return{success:!1,error:"Not available in web mode"}}async getAnalyticsEnabled(){try{return(await(await n("/_web/telemetry/enabled")).json()).enabled===!0}catch{return!1}}async setAnalyticsEnabled(t){try{return await(await n("/_web/telemetry/enabled",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({enabled:t})})).json()}catch{return{success:!1}}}async trackDailyActive(t){await n("/_web/telemetry/track",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({eventName:"app_active",properties:{platform:"cli-web",locale:t}})}).catch(()=>{})}async showOpenDialog(t){return{canceled:!0,filePaths:[]}}async copyImageToClipboard(t){if(globalThis.isSecureContext===!1)return{success:!1,error:"Image clipboard requires HTTPS or localhost"};if(typeof navigator>"u"||typeof navigator.clipboard?.write!="function"||typeof ClipboardItem>"u")return{success:!1,error:"Image clipboard is not supported by this browser"};try{const e=fetch(t).then(async r=>{if(!r.ok)throw new Error(`Failed to read screenshot data: HTTP ${r.status}`);const a=await r.blob();if(a.type!=="image/png")throw new Error(`Unsupported screenshot MIME type: ${a.type||"unknown"}`);return a});return await navigator.clipboard.write([new ClipboardItem({"image/png":e})]),{success:!0}}catch(e){const r=e instanceof Error?`${e.name}: ${e.message}`:String(e);return s(`Image clipboard write failed: ${r}`,e instanceof Error?e.stack:void 0),{success:!1,error:r}}}async checkUpdate(){try{return await(await n("/_web/system/check-update")).json()}catch(t){return{hasUpdate:!1,currentVersion:"unknown",error:t instanceof Error?t.message:String(t)}}}async performUpdate(){return{success:!1,error:"Web update is unavailable. Run clb update in your terminal."}}async relaunch(){window.location.reload()}}export{d as WebPlatformAdapter};
@@ -1,4 +1,4 @@
1
- import{M as w,f as B,O,ar as A,a0 as k,j as _,G as M,b as U,N as E,I as z,a1 as T,T as b,ak as V,R as Y,w as X,r as P}from"./RelationshipGalaxyCanvas-CSgPNRif.js";import{F as q}from"./Filter-BTlq0yU-.js";import"./index-DeV8SAiM.js";import"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-nuxt-ui-DUpPmItD.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-DaZnh1zP.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js";import"./people-page-header-D93GTPBO.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";const v=new w;function G(g,e){e.clear();const t=e.matrix;for(let r=0;r<g.length;r++){const i=g[r];if(i.globalDisplayStatus<7)continue;const s=i.renderGroup??i.parentRenderGroup;s?.isCachedAsTexture?e.matrix=v.copyFrom(s.textureOffsetInverseTransform).append(i.worldTransform):s?._parentCacheAsTextureRenderGroup?e.matrix=v.copyFrom(s._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(i.groupTransform):e.matrix=i.worldTransform,e.addBounds(i.bounds)}return e.matrix=t,e}function y(g){return typeof g.getCanvasFilterString=="function"}class L{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new k,this.cssFilterString=""}}class R{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),r=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=r,t.container=e.container,t.cssFilterString="",r.every(o=>!o.enabled)){t.skip=!0;return}const i=[],s=1;for(const o of r){if(!o.enabled)continue;if(!y(o)){this._warnUnsupportedFilter(o);continue}const l=o.getCanvasFilterString();if(l===null){this._warnUnsupportedFilter(o);continue}l&&i.push(l)}if(i.length===0&&s===1){t.skip=!0;return}t.cssFilterString=i.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const n=this.renderer.canvasContext.activeContext,a=n.filter||"none";if(this._savedStates.push({filter:a,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const o=this.renderer.canvasContext.activeResolution||1;n.save(),n.setTransform(1,0,0,1,0,0),n.beginPath(),n.rect(t.bounds.x*o,t.bounds.y*o,t.bounds.width*o,t.bounds.height*o),n.clip()}else t.useClip=!1;t.cssFilterString&&(n.filter=a!=="none"?`${a} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const r=this.renderer.canvasContext.activeContext;e.useClip?r.restore():r.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!t?.length||t.every(d=>!d.enabled))return e;const r=[],i=1;for(const d of t){if(!d.enabled)continue;if(!y(d)){this._warnUnsupportedFilter(d);continue}const h=d.getCanvasFilterString();if(h===null){this._warnUnsupportedFilter(d);continue}h&&r.push(h)}if(r.length===0&&i===1)return e;const s=B.getCanvasSource(e);if(!s)return e;const n=e.frame,a=e.source._resolution??e.source.resolution??1,o=n.width,l=n.height,f=O.getOptimalCanvasAndContext(o,l,a),{canvas:c,context:u}=f;u.setTransform(1,0,0,1,0,0),u.clearRect(0,0,c.width,c.height),r.length&&(u.filter=r.join(" "));const p=n.x*a,m=n.y*a,x=o*a,F=l*a;return u.drawImage(s,p,m,x,F,0,0,x,F),u.filter="none",u.globalAlpha=1,A(c,o,l,a)}_calculateFilterArea(e,t){if(e.renderables?G(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const i=(e.container.renderGroup||e.container.parentRenderGroup)?.cacheToLocalTransform;i&&t.applyMatrix(i)}}_warnUnsupportedFilter(e){const t=e?.constructor?.name||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new L),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}R.extension={type:[_.CanvasSystem],name:"filter"};var W=`in vec2 aPosition;
1
+ import{M as w,f as B,O,ar as A,a0 as k,j as _,G as M,b as U,N as E,I as z,a1 as T,T as b,ak as V,R as Y,w as X,r as P}from"./RelationshipGalaxyCanvas-C6ZoUZNc.js";import{F as q}from"./Filter-Bap1KMW6.js";import"./index-CF59LLOG.js";import"./vendor-reka-ui-BLnO2MqY.js";import"./vendor-nuxt-ui-DUpPmItD.js";import"./vendor-snapdom--nZvo8Sg.js";import"./index-DClxj4T2.js";import"./LoadingState.vue_vue_type_script_setup_true_lang-B2KAoiMG.js";import"./people-page-header-D93GTPBO.js";import"./relationship-galaxy-viewport-Cwfa51ER.js";const v=new w;function G(g,e){e.clear();const t=e.matrix;for(let r=0;r<g.length;r++){const i=g[r];if(i.globalDisplayStatus<7)continue;const s=i.renderGroup??i.parentRenderGroup;s?.isCachedAsTexture?e.matrix=v.copyFrom(s.textureOffsetInverseTransform).append(i.worldTransform):s?._parentCacheAsTextureRenderGroup?e.matrix=v.copyFrom(s._parentCacheAsTextureRenderGroup.inverseWorldTransform).append(i.groupTransform):e.matrix=i.worldTransform,e.addBounds(i.bounds)}return e.matrix=t,e}function y(g){return typeof g.getCanvasFilterString=="function"}class L{constructor(){this.skip=!1,this.useClip=!1,this.filters=null,this.container=null,this.bounds=new k,this.cssFilterString=""}}class R{constructor(e){this._filterStack=[],this._filterStackIndex=0,this._savedStates=[],this._alphaMultiplier=1,this._warnedFilterTypes=new Set,this.renderer=e}push(e){const t=this._pushFilterFrame(),r=e.filterEffect.filters;if(t.skip=!1,t.useClip=!1,t.filters=r,t.container=e.container,t.cssFilterString="",r.every(o=>!o.enabled)){t.skip=!0;return}const i=[],s=1;for(const o of r){if(!o.enabled)continue;if(!y(o)){this._warnUnsupportedFilter(o);continue}const l=o.getCanvasFilterString();if(l===null){this._warnUnsupportedFilter(o);continue}l&&i.push(l)}if(i.length===0&&s===1){t.skip=!0;return}t.cssFilterString=i.join(" "),this._calculateFilterArea(e,t.bounds),t.useClip=!!e.filterEffect.filterArea;const n=this.renderer.canvasContext.activeContext,a=n.filter||"none";if(this._savedStates.push({filter:a,alphaMultiplier:this._alphaMultiplier}),t.useClip&&Number.isFinite(t.bounds.width)&&Number.isFinite(t.bounds.height)&&t.bounds.width>0&&t.bounds.height>0){const o=this.renderer.canvasContext.activeResolution||1;n.save(),n.setTransform(1,0,0,1,0,0),n.beginPath(),n.rect(t.bounds.x*o,t.bounds.y*o,t.bounds.width*o,t.bounds.height*o),n.clip()}else t.useClip=!1;t.cssFilterString&&(n.filter=a!=="none"?`${a} ${t.cssFilterString}`:t.cssFilterString)}pop(){const e=this._popFilterFrame();if(e.skip)return;const t=this._savedStates.pop();if(!t)return;const r=this.renderer.canvasContext.activeContext;e.useClip?r.restore():r.filter=t.filter,this._alphaMultiplier=t.alphaMultiplier}generateFilteredTexture({texture:e,filters:t}){if(!t?.length||t.every(d=>!d.enabled))return e;const r=[],i=1;for(const d of t){if(!d.enabled)continue;if(!y(d)){this._warnUnsupportedFilter(d);continue}const h=d.getCanvasFilterString();if(h===null){this._warnUnsupportedFilter(d);continue}h&&r.push(h)}if(r.length===0&&i===1)return e;const s=B.getCanvasSource(e);if(!s)return e;const n=e.frame,a=e.source._resolution??e.source.resolution??1,o=n.width,l=n.height,f=O.getOptimalCanvasAndContext(o,l,a),{canvas:c,context:u}=f;u.setTransform(1,0,0,1,0,0),u.clearRect(0,0,c.width,c.height),r.length&&(u.filter=r.join(" "));const p=n.x*a,m=n.y*a,x=o*a,F=l*a;return u.drawImage(s,p,m,x,F,0,0,x,F),u.filter="none",u.globalAlpha=1,A(c,o,l,a)}_calculateFilterArea(e,t){if(e.renderables?G(e.renderables,t):e.filterEffect.filterArea?(t.clear(),t.addRect(e.filterEffect.filterArea),t.applyMatrix(e.container.worldTransform)):e.container.getFastGlobalBounds(!0,t),e.container){const i=(e.container.renderGroup||e.container.parentRenderGroup)?.cacheToLocalTransform;i&&t.applyMatrix(i)}}_warnUnsupportedFilter(e){const t=e?.constructor?.name||"Filter";this._warnedFilterTypes.has(t)||(this._warnedFilterTypes.add(t),console.warn(`CanvasRenderer: filter "${t}" is not supported in Canvas2D and will be skipped.`))}get alphaMultiplier(){return this._alphaMultiplier}_pushFilterFrame(){let e=this._filterStack[this._filterStackIndex];return e||(e=this._filterStack[this._filterStackIndex]=new L),this._filterStackIndex++,e}_popFilterFrame(){return this._filterStackIndex<=0?this._filterStack[0]:(this._filterStackIndex--,this._filterStack[this._filterStackIndex])}destroy(){this._filterStack=null,this._savedStates=null,this._warnedFilterTypes=null,this._alphaMultiplier=1}}R.extension={type:[_.CanvasSystem],name:"filter"};var W=`in vec2 aPosition;
2
2
  out vec2 vTextureCoord;
3
3
 
4
4
  uniform vec4 uInputSize;
@@ -5,7 +5,7 @@
5
5
  <title>ChatLab</title>
6
6
  <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
7
7
  <link rel="icon" href="/favicon.ico" />
8
- <script type="module" crossorigin src="/assets/index-DeV8SAiM.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-CF59LLOG.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/vendor-reka-ui-BLnO2MqY.js">
10
10
  <link rel="modulepreload" crossorigin href="/assets/vendor-nuxt-ui-DUpPmItD.js">
11
11
  <link rel="modulepreload" crossorigin href="/assets/vendor-snapdom--nZvo8Sg.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chatlab-cli",
3
- "version": "0.31.2-beta.1",
3
+ "version": "0.31.2",
4
4
  "description": "ChatLab CLI & Service - Chat history analysis tool",
5
5
  "type": "module",
6
6
  "bin": {