chatlab-cli 0.24.0 → 0.24.1

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 (61) hide show
  1. package/README.md +5 -2
  2. package/dist/{chunk-KCBIBRHL.mjs → chunk-43XWYC3M.mjs} +2 -2
  3. package/dist/{chunk-A6JCL4PT.mjs → chunk-CIIQ3S2X.mjs} +24 -10
  4. package/dist/chunk-CIIQ3S2X.mjs.map +1 -0
  5. package/dist/{chunk-XJJXSOLO.mjs → chunk-N5DGZQB4.mjs} +172 -41
  6. package/dist/chunk-N5DGZQB4.mjs.map +1 -0
  7. package/dist/{chunk-RLCFXTTS.mjs → chunk-QJI6AOAT.mjs} +2 -2
  8. package/dist/{chunk-36W2HWQN.mjs → chunk-QY6P2YS7.mjs} +2 -2
  9. package/dist/{chunk-NE4A6PND.mjs → chunk-ZL322NVL.mjs} +23 -26
  10. package/dist/chunk-ZL322NVL.mjs.map +1 -0
  11. package/dist/cli.mjs +2 -2
  12. package/dist/{http-OPQ352FZ.mjs → http-TPX74BLK.mjs} +6 -6
  13. package/dist/{import-GZMDLK2E.mjs → import-B745DRHD.mjs} +4 -4
  14. package/dist/index.mjs +6 -6
  15. package/dist/{mcp-SHZ2CVXY.mjs → mcp-YWAVG5XW.mjs} +3 -3
  16. package/dist/{stream-import-RDDB3N7B.mjs → stream-import-OPALPVWF.mjs} +3 -3
  17. package/dist/{update-checker-JG5K67O2.mjs → update-checker-JIBA7T4U.mjs} +24 -21
  18. package/dist/update-checker-JIBA7T4U.mjs.map +1 -0
  19. package/dist-web/assets/{DebugToolsPanel.vue_vue_type_script_setup_true_lang-_gbTn1ha.js → DebugToolsPanel.vue_vue_type_script_setup_true_lang-BBDrsJfe.js} +9 -9
  20. package/dist-web/assets/MessageExportModal-CSfaY25B.js +1 -0
  21. package/dist-web/assets/{electron-BIWBW8k_.js → electron-BUeXfvxT.js} +1 -1
  22. package/dist-web/assets/electron-BynNUuEA.js +1 -0
  23. package/dist-web/assets/{fetch-BhsrPRzn.js → fetch-B2q6973s.js} +1 -1
  24. package/dist-web/assets/{fetch-CnyupWWc.js → fetch-BGMRmQx0.js} +2 -2
  25. package/dist-web/assets/{fetch-ClDGP9DK.js → fetch-BneHn5qk.js} +1 -1
  26. package/dist-web/assets/{fetch-DwPB8NOH.js → fetch-BohUj3CQ.js} +1 -1
  27. package/dist-web/assets/{fetch-BOevuRK_.js → fetch-BtHwWs8A.js} +1 -1
  28. package/dist-web/assets/{fetch-DFWZ48Xw.js → fetch-CARsBVl0.js} +1 -1
  29. package/dist-web/assets/{fetch-CvaXKzA-.js → fetch-Ck3tjoLa.js} +1 -1
  30. package/dist-web/assets/{fetch-DKD1bKt2.js → fetch-DypPduyQ.js} +1 -1
  31. package/dist-web/assets/{fetch-ChECfwh7.js → fetch-DzNuFdFM.js} +1 -1
  32. package/dist-web/assets/{fetch-D1_jL6PO.js → fetch-RDFt3hmp.js} +1 -1
  33. package/dist-web/assets/index-BRwEubUe.js +173 -0
  34. package/dist-web/assets/{index-Bzg8BftZ.js → index-BvaWRM6_.js} +1 -1
  35. package/dist-web/assets/{index-BVQsKKwg.js → index-Bvlj3dMn.js} +1 -1
  36. package/dist-web/assets/{index-D6ga3hbF.js → index-C5LrQG3N.js} +3 -3
  37. package/dist-web/assets/index-DB-iqXzV.css +1 -0
  38. package/dist-web/assets/index-DCWvD-4L.js +2 -0
  39. package/dist-web/assets/index-DS1rzk1I.js +8 -0
  40. package/dist-web/assets/{vendor-nuxt-ui-BLMzqeB8.js → vendor-nuxt-ui-BYU7dz8t.js} +1 -1
  41. package/dist-web/assets/{web-DtlveK3q.js → web-CXPkmhis.js} +1 -1
  42. package/dist-web/index.html +3 -3
  43. package/package.json +1 -1
  44. package/dist/chunk-A6JCL4PT.mjs.map +0 -1
  45. package/dist/chunk-NE4A6PND.mjs.map +0 -1
  46. package/dist/chunk-XJJXSOLO.mjs.map +0 -1
  47. package/dist/update-checker-JG5K67O2.mjs.map +0 -1
  48. package/dist-web/assets/MessageExportModal-n4JgNg_F.js +0 -1
  49. package/dist-web/assets/electron-Bt9dK4Sr.js +0 -1
  50. package/dist-web/assets/index-BN79SJSr.js +0 -173
  51. package/dist-web/assets/index-C-5bP7_E.js +0 -2
  52. package/dist-web/assets/index-ESCx9pRR.js +0 -8
  53. package/dist-web/assets/index-JbR9Q-bb.css +0 -1
  54. package/dist-web/assets/model-catalog-DUuKjIVU.js +0 -1
  55. /package/dist/{chunk-KCBIBRHL.mjs.map → chunk-43XWYC3M.mjs.map} +0 -0
  56. /package/dist/{chunk-RLCFXTTS.mjs.map → chunk-QJI6AOAT.mjs.map} +0 -0
  57. /package/dist/{chunk-36W2HWQN.mjs.map → chunk-QY6P2YS7.mjs.map} +0 -0
  58. /package/dist/{http-OPQ352FZ.mjs.map → http-TPX74BLK.mjs.map} +0 -0
  59. /package/dist/{import-GZMDLK2E.mjs.map → import-B745DRHD.mjs.map} +0 -0
  60. /package/dist/{mcp-SHZ2CVXY.mjs.map → mcp-YWAVG5XW.mjs.map} +0 -0
  61. /package/dist/{stream-import-RDDB3N7B.mjs.map → stream-import-OPALPVWF.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ import{e as de,b as le,j as ce,a as se,g as ue,r as ge}from"./vendor-nuxt-ui-BYU7dz8t.js";import{u as J,e as ne,T as ye,j as ie,i as ve,U as me,c as xe,z as he,y as O,l as pe}from"./index-DS1rzk1I.js";import{p as X,J as Q,w as W,d as re,G as l,P as u,a5 as t,R as T,T as n,u as y,L as I,K as R,Z as N,a3 as Z,H as Y,U as H,bA as ae,bB as oe,b as $,h as P,bE as fe,a0 as q,a9 as ke,Q as te,n as be,by as _e,W as we,bp as G}from"./vendor-reka-ui-CnB0mMNX.js";import{c as $e}from"./DebugToolsPanel.vue_vue_type_script_setup_true_lang-BBDrsJfe.js";import"./vendor-snapdom-XnBoh1gd.js";import"./index-BvaWRM6_.js";import"./vendor-echarts-wordcloud-CZ9gsX8l.js";import"./vendor-echarts-C5u62NnM.js";import"./vendor-zrender-DFl4U2Oe.js";const Se={class:"p-4 space-y-6"},Ie={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"},Ce={class:"text-gray-500 text-xs ml-1"},Te={class:"flex gap-2 mb-2"},Me={key:0,class:"flex flex-wrap gap-2"},ze=["onClick"],De={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"},Le={class:"space-y-2"},Be={key:0,class:"flex gap-2 items-center"},Fe={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"},Ue={class:"text-gray-500 text-xs ml-1"},Re={class:"max-h-60 overflow-y-auto border border-gray-200 dark:border-gray-700 rounded-md"},Pe={key:0,class:"p-4 text-center text-gray-500"},Ve={key:1,class:"p-4 text-center text-gray-500 text-sm"},He={key:2,class:"divide-y divide-gray-100 dark:divide-gray-700"},je=["checked","onChange"],Ee={class:"text-sm text-gray-700 dark:text-gray-300 truncate"},Ne={class:"text-xs text-gray-400 ml-auto"},Ae={key:0,class:"mt-2 text-xs text-gray-500"},Ke={class:"block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"},Ye={class:"text-gray-500 text-xs ml-1"},We=X({__name:"ConditionPanel",props:{keywords:{default:()=>[]},keywordsModifiers:{},timeRange:{default:null},timeRangeModifiers:{},senderIds:{default:()=>[]},senderIdsModifiers:{},contextSize:{default:10},contextSizeModifiers:{}},emits:["update:keywords","update:timeRange","update:senderIds","update:contextSize"],setup(v){const{t:C}=J(),M=ne(),h=Q(v,"keywords"),m=Q(v,"timeRange"),w=Q(v,"senderIds"),z=Q(v,"contextSize"),L=$(""),r=$([]),p=$(!1),k=$("all"),x=$(""),D=$(""),B=[{id:"all",label:"analysis.filter.allTime"},{id:"today",label:"analysis.filter.today"},{id:"week",label:"analysis.filter.lastWeek"},{id:"month",label:"analysis.filter.lastMonth"},{id:"3months",label:"analysis.filter.last3Months"},{id:"year",label:"analysis.filter.lastYear"},{id:"custom",label:"analysis.filter.customTime"}],F=P(()=>B.map(s=>({label:C(s.label),value:s.id})));W(k,()=>{a()});const j=$(null);async function E(){const s=M.currentSessionId;if(s){p.value=!0;try{r.value=await ie().getMembers(s)}catch(e){console.error("加载成员失败:",e)}finally{p.value=!1}}}async function V(){const s=M.currentSessionId;if(s)try{const e=await ie().getTimeRange(s);e&&(j.value=e)}catch(e){console.error("加载时间范围失败:",e)}}function U(){const s=L.value.trim();s&&!h.value.includes(s)&&(h.value=[...h.value,s],L.value="")}function c(s){h.value=h.value.filter(e=>e!==s)}function g(s){s.key==="Enter"&&(s.preventDefault(),U())}function o(s){w.value.includes(s)?w.value=w.value.filter(e=>e!==s):w.value=[...w.value,s]}function a(){const s=Math.floor(Date.now()/1e3),e=new Date;e.setHours(0,0,0,0);const d=Math.floor(e.getTime()/1e3);switch(k.value){case"all":m.value=null;break;case"today":m.value={start:d,end:s};break;case"week":m.value={start:s-10080*60,end:s};break;case"month":m.value={start:s-720*60*60,end:s};break;case"3months":m.value={start:s-2160*60*60,end:s};break;case"year":m.value={start:s-365*24*60*60,end:s};break;case"custom":if(x.value&&D.value){const f=new Date(x.value).getTime()/1e3,i=new Date(D.value).getTime()/1e3+86399;m.value={start:f,end:i}}break}}const b=$(""),A=P(()=>{if(!b.value)return r.value;const s=b.value.toLowerCase();return r.value.filter(e=>e.accountName?.toLowerCase().includes(s)||e.groupNickname?.toLowerCase().includes(s)||e.platformId.toLowerCase().includes(s)||e.aliases.some(d=>d.toLowerCase().includes(s)))});return re(()=>{E(),V()}),(s,e)=>{const d=de,f=le,i=se,S=ce;return l(),u("div",Se,[t("div",null,[t("label",Ie,[T(n(y(C)("analysis.filter.keywords"))+" ",1),t("span",Ce,"("+n(y(C)("analysis.filter.keywordsHint"))+")",1)]),t("div",Te,[I(d,{modelValue:L.value,"onUpdate:modelValue":e[0]||(e[0]=_=>L.value=_),placeholder:y(C)("analysis.filter.keywordPlaceholder"),class:"flex-1",onKeydown:g},null,8,["modelValue","placeholder"]),I(f,{size:"sm",onClick:U},{default:R(()=>[T(n(y(C)("common.add")),1)]),_:1})]),h.value.length>0?(l(),u("div",Me,[(l(!0),u(N,null,Z(h.value,_=>(l(),Y(S,{key:_,color:"primary",variant:"subtle",class:"gap-1"},{default:R(()=>[T(n(_)+" ",1),t("button",{class:"ml-1 hover:text-red-500",onClick:K=>c(_)},[I(i,{name:"i-heroicons-x-mark",class:"w-3 h-3"})],8,ze)]),_:2},1024))),128))])):H("",!0)]),t("div",null,[t("label",De,n(y(C)("analysis.filter.timeRange")),1),t("div",Le,[I(ye,{modelValue:k.value,"onUpdate:modelValue":e[1]||(e[1]=_=>k.value=_),items:F.value,size:"sm"},null,8,["modelValue","items"]),k.value==="custom"?(l(),u("div",Be,[ae(t("input",{"onUpdate:modelValue":e[2]||(e[2]=_=>x.value=_),type:"date",class:"flex-1 px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",onChange:a},null,544),[[oe,x.value]]),e[6]||(e[6]=t("span",{class:"text-gray-500"},"~",-1)),ae(t("input",{"onUpdate:modelValue":e[3]||(e[3]=_=>D.value=_),type:"date",class:"flex-1 px-3 py-1.5 text-sm border border-gray-300 dark:border-gray-600 rounded-md bg-white dark:bg-gray-800",onChange:a},null,544),[[oe,D.value]])])):H("",!0)])]),t("div",null,[t("label",Fe,[T(n(y(C)("analysis.filter.senders"))+" ",1),t("span",Ue,"("+n(y(C)("analysis.filter.sendersHint"))+")",1)]),I(d,{modelValue:b.value,"onUpdate:modelValue":e[4]||(e[4]=_=>b.value=_),placeholder:y(C)("analysis.filter.searchMember"),icon:"i-heroicons-magnifying-glass",size:"sm",class:"mb-2"},null,8,["modelValue","placeholder"]),t("div",Re,[p.value?(l(),u("div",Pe,[I(i,{name:"i-heroicons-arrow-path",class:"w-5 h-5 animate-spin"})])):A.value.length===0?(l(),u("div",Ve,n(y(C)("analysis.filter.noMembers")),1)):(l(),u("div",He,[(l(!0),u(N,null,Z(A.value,_=>(l(),u("label",{key:_.id,class:"flex items-center gap-2 px-3 py-2 hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer"},[t("input",{type:"checkbox",checked:w.value.includes(_.id),class:"text-primary-500 rounded",onChange:K=>o(_.id)},null,40,je),t("span",Ee,n(_.groupNickname||_.accountName||_.platformId),1),t("span",Ne,"("+n(_.messageCount)+")",1)]))),128))]))]),w.value.length>0?(l(),u("div",Ae,n(y(C)("analysis.filter.selectedCount",{count:w.value.length})),1)):H("",!0)]),t("div",null,[t("label",Ke,[T(n(y(C)("analysis.filter.contextSize"))+" ",1),t("span",Ye,"±"+n(z.value)+" "+n(y(C)("analysis.filter.messages")),1)]),ae(t("input",{"onUpdate:modelValue":e[5]||(e[5]=_=>z.value=_),type:"range",min:"0",max:"50",step:"5",class:"w-full h-2 bg-gray-200 dark:bg-gray-700 rounded-lg appearance-none cursor-pointer"},null,512),[[oe,z.value,void 0,{number:!0}]]),e[7]||(e[7]=t("div",{class:"flex justify-between text-xs text-gray-400 mt-1"},[t("span",null,"0"),t("span",null,"25"),t("span",null,"50")],-1))])])}}}),Oe={class:"p-4 flex flex-col h-full min-h-0"},Ge={key:0,class:"flex-none mb-2 text-sm text-primary-500"},Qe={class:"flex-1 min-h-0"},Ze={key:0,class:"flex items-center justify-center h-full"},qe={key:1,class:"flex items-center justify-center h-full text-gray-500 text-sm"},Je=["onClick"],Xe={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},et={class:"flex items-center gap-2"},tt={class:"text-xs text-gray-500"},st=["checked","onChange"],nt=["checked","onChange"],at={class:"flex-1 min-w-0"},ot={class:"flex items-center gap-2"},lt={class:"text-sm text-gray-700 dark:text-gray-300"},rt={class:"flex items-center gap-2 text-xs text-gray-500"},it=X({__name:"SessionPanel",props:{selectedIds:{default:()=>[]},selectedIdsModifiers:{}},emits:["update:selectedIds"],setup(v){const{t:C}=J(),M=ne(),h=Q(v,"selectedIds"),m=$(new Set);W(h,c=>{m.value=new Set(c)},{immediate:!0});const w=$([]),z=$(!1),L=$(null),r=P(()=>{const c={};for(const a of w.value){const b=new Date(a.startTs*1e3).toLocaleDateString();c[b]||(c[b]=[]),c[b].push(a)}const g=Object.keys(c).sort((a,b)=>new Date(b).getTime()-new Date(a).getTime()),o=[];for(const a of g){o.push({type:"date",date:a,sessionCount:c[a].length});for(const b of c[a])o.push({type:"session",session:b,date:a})}return o}),p=fe(P(()=>({count:r.value.length,getScrollElement:()=>L.value,estimateSize:c=>r.value[c]?.type==="date"?36:56,overscan:10}))),k=P(()=>p.value.getVirtualItems());async function x(){const c=M.currentSessionId;if(c){z.value=!0;try{w.value=await ve().getSessions(c)}catch(g){console.error("加载会话失败:",g)}finally{z.value=!1}}}function D(c){return m.value.has(c)}function B(c){const g=new Set(m.value);g.has(c)?g.delete(c):g.add(c),m.value=g,h.value=Array.from(g)}function F(c){return r.value.filter(g=>g.type==="session"&&g.date===c).map(g=>g.session.id)}function j(c){const g=F(c),o=g.every(b=>m.value.has(b)),a=new Set(m.value);if(o)for(const b of g)a.delete(b);else for(const b of g)a.add(b);m.value=a,h.value=Array.from(a)}function E(c){const g=F(c);return g.length>0&&g.every(o=>m.value.has(o))}function V(c){return new Date(c*1e3).toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})}function U(c,g){const o=g-c;return o<60?`${o}秒`:o<3600?`${Math.floor(o/60)}分钟`:`${Math.floor(o/3600)}小时${Math.floor(o%3600/60)}分钟`}return re(()=>{x()}),(c,g)=>{const o=se;return l(),u("div",Oe,[h.value.length>0?(l(),u("div",Ge,n(y(C)("analysis.filter.selectedSessions",{count:h.value.length})),1)):H("",!0),t("div",Qe,[z.value?(l(),u("div",Ze,[I(o,{name:"i-heroicons-arrow-path",class:"w-6 h-6 animate-spin text-gray-400"})])):w.value.length===0?(l(),u("div",qe,n(y(C)("analysis.filter.noSessions")),1)):(l(),u("div",{key:2,ref_key:"scrollContainerRef",ref:L,class:"h-full overflow-y-auto"},[t("div",{style:q({height:`${y(p).getTotalSize()}px`,position:"relative"})},[(l(!0),u(N,null,Z(k.value,a=>(l(),u("div",{key:String(a.key),style:q({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${a.start}px)`})},[r.value[a.index].type==="date"?(l(),u("div",{key:0,class:"flex items-center justify-between px-2 py-1.5 bg-gray-100 dark:bg-gray-800 rounded-md cursor-pointer hover:bg-gray-200 dark:hover:bg-gray-700",onClick:b=>j(r.value[a.index].date)},[t("span",Xe,n(r.value[a.index].date),1),t("div",et,[t("span",tt,n(r.value[a.index].sessionCount)+" 个会话",1),t("input",{type:"checkbox",checked:E(r.value[a.index].date),class:"text-primary-500 rounded",onClick:g[0]||(g[0]=ke(()=>{},["stop"])),onChange:b=>j(r.value[a.index].date)},null,40,st)])],8,Je)):(l(),u("label",{key:1,class:te(["flex items-center gap-3 px-3 py-2 ml-2 rounded-md hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer border border-transparent",{"border-primary-300 bg-primary-50 dark:border-primary-600 dark:bg-primary-900/20":D(r.value[a.index].session.id)}])},[t("input",{type:"checkbox",checked:D(r.value[a.index].session.id),class:"text-primary-500 rounded",onChange:b=>B(r.value[a.index].session.id)},null,40,nt),t("div",at,[t("div",ot,[t("span",lt,n(V(r.value[a.index].session.startTs))+" - "+n(V(r.value[a.index].session.endTs)),1)]),t("div",rt,[t("span",null,n(r.value[a.index].session.messageCount)+" 条消息",1),g[1]||(g[1]=t("span",null,"·",-1)),t("span",null,n(U(r.value[a.index].session.startTs,r.value[a.index].session.endTs)),1)])])],2))],4))),128))],4)],512))])])}}}),dt={class:"flex-1 flex flex-col overflow-hidden bg-gray-50 dark:bg-gray-900"},ct={key:0,class:"flex-none px-4 py-3 bg-white dark:bg-gray-800 border-b border-gray-200 dark:border-gray-700"},ut={class:"flex items-center justify-between mb-2"},ft={class:"flex items-center gap-6 text-sm"},gt={class:"text-gray-600 dark:text-gray-400"},yt={class:"font-medium text-gray-900 dark:text-white"},vt={class:"text-gray-600 dark:text-gray-400"},mt={class:"font-medium text-gray-900 dark:text-white"},xt={class:"text-gray-600 dark:text-gray-400"},ht={class:"font-medium text-primary-500"},pt={class:"text-gray-600 dark:text-gray-400"},kt={class:"font-medium text-gray-900 dark:text-white"},bt={class:"flex-1 min-h-0 flex overflow-hidden"},_t={key:1,class:"w-full h-full flex items-center justify-center"},wt={class:"text-center text-gray-400"},$t={key:2,class:"flex-1 flex items-center justify-center"},St={class:"text-center text-gray-400"},It={class:"w-64 flex-none border-r border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 flex flex-col"},Ct={class:"flex-none px-3 py-2 border-b border-gray-200 dark:border-gray-700"},Tt={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Mt=["onClick"],zt={class:"flex items-center justify-between mb-1"},Dt={class:"text-sm font-medium text-gray-700 dark:text-gray-300"},Lt={key:0,class:"text-xs text-primary-500"},Bt={class:"text-xs text-gray-500"},Ft={class:"flex items-center gap-2 text-xs text-gray-400 mt-1"},Ut={key:0,class:"py-3 text-center text-sm text-gray-500 dark:text-gray-400 border-t border-gray-100 dark:border-gray-700"},Rt={key:1,class:"py-3 text-center text-xs text-gray-400 dark:text-gray-500"},Pt={class:"flex-1 overflow-hidden"},Vt={key:1,class:"flex items-center justify-center h-full text-gray-400"},Ht=X({__name:"PreviewPanel",props:{result:{},isLoading:{type:Boolean},isLoadingMore:{type:Boolean}},emits:["load-more"],setup(v,{emit:C}){const{t:M}=J(),h=v,m=C,w=$(0);let z=!1;const L=$(null),r=$(null),p=$(null);function k(s){if(!h.result)return null;const e=h.result.blocks.length-1-s;return h.result.blocks[e]}const x=P(()=>h.result?.blocks.length??0),D=fe(P(()=>({count:x.value,getScrollElement:()=>p.value,estimateSize:()=>72,overscan:5}))),B=P(()=>D.value.getVirtualItems()),F=P(()=>{if(x.value===0)return[];const s=k(w.value);return s?s.messages.map(e=>({id:e.id,senderName:e.senderName,senderPlatformId:e.senderPlatformId,senderAliases:e.senderAliases,senderAvatar:e.senderAvatar,content:e.content,timestamp:e.timestamp,type:e.type,replyToMessageId:e.replyToMessageId,replyToContent:e.replyToContent,replyToSenderName:e.replyToSenderName})):[]}),j=P(()=>{if(x.value===0)return[];const s=k(w.value);return s?s.messages.filter(e=>e.isHit).map(e=>e.id):[]}),E={startTs:0,endTs:0},V=P(()=>{if(!h.result||h.result.blocks.length===0)return!1;const s=h.result.blocks,e=new Date(s[0].startTs*1e3).getFullYear(),d=new Date(s[s.length-1].endTs*1e3).getFullYear();return e!==d});function U(s){const e={month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"};return V.value&&(e.year="numeric"),new Date(s*1e3).toLocaleString("zh-CN",e)}function c(s,e){const d=e-s;return d<60?`${d}秒`:d<3600?`${Math.floor(d/60)}分钟`:`${Math.floor(d/3600)}h${Math.floor(d%3600/60)}m`}function g(s){w.value=s;const e=k(s);if(e){const d=e.messages.find(f=>f.isHit);d&&(L.value=d.id)}}function o(){z||x.value!==0&&w.value<x.value-1&&(z=!0,w.value++,b(w.value),setTimeout(()=>{z=!1},300))}function a(){}function b(s){D.value.scrollToIndex(s,{align:"center"})}W(()=>h.result,()=>{w.value=0,L.value=null}),W(L,async s=>{s!==null&&(await be(),setTimeout(()=>{r.value?.scrollToMessage(s),L.value=null},100))});function A(s){const e=s.target;if(!e||!h.result?.pagination?.hasMore||h.isLoadingMore)return;const d=100,{scrollTop:f,scrollHeight:i,clientHeight:S}=e;i-f-S<d&&m("load-more")}return(s,e)=>{const d=se;return l(),u("div",dt,[v.result&&v.result.blocks.length>0?(l(),u("div",ct,[t("div",ut,[t("div",ft,[t("span",gt,[T(n(y(M)("analysis.filter.stats.blocks"))+": ",1),t("span",yt,[T(n(v.result.blocks.length)+" ",1),v.result.pagination&&v.result.pagination.totalBlocks>v.result.blocks.length?(l(),u(N,{key:0},[T(" / "+n(v.result.pagination.totalBlocks),1)],64)):H("",!0)])]),t("span",vt,[T(n(y(M)("analysis.filter.stats.messages"))+": ",1),t("span",mt,n(v.result.stats.totalMessages),1)]),t("span",xt,[T(n(y(M)("analysis.filter.stats.hits"))+": ",1),t("span",ht,n(v.result.pagination?.totalHits??v.result.stats.hitMessages),1)]),t("span",pt,[T(n(y(M)("analysis.filter.stats.chars"))+": ",1),t("span",kt,n(v.result.stats.totalChars.toLocaleString()),1)])])])])):H("",!0),t("div",bt,[v.isLoading?(l(),Y($e,{key:0,variant:"page",text:y(M)("analysis.filter.filtering")},null,8,["text"])):v.result?v.result.blocks.length===0?(l(),u("div",$t,[t("div",St,[I(d,{name:"i-heroicons-magnifying-glass",class:"w-12 h-12 mb-3 mx-auto"}),t("p",null,n(y(M)("analysis.filter.noResults")),1)])])):(l(),u(N,{key:3},[t("div",It,[t("div",Ct,[t("span",Tt,[T(n(y(M)("analysis.filter.stats.blocks"))+" ("+n(v.result.blocks.length)+" ",1),v.result.pagination&&v.result.pagination.totalBlocks>v.result.blocks.length?(l(),u(N,{key:0},[T(" /"+n(v.result.pagination.totalBlocks),1)],64)):H("",!0),e[1]||(e[1]=T(" ) ",-1))])]),t("div",{ref_key:"blockListRef",ref:p,class:"flex-1 overflow-y-auto",onScroll:A},[t("div",{style:q({height:`${y(D).getTotalSize()}px`,position:"relative"})},[(l(!0),u(N,null,Z(B.value,f=>(l(),u("div",{key:String(f.key),style:q({position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${f.start}px)`})},[t("div",{class:te(["px-3 py-2 cursor-pointer border-b border-gray-100 dark:border-gray-700 transition-colors",w.value===f.index?"bg-primary-50 dark:bg-primary-900/30 border-l-2 border-l-primary-500":"hover:bg-gray-50 dark:hover:bg-gray-700/50"]),onClick:i=>g(f.index)},[t("div",zt,[t("span",Dt," #"+n(f.index+1),1),(k(f.index)?.hitCount??0)>0?(l(),u("span",Lt," 含 "+n(k(f.index)?.hitCount)+" 个结果 ",1)):H("",!0)]),t("div",Bt,n(U(k(f.index)?.startTs??0)),1),t("div",Ft,[t("span",null,n(k(f.index)?.messages.length??0)+" 条",1),e[2]||(e[2]=t("span",null,"·",-1)),t("span",null,n(c(k(f.index)?.startTs??0,k(f.index)?.endTs??0)),1)])],10,Mt)],4))),128))],4),v.result.pagination?.hasMore?(l(),u("div",Ut,[v.isLoadingMore?(l(),u(N,{key:0},[I(d,{name:"i-heroicons-arrow-path",class:"w-4 h-4 animate-spin inline mr-1"}),T(" "+n(y(M)("common.loading")),1)],64)):(l(),u("button",{key:1,class:"text-primary-500 hover:text-primary-600",onClick:e[0]||(e[0]=f=>m("load-more"))},n(y(M)("analysis.filter.loadMore")),1))])):v.result.pagination&&v.result.blocks.length>=v.result.pagination.totalBlocks?(l(),u("div",Rt,n(y(M)("analysis.filter.allLoaded")),1)):H("",!0)],544)]),t("div",Pt,[F.value.length>0?(l(),Y(me,{key:0,ref_key:"messageListRef",ref:r,query:E,"external-messages":F.value,"hit-message-ids":j.value,class:"h-full",onReachBottom:o,onReachTop:a},null,8,["external-messages","hit-message-ids"])):(l(),u("div",Vt,n(y(M)("analysis.filter.noResults")),1))])],64)):(l(),u("div",_t,[t("div",wt,[I(d,{name:"i-heroicons-funnel",class:"w-12 h-12 mb-3 mx-auto"}),t("p",null,n(y(M)("analysis.filter.emptyHint")),1)])]))])])}}}),jt={class:"flex items-center justify-between"},Et={class:"text-lg font-semibold"},Nt={class:"max-h-96 overflow-y-auto"},At={key:0,class:"py-8 text-center text-gray-500"},Kt={key:1,class:"divide-y divide-gray-200 dark:divide-gray-700"},Yt={class:"flex items-start justify-between gap-2"},Wt={class:"flex-1 min-w-0"},Ot={key:0,class:"flex items-center gap-2 mb-1"},Gt={key:1,class:"flex items-center gap-2 mb-1"},Qt={class:"font-medium text-gray-900 dark:text-white"},Zt=["onClick"],qt={class:"text-sm text-gray-600 dark:text-gray-400 truncate"},Jt={class:"text-xs text-gray-400 mt-1"},Xt={class:"flex items-center gap-1"},es=X({__name:"FilterHistory",props:{open:{type:Boolean,default:!1},openModifiers:{}},emits:we(["load"],["update:open"]),setup(v,{expose:C,emit:M}){const{t:h}=J(),m=ne(),w=xe(),z=Q(v,"open"),L=M,r=$([]);let p=[];const k=$(null),x=$("");async function D(){try{p=(await w.getPreferences()).filterHistory??[],r.value=p.filter(a=>a.sessionId===m.currentSessionId)}catch(o){console.error("Failed to load filter history:",o)}}function B(){p=[...p.filter(a=>a.sessionId!==m.currentSessionId),...r.value],w.savePreferences({filterHistory:p}).catch(a=>{console.error("Failed to save filter history:",a)})}function F(o){r.value=r.value.filter(a=>a.id!==o),B()}function j(o){L("load",{mode:o.mode,conditionFilter:o.conditionFilter,selectedSessionIds:o.selectedSessionIds})}function E(o){k.value=o.id,x.value=o.name}function V(o){o.name=x.value||o.name,k.value=null,B()}function U(){k.value=null}function c(o){return new Date(o).toLocaleString()}function g(o){if(o.mode==="condition"){const a=[];return o.conditionFilter?.keywords.length&&a.push(`关键词: ${o.conditionFilter.keywords.join(", ")}`),o.conditionFilter?.senderIds.length&&a.push(`${o.conditionFilter.senderIds.length} 位成员`),a.join(" | ")||"无条件"}else return`${o.selectedSessionIds?.length||0} 个会话`}return W(z,o=>{o&&D()}),re(()=>{D()}),C({saveCondition(o){const a={id:`filter_${Date.now()}`,sessionId:m.currentSessionId||"",createdAt:Date.now(),name:`筛选 ${r.value.length+1}`,...o};r.value.unshift(a),r.value=r.value.slice(0,20),B()}}),(o,a)=>{const b=le,A=de,s=ce,e=se,d=ge,f=ue;return l(),Y(f,{open:z.value,"onUpdate:open":a[2]||(a[2]=i=>z.value=i)},{content:R(()=>[I(d,null,{header:R(()=>[t("div",jt,[t("h3",Et,n(y(h)("analysis.filter.historyTitle")),1),I(b,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:a[0]||(a[0]=i=>z.value=!1)})])]),default:R(()=>[t("div",Nt,[r.value.length===0?(l(),u("div",At,n(y(h)("analysis.filter.noHistory")),1)):(l(),u("div",Kt,[(l(!0),u(N,null,Z(r.value,i=>(l(),u("div",{key:i.id,class:"py-3 hover:bg-gray-50 dark:hover:bg-gray-800 px-2 rounded-md"},[t("div",Yt,[t("div",Wt,[k.value===i.id?(l(),u("div",Ot,[I(A,{modelValue:x.value,"onUpdate:modelValue":a[1]||(a[1]=S=>x.value=S),size:"sm",class:"flex-1",onKeydown:_e(S=>V(i),["enter"])},null,8,["modelValue","onKeydown"]),I(b,{size:"xs",onClick:S=>V(i)},{default:R(()=>[T(n(y(h)("common.save")),1)]),_:1},8,["onClick"]),I(b,{size:"xs",variant:"ghost",onClick:U},{default:R(()=>[T(n(y(h)("common.cancel")),1)]),_:1})])):(l(),u("div",Gt,[t("span",Qt,n(i.name),1),I(s,{color:i.mode==="condition"?"primary":"green",size:"xs"},{default:R(()=>[T(n(i.mode==="condition"?"条件":"会话"),1)]),_:2},1032,["color"]),t("button",{class:"text-gray-400 hover:text-gray-600",onClick:S=>E(i)},[I(e,{name:"i-heroicons-pencil",class:"w-3 h-3"})],8,Zt)])),t("p",qt,n(g(i)),1),t("p",Jt,n(c(i.createdAt)),1)]),t("div",Xt,[I(b,{size:"xs",variant:"soft",onClick:S=>j(i)},{default:R(()=>[T(n(y(h)("common.load")),1)]),_:1},8,["onClick"]),I(b,{size:"xs",variant:"ghost",color:"red",onClick:S=>F(i.id)},{default:R(()=>[I(e,{name:"i-heroicons-trash",class:"w-4 h-4"})]),_:1},8,["onClick"])])])]))),128))]))])]),_:1})]),_:1},8,["open"])}}}),ts={class:"flex h-[85vh] flex-col overflow-hidden bg-white dark:bg-gray-900"},ss={class:"flex flex-none items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"},ns={class:"flex items-center gap-4"},as={class:"text-lg font-semibold text-gray-900 dark:text-white"},os={class:"flex items-center gap-1 rounded-lg bg-gray-100 p-1 dark:bg-gray-800"},ls={class:"flex items-center gap-2"},rs={class:"flex flex-1 overflow-hidden"},is={class:"flex w-80 flex-none flex-col border-r border-gray-200 dark:border-gray-700"},ds={class:"min-h-0 flex-1 overflow-y-auto"},cs={class:"flex-none border-t border-gray-200 bg-white p-4 dark:border-gray-700 dark:bg-gray-900"},us={class:"flex flex-1 flex-col overflow-hidden"},fs={key:0,class:"flex flex-none flex-col gap-2 border-t border-gray-200 bg-gray-50 px-4 py-3 dark:border-gray-700 dark:bg-gray-800"},gs={key:0,class:"w-full"},ys={class:"mb-1 flex items-center justify-between text-sm text-gray-600 dark:text-gray-400"},vs={class:"h-2 w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700"},ms={class:"flex items-center justify-end gap-3"},ee=50,Is=X({__name:"MessageExportModal",props:{modelValue:{type:Boolean}},emits:["update:modelValue"],setup(v,{emit:C}){const M=v,h=C,{t:m}=J(),w=he(),z=ne(),L=P({get:()=>M.modelValue,set:s=>h("update:modelValue",s)}),r=$("condition"),p=$({keywords:[],timeRange:null,senderIds:[],contextSize:10}),k=$([]),x=$(null),D=$(!1),B=$(!1),F=$(!1),j=P(()=>D.value?!1:r.value==="condition"?p.value.keywords.length>0||p.value.senderIds.length>0||p.value.timeRange!==null:k.value.length>0);async function E(){const s=z.currentSessionId;if(s){D.value=!0,x.value=null;try{if(r.value==="condition"){const e=G(p.value),d=e.keywords.length>0?[...e.keywords]:void 0,f=e.timeRange?{startTs:e.timeRange.start,endTs:e.timeRange.end}:void 0,i=e.senderIds.length>0?[...e.senderIds]:void 0,S=e.contextSize,_=await O().filterMessagesWithContext(s,d,f,i,S,1,ee);x.value=_}else{if(k.value.length===0)return;const e=[...G(k.value)],d=await O().getMultipleSessionsMessages(s,e,1,ee);x.value=d}}catch(e){console.error("筛选失败:",e)}finally{D.value=!1}}}async function V(){const s=z.currentSessionId;if(!s||!x.value||!x.value.pagination.hasMore||B.value)return;B.value=!0;const e=x.value.pagination.page+1;try{let d;if(r.value==="condition"){const f=G(p.value),i=f.keywords.length>0?[...f.keywords]:void 0,S=f.timeRange?{startTs:f.timeRange.start,endTs:f.timeRange.end}:void 0,_=f.senderIds.length>0?[...f.senderIds]:void 0,K=f.contextSize;d=await O().filterMessagesWithContext(s,i,S,_,K,e,ee)}else{const f=[...G(k.value)];d=await O().getMultipleSessionsMessages(s,f,e,ee)}d&&d.blocks.length>0&&(x.value={blocks:[...x.value.blocks,...d.blocks],stats:x.value.stats,pagination:d.pagination})}catch(d){console.error("加载更多失败:",d)}finally{B.value=!1}}const U=$(!1),c=$(null);let g=null;function o(){g=O().onExportProgress(s=>{c.value={percentage:s.percentage,message:s.message},(s.stage==="done"||s.stage==="error")&&(c.value=null)})}function a(){g&&(g(),g=null),c.value=null}async function b(){if(!x.value||x.value.blocks.length===0)return;const s=z.currentSessionId;if(!s)return;const d=z.currentSession?.name||"未知会话",f=await pe().showOpenDialog({title:"选择保存目录",properties:["openDirectory","createDirectory"]});if(f.canceled||!f.filePaths[0])return;const i=f.filePaths[0];U.value=!0,c.value={percentage:0,message:m("analysis.filter.exportPreparing")},o();try{const S=G(p.value),_={sessionId:s,sessionName:d,outputDir:i,filterMode:r.value,keywords:S.keywords.length>0?[...S.keywords]:void 0,timeFilter:S.timeRange?{startTs:S.timeRange.start,endTs:S.timeRange.end}:void 0,senderIds:S.senderIds.length>0?[...S.senderIds]:void 0,contextSize:S.contextSize,chatSessionIds:r.value==="session"?[...G(k.value)]:void 0},K=await O().exportFilterResultToFile(_);K.success&&K.filePath?w.success(m("analysis.filter.exportSuccess"),{description:K.filePath}):w.fail(m("analysis.filter.exportFailed"),{description:K.error||m("common.error.unknown")})}catch(S){console.error("导出失败:",S),w.fail(m("analysis.filter.exportFailed"),{description:String(S)})}finally{a(),U.value=!1}}W(r,()=>{x.value=null}),W(L,s=>{s||(x.value=null,a())});function A(s){r.value=s.mode,s.mode==="condition"&&s.conditionFilter?p.value={...s.conditionFilter}:s.mode==="session"&&s.selectedSessionIds&&(k.value=[...s.selectedSessionIds]),F.value=!1}return(s,e)=>{const d=le,f=ue;return l(),Y(f,{open:L.value,"onUpdate:open":e[10]||(e[10]=i=>L.value=i),ui:{content:"sm:max-w-[95vw]"}},{content:R(()=>[t("div",ts,[t("div",ss,[t("div",ns,[t("h2",as,n(y(m)("analysis.messageExport.title")),1),t("div",os,[t("button",{class:te(["rounded-md px-3 py-1.5 text-sm font-medium transition-colors",r.value==="condition"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white"]),onClick:e[0]||(e[0]=i=>r.value="condition")},n(y(m)("analysis.filter.conditionMode")),3),t("button",{class:te(["rounded-md px-3 py-1.5 text-sm font-medium transition-colors",r.value==="session"?"bg-white text-gray-900 shadow-sm dark:bg-gray-700 dark:text-white":"text-gray-600 hover:text-gray-900 dark:text-gray-400 dark:hover:text-white"]),onClick:e[1]||(e[1]=i=>r.value="session")},n(y(m)("analysis.filter.sessionMode")),3)])]),t("div",ls,[I(d,{variant:"ghost",icon:"i-heroicons-clock",size:"sm",onClick:e[2]||(e[2]=i=>F.value=!0)},{default:R(()=>[T(n(y(m)("analysis.filter.history")),1)]),_:1}),I(d,{variant:"ghost",icon:"i-heroicons-x-mark",size:"sm",onClick:e[3]||(e[3]=i=>L.value=!1)})])]),t("div",rs,[t("div",is,[t("div",ds,[r.value==="condition"?(l(),Y(We,{key:0,keywords:p.value.keywords,"onUpdate:keywords":e[4]||(e[4]=i=>p.value.keywords=i),"time-range":p.value.timeRange,"onUpdate:timeRange":e[5]||(e[5]=i=>p.value.timeRange=i),"sender-ids":p.value.senderIds,"onUpdate:senderIds":e[6]||(e[6]=i=>p.value.senderIds=i),"context-size":p.value.contextSize,"onUpdate:contextSize":e[7]||(e[7]=i=>p.value.contextSize=i)},null,8,["keywords","time-range","sender-ids","context-size"])):(l(),Y(it,{key:1,"selected-ids":k.value,"onUpdate:selectedIds":e[8]||(e[8]=i=>k.value=i)},null,8,["selected-ids"]))]),t("div",cs,[I(d,{block:"",color:"primary",loading:D.value,disabled:!j.value,onClick:E},{default:R(()=>[T(n(y(m)("analysis.filter.execute")),1)]),_:1},8,["loading","disabled"])])]),t("div",us,[I(Ht,{result:x.value,"is-loading":D.value,"is-loading-more":B.value,onLoadMore:V},null,8,["result","is-loading","is-loading-more"]),x.value&&x.value.blocks.length>0?(l(),u("div",fs,[U.value&&c.value?(l(),u("div",gs,[t("div",ys,[t("span",null,n(c.value.message),1),t("span",null,n(c.value.percentage)+"%",1)]),t("div",vs,[t("div",{class:"h-full bg-primary-500 transition-all duration-300",style:q({width:`${c.value.percentage}%`})},null,4)])])):H("",!0),t("div",ms,[I(d,{variant:"outline",icon:"i-heroicons-document-arrow-down",loading:U.value,disabled:U.value,onClick:b},{default:R(()=>[T(n(y(m)("analysis.filter.export")),1)]),_:1},8,["loading","disabled"])])])):H("",!0)])]),I(es,{open:F.value,"onUpdate:open":e[9]||(e[9]=i=>F.value=i),onLoad:A},null,8,["open"])])]),_:1},8,["open"])}}});export{Is as default};
@@ -1 +1 @@
1
- import{FetchAIAdapter as o}from"./fetch-ChECfwh7.js";import"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class l extends o{async exportFilterResultToFile(r){return window.aiApi.exportFilterResultToFile(r)}onExportProgress(r){return window.aiApi.onExportProgress(r)}async showAiLogFile(){return window.aiApi.showAiLogFile()}}export{l as ElectronAIAdapter};
1
+ import{FetchAIAdapter as o}from"./fetch-DzNuFdFM.js";import"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class l extends o{async exportFilterResultToFile(r){return window.aiApi.exportFilterResultToFile(r)}onExportProgress(r){return window.aiApi.onExportProgress(r)}async showAiLogFile(){return window.aiApi.showAiLogFile()}}export{l as ElectronAIAdapter};
@@ -0,0 +1 @@
1
+ import{FetchDataAdapter as r}from"./fetch-BneHn5qk.js";import"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class c extends r{async pluginCompute(t,p){return window.chatApi.pluginCompute(t,p)}}export{c as ElectronDataAdapter};
@@ -1,3 +1,3 @@
1
- import{N as d,S as f,K as h}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";async function w(y,s,o){const t=y.body?.getReader();if(!t)return s;const e=new TextDecoder;let r="",n=s;for(;;){const{done:u,value:m}=await t.read();if(u)break;r+=e.decode(m,{stream:!0});const p=r.split(`
1
+ import{N as d,S as f,K as h}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";async function w(y,s,o){const t=y.body?.getReader();if(!t)return s;const e=new TextDecoder;let r="",n=s;for(;;){const{done:u,value:m}=await t.read();if(u)break;r+=e.decode(m,{stream:!0});const p=r.split(`
2
2
  `);r=p.pop()||"";let i="";for(const a of p)if(a.startsWith("event: "))i=a.slice(7).trim();else if(a.startsWith("data: ")){const c=JSON.parse(a.slice(6));i==="progress"?o?.(c):(i==="done"||i==="error")&&(n=c),i=""}}return n}class S{async importFile(s,o,t){if(typeof s=="string")return{success:!1,error:"File path import is not supported in Web mode"};const e=new FormData;e.append("file",s),o?.formatId&&e.append("formatId",o.formatId),o?.chatIndex!==void 0&&e.append("chatIndex",String(o.chatIndex));const r=await d(`${f()}/import`,{method:"POST",body:e});if(!r.ok){const n=await r.text();return{success:!1,error:`HTTP ${r.status}: ${n}`}}return w(r,{success:!1,error:"Unknown error"},t)}async detectFormat(s){if(typeof s=="string")return null;const o=new FormData;o.append("file",s);const t=await d(`${f()}/detect-format`,{method:"POST",body:o});return t.ok?(await t.json()).format:null}async scanMultiChatFile(s){if(typeof s=="string")return[];const o=new FormData;o.append("file",s);const t=await d(`${f()}/scan-multi-chat`,{method:"POST",body:o});return t.ok?(await t.json()).chats:[]}getSupportedFormats(){return h("/supported-formats")}async importDemo(s,o){return new Promise(t=>{d(`${f()}/demo/import`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({locale:s})}).then(async e=>{if(!e.ok||!e.body){t({success:!1,error:`HTTP ${e.status}`});return}const r=e.body.getReader(),n=new TextDecoder;let u="";for(;;){const{done:m,value:p}=await r.read();if(m)break;u+=n.decode(p,{stream:!0});const i=u.split(`
3
3
  `);u=i.pop()||"";let a="";for(const c of i)if(c.startsWith("event: "))a=c.slice(7).trim();else if(c.startsWith("data: ")){const l=JSON.parse(c.slice(6));if(a==="progress")(l.stage==="downloading"||l.stage==="importing")&&o?.({stage:l.stage});else if(a==="result"){t(l);return}a=""}}t({success:!1,error:"Stream ended without result"})}).catch(e=>t({success:!1,error:String(e)}))})}async analyzeIncrementalImport(s,o){if(typeof o=="string")return{newMessageCount:0,duplicateCount:0,totalInFile:0,error:"File path not supported in Web mode"};const t=new FormData;t.append("file",o);const e=await d(`${f()}/sessions/${s}/import/incremental/analyze`,{method:"POST",body:t});if(!e.ok){const r=await e.text();return{newMessageCount:0,duplicateCount:0,totalInFile:0,error:`HTTP ${e.status}: ${r}`}}return await e.json()}async incrementalImport(s,o,t){if(typeof o=="string")return{success:!1,newMessageCount:0,error:"File path not supported in Web mode"};const e=new FormData;e.append("file",o);const r=await d(`${f()}/sessions/${s}/import/incremental`,{method:"POST",body:e});if(!r.ok){const n=await r.text();return{success:!1,newMessageCount:0,error:`HTTP ${r.status}: ${n}`}}return w(r,{success:!1,newMessageCount:0,error:"Unknown error"},t)}async importDirectory(s,o,t){if(typeof s=="string")return{success:!1,error:"Directory path import is not supported in Web mode"};if(s.length===0)return{success:!1,error:"No files in directory"};const e=new FormData;for(const n of s)e.append("files",n),e.append("relativePaths",n.webkitRelativePath||n.name);const r=await d(`${f()}/import-directory`,{method:"POST",body:e});if(!r.ok){const n=await r.text();return{success:!1,error:`HTTP ${r.status}: ${n}`}}return w(r,{success:!1,error:"Unknown error"},t)}}export{S as FetchImportAdapter};
@@ -1,4 +1,4 @@
1
- import"./model-catalog-DUuKjIVU.js";import{O as _}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";const T=`
1
+ import{O as _}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";const T=`
2
2
  msg.id,
3
3
  m.id as senderId,
4
4
  COALESCE(m.group_nickname, m.account_name, m.platform_id) as senderName,
@@ -14,4 +14,4 @@ import"./model-catalog-DUuKjIVU.js";import{O as _}from"./index-ESCx9pRR.js";impo
14
14
  FROM message msg
15
15
  JOIN member m ON msg.sender_id = m.id
16
16
  LEFT JOIN message reply_msg ON msg.reply_to_message_id = reply_msg.platform_message_id
17
- LEFT JOIN member reply_m ON reply_msg.sender_id = reply_m.id`,g=`SELECT ${T} ${R}`,f="FROM message msg JOIN member m ON msg.sender_id = m.id",M="COALESCE(m.account_name, '') != '系统消息'",O="msg.type = 0 AND msg.content IS NOT NULL AND msg.content != ''";function u(e){let t=[];try{const s=JSON.parse(e.aliasesJson||"[]");Array.isArray(s)&&(t=s)}catch{}return{id:Number(e.id),senderId:Number(e.senderId),senderName:String(e.senderName||""),senderPlatformId:String(e.senderPlatformId||""),senderAliases:t,senderAvatar:e.senderAvatar||null,content:e.content!=null?String(e.content):"",timestamp:Number(e.timestamp),type:Number(e.type),replyToMessageId:e.replyToMessageId||null,replyToContent:e.replyToContent||null,replyToSenderName:e.replyToSenderName||null}}function S(e){const t=[],s=[];if(e?.startTs!=null&&(t.push("msg.ts >= ?"),s.push(e.startTs)),e?.endTs!=null&&(t.push("msg.ts <= ?"),s.push(e.endTs)),e?.senderId!=null&&(t.push("msg.sender_id = ?"),s.push(e.senderId)),e?.memberId!=null&&(t.push("msg.sender_id = ?"),s.push(e.memberId)),e?.keywords&&e.keywords.length>0){const n=e.keywords.map(()=>"msg.content LIKE ?");t.push(`(${n.join(" OR ")})`),s.push(...e.keywords.map(a=>`%${a}%`))}return e?.systemFilter&&t.push(M),e?.textOnlyFilter&&t.push(O),{clause:t.length>0?"AND "+t.join(" AND "):"",params:s}}function y(e,t,s){return S({startTs:e?.startTs,endTs:e?.endTs,senderId:t,memberId:e?.memberId,keywords:s})}async function I(e,t,s=50,n,a,r){const{clause:m,params:c}=y(n,a,r),d=`${g} WHERE msg.id < ? ${m} ORDER BY msg.id DESC LIMIT ?`,o=await e.all(d,[t,...c,s+1]),l=o.length>s;return{messages:(l?o.slice(0,s):o).map(u).reverse(),hasMore:l}}async function C(e,t,s=50,n,a,r){const{clause:m,params:c}=y(n,a,r),d=`${g} WHERE msg.id > ? ${m} ORDER BY msg.id ASC LIMIT ?`,o=await e.all(d,[t,...c,s+1]),l=o.length>s;return{messages:(l?o.slice(0,s):o).map(u),hasMore:l}}async function L(e,t,s,n=20,a=0,r){const{clause:m,params:c}=y(s,r,t),d=`SELECT COUNT(*) as total ${f} WHERE 1=1 ${m}`,l=(await e.get(d,c))?.total??0,p=`${g} WHERE 1=1 ${m} ORDER BY msg.ts DESC LIMIT ? OFFSET ?`;return{messages:(await e.all(p,[...c,n,a])).map(u),total:l}}async function h(e,t,s=20){const n=Array.isArray(t)?t:[t];if(n.length===0)return[];const a=new Set;for(const o of n)a.add(o),s>0&&((await e.all("SELECT id FROM message WHERE id < ? ORDER BY id DESC LIMIT ?",[o,s])).forEach(E=>a.add(E.id)),(await e.all("SELECT id FROM message WHERE id > ? ORDER BY id ASC LIMIT ?",[o,s])).forEach(E=>a.add(E.id)));const r=Array.from(a).sort((o,l)=>o-l);if(r.length===0)return[];const m=r.map(()=>"?").join(", "),c=`${g} WHERE msg.id IN (${m}) ORDER BY msg.id ASC`;return(await e.all(c,r)).map(u)}async function N(e,t,s=100){const{clause:n,params:a}=y(t),r=`SELECT COUNT(*) as total ${f} WHERE 1=1 ${n}`,c=(await e.get(r,a))?.total??0,d=`${g} WHERE 1=1 ${n} ORDER BY msg.ts DESC LIMIT ?`;return{messages:(await e.all(d,[...a,s])).map(u).reverse(),total:c}}function A(){return _("data")}function i(e){const t=A();return{all(s,n=[]){return t.pluginQuery(e,s,n)},async get(s,n=[]){return(await t.pluginQuery(e,s,n))[0]}}}class B{async getMessagesBefore(t,s,n=50,a,r,m){const c=i(t);return I(c,s,n,a,r,m)}async getMessagesAfter(t,s,n=50,a,r,m){const c=i(t);return C(c,s,n,a,r,m)}async getMessageContext(t,s,n=20){const a=i(t);return h(a,s,n)}async searchMessages(t,s,n,a=100,r=0,m){const c=i(t);return L(c,s,n,a,r,m)}async getAllRecentMessages(t,s,n=100){const a=i(t);return N(a,s,n)}}export{B as FetchMessageAdapter};
17
+ LEFT JOIN member reply_m ON reply_msg.sender_id = reply_m.id`,g=`SELECT ${T} ${R}`,f="FROM message msg JOIN member m ON msg.sender_id = m.id",M="COALESCE(m.account_name, '') != '系统消息'",O="msg.type = 0 AND msg.content IS NOT NULL AND msg.content != ''";function u(e){let t=[];try{const s=JSON.parse(e.aliasesJson||"[]");Array.isArray(s)&&(t=s)}catch{}return{id:Number(e.id),senderId:Number(e.senderId),senderName:String(e.senderName||""),senderPlatformId:String(e.senderPlatformId||""),senderAliases:t,senderAvatar:e.senderAvatar||null,content:e.content!=null?String(e.content):"",timestamp:Number(e.timestamp),type:Number(e.type),replyToMessageId:e.replyToMessageId||null,replyToContent:e.replyToContent||null,replyToSenderName:e.replyToSenderName||null}}function S(e){const t=[],s=[];if(e?.startTs!=null&&(t.push("msg.ts >= ?"),s.push(e.startTs)),e?.endTs!=null&&(t.push("msg.ts <= ?"),s.push(e.endTs)),e?.senderId!=null&&(t.push("msg.sender_id = ?"),s.push(e.senderId)),e?.memberId!=null&&(t.push("msg.sender_id = ?"),s.push(e.memberId)),e?.keywords&&e.keywords.length>0){const n=e.keywords.map(()=>"msg.content LIKE ?");t.push(`(${n.join(" OR ")})`),s.push(...e.keywords.map(a=>`%${a}%`))}return e?.systemFilter&&t.push(M),e?.textOnlyFilter&&t.push(O),{clause:t.length>0?"AND "+t.join(" AND "):"",params:s}}function y(e,t,s){return S({startTs:e?.startTs,endTs:e?.endTs,senderId:t,memberId:e?.memberId,keywords:s})}async function I(e,t,s=50,n,a,r){const{clause:m,params:c}=y(n,a,r),d=`${g} WHERE msg.id < ? ${m} ORDER BY msg.id DESC LIMIT ?`,o=await e.all(d,[t,...c,s+1]),l=o.length>s;return{messages:(l?o.slice(0,s):o).map(u).reverse(),hasMore:l}}async function C(e,t,s=50,n,a,r){const{clause:m,params:c}=y(n,a,r),d=`${g} WHERE msg.id > ? ${m} ORDER BY msg.id ASC LIMIT ?`,o=await e.all(d,[t,...c,s+1]),l=o.length>s;return{messages:(l?o.slice(0,s):o).map(u),hasMore:l}}async function L(e,t,s,n=20,a=0,r){const{clause:m,params:c}=y(s,r,t),d=`SELECT COUNT(*) as total ${f} WHERE 1=1 ${m}`,l=(await e.get(d,c))?.total??0,p=`${g} WHERE 1=1 ${m} ORDER BY msg.ts DESC LIMIT ? OFFSET ?`;return{messages:(await e.all(p,[...c,n,a])).map(u),total:l}}async function h(e,t,s=20){const n=Array.isArray(t)?t:[t];if(n.length===0)return[];const a=new Set;for(const o of n)a.add(o),s>0&&((await e.all("SELECT id FROM message WHERE id < ? ORDER BY id DESC LIMIT ?",[o,s])).forEach(E=>a.add(E.id)),(await e.all("SELECT id FROM message WHERE id > ? ORDER BY id ASC LIMIT ?",[o,s])).forEach(E=>a.add(E.id)));const r=Array.from(a).sort((o,l)=>o-l);if(r.length===0)return[];const m=r.map(()=>"?").join(", "),c=`${g} WHERE msg.id IN (${m}) ORDER BY msg.id ASC`;return(await e.all(c,r)).map(u)}async function N(e,t,s=100){const{clause:n,params:a}=y(t),r=`SELECT COUNT(*) as total ${f} WHERE 1=1 ${n}`,c=(await e.get(r,a))?.total??0,d=`${g} WHERE 1=1 ${n} ORDER BY msg.ts DESC LIMIT ?`;return{messages:(await e.all(d,[...a,s])).map(u).reverse(),total:c}}function A(){return _("data")}function i(e){const t=A();return{all(s,n=[]){return t.pluginQuery(e,s,n)},async get(s,n=[]){return(await t.pluginQuery(e,s,n))[0]}}}class b{async getMessagesBefore(t,s,n=50,a,r,m){const c=i(t);return I(c,s,n,a,r,m)}async getMessagesAfter(t,s,n=50,a,r,m){const c=i(t);return C(c,s,n,a,r,m)}async getMessageContext(t,s,n=20){const a=i(t);return h(a,s,n)}async searchMessages(t,s,n,a=100,r=0,m){const c=i(t);return L(c,s,n,a,r,m)}async getAllRecentMessages(t,s,n=100){const a=i(t);return N(a,s,n)}}export{b as FetchMessageAdapter};
@@ -1 +1 @@
1
- import{K as r,R as g,P as u,H as c}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";function n(a){if(!a)return"";const s=new URLSearchParams;a.startTs&&s.set("startTs",String(a.startTs)),a.endTs&&s.set("endTs",String(a.endTs)),a.memberId&&s.set("memberId",String(a.memberId));const e=s.toString();return e?`?${e}`:""}class d{getSessions(){return r("/sessions")}getSession(s){return r(`/sessions/${s}`)}async deleteSession(s){return(await g(`/sessions/${s}`)).success}async renameSession(s,e){return(await u(`/sessions/${s}/name`,{name:e})).success}async updateSessionOwnerId(s,e){return(await u(`/sessions/${s}/owner`,{ownerId:e})).success}getAvailableYears(s){return r(`/sessions/${s}/years`)}getTimeRange(s){return r(`/sessions/${s}/time-range`)}getMemberActivity(s,e){return r(`/sessions/${s}/stats/member-activity${n(e)}`)}getHourlyActivity(s,e){return r(`/sessions/${s}/stats/hourly${n(e)}`)}getDailyActivity(s,e){return r(`/sessions/${s}/stats/daily${n(e)}`)}getWeekdayActivity(s,e){return r(`/sessions/${s}/stats/weekday${n(e)}`)}getMonthlyActivity(s,e){return r(`/sessions/${s}/analytics/monthly-activity${n(e)}`)}getYearlyActivity(s,e){return r(`/sessions/${s}/analytics/yearly-activity${n(e)}`)}getMessageLengthDistribution(s,e){return r(`/sessions/${s}/analytics/message-length-distribution${n(e)}`)}getMessageTypeDistribution(s,e){return r(`/sessions/${s}/stats/message-types${n(e)}`)}getMembers(s){return r(`/sessions/${s}/members`)}getMembersPaginated(s,e){const t=new URLSearchParams({page:String(e.page),pageSize:String(e.pageSize)});return e.search&&t.set("search",e.search),e.sortOrder&&t.set("sortOrder",e.sortOrder),r(`/sessions/${s}/members/paginated?${t}`)}getMemberNameHistory(s,e){return r(`/sessions/${s}/members/${e}/history`)}async updateMemberAliases(s,e,t){return(await u(`/sessions/${s}/members/${e}/aliases`,{aliases:t})).success}async mergeMembers(s,e,t){return(await c(`/sessions/${s}/members/merge`,{memberId1:e,memberId2:t})).success}async deleteMember(s,e){return(await g(`/sessions/${s}/members/${e}`)).success}getCatchphraseAnalysis(s,e){return r(`/sessions/${s}/analytics/catchphrase${n(e)}`)}getLanguagePreferenceAnalysis(s,e,t,i){const o=new URLSearchParams;return o.set("locale",e),t?.startTs&&o.set("startTs",String(t.startTs)),t?.endTs&&o.set("endTs",String(t.endTs)),t?.memberId&&o.set("memberId",String(t.memberId)),r(`/sessions/${s}/analytics/language-preference?${o}`)}getMentionAnalysis(s,e){return r(`/sessions/${s}/analytics/mention${n(e)}`)}getMentionGraph(s,e){return r(`/sessions/${s}/analytics/mention-graph${n(e)}`)}getClusterGraph(s,e,t){const i=new URLSearchParams;e?.startTs&&i.set("startTs",String(e.startTs)),e?.endTs&&i.set("endTs",String(e.endTs)),e?.memberId&&i.set("memberId",String(e.memberId)),t?.topEdges&&i.set("topEdges",String(t.topEdges));const o=i.toString();return r(`/sessions/${s}/analytics/cluster${o?`?${o}`:""}`)}getLaughAnalysis(s,e,t){return r(`/sessions/${s}/analytics/laugh${n(e)}`)}getRelationshipStats(s,e,t){return r(`/sessions/${s}/analytics/relationship${n(e)}`)}executeSQL(s,e){return c(`/sessions/${s}/sql`,{sql:e})}getSchema(s){return r(`/sessions/${s}/schema`)}pluginQuery(s,e,t){return c(`/sessions/${s}/query`,{sql:e,params:t??[]})}async pluginCompute(s,e){const t=new Function("return "+s)();return Promise.resolve(t(e))}}export{d as FetchDataAdapter};
1
+ import{K as r,R as g,P as u,H as c}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";function n(a){if(!a)return"";const s=new URLSearchParams;a.startTs&&s.set("startTs",String(a.startTs)),a.endTs&&s.set("endTs",String(a.endTs)),a.memberId&&s.set("memberId",String(a.memberId));const e=s.toString();return e?`?${e}`:""}class d{getSessions(){return r("/sessions")}getSession(s){return r(`/sessions/${s}`)}async deleteSession(s){return(await g(`/sessions/${s}`)).success}async renameSession(s,e){return(await u(`/sessions/${s}/name`,{name:e})).success}async updateSessionOwnerId(s,e){return(await u(`/sessions/${s}/owner`,{ownerId:e})).success}getAvailableYears(s){return r(`/sessions/${s}/years`)}getTimeRange(s){return r(`/sessions/${s}/time-range`)}getMemberActivity(s,e){return r(`/sessions/${s}/stats/member-activity${n(e)}`)}getHourlyActivity(s,e){return r(`/sessions/${s}/stats/hourly${n(e)}`)}getDailyActivity(s,e){return r(`/sessions/${s}/stats/daily${n(e)}`)}getWeekdayActivity(s,e){return r(`/sessions/${s}/stats/weekday${n(e)}`)}getMonthlyActivity(s,e){return r(`/sessions/${s}/analytics/monthly-activity${n(e)}`)}getYearlyActivity(s,e){return r(`/sessions/${s}/analytics/yearly-activity${n(e)}`)}getMessageLengthDistribution(s,e){return r(`/sessions/${s}/analytics/message-length-distribution${n(e)}`)}getMessageTypeDistribution(s,e){return r(`/sessions/${s}/stats/message-types${n(e)}`)}getMembers(s){return r(`/sessions/${s}/members`)}getMembersPaginated(s,e){const t=new URLSearchParams({page:String(e.page),pageSize:String(e.pageSize)});return e.search&&t.set("search",e.search),e.sortOrder&&t.set("sortOrder",e.sortOrder),r(`/sessions/${s}/members/paginated?${t}`)}getMemberNameHistory(s,e){return r(`/sessions/${s}/members/${e}/history`)}async updateMemberAliases(s,e,t){return(await u(`/sessions/${s}/members/${e}/aliases`,{aliases:t})).success}async mergeMembers(s,e,t){return(await c(`/sessions/${s}/members/merge`,{memberId1:e,memberId2:t})).success}async deleteMember(s,e){return(await g(`/sessions/${s}/members/${e}`)).success}getCatchphraseAnalysis(s,e){return r(`/sessions/${s}/analytics/catchphrase${n(e)}`)}getLanguagePreferenceAnalysis(s,e,t,i){const o=new URLSearchParams;return o.set("locale",e),t?.startTs&&o.set("startTs",String(t.startTs)),t?.endTs&&o.set("endTs",String(t.endTs)),t?.memberId&&o.set("memberId",String(t.memberId)),r(`/sessions/${s}/analytics/language-preference?${o}`)}getMentionAnalysis(s,e){return r(`/sessions/${s}/analytics/mention${n(e)}`)}getMentionGraph(s,e){return r(`/sessions/${s}/analytics/mention-graph${n(e)}`)}getClusterGraph(s,e,t){const i=new URLSearchParams;e?.startTs&&i.set("startTs",String(e.startTs)),e?.endTs&&i.set("endTs",String(e.endTs)),e?.memberId&&i.set("memberId",String(e.memberId)),t?.topEdges&&i.set("topEdges",String(t.topEdges));const o=i.toString();return r(`/sessions/${s}/analytics/cluster${o?`?${o}`:""}`)}getLaughAnalysis(s,e,t){return r(`/sessions/${s}/analytics/laugh${n(e)}`)}getRelationshipStats(s,e,t){return r(`/sessions/${s}/analytics/relationship${n(e)}`)}executeSQL(s,e){return c(`/sessions/${s}/sql`,{sql:e})}getSchema(s){return r(`/sessions/${s}/schema`)}pluginQuery(s,e,t){return c(`/sessions/${s}/query`,{sql:e,params:t??[]})}async pluginCompute(s,e){const t=new Function("return "+s)();return Promise.resolve(t(e))}}export{d as FetchDataAdapter};
@@ -1 +1 @@
1
- import{K as a,H as s,Q as i,R as n}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class p{async getAll(){return a("/ai/assistants")}async getConfig(t){try{return await a(`/ai/assistants/${t}`)}catch{return null}}async create(t){return s("/ai/assistants",t)}async update(t,r){return i(`/ai/assistants/${t}`,r)}async delete(t){return n(`/ai/assistants/${t}`)}async reset(t){return s(`/ai/assistants/${t}/reset`,{})}async importFromMd(t){return s("/ai/assistants/import",{rawMd:t})}async getBuiltinCatalog(){return[]}async importBuiltin(t){return s("/ai/assistants/import-builtin",{builtinId:t})}async reimport(t){return s(`/ai/assistants/${t}/reimport`,{})}async getBuiltinToolCatalog(){return a("/ai/tools/catalog")}}export{p as FetchAssistantAdapter};
1
+ import{K as a,H as s,Q as i,R as n}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class p{async getAll(){return a("/ai/assistants")}async getConfig(t){try{return await a(`/ai/assistants/${t}`)}catch{return null}}async create(t){return s("/ai/assistants",t)}async update(t,r){return i(`/ai/assistants/${t}`,r)}async delete(t){return n(`/ai/assistants/${t}`)}async reset(t){return s(`/ai/assistants/${t}/reset`,{})}async importFromMd(t){return s("/ai/assistants/import",{rawMd:t})}async getBuiltinCatalog(){return[]}async importBuiltin(t){return s("/ai/assistants/import-builtin",{builtinId:t})}async reimport(t){return s(`/ai/assistants/${t}/reimport`,{})}async getBuiltinToolCatalog(){return a("/ai/tools/catalog")}}export{p as FetchAssistantAdapter};
@@ -1 +1 @@
1
- import{N as r,O as u}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";function c(){return u("data")}class p{async generate(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate session index: ${e.status}`);return(await e.json()).sessionCount}async generateIncremental(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-incremental-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate incremental session index: ${e.status}`);return(await e.json()).sessionCount}async hasIndex(s){return(await this.getStats(s)).hasIndex}async getStats(s){try{const e=(await c().pluginQuery(s,"SELECT COUNT(*) as cnt FROM chat_session",[]))[0]?.cnt??0;return{hasIndex:e>0,sessionCount:e,gapThreshold:1800}}catch{return{hasIndex:!1,sessionCount:0,gapThreshold:1800}}}async getAllIndexStats(){const s=await r("/_web/sessions/index-stats");return s.ok?await s.json():[]}async clear(s){return await r(`/_web/sessions/${s}/clear-index`,{method:"POST"}),!0}async updateGapThreshold(s,t){return!0}async getSessions(s){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session ORDER BY start_ts ASC",[])}async getByTimeRange(s,t,e){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session WHERE start_ts >= ? AND end_ts <= ? ORDER BY start_ts ASC",[t,e])}async getRecent(s,t){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session ORDER BY start_ts DESC LIMIT ?",[t])}async generateSummary(s,t,e,a,o){try{const n=await r(`/_web/sessions/${s}/summaries/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionId:t,locale:e,forceRegenerate:a,strategy:o})}),i=await n.json();return n.ok?i:{success:!1,error:i.error||`HTTP ${n.status}`}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async generateSummaries(s,t,e){let a=0,o=0;const n=0;for(const i of t)try{(await this.generateSummary(s,i,e)).success?a++:o++}catch{o++}return{success:a,failed:o,skipped:n}}async checkCanGenerateSummary(s,t){try{const e=await r(`/_web/sessions/${s}/summaries/check-can-generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionIds:t})});return e.ok?await e.json():{}}catch{return{}}}}export{p as FetchSessionIndexAdapter};
1
+ import{N as r,O as u}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";function c(){return u("data")}class p{async generate(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate session index: ${e.status}`);return(await e.json()).sessionCount}async generateIncremental(s,t=1800){const e=await r(`/_web/sessions/${s}/generate-incremental-index`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({gapThreshold:t})});if(!e.ok)throw new Error(`Failed to generate incremental session index: ${e.status}`);return(await e.json()).sessionCount}async hasIndex(s){return(await this.getStats(s)).hasIndex}async getStats(s){try{const e=(await c().pluginQuery(s,"SELECT COUNT(*) as cnt FROM chat_session",[]))[0]?.cnt??0;return{hasIndex:e>0,sessionCount:e,gapThreshold:1800}}catch{return{hasIndex:!1,sessionCount:0,gapThreshold:1800}}}async getAllIndexStats(){const s=await r("/_web/sessions/index-stats");return s.ok?await s.json():[]}async clear(s){return await r(`/_web/sessions/${s}/clear-index`,{method:"POST"}),!0}async updateGapThreshold(s,t){return!0}async getSessions(s){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session ORDER BY start_ts ASC",[])}async getByTimeRange(s,t,e){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session WHERE start_ts >= ? AND end_ts <= ? ORDER BY start_ts ASC",[t,e])}async getRecent(s,t){return c().pluginQuery(s,"SELECT id, start_ts as startTs, end_ts as endTs, message_count as messageCount, summary FROM chat_session ORDER BY start_ts DESC LIMIT ?",[t])}async generateSummary(s,t,e,a,o){try{const n=await r(`/_web/sessions/${s}/summaries/generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionId:t,locale:e,forceRegenerate:a,strategy:o})}),i=await n.json();return n.ok?i:{success:!1,error:i.error||`HTTP ${n.status}`}}catch(n){return{success:!1,error:n instanceof Error?n.message:String(n)}}}async generateSummaries(s,t,e){let a=0,o=0;const n=0;for(const i of t)try{(await this.generateSummary(s,i,e)).success?a++:o++}catch{o++}return{success:a,failed:o,skipped:n}}async checkCanGenerateSummary(s,t){try{const e=await r(`/_web/sessions/${s}/summaries/check-can-generate`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chatSessionIds:t})});return e.ok?await e.json():{}}catch{return{}}}}export{p as FetchSessionIndexAdapter};
@@ -1 +1 @@
1
- import{K as s,Q as o,H as r,R as i}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class f{async hasConfig(){return s("/ai/llm/has-config")}async getConfigStore(){return s("/ai/llm/configs")}async getAllConfigs(){return(await this.getConfigStore()).configs}async getDefaultAssistantSlot(){return s("/ai/llm/default-assistant-slot")}async getFastModelSlot(){return s("/ai/llm/fast-model-slot")}async setDefaultAssistantModel(t,e){return o("/ai/llm/default-assistant-slot",{configId:t,modelId:e})}async setFastModel(t){return o("/ai/llm/fast-model-slot",t)}async getProviders(){return s("/ai/llm/providers")}async getProviderRegistry(){return s("/ai/llm/provider-registry")}async getModelCatalog(){return s("/ai/llm/model-catalog")}async addConfig(t){return r("/ai/llm/configs",t)}async updateConfig(t,e){return o(`/ai/llm/configs/${t}`,e)}async deleteConfig(t){return i(`/ai/llm/configs/${t}`)}async validateApiKey(t,e,a,l,n,m){return r("/ai/llm/validate-key",{provider:t,apiKey:e,baseUrl:a,model:l,apiFormat:n,configId:m})}async fetchRemoteModels(t,e,a,l,n){return r("/ai/llm/remote-models",{provider:t,apiKey:e,baseUrl:a,apiFormat:l,configId:n})}async addCustomProvider(t){return r("/ai/llm/custom-providers",t)}async updateCustomProvider(t,e){return o(`/ai/llm/custom-providers/${t}`,e)}async deleteCustomProvider(t){return i(`/ai/llm/custom-providers/${t}`)}async addCustomModel(t){return r("/ai/llm/custom-models",t)}async updateCustomModel(t,e,a){return o(`/ai/llm/custom-models/${t}/${encodeURIComponent(e)}`,a)}async deleteCustomModel(t,e){return i(`/ai/llm/custom-models/${t}/${encodeURIComponent(e)}`)}}export{f as FetchLLMAdapter};
1
+ import{K as s,Q as o,H as r,R as i}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class f{async hasConfig(){return s("/ai/llm/has-config")}async getConfigStore(){return s("/ai/llm/configs")}async getAllConfigs(){return(await this.getConfigStore()).configs}async getDefaultAssistantSlot(){return s("/ai/llm/default-assistant-slot")}async getFastModelSlot(){return s("/ai/llm/fast-model-slot")}async setDefaultAssistantModel(t,e){return o("/ai/llm/default-assistant-slot",{configId:t,modelId:e})}async setFastModel(t){return o("/ai/llm/fast-model-slot",t)}async getProviders(){return s("/ai/llm/providers")}async getProviderRegistry(){return s("/ai/llm/provider-registry")}async getModelCatalog(){return s("/ai/llm/model-catalog")}async addConfig(t){return r("/ai/llm/configs",t)}async updateConfig(t,e){return o(`/ai/llm/configs/${t}`,e)}async deleteConfig(t){return i(`/ai/llm/configs/${t}`)}async validateApiKey(t,e,a,l,n,m){return r("/ai/llm/validate-key",{provider:t,apiKey:e,baseUrl:a,model:l,apiFormat:n,configId:m})}async fetchRemoteModels(t,e,a,l,n){return r("/ai/llm/remote-models",{provider:t,apiKey:e,baseUrl:a,apiFormat:l,configId:n})}async addCustomProvider(t){return r("/ai/llm/custom-providers",t)}async updateCustomProvider(t,e){return o(`/ai/llm/custom-providers/${t}`,e)}async deleteCustomProvider(t){return i(`/ai/llm/custom-providers/${t}`)}async addCustomModel(t){return r("/ai/llm/custom-models",t)}async updateCustomModel(t,e,a){return o(`/ai/llm/custom-models/${t}/${encodeURIComponent(e)}`,a)}async deleteCustomModel(t,e){return i(`/ai/llm/custom-models/${t}/${encodeURIComponent(e)}`)}}export{f as FetchLLMAdapter};
@@ -1 +1 @@
1
- import{K as r,P as n}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class f{getPreferences(){return r("/preferences")}savePreferences(e){return n("/preferences",e)}getUiConfig(){return r("/preferences/ui-config")}saveUiConfig(e){return n("/preferences/ui-config",e)}async getLocale(){return(await r("/preferences/locale")).lang}saveLocale(e){return n("/preferences/locale",{lang:e})}}export{f as FetchPreferencesAdapter};
1
+ import{K as r,P as n}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class f{getPreferences(){return r("/preferences")}savePreferences(e){return n("/preferences",e)}getUiConfig(){return r("/preferences/ui-config")}saveUiConfig(e){return n("/preferences/ui-config",e)}async getLocale(){return(await r("/preferences/locale")).lang}saveLocale(e){return n("/preferences/locale",{lang:e})}}export{f as FetchPreferencesAdapter};
@@ -1 +1 @@
1
- import{K as t,H as e}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class h{async getInfo(){return t("/cache/info")}async clear(a){return e("/cache/clear",{cacheId:a})}async getDataDir(){return t("/cache/data-dir")}async setDataDir(a,r=!0){return e("/cache/data-dir",{path:a,migrate:r})}async getLatestImportLog(){return t("/cache/latest-import-log")}async saveToDownloads(a,r){return e("/cache/save-to-downloads",{filename:a,dataUrl:r})}async openDir(a){return e("/cache/open-dir",{cacheId:a})}async showInFolder(a){return e("/cache/show-in-folder",{filePath:a})}}export{h as FetchCacheAdapter};
1
+ import{K as t,H as e}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class h{async getInfo(){return t("/cache/info")}async clear(a){return e("/cache/clear",{cacheId:a})}async getDataDir(){return t("/cache/data-dir")}async setDataDir(a,r=!0){return e("/cache/data-dir",{path:a,migrate:r})}async getLatestImportLog(){return t("/cache/latest-import-log")}async saveToDownloads(a,r){return e("/cache/save-to-downloads",{filename:a,dataUrl:r})}async openDir(a){return e("/cache/open-dir",{cacheId:a})}async showInFolder(a){return e("/cache/show-in-folder",{filePath:a})}}export{h as FetchCacheAdapter};
@@ -1 +1 @@
1
- import{K as n,H as a,Q as l,R as g}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";const u="This feature is not available in web mode";class v{async getConversation(e){try{return await n(`/ai/conversations/${e}`)}catch{return null}}async getConversations(e){return n(`/ai/conversations?sessionId=${encodeURIComponent(e)}`)}async createConversation(e,s,t){return a("/ai/conversations",{sessionId:e,title:s,assistantId:t})}async updateConversationTitle(e,s){return l(`/ai/conversations/${e}/title`,{title:s})}async deleteConversation(e){return g(`/ai/conversations/${e}`)}async getMessages(e){return n(`/ai/conversations/${e}/messages`)}async addMessage(e,s,t,r,o,i,c){return a(`/ai/conversations/${e}/messages`,{role:s,content:t,dataKeywords:r,dataMessageCount:o,contentBlocks:i,tokenUsage:c})}async deleteMessagesFrom(e,s){return a(`/ai/conversations/${e}/messages/${s}/delete-from`,{})}async forkConversation(e,s,t){return a(`/ai/conversations/${e}/fork`,{upToMessageId:s,title:t})}async updateMessageContent(e,s){await l(`/ai/messages/${e}/content`,{content:s})}async deleteAndRelinkMessage(e,s){await a(`/ai/conversations/${e}/messages/${s}/delete-relink`,{})}async insertMessageAfter(e,s,t,r,o,i){return a(`/ai/conversations/${e}/messages/insert-after`,{afterMessageId:s,role:t,content:r,contentBlocks:o,tokenUsage:i})}async getConversationTokenUsage(e){return n(`/ai/conversations/${e}/token-usage`)}async estimateContextTokens(e){try{return await n(`/ai/conversations/${e}/estimate-tokens`)}catch(s){return{success:!1,tokens:0,error:s instanceof Error?s.message:String(s)}}}async filterMessagesWithContext(e,s,t,r,o,i,c){try{return await a("/ai/filter-messages",{sessionId:e,keywords:s,timeFilter:t,senderIds:r,contextSize:o,page:i,pageSize:c})}catch{return{blocks:[],stats:{totalMessages:0,hitMessages:0,totalChars:0},pagination:{page:1,pageSize:50,totalBlocks:0,totalHits:0,hasMore:!1}}}}async getMultipleSessionsMessages(e,s,t,r){try{return await a("/ai/multiple-sessions-messages",{sessionId:e,chatSessionIds:s,page:t,pageSize:r})}catch{return{blocks:[],stats:{totalMessages:0,hitMessages:0,totalChars:0},pagination:{page:1,pageSize:50,totalBlocks:0,totalHits:0,hasMore:!1}}}}async exportFilterResultToFile(e){return{success:!1,error:u}}onExportProgress(e){return()=>{}}async executeAiSQL(e){return a("/ai/debug/execute-sql",{sql:e})}async getAiSchema(){return n("/ai/debug/schema")}async clearDebugContext(){return a("/ai/debug/clear-debug-context",{})}async getToolCatalog(){try{return await n("/ai/tools/full-catalog")}catch{return n("/ai/tools/catalog")}}async executeTool(e,s,t,r){try{return await a("/ai/tools/execute",{testId:e,toolName:s,params:t,sessionId:r})}catch(o){return{success:!1,error:String(o)}}}async cancelToolTest(e){try{return await a("/ai/tools/cancel",{testId:e})}catch{return{success:!1}}}async getDefaultDesensitizeRules(e){try{return await n(`/ai/desensitize-rules/defaults?locale=${encodeURIComponent(e)}`)}catch{return[]}}async mergeDesensitizeRules(e,s){try{return await a("/ai/desensitize-rules/merge",{existingRules:e,locale:s})}catch{return e}}async showAiLogFile(){return{success:!1,error:u}}}export{v as FetchAIAdapter};
1
+ import{K as n,H as a,Q as l,R as g}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";const u="This feature is not available in web mode";class v{async getConversation(e){try{return await n(`/ai/conversations/${e}`)}catch{return null}}async getConversations(e){return n(`/ai/conversations?sessionId=${encodeURIComponent(e)}`)}async createConversation(e,s,t){return a("/ai/conversations",{sessionId:e,title:s,assistantId:t})}async updateConversationTitle(e,s){return l(`/ai/conversations/${e}/title`,{title:s})}async deleteConversation(e){return g(`/ai/conversations/${e}`)}async getMessages(e){return n(`/ai/conversations/${e}/messages`)}async addMessage(e,s,t,r,o,i,c){return a(`/ai/conversations/${e}/messages`,{role:s,content:t,dataKeywords:r,dataMessageCount:o,contentBlocks:i,tokenUsage:c})}async deleteMessagesFrom(e,s){return a(`/ai/conversations/${e}/messages/${s}/delete-from`,{})}async forkConversation(e,s,t){return a(`/ai/conversations/${e}/fork`,{upToMessageId:s,title:t})}async updateMessageContent(e,s){await l(`/ai/messages/${e}/content`,{content:s})}async deleteAndRelinkMessage(e,s){await a(`/ai/conversations/${e}/messages/${s}/delete-relink`,{})}async insertMessageAfter(e,s,t,r,o,i){return a(`/ai/conversations/${e}/messages/insert-after`,{afterMessageId:s,role:t,content:r,contentBlocks:o,tokenUsage:i})}async getConversationTokenUsage(e){return n(`/ai/conversations/${e}/token-usage`)}async estimateContextTokens(e){try{return await n(`/ai/conversations/${e}/estimate-tokens`)}catch(s){return{success:!1,tokens:0,error:s instanceof Error?s.message:String(s)}}}async filterMessagesWithContext(e,s,t,r,o,i,c){try{return await a("/ai/filter-messages",{sessionId:e,keywords:s,timeFilter:t,senderIds:r,contextSize:o,page:i,pageSize:c})}catch{return{blocks:[],stats:{totalMessages:0,hitMessages:0,totalChars:0},pagination:{page:1,pageSize:50,totalBlocks:0,totalHits:0,hasMore:!1}}}}async getMultipleSessionsMessages(e,s,t,r){try{return await a("/ai/multiple-sessions-messages",{sessionId:e,chatSessionIds:s,page:t,pageSize:r})}catch{return{blocks:[],stats:{totalMessages:0,hitMessages:0,totalChars:0},pagination:{page:1,pageSize:50,totalBlocks:0,totalHits:0,hasMore:!1}}}}async exportFilterResultToFile(e){return{success:!1,error:u}}onExportProgress(e){return()=>{}}async executeAiSQL(e){return a("/ai/debug/execute-sql",{sql:e})}async getAiSchema(){return n("/ai/debug/schema")}async clearDebugContext(){return a("/ai/debug/clear-debug-context",{})}async getToolCatalog(){try{return await n("/ai/tools/full-catalog")}catch{return n("/ai/tools/catalog")}}async executeTool(e,s,t,r){try{return await a("/ai/tools/execute",{testId:e,toolName:s,params:t,sessionId:r})}catch(o){return{success:!1,error:String(o)}}}async cancelToolTest(e){try{return await a("/ai/tools/cancel",{testId:e})}catch{return{success:!1}}}async getDefaultDesensitizeRules(e){try{return await n(`/ai/desensitize-rules/defaults?locale=${encodeURIComponent(e)}`)}catch{return[]}}async mergeDesensitizeRules(e,s,t={}){try{return await a("/ai/desensitize-rules/merge",{existingRules:e,locale:s,overrides:t})}catch{return e}}async showAiLogFile(){return{success:!1,error:u}}}export{v as FetchAIAdapter};
@@ -1 +1 @@
1
- import{K as i,H as r,Q as s,R as l}from"./index-ESCx9pRR.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BLMzqeB8.js";import"./vendor-snapdom-XnBoh1gd.js";class p{async getAll(){return i("/ai/skills")}async getConfig(t){try{return await i(`/ai/skills/${t}`)}catch{return null}}async create(t){return r("/ai/skills",{rawMd:t})}async update(t,a){return s(`/ai/skills/${t}`,{rawMd:a})}async delete(t){return l(`/ai/skills/${t}`)}async importFromMd(t){return r("/ai/skills/import",{rawMd:t})}async importBuiltin(t){return r("/ai/skills/import-builtin",{builtinId:t})}async reimport(t){return r(`/ai/skills/${t}/reimport`,{})}async getBuiltinCatalog(){try{return await i("/ai/skills/builtin-catalog")}catch{return[]}}}export{p as FetchSkillAdapter};
1
+ import{K as i,H as r,Q as s,R as l}from"./index-DS1rzk1I.js";import"./vendor-reka-ui-CnB0mMNX.js";import"./vendor-nuxt-ui-BYU7dz8t.js";import"./vendor-snapdom-XnBoh1gd.js";class p{async getAll(){return i("/ai/skills")}async getConfig(t){try{return await i(`/ai/skills/${t}`)}catch{return null}}async create(t){return r("/ai/skills",{rawMd:t})}async update(t,a){return s(`/ai/skills/${t}`,{rawMd:a})}async delete(t){return l(`/ai/skills/${t}`)}async importFromMd(t){return r("/ai/skills/import",{rawMd:t})}async importBuiltin(t){return r("/ai/skills/import-builtin",{builtinId:t})}async reimport(t){return r(`/ai/skills/${t}/reimport`,{})}async getBuiltinCatalog(){try{return await i("/ai/skills/builtin-catalog")}catch{return[]}}}export{p as FetchSkillAdapter};