coding-tool-x 3.5.8 → 3.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web/assets/{Analytics-BzoNzfbi.js → Analytics-C5W3axXs.js} +1 -1
- package/dist/web/assets/{ConfigTemplates-O4ikBt1o.js → ConfigTemplates-DzyVFDx9.js} +1 -1
- package/dist/web/assets/{Home-BQjsnblU.js → Home-C9TQNB6f.js} +1 -1
- package/dist/web/assets/{PluginManager-DS_DJnVc.js → PluginManager-9B_brLWT.js} +1 -1
- package/dist/web/assets/{ProjectList-CqYDtsHx.js → ProjectList-Bjt6mrsV.js} +1 -1
- package/dist/web/assets/SessionList-BsHPgmUR.css +1 -0
- package/dist/web/assets/{SessionList-DMlLtMCz.js → SessionList-DcBH13uA.js} +1 -1
- package/dist/web/assets/{SkillManager-DpNE02r0.js → SkillManager-vST8DRRg.js} +1 -1
- package/dist/web/assets/{WorkspaceManager-DMY7_SHh.js → WorkspaceManager-ov1KgRXR.js} +1 -1
- package/dist/web/assets/index-Duc7QP4e.js +2 -0
- package/dist/web/index.html +1 -1
- package/package.json +1 -1
- package/src/server/api/codex-sessions.js +4 -2
- package/src/server/api/opencode-sessions.js +4 -2
- package/src/server/api/sessions.js +4 -2
- package/src/server/services/opencode-sessions.js +12 -2
- package/src/server/services/session-launch-command.js +1 -24
- package/src/server/services/sessions.js +89 -38
- package/dist/web/assets/SessionList-CfPtcq6Y.css +0 -1
- package/dist/web/assets/index-Clf0l3wc.js +0 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as t,t as e,A as n,l as i,Q as r,f as o,g as a,w as s,B as l,h as u,i as h,v as c,ab as p,N as d,r as f,c as g,o as v,a as y,X as m,F as _,$ as x,a0 as w,W as b,Y as S,p as M,_ as T,L as C}from"./vue-vendor-BxIT0uQq.js";import{_ as I,x as D,y as k,z as A}from"./index-
|
|
1
|
+
import{d as t,t as e,A as n,l as i,Q as r,f as o,g as a,w as s,B as l,h as u,i as h,v as c,ab as p,N as d,r as f,c as g,o as v,a as y,X as m,F as _,$ as x,a0 as w,W as b,Y as S,p as M,_ as T,L as C}from"./vue-vendor-BxIT0uQq.js";import{_ as I,x as D,y as k,z as A}from"./index-Duc7QP4e.js";import{L as P,_ as L,k as O,B as R,N as z,F as E,g as N}from"./naive-ui-Cg4_ZeoT.js";import{a3 as B,aA as F,aB as V}from"./icons-CEq2hYB-.js";import"./markdown-DyTJGI4N.js";import"./vendors-Bsp-dq2d.js";
|
|
2
2
|
/*! *****************************************************************************
|
|
3
3
|
Copyright (c) Microsoft Corporation.
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as s,w as a}from"./index-
|
|
1
|
+
import{_ as s,w as a}from"./index-Duc7QP4e.js";import{c as e,o,X as r,Y as t,N as i}from"./vue-vendor-BxIT0uQq.js";import{K as d}from"./naive-ui-Cg4_ZeoT.js";import"./vendors-Bsp-dq2d.js";import"./markdown-DyTJGI4N.js";import"./icons-CEq2hYB-.js";const m={class:"config-templates-page"},p=s({__name:"ConfigTemplates",setup:s=>(s,p)=>(o(),e("div",m,[r(i(d),{title:"配置模版管理",bordered:!1},{default:t(()=>[r(a,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-a6c39fe5"]]);export{p as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as e}from"./vendors-Bsp-dq2d.js";import{a9 as a,f as l,r as n,w as s,h as c,K as t,a7 as o,c as i,o as u,a as d,W as r,X as v,Y as p,N as h,a0 as y,a4 as g,_ as k,p as m,L as f,F as T,$ as b,Z as x,v as C}from"./vue-vendor-BxIT0uQq.js";import{_ as w,u as $,a as _,R as q,g as z,b as S,c as L,d as I,e as j,f as O,h as N,i as M,j as A,k as F,l as D,s as P}from"./index-Clf0l3wc.js";import{E as U,o as E,n as V,m as J,ar as K,as as G,at as R,au as Z,av as B,a9 as H,i as W,A as X,aw as Y,ax as Q,T as ee,a as ae,b as le}from"./icons-CEq2hYB-.js";import{L as ne,N as se,B as ce,s as te,b as oe,c as ie,a as ue,Z as de}from"./naive-ui-Cg4_ZeoT.js";import"./markdown-DyTJGI4N.js";const re={class:"channel-column"},ve={class:"drag-handle",title:"拖拽排序"},pe={class:"header-icon"},he={class:"channel-title"},ye={key:0,class:"claude-extra-area"},ge={key:0,class:"channel-content"},ke={class:"card"},me={class:"card-header"},fe={key:0,class:"runtime-badge"},Te={class:"card-body",style:{padding:"6px 10px"}},be={class:"proxy-info-row"},xe={class:"proxy-status"},Ce={class:"proxy-port"},we={class:"channel-name"},$e={class:"channel-quick-panel"},_e={class:"panel-title"},qe={key:0,class:"no-channels"},ze={key:1,class:"channel-quick-list"},Se={class:"channel-quick-info"},Le={class:"channel-quick-name"},Ie={key:0,class:"channel-switching-tip"},je={class:"channel-metrics"},Oe={class:"metric-item"},Ne={class:"metric-value"},Me={class:"metric-item"},Ae={class:"metric-value"},Fe={class:"metric-item"},De={class:"metric-value"},Pe={class:"metric-item"},Ue={class:"card"},Ee={class:"card-header compact"},Ve={class:"card-body",style:{padding:"8px 10px"}},Je={class:"quick-access-list"},Ke={class:"access-icon"},Ge={class:"access-content"},Re={class:"access-value"},Ze={class:"access-icon"},Be={class:"access-content"},He={class:"access-value"},We={class:"access-icon"},Xe={class:"access-content"},Ye={class:"access-goto"},Qe={class:"card-header compact"},ea={class:"card-body",style:{padding:"8px 10px"}},aa={class:"stats-inline stats-3col"},la={class:"stat-inline-item stat-requests"},na={class:"stat-info"},sa={class:"stat-inline-item stat-input"},ca={class:"stat-info"},ta={class:"stat-inline-item stat-output"},oa={class:"stat-info"},ia={key:1,class:"card logs-card"},ua={class:"card-header compact"},da={class:"card-body logs-card-body"},ra={class:"logs-table-wrapper"},va={key:0,class:"empty-logs"},pa={key:0,class:"action-content"},ha={class:"action-msg"},ya={class:"action-time"},ga={key:1,class:"action-content"},ka={class:"action-msg error-msg"},ma={class:"action-time error-time"},fa={class:"locked-content"},Ta={class:"lock-icon"},ba="channelLocks",xa=w({__name:"ChannelColumn",props:{channelType:{type:String,required:!0,validator:e=>["claude","codex","gemini","opencode"].includes(e)}},setup(e){const w=e,D=a(),P=ne(),{claudeProxy:xa,codexProxy:Ca,geminiProxy:wa,opencodeProxy:$a,claudeChannels:_a,codexChannels:qa,geminiChannels:za,opencodeChannels:Sa,schedulerState:La,getProxyState:Ia,startProxy:ja,stopProxy:Oa,getLogs:Na,clearLogsForSource:Ma,loadChannels:Aa,logLimit:Fa,statsInterval:Da}=$(),{dashboardData:Pa,loadDashboard:Ua}=_(),Ea={claude:{title:"ClaudeCode",subtitle:"智能编程助手",icon:J},codex:{title:"Codex-CLI",subtitle:"高效代码生成",icon:V},gemini:{title:"Gemini-CLI",subtitle:"多模态AI助手",icon:E},opencode:{title:"OpenCode",subtitle:"AI 代码助手",icon:U}},Va=l(()=>Ea[w.channelType].title);l(()=>Ea[w.channelType].subtitle);const Ja=l(()=>Ea[w.channelType].icon),Ka=l(()=>"claude"===w.channelType?xa.value:"codex"===w.channelType?Ca.value:"gemini"===w.channelType?wa.value:"opencode"===w.channelType?$a.value:{}),Ga=l(()=>"claude"===w.channelType?"Claude":"codex"===w.channelType?"Codex":"gemini"===w.channelType?"Gemini":"opencode"===w.channelType?"OpenCode":""),Ra=n({projects:0,sessions:0}),Za=n({requests:0,tokens:0,cost:0}),Ba=n({requests:0,tokens:0,cost:0}),Ha={requests:0,tokens:0,cost:3};let Wa={requests:null,tokens:null,cost:null};const Xa=n({requests:!1,tokens:!1,cost:!1}),Ya=l(()=>{var e,a,l;const n="claude"===w.channelType?"claude":"codex"===w.channelType?"codex":"opencode"===w.channelType?"opencode":"gemini";return(null==(l=null==(a=null==(e=Pa.value)?void 0:e.todayStats)?void 0:a[n])?void 0:l.byModel)||{}});function Qa(e,a,l,n=600){Wa[e]&&cancelAnimationFrame(Wa[e]),Xa.value[e]=!0;const s=Date.now(),c=()=>{const t=Date.now()-s,o=Math.min(t/n,1),i=1-Math.pow(1-o,2),u=a+(l-a)*i,d=Ha[e]??0,r=Math.pow(10,d),v=d>0?Math.round(u*r)/r:Math.round(u);Ba.value[e]=v,o<1?Wa[e]=requestAnimationFrame(c):Xa.value[e]=!1};Wa[e]=requestAnimationFrame(c)}const el=n(!1);function al(e){try{const a=localStorage.getItem(ba),l=a?JSON.parse(a):{};l[w.channelType]=e,localStorage.setItem(ba,JSON.stringify(l))}catch(a){}}const ll=n(function(){try{const e=localStorage.getItem(ba);if(e){return JSON.parse(e)[w.channelType]||!1}}catch(e){}return!1}());async function nl(){ll.value=!ll.value,al(ll.value);try{if(await F("channelLocks",w.channelType,ll.value),Pa.value){const e=Pa.value.uiConfig||{},a={...e.channelLocks||{}};a[w.channelType]=ll.value,Pa.value={...Pa.value,uiConfig:{...e,channelLocks:a}}}}catch(e){}}const sl=n(!0);function cl(e){e.detail&&void 0!==e.detail.showLogs&&(sl.value=e.detail.showLogs)}const tl=n(Date.now()),ol=l(()=>{if(!Ka.value.running)return"";const e=Ka.value.startTime;if(!e)return"";const a=tl.value-e;if(a<=0)return"";const l=Math.floor(a/1e3),n=Math.floor(l/3600),s=Math.floor(l%3600/60),c=l%60;let t="已运行 ";return n>0&&(t+=`${n}小时`),s>0&&(t+=`${s}分`),(c>0||0===n&&0===s)&&(t+=`${c}秒`),t}),il=n(null),ul=l(()=>Fa.value),dl={claude:Na("claude"),codex:Na("codex"),gemini:Na("gemini"),opencode:Na("opencode")},rl=l(()=>((dl[w.channelType]||dl.claude).value||[]).slice(0,ul.value));let vl=null,pl=null,hl=null,yl=!1,gl=null;const kl=l(()=>{let e=[];"claude"===w.channelType?e=_a.value||[]:"codex"===w.channelType?e=qa.value||[]:"gemini"===w.channelType?e=za.value||[]:"opencode"===w.channelType&&(e=Sa.value||[]);return[...e.filter(e=>!1!==e.enabled),...e.filter(e=>!1===e.enabled)]});function ml(e){const a=La[w.channelType];if(!a||!a.channels)return 0;const l=a.channels.find(a=>a.id===e);return l?l.inflight:0}const fl=l(()=>{var e;const a=kl.value.filter(e=>!1!==e.enabled).length;return(null==(e=Ka.value.proxy)?void 0:e.running)?`${a}个渠道调度中`:kl.value.length>0?`${a}个渠道已启用`:"无渠道"}),Tl=n({});function bl(e){return Tl.value[e]||{requests:0,tokens:0,cost:0}}async function xl(){var e;try{let a;if("claude"===w.channelType?a=await z():"codex"===w.channelType?a=await S():"gemini"===w.channelType?a=await L():"opencode"===w.channelType&&(a=await I()),a&&a.byChannel){const l={};for(const[n,s]of Object.entries(a.byChannel))l[n]={requests:s.requests||0,tokens:(null==(e=s.tokens)?void 0:e.total)||0,cost:s.cost||0};Tl.value=l}}catch(a){}}async function Cl(e){var a,l;const n=Ia(w.channelType);n.value.loading=!0;try{let a;a=e?await ja(w.channelType):await Oa(w.channelType,{refreshChannelsDrawer:!0}),!1!==a.success?P.success(e?`${Va.value} 代理已启动`:`${Va.value} 代理已停止`):(P.error(a.error||"操作失败"),n.value.running=!e)}catch(s){P.error((null==(l=null==(a=s.response)?void 0:a.data)?void 0:l.error)||s.message||"操作失败"),n.value.running=!e}finally{n.value.loading=!1}}function wl(){D.push({name:`${w.channelType}-projects`})}function $l(){D.push({name:`${w.channelType}-projects`})}s(rl,e=>{var a;const l=(null==(a=e[0])?void 0:a.id)||null;if(!l||l===vl)return void(vl=l);vl=l,gl&&clearTimeout(gl),gl=setTimeout(()=>{xl()},5e3);(!il.value||il.value.scrollTop<20)&&C(()=>{il.value&&(il.value.scrollTop=0)})}),s(()=>Za.value.requests,e=>{Qa("requests",Ba.value.requests,e,600)}),s(()=>Za.value.tokens,e=>{Qa("tokens",Ba.value.tokens,e,600)}),s(()=>Za.value.cost,e=>{Qa("cost",Ba.value.cost,e,600)}),s(()=>w.channelType,()=>{var e;vl=(null==(e=rl.value[0])?void 0:e.id)||null}),s(()=>{var e,a;return null==(a=null==(e=Pa.value)?void 0:e.counts)?void 0:a[w.channelType]},()=>{Sl()}),s(Da,()=>{yl&&function(){pl&&(clearInterval(pl),pl=null);const e=Da.value||30,a=Math.max(1e3*e,1e4);pl=setInterval(()=>{Ll(),xl()},a)}()});const _l=n({});function ql(e){return!!_l.value[e]}function zl(e,a){e&&(_l.value={..._l.value,[e]:!!a})}function Sl(){var e,a;const l=null==(a=null==(e=Pa.value)?void 0:e.counts)?void 0:a[w.channelType];Ra.value.projects=(null==l?void 0:l.projectCount)||0,Ra.value.sessions=(null==l?void 0:l.sessionCount)||0}async function Ll(){if(Pa.value&&Pa.value.todayStats){const e=Pa.value.todayStats[w.channelType];e&&(Za.value.requests=e.requests||0,Za.value.tokens=e.tokens||0,Za.value.cost=e.cost||0)}Sl()}function Il(){Ma(w.channelType)}function jl(){window.dispatchEvent(new CustomEvent("open-skills-drawer",{detail:{platform:w.channelType}}))}return c(async()=>{await Promise.all([Ua().then(()=>Ll()),xl()]),async function(){var e,a;try{if(Pa.value&&Pa.value.uiConfig)sl.value=!1!==(null==(e=Pa.value.uiConfig.panelVisibility)?void 0:e.showLogs);else{const e=await j();e.success&&e.config&&(sl.value=!1!==(null==(a=e.config.panelVisibility)?void 0:a.showLogs))}}catch(l){}}(),async function(){var e,a;try{let l=!1;if(Pa.value&&Pa.value.uiConfig)l=(null==(e=Pa.value.uiConfig.channelLocks)?void 0:e[w.channelType])||!1;else{const e=await j();e.success&&e.config&&(l=(null==(a=e.config.channelLocks)?void 0:a[w.channelType])||!1)}ll.value=l,al(l)}catch(l){}}(),window.addEventListener("panel-visibility-change",cl),Ba.value={...Za.value},yl=!0,hl=setInterval(()=>{tl.value=Date.now()},1e3)}),t(()=>{yl=!1,pl&&clearInterval(pl),hl&&clearInterval(hl),gl&&clearTimeout(gl),window.removeEventListener("panel-visibility-change",cl),Object.values(Wa).forEach(e=>{e&&cancelAnimationFrame(e)})}),(a,l)=>{const n=o("n-collapse");return u(),i("div",re,[d("div",{class:f(["channel-header",e.channelType])},[d("div",ve,[v(h(se),{size:16},{default:p(()=>[v(h(K))]),_:1})]),d("div",pe,[v(h(se),{size:20},{default:p(()=>[(u(),y(g(Ja.value)))]),_:1})]),d("h2",he,k(Va.value),1),["claude","codex","gemini","opencode"].includes(e.channelType)?(u(),i("div",ye,[v(h(te),{trigger:"hover"},{trigger:p(()=>[v(h(ce),{text:"",class:"skills-button",onClick:jl,title:"Skills 技能管理"},{icon:p(()=>[v(h(se),{size:18},{default:p(()=>[v(h(U))]),_:1})]),_:1})]),default:p(()=>[l[3]||(l[3]=m(" Skills 技能管理 ",-1))]),_:1})])):r("",!0),v(h(ce),{text:"",class:"lock-button",onClick:nl,title:ll.value?"解锁此列":"锁定此列"},{icon:p(()=>[v(h(se),{size:18},{default:p(()=>[ll.value?(u(),y(h(G),{key:0})):(u(),y(h(R),{key:1}))]),_:1})]),_:1},8,["title"])],2),ll.value?r("",!0):(u(),i("div",ge,[d("div",ke,[d("div",me,[v(h(se),{size:16},{default:p(()=>[v(h(Z))]),_:1}),l[4]||(l[4]=d("h3",{class:"card-title"},"代理控制",-1)),Ka.value.running&&ol.value?(u(),i("span",fe,k(ol.value),1)):r("",!0),v(h(oe),{value:Ka.value.running,"onUpdate:value":[l[0]||(l[0]=e=>Ka.value.running=e),Cl],loading:Ka.value.loading,size:"small",style:{"margin-left":"auto"}},null,8,["value","loading"])]),d("div",Te,[d("div",be,[d("div",xe,[d("div",{class:f(["status-dot",{active:Ka.value.running}])},null,2),v(h(ie),{type:Ka.value.running?"success":"default",style:{"font-size":"12px"}},{default:p(()=>[m(k(Ka.value.running?"运行中":"已停止"),1)]),_:1},8,["type"]),d("span",Ce,"端口: "+k(Ka.value.port),1)]),v(h(de),{trigger:"click",placement:"bottom",width:320,class:"channel-popover"},{trigger:p(()=>[v(h(ce),{text:"",size:"tiny",class:"channel-status"},{default:p(()=>[d("span",we,k(fl.value),1)]),_:1})]),default:p(()=>[d("div",$e,[d("div",_e,[l[6]||(l[6]=d("span",null,"渠道快捷管理",-1)),v(h(ie),{depth:"3",style:{"font-size":"11px"}},{default:p(()=>[...l[5]||(l[5]=[m("点击开关切换状态",-1)])]),_:1})]),0===kl.value.length?(u(),i("div",qe,[v(h(ie),{depth:"3"},{default:p(()=>[...l[7]||(l[7]=[m("暂无配置渠道",-1)])]),_:1})])):(u(),i("div",ze,[(u(!0),i(T,null,b(kl.value,e=>{var a,n;return u(),i("div",{key:e.id,class:f(["channel-quick-item",{disabled:!1===e.enabled}])},[d("div",Se,[d("span",Le,k(e.name),1),"frozen"===(null==(a=e.health)?void 0:a.status)?(u(),y(h(ue),{key:0,size:"tiny",type:"error",bordered:!1},{default:p(()=>[...l[8]||(l[8]=[m(" 冻结 ",-1)])]),_:1})):r("",!0),v(h(oe),{size:"small",value:!1!==e.enabled,"onUpdate:value":a=>async function(e,a){if(e&&!ql(e.id)){zl(e.id,!0);try{let l;"claude"===w.channelType?l=O:"codex"===w.channelType?l=N:"gemini"===w.channelType?l=M:"opencode"===w.channelType&&(l=A),l&&(await l(e.id,{enabled:a}),P.success(a?`渠道「${e.name}」已启用`:`渠道「${e.name}」已停用`),await Aa())}catch(l){P.error("操作失败: "+l.message)}finally{zl(e.id,!1)}}}(e,a),loading:ql(e.id),disabled:ql(e.id),style:{"margin-left":"auto"}},null,8,["value","onUpdate:value","loading","disabled"])]),ql(e.id)?(u(),i("div",Ie," 正在切换渠道状态... ")):r("",!0),d("div",je,[d("span",Oe,[l[9]||(l[9]=d("span",{class:"metric-label"},"请求",-1)),d("span",Ne,k(bl(e.id).requests),1)]),d("span",Me,[l[10]||(l[10]=d("span",{class:"metric-label"},"Tokens",-1)),d("span",Ae,k((n=bl(e.id).tokens,n>=1e6?(n/1e6).toFixed(1)+"M":n>=1e3?(n/1e3).toFixed(1)+"K":n.toString())),1)]),d("span",Fe,[l[11]||(l[11]=d("span",{class:"metric-label"},"权重",-1)),d("span",De,k(e.weight||1),1)]),d("span",Pe,[l[12]||(l[12]=d("span",{class:"metric-label"},"并发",-1)),d("span",{class:f(["metric-value",{active:ml(e.id)>0}])},k(ml(e.id))+k(e.maxConcurrency?`/${e.maxConcurrency}`:""),3)])])],2)}),128))]))])]),_:1})])])]),d("div",Ue,[d("div",Ee,[v(h(se),{size:14},{default:p(()=>[v(h(B))]),_:1}),l[13]||(l[13]=d("h3",{class:"card-title"},"快速访问",-1))]),d("div",Ve,[d("div",Je,[d("div",{class:"access-card access-card-projects clickable",onClick:wl},[d("div",Ke,[v(h(se),{size:16},{default:p(()=>[v(h(H))]),_:1})]),d("div",Ge,[l[14]||(l[14]=d("span",{class:"access-label"},"项目",-1)),d("span",Re,k(Ra.value.projects),1)])]),d("div",{class:"access-card access-card-sessions clickable",onClick:l[1]||(l[1]=e=>el.value=!0)},[d("div",Ze,[v(h(se),{size:16},{default:p(()=>[v(h(W))]),_:1})]),d("div",Be,[l[15]||(l[15]=d("span",{class:"access-label"},"最新对话",-1)),d("span",He,k(Ra.value.sessions),1)])]),d("div",{class:"access-card access-card-goto clickable",onClick:$l},[d("div",We,[v(h(se),{size:16},{default:p(()=>[v(h(X))]),_:1})]),d("div",Xe,[l[16]||(l[16]=d("span",{class:"access-label"},"前往",-1)),d("span",Ye,k(Ga.value),1)])])])])]),d("div",{class:f(["card stats-card",`stats-card-${e.channelType}`])},[d("div",Qe,[v(h(se),{size:14},{default:p(()=>[v(h(Y))]),_:1}),l[17]||(l[17]=d("h3",{class:"card-title"},"今日数据",-1))]),d("div",ea,[d("div",aa,[d("div",la,[l[19]||(l[19]=d("div",{class:"stat-icon-dot requests"},null,-1)),d("div",na,[l[18]||(l[18]=d("span",{class:"stat-label"},"请求",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.requests}])},k(Ba.value.requests),3)])]),d("div",sa,[l[21]||(l[21]=d("div",{class:"stat-icon-dot tokens"},null,-1)),d("div",ca,[l[20]||(l[20]=d("span",{class:"stat-label"},"总 Tokens",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.tokens}])},k((c=Ba.value.tokens,c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toString())),3)])]),d("div",ta,[l[23]||(l[23]=d("div",{class:"stat-icon-dot cost"},null,-1)),d("div",oa,[l[22]||(l[22]=d("span",{class:"stat-label"},"成本 / USD",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.cost}])},k((s=Ba.value.cost,!s||Number.isNaN(s)?"$0":"$"+Number(s).toFixed(3))),3)])])])])],2),Object.keys(Ya.value).length>0?(u(),i("div",{key:0,class:f(["card chart-card",`chart-card-${e.channelType}`])},[v(n,{"default-expanded-names":[],accordion:""})],2)):r("",!0),sl.value?(u(),i("div",ia,[d("div",ua,[v(h(se),{size:14},{default:p(()=>[v(h(Q))]),_:1}),l[24]||(l[24]=d("h3",{class:"card-title"},"实时日志",-1)),v(h(ce),{text:"",size:"tiny",onClick:x(Il,["stop"]),style:{"margin-left":"auto"},title:"清空日志"},{icon:p(()=>[v(h(se),{size:14},{default:p(()=>[v(h(ee))]),_:1})]),_:1})]),d("div",da,[d("div",ra,[d("div",{class:f(["logs-table-header",`logs-header-${e.channelType}`])},[d("div",{class:f(["log-col col-channel",`col-channel-${e.channelType}`])},"渠道",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"请求",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"回复",2),"claude"===e.channelType?(u(),i(T,{key:0},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"写入",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"命中",2)],64)):"codex"===e.channelType?(u(),i(T,{key:1},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"推理",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):"gemini"===e.channelType?(u(),i(T,{key:2},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):"opencode"===e.channelType?(u(),i(T,{key:3},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"推理",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):r("",!0),d("div",{class:f(["log-col col-time",`col-time-${e.channelType}`])},"时间",2)],2),d("div",{class:"logs-container",ref_key:"logsContainer",ref:il},[0===rl.value.length?(u(),i("div",va,[v(h(se),{size:32,depth:"3",style:{"margin-bottom":"8px"}},{default:p(()=>[v(h(Q))]),_:1}),v(h(ie),{depth:"3",style:{"font-size":"12px","font-weight":"500"}},{default:p(()=>[...l[25]||(l[25]=[m("暂无实时日志",-1)])]),_:1}),v(h(ie),{depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:p(()=>[...l[26]||(l[26]=[m("开启代理后将显示请求记录",-1)])]),_:1})])):r("",!0),(u(!0),i(T,null,b(rl.value,a=>{var l,n,s,c,t,o,y,g,b,x,C,w;return u(),i("div",{key:a.id,class:f(["log-row",{"action-row":"action"===a.type,"error-row":"error"===a.status,"new-log":a.isNew}])},["action"===a.type?(u(),i("div",pa,[v(h(se),{size:12,color:"#18a058"},{default:p(()=>[v(h(ae))]),_:1}),d("span",ha,k(a.message),1),d("span",ya,k(a.time),1)])):"error"===a.status?(u(),i("div",ga,[v(h(se),{size:12,color:"#d03050"},{default:p(()=>[v(h(le))]),_:1}),d("span",ka,k(a.channel)+": "+k(a.error||a.message||"请求失败"),1),d("span",ma,k(a.time),1)])):(u(),i(T,{key:2},[d("div",{class:f(["log-col col-channel",`col-channel-${e.channelType}`])},[v(h(ue),{size:"tiny",type:"success"},{default:p(()=>[m(k(a.channel),1)]),_:2},1024)],2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(l=a.tokens)?void 0:l.input)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(n=a.tokens)?void 0:n.output)||0),3),"claude"===e.channelType?(u(),i(T,{key:0},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(s=a.tokens)?void 0:s.cacheCreation)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(c=a.tokens)?void 0:c.cacheRead)||0),3)],64)):"codex"===e.channelType?(u(),i(T,{key:1},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(t=a.tokens)?void 0:t.reasoning)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(o=a.tokens)?void 0:o.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(y=a.tokens)?void 0:y.total)||0),3)],64)):"gemini"===e.channelType?(u(),i(T,{key:2},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(g=a.tokens)?void 0:g.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(b=a.tokens)?void 0:b.total)||0),3)],64)):"opencode"===e.channelType?(u(),i(T,{key:3},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(x=a.tokens)?void 0:x.reasoning)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(C=a.tokens)?void 0:C.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(w=a.tokens)?void 0:w.total)||0),3)],64)):r("",!0),d("div",{class:f(["log-col col-time",`col-time-${e.channelType}`])},k(a.time),3)],64))],2)}),128))],512)])])])):r("",!0)])),ll.value?(u(),i("div",{key:1,class:f(["locked-overlay",`locked-${e.channelType}`])},[d("div",fa,[d("div",Ta,[v(h(se),{size:48},{default:p(()=>[v(h(G))]),_:1})]),l[28]||(l[28]=d("h3",{class:"locked-title"},"该渠道已锁定",-1)),v(h(ie),{depth:"3",class:"locked-hint"},{default:p(()=>[...l[27]||(l[27]=[m(" 点击上方按钮解锁以查看内容 ",-1)])]),_:1})])],2)):r("",!0),v(q,{visible:el.value,"onUpdate:visible":l[2]||(l[2]=e=>el.value=e),channel:e.channelType},null,8,["visible","channel"])]);var s,c}}},[["__scopeId","data-v-cb1ff380"]]),Ca=n({theme:"light",panelVisibility:{showChannels:!0,showLogs:!0},channelLocks:{claude:!1,codex:!1,gemini:!1},channelCollapse:{claude:[],codex:[],gemini:[]},channelOrder:{claude:[],codex:[],gemini:[]}});let wa=!1,$a=null;async function _a(){return wa?Ca.value:$a||($a=(async()=>{try{const e=await j();e.success&&e.config&&(Ca.value=e.config,wa=!0)}catch(e){}finally{$a=null}return Ca.value})(),$a)}const qa={class:"page-shell dashboard-page"},za={class:"page-content dashboard-content"},Sa="dashboardChannelOrder",La=w({__name:"Home",setup(a){const l=["claude","codex","gemini","opencode"],{uiConfig:s,updateConfig:t,loadUIConfig:o}=(wa||_a(),{uiConfig:Ca,loadUIConfig:_a,saveConfig:async function(e){try{const a=await P(e);return!!a.success&&(Ca.value=a.config,!0)}catch(a){return!1}},updateConfig:async function(e,a){try{const l=await D(e,a);return!!l.success&&(Ca.value=l.config,!0)}catch(l){return!1}},updateNestedConfig:async function(e,a,l){try{const n=await F(e,a,l);return!!n.success&&(Ca.value=n.config,!0)}catch(n){return!1}}});function r(e){try{localStorage.setItem(Sa,JSON.stringify(e))}catch(a){}}const g=n(function(){try{const e=localStorage.getItem(Sa);if(e){const a=JSON.parse(e);if(Array.isArray(a)&&4===a.length)return a}}catch(e){}return l}().map(e=>({type:e})));async function k(){const e=g.value.map(e=>e.type);r(e),await t("dashboardChannelOrder",e)}return c(async()=>{if(await o(),s.value.dashboardChannelOrder&&Array.isArray(s.value.dashboardChannelOrder)&&4===s.value.dashboardChannelOrder.length){const e=s.value.dashboardChannelOrder;g.value=e.map(e=>({type:e})),r(e)}}),(a,l)=>(u(),i("div",qa,[d("div",za,[v(h(e),{modelValue:g.value,"onUpdate:modelValue":l[0]||(l[0]=e=>g.value=e),class:"dashboard-grid","item-key":"type",animation:200,handle:".drag-handle",onEnd:k},{item:p(({element:e})=>[(u(),y(xa,{"channel-type":e.type,key:e.type},null,8,["channel-type"]))]),_:1},8,["modelValue"])])]))}},[["__scopeId","data-v-2fa76615"]]);export{La as default};
|
|
1
|
+
import{d as e}from"./vendors-Bsp-dq2d.js";import{a9 as a,f as l,r as n,w as s,h as c,K as t,a7 as o,c as i,o as u,a as d,W as r,X as v,Y as p,N as h,a0 as y,a4 as g,_ as k,p as m,L as f,F as T,$ as b,Z as x,v as C}from"./vue-vendor-BxIT0uQq.js";import{_ as w,u as $,a as _,R as q,g as z,b as S,c as L,d as I,e as j,f as O,h as N,i as M,j as A,k as F,l as D,s as P}from"./index-Duc7QP4e.js";import{E as U,o as E,n as V,m as J,ar as K,as as G,at as R,au as Z,av as B,a9 as H,i as W,A as X,aw as Y,ax as Q,T as ee,a as ae,b as le}from"./icons-CEq2hYB-.js";import{L as ne,N as se,B as ce,s as te,b as oe,c as ie,a as ue,Z as de}from"./naive-ui-Cg4_ZeoT.js";import"./markdown-DyTJGI4N.js";const re={class:"channel-column"},ve={class:"drag-handle",title:"拖拽排序"},pe={class:"header-icon"},he={class:"channel-title"},ye={key:0,class:"claude-extra-area"},ge={key:0,class:"channel-content"},ke={class:"card"},me={class:"card-header"},fe={key:0,class:"runtime-badge"},Te={class:"card-body",style:{padding:"6px 10px"}},be={class:"proxy-info-row"},xe={class:"proxy-status"},Ce={class:"proxy-port"},we={class:"channel-name"},$e={class:"channel-quick-panel"},_e={class:"panel-title"},qe={key:0,class:"no-channels"},ze={key:1,class:"channel-quick-list"},Se={class:"channel-quick-info"},Le={class:"channel-quick-name"},Ie={key:0,class:"channel-switching-tip"},je={class:"channel-metrics"},Oe={class:"metric-item"},Ne={class:"metric-value"},Me={class:"metric-item"},Ae={class:"metric-value"},Fe={class:"metric-item"},De={class:"metric-value"},Pe={class:"metric-item"},Ue={class:"card"},Ee={class:"card-header compact"},Ve={class:"card-body",style:{padding:"8px 10px"}},Je={class:"quick-access-list"},Ke={class:"access-icon"},Ge={class:"access-content"},Re={class:"access-value"},Ze={class:"access-icon"},Be={class:"access-content"},He={class:"access-value"},We={class:"access-icon"},Xe={class:"access-content"},Ye={class:"access-goto"},Qe={class:"card-header compact"},ea={class:"card-body",style:{padding:"8px 10px"}},aa={class:"stats-inline stats-3col"},la={class:"stat-inline-item stat-requests"},na={class:"stat-info"},sa={class:"stat-inline-item stat-input"},ca={class:"stat-info"},ta={class:"stat-inline-item stat-output"},oa={class:"stat-info"},ia={key:1,class:"card logs-card"},ua={class:"card-header compact"},da={class:"card-body logs-card-body"},ra={class:"logs-table-wrapper"},va={key:0,class:"empty-logs"},pa={key:0,class:"action-content"},ha={class:"action-msg"},ya={class:"action-time"},ga={key:1,class:"action-content"},ka={class:"action-msg error-msg"},ma={class:"action-time error-time"},fa={class:"locked-content"},Ta={class:"lock-icon"},ba="channelLocks",xa=w({__name:"ChannelColumn",props:{channelType:{type:String,required:!0,validator:e=>["claude","codex","gemini","opencode"].includes(e)}},setup(e){const w=e,D=a(),P=ne(),{claudeProxy:xa,codexProxy:Ca,geminiProxy:wa,opencodeProxy:$a,claudeChannels:_a,codexChannels:qa,geminiChannels:za,opencodeChannels:Sa,schedulerState:La,getProxyState:Ia,startProxy:ja,stopProxy:Oa,getLogs:Na,clearLogsForSource:Ma,loadChannels:Aa,logLimit:Fa,statsInterval:Da}=$(),{dashboardData:Pa,loadDashboard:Ua}=_(),Ea={claude:{title:"ClaudeCode",subtitle:"智能编程助手",icon:J},codex:{title:"Codex-CLI",subtitle:"高效代码生成",icon:V},gemini:{title:"Gemini-CLI",subtitle:"多模态AI助手",icon:E},opencode:{title:"OpenCode",subtitle:"AI 代码助手",icon:U}},Va=l(()=>Ea[w.channelType].title);l(()=>Ea[w.channelType].subtitle);const Ja=l(()=>Ea[w.channelType].icon),Ka=l(()=>"claude"===w.channelType?xa.value:"codex"===w.channelType?Ca.value:"gemini"===w.channelType?wa.value:"opencode"===w.channelType?$a.value:{}),Ga=l(()=>"claude"===w.channelType?"Claude":"codex"===w.channelType?"Codex":"gemini"===w.channelType?"Gemini":"opencode"===w.channelType?"OpenCode":""),Ra=n({projects:0,sessions:0}),Za=n({requests:0,tokens:0,cost:0}),Ba=n({requests:0,tokens:0,cost:0}),Ha={requests:0,tokens:0,cost:3};let Wa={requests:null,tokens:null,cost:null};const Xa=n({requests:!1,tokens:!1,cost:!1}),Ya=l(()=>{var e,a,l;const n="claude"===w.channelType?"claude":"codex"===w.channelType?"codex":"opencode"===w.channelType?"opencode":"gemini";return(null==(l=null==(a=null==(e=Pa.value)?void 0:e.todayStats)?void 0:a[n])?void 0:l.byModel)||{}});function Qa(e,a,l,n=600){Wa[e]&&cancelAnimationFrame(Wa[e]),Xa.value[e]=!0;const s=Date.now(),c=()=>{const t=Date.now()-s,o=Math.min(t/n,1),i=1-Math.pow(1-o,2),u=a+(l-a)*i,d=Ha[e]??0,r=Math.pow(10,d),v=d>0?Math.round(u*r)/r:Math.round(u);Ba.value[e]=v,o<1?Wa[e]=requestAnimationFrame(c):Xa.value[e]=!1};Wa[e]=requestAnimationFrame(c)}const el=n(!1);function al(e){try{const a=localStorage.getItem(ba),l=a?JSON.parse(a):{};l[w.channelType]=e,localStorage.setItem(ba,JSON.stringify(l))}catch(a){}}const ll=n(function(){try{const e=localStorage.getItem(ba);if(e){return JSON.parse(e)[w.channelType]||!1}}catch(e){}return!1}());async function nl(){ll.value=!ll.value,al(ll.value);try{if(await F("channelLocks",w.channelType,ll.value),Pa.value){const e=Pa.value.uiConfig||{},a={...e.channelLocks||{}};a[w.channelType]=ll.value,Pa.value={...Pa.value,uiConfig:{...e,channelLocks:a}}}}catch(e){}}const sl=n(!0);function cl(e){e.detail&&void 0!==e.detail.showLogs&&(sl.value=e.detail.showLogs)}const tl=n(Date.now()),ol=l(()=>{if(!Ka.value.running)return"";const e=Ka.value.startTime;if(!e)return"";const a=tl.value-e;if(a<=0)return"";const l=Math.floor(a/1e3),n=Math.floor(l/3600),s=Math.floor(l%3600/60),c=l%60;let t="已运行 ";return n>0&&(t+=`${n}小时`),s>0&&(t+=`${s}分`),(c>0||0===n&&0===s)&&(t+=`${c}秒`),t}),il=n(null),ul=l(()=>Fa.value),dl={claude:Na("claude"),codex:Na("codex"),gemini:Na("gemini"),opencode:Na("opencode")},rl=l(()=>((dl[w.channelType]||dl.claude).value||[]).slice(0,ul.value));let vl=null,pl=null,hl=null,yl=!1,gl=null;const kl=l(()=>{let e=[];"claude"===w.channelType?e=_a.value||[]:"codex"===w.channelType?e=qa.value||[]:"gemini"===w.channelType?e=za.value||[]:"opencode"===w.channelType&&(e=Sa.value||[]);return[...e.filter(e=>!1!==e.enabled),...e.filter(e=>!1===e.enabled)]});function ml(e){const a=La[w.channelType];if(!a||!a.channels)return 0;const l=a.channels.find(a=>a.id===e);return l?l.inflight:0}const fl=l(()=>{var e;const a=kl.value.filter(e=>!1!==e.enabled).length;return(null==(e=Ka.value.proxy)?void 0:e.running)?`${a}个渠道调度中`:kl.value.length>0?`${a}个渠道已启用`:"无渠道"}),Tl=n({});function bl(e){return Tl.value[e]||{requests:0,tokens:0,cost:0}}async function xl(){var e;try{let a;if("claude"===w.channelType?a=await z():"codex"===w.channelType?a=await S():"gemini"===w.channelType?a=await L():"opencode"===w.channelType&&(a=await I()),a&&a.byChannel){const l={};for(const[n,s]of Object.entries(a.byChannel))l[n]={requests:s.requests||0,tokens:(null==(e=s.tokens)?void 0:e.total)||0,cost:s.cost||0};Tl.value=l}}catch(a){}}async function Cl(e){var a,l;const n=Ia(w.channelType);n.value.loading=!0;try{let a;a=e?await ja(w.channelType):await Oa(w.channelType,{refreshChannelsDrawer:!0}),!1!==a.success?P.success(e?`${Va.value} 代理已启动`:`${Va.value} 代理已停止`):(P.error(a.error||"操作失败"),n.value.running=!e)}catch(s){P.error((null==(l=null==(a=s.response)?void 0:a.data)?void 0:l.error)||s.message||"操作失败"),n.value.running=!e}finally{n.value.loading=!1}}function wl(){D.push({name:`${w.channelType}-projects`})}function $l(){D.push({name:`${w.channelType}-projects`})}s(rl,e=>{var a;const l=(null==(a=e[0])?void 0:a.id)||null;if(!l||l===vl)return void(vl=l);vl=l,gl&&clearTimeout(gl),gl=setTimeout(()=>{xl()},5e3);(!il.value||il.value.scrollTop<20)&&C(()=>{il.value&&(il.value.scrollTop=0)})}),s(()=>Za.value.requests,e=>{Qa("requests",Ba.value.requests,e,600)}),s(()=>Za.value.tokens,e=>{Qa("tokens",Ba.value.tokens,e,600)}),s(()=>Za.value.cost,e=>{Qa("cost",Ba.value.cost,e,600)}),s(()=>w.channelType,()=>{var e;vl=(null==(e=rl.value[0])?void 0:e.id)||null}),s(()=>{var e,a;return null==(a=null==(e=Pa.value)?void 0:e.counts)?void 0:a[w.channelType]},()=>{Sl()}),s(Da,()=>{yl&&function(){pl&&(clearInterval(pl),pl=null);const e=Da.value||30,a=Math.max(1e3*e,1e4);pl=setInterval(()=>{Ll(),xl()},a)}()});const _l=n({});function ql(e){return!!_l.value[e]}function zl(e,a){e&&(_l.value={..._l.value,[e]:!!a})}function Sl(){var e,a;const l=null==(a=null==(e=Pa.value)?void 0:e.counts)?void 0:a[w.channelType];Ra.value.projects=(null==l?void 0:l.projectCount)||0,Ra.value.sessions=(null==l?void 0:l.sessionCount)||0}async function Ll(){if(Pa.value&&Pa.value.todayStats){const e=Pa.value.todayStats[w.channelType];e&&(Za.value.requests=e.requests||0,Za.value.tokens=e.tokens||0,Za.value.cost=e.cost||0)}Sl()}function Il(){Ma(w.channelType)}function jl(){window.dispatchEvent(new CustomEvent("open-skills-drawer",{detail:{platform:w.channelType}}))}return c(async()=>{await Promise.all([Ua().then(()=>Ll()),xl()]),async function(){var e,a;try{if(Pa.value&&Pa.value.uiConfig)sl.value=!1!==(null==(e=Pa.value.uiConfig.panelVisibility)?void 0:e.showLogs);else{const e=await j();e.success&&e.config&&(sl.value=!1!==(null==(a=e.config.panelVisibility)?void 0:a.showLogs))}}catch(l){}}(),async function(){var e,a;try{let l=!1;if(Pa.value&&Pa.value.uiConfig)l=(null==(e=Pa.value.uiConfig.channelLocks)?void 0:e[w.channelType])||!1;else{const e=await j();e.success&&e.config&&(l=(null==(a=e.config.channelLocks)?void 0:a[w.channelType])||!1)}ll.value=l,al(l)}catch(l){}}(),window.addEventListener("panel-visibility-change",cl),Ba.value={...Za.value},yl=!0,hl=setInterval(()=>{tl.value=Date.now()},1e3)}),t(()=>{yl=!1,pl&&clearInterval(pl),hl&&clearInterval(hl),gl&&clearTimeout(gl),window.removeEventListener("panel-visibility-change",cl),Object.values(Wa).forEach(e=>{e&&cancelAnimationFrame(e)})}),(a,l)=>{const n=o("n-collapse");return u(),i("div",re,[d("div",{class:f(["channel-header",e.channelType])},[d("div",ve,[v(h(se),{size:16},{default:p(()=>[v(h(K))]),_:1})]),d("div",pe,[v(h(se),{size:20},{default:p(()=>[(u(),y(g(Ja.value)))]),_:1})]),d("h2",he,k(Va.value),1),["claude","codex","gemini","opencode"].includes(e.channelType)?(u(),i("div",ye,[v(h(te),{trigger:"hover"},{trigger:p(()=>[v(h(ce),{text:"",class:"skills-button",onClick:jl,title:"Skills 技能管理"},{icon:p(()=>[v(h(se),{size:18},{default:p(()=>[v(h(U))]),_:1})]),_:1})]),default:p(()=>[l[3]||(l[3]=m(" Skills 技能管理 ",-1))]),_:1})])):r("",!0),v(h(ce),{text:"",class:"lock-button",onClick:nl,title:ll.value?"解锁此列":"锁定此列"},{icon:p(()=>[v(h(se),{size:18},{default:p(()=>[ll.value?(u(),y(h(G),{key:0})):(u(),y(h(R),{key:1}))]),_:1})]),_:1},8,["title"])],2),ll.value?r("",!0):(u(),i("div",ge,[d("div",ke,[d("div",me,[v(h(se),{size:16},{default:p(()=>[v(h(Z))]),_:1}),l[4]||(l[4]=d("h3",{class:"card-title"},"代理控制",-1)),Ka.value.running&&ol.value?(u(),i("span",fe,k(ol.value),1)):r("",!0),v(h(oe),{value:Ka.value.running,"onUpdate:value":[l[0]||(l[0]=e=>Ka.value.running=e),Cl],loading:Ka.value.loading,size:"small",style:{"margin-left":"auto"}},null,8,["value","loading"])]),d("div",Te,[d("div",be,[d("div",xe,[d("div",{class:f(["status-dot",{active:Ka.value.running}])},null,2),v(h(ie),{type:Ka.value.running?"success":"default",style:{"font-size":"12px"}},{default:p(()=>[m(k(Ka.value.running?"运行中":"已停止"),1)]),_:1},8,["type"]),d("span",Ce,"端口: "+k(Ka.value.port),1)]),v(h(de),{trigger:"click",placement:"bottom",width:320,class:"channel-popover"},{trigger:p(()=>[v(h(ce),{text:"",size:"tiny",class:"channel-status"},{default:p(()=>[d("span",we,k(fl.value),1)]),_:1})]),default:p(()=>[d("div",$e,[d("div",_e,[l[6]||(l[6]=d("span",null,"渠道快捷管理",-1)),v(h(ie),{depth:"3",style:{"font-size":"11px"}},{default:p(()=>[...l[5]||(l[5]=[m("点击开关切换状态",-1)])]),_:1})]),0===kl.value.length?(u(),i("div",qe,[v(h(ie),{depth:"3"},{default:p(()=>[...l[7]||(l[7]=[m("暂无配置渠道",-1)])]),_:1})])):(u(),i("div",ze,[(u(!0),i(T,null,b(kl.value,e=>{var a,n;return u(),i("div",{key:e.id,class:f(["channel-quick-item",{disabled:!1===e.enabled}])},[d("div",Se,[d("span",Le,k(e.name),1),"frozen"===(null==(a=e.health)?void 0:a.status)?(u(),y(h(ue),{key:0,size:"tiny",type:"error",bordered:!1},{default:p(()=>[...l[8]||(l[8]=[m(" 冻结 ",-1)])]),_:1})):r("",!0),v(h(oe),{size:"small",value:!1!==e.enabled,"onUpdate:value":a=>async function(e,a){if(e&&!ql(e.id)){zl(e.id,!0);try{let l;"claude"===w.channelType?l=O:"codex"===w.channelType?l=N:"gemini"===w.channelType?l=M:"opencode"===w.channelType&&(l=A),l&&(await l(e.id,{enabled:a}),P.success(a?`渠道「${e.name}」已启用`:`渠道「${e.name}」已停用`),await Aa())}catch(l){P.error("操作失败: "+l.message)}finally{zl(e.id,!1)}}}(e,a),loading:ql(e.id),disabled:ql(e.id),style:{"margin-left":"auto"}},null,8,["value","onUpdate:value","loading","disabled"])]),ql(e.id)?(u(),i("div",Ie," 正在切换渠道状态... ")):r("",!0),d("div",je,[d("span",Oe,[l[9]||(l[9]=d("span",{class:"metric-label"},"请求",-1)),d("span",Ne,k(bl(e.id).requests),1)]),d("span",Me,[l[10]||(l[10]=d("span",{class:"metric-label"},"Tokens",-1)),d("span",Ae,k((n=bl(e.id).tokens,n>=1e6?(n/1e6).toFixed(1)+"M":n>=1e3?(n/1e3).toFixed(1)+"K":n.toString())),1)]),d("span",Fe,[l[11]||(l[11]=d("span",{class:"metric-label"},"权重",-1)),d("span",De,k(e.weight||1),1)]),d("span",Pe,[l[12]||(l[12]=d("span",{class:"metric-label"},"并发",-1)),d("span",{class:f(["metric-value",{active:ml(e.id)>0}])},k(ml(e.id))+k(e.maxConcurrency?`/${e.maxConcurrency}`:""),3)])])],2)}),128))]))])]),_:1})])])]),d("div",Ue,[d("div",Ee,[v(h(se),{size:14},{default:p(()=>[v(h(B))]),_:1}),l[13]||(l[13]=d("h3",{class:"card-title"},"快速访问",-1))]),d("div",Ve,[d("div",Je,[d("div",{class:"access-card access-card-projects clickable",onClick:wl},[d("div",Ke,[v(h(se),{size:16},{default:p(()=>[v(h(H))]),_:1})]),d("div",Ge,[l[14]||(l[14]=d("span",{class:"access-label"},"项目",-1)),d("span",Re,k(Ra.value.projects),1)])]),d("div",{class:"access-card access-card-sessions clickable",onClick:l[1]||(l[1]=e=>el.value=!0)},[d("div",Ze,[v(h(se),{size:16},{default:p(()=>[v(h(W))]),_:1})]),d("div",Be,[l[15]||(l[15]=d("span",{class:"access-label"},"最新对话",-1)),d("span",He,k(Ra.value.sessions),1)])]),d("div",{class:"access-card access-card-goto clickable",onClick:$l},[d("div",We,[v(h(se),{size:16},{default:p(()=>[v(h(X))]),_:1})]),d("div",Xe,[l[16]||(l[16]=d("span",{class:"access-label"},"前往",-1)),d("span",Ye,k(Ga.value),1)])])])])]),d("div",{class:f(["card stats-card",`stats-card-${e.channelType}`])},[d("div",Qe,[v(h(se),{size:14},{default:p(()=>[v(h(Y))]),_:1}),l[17]||(l[17]=d("h3",{class:"card-title"},"今日数据",-1))]),d("div",ea,[d("div",aa,[d("div",la,[l[19]||(l[19]=d("div",{class:"stat-icon-dot requests"},null,-1)),d("div",na,[l[18]||(l[18]=d("span",{class:"stat-label"},"请求",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.requests}])},k(Ba.value.requests),3)])]),d("div",sa,[l[21]||(l[21]=d("div",{class:"stat-icon-dot tokens"},null,-1)),d("div",ca,[l[20]||(l[20]=d("span",{class:"stat-label"},"总 Tokens",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.tokens}])},k((c=Ba.value.tokens,c>=1e6?(c/1e6).toFixed(1)+"M":c>=1e3?(c/1e3).toFixed(1)+"K":c.toString())),3)])]),d("div",ta,[l[23]||(l[23]=d("div",{class:"stat-icon-dot cost"},null,-1)),d("div",oa,[l[22]||(l[22]=d("span",{class:"stat-label"},"成本 / USD",-1)),d("span",{class:f(["stat-value",{animating:Xa.value.cost}])},k((s=Ba.value.cost,!s||Number.isNaN(s)?"$0":"$"+Number(s).toFixed(3))),3)])])])])],2),Object.keys(Ya.value).length>0?(u(),i("div",{key:0,class:f(["card chart-card",`chart-card-${e.channelType}`])},[v(n,{"default-expanded-names":[],accordion:""})],2)):r("",!0),sl.value?(u(),i("div",ia,[d("div",ua,[v(h(se),{size:14},{default:p(()=>[v(h(Q))]),_:1}),l[24]||(l[24]=d("h3",{class:"card-title"},"实时日志",-1)),v(h(ce),{text:"",size:"tiny",onClick:x(Il,["stop"]),style:{"margin-left":"auto"},title:"清空日志"},{icon:p(()=>[v(h(se),{size:14},{default:p(()=>[v(h(ee))]),_:1})]),_:1})]),d("div",da,[d("div",ra,[d("div",{class:f(["logs-table-header",`logs-header-${e.channelType}`])},[d("div",{class:f(["log-col col-channel",`col-channel-${e.channelType}`])},"渠道",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"请求",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"回复",2),"claude"===e.channelType?(u(),i(T,{key:0},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"写入",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"命中",2)],64)):"codex"===e.channelType?(u(),i(T,{key:1},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"推理",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):"gemini"===e.channelType?(u(),i(T,{key:2},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):"opencode"===e.channelType?(u(),i(T,{key:3},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"推理",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"缓存",2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},"总计",2)],64)):r("",!0),d("div",{class:f(["log-col col-time",`col-time-${e.channelType}`])},"时间",2)],2),d("div",{class:"logs-container",ref_key:"logsContainer",ref:il},[0===rl.value.length?(u(),i("div",va,[v(h(se),{size:32,depth:"3",style:{"margin-bottom":"8px"}},{default:p(()=>[v(h(Q))]),_:1}),v(h(ie),{depth:"3",style:{"font-size":"12px","font-weight":"500"}},{default:p(()=>[...l[25]||(l[25]=[m("暂无实时日志",-1)])]),_:1}),v(h(ie),{depth:"3",style:{"font-size":"11px","margin-top":"4px"}},{default:p(()=>[...l[26]||(l[26]=[m("开启代理后将显示请求记录",-1)])]),_:1})])):r("",!0),(u(!0),i(T,null,b(rl.value,a=>{var l,n,s,c,t,o,y,g,b,x,C,w;return u(),i("div",{key:a.id,class:f(["log-row",{"action-row":"action"===a.type,"error-row":"error"===a.status,"new-log":a.isNew}])},["action"===a.type?(u(),i("div",pa,[v(h(se),{size:12,color:"#18a058"},{default:p(()=>[v(h(ae))]),_:1}),d("span",ha,k(a.message),1),d("span",ya,k(a.time),1)])):"error"===a.status?(u(),i("div",ga,[v(h(se),{size:12,color:"#d03050"},{default:p(()=>[v(h(le))]),_:1}),d("span",ka,k(a.channel)+": "+k(a.error||a.message||"请求失败"),1),d("span",ma,k(a.time),1)])):(u(),i(T,{key:2},[d("div",{class:f(["log-col col-channel",`col-channel-${e.channelType}`])},[v(h(ue),{size:"tiny",type:"success"},{default:p(()=>[m(k(a.channel),1)]),_:2},1024)],2),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(l=a.tokens)?void 0:l.input)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(n=a.tokens)?void 0:n.output)||0),3),"claude"===e.channelType?(u(),i(T,{key:0},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(s=a.tokens)?void 0:s.cacheCreation)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(c=a.tokens)?void 0:c.cacheRead)||0),3)],64)):"codex"===e.channelType?(u(),i(T,{key:1},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(t=a.tokens)?void 0:t.reasoning)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(o=a.tokens)?void 0:o.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(y=a.tokens)?void 0:y.total)||0),3)],64)):"gemini"===e.channelType?(u(),i(T,{key:2},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(g=a.tokens)?void 0:g.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(b=a.tokens)?void 0:b.total)||0),3)],64)):"opencode"===e.channelType?(u(),i(T,{key:3},[d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(x=a.tokens)?void 0:x.reasoning)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(C=a.tokens)?void 0:C.cached)||0),3),d("div",{class:f(["log-col col-token",`col-token-${e.channelType}`])},k((null==(w=a.tokens)?void 0:w.total)||0),3)],64)):r("",!0),d("div",{class:f(["log-col col-time",`col-time-${e.channelType}`])},k(a.time),3)],64))],2)}),128))],512)])])])):r("",!0)])),ll.value?(u(),i("div",{key:1,class:f(["locked-overlay",`locked-${e.channelType}`])},[d("div",fa,[d("div",Ta,[v(h(se),{size:48},{default:p(()=>[v(h(G))]),_:1})]),l[28]||(l[28]=d("h3",{class:"locked-title"},"该渠道已锁定",-1)),v(h(ie),{depth:"3",class:"locked-hint"},{default:p(()=>[...l[27]||(l[27]=[m(" 点击上方按钮解锁以查看内容 ",-1)])]),_:1})])],2)):r("",!0),v(q,{visible:el.value,"onUpdate:visible":l[2]||(l[2]=e=>el.value=e),channel:e.channelType},null,8,["visible","channel"])]);var s,c}}},[["__scopeId","data-v-cb1ff380"]]),Ca=n({theme:"light",panelVisibility:{showChannels:!0,showLogs:!0},channelLocks:{claude:!1,codex:!1,gemini:!1},channelCollapse:{claude:[],codex:[],gemini:[]},channelOrder:{claude:[],codex:[],gemini:[]}});let wa=!1,$a=null;async function _a(){return wa?Ca.value:$a||($a=(async()=>{try{const e=await j();e.success&&e.config&&(Ca.value=e.config,wa=!0)}catch(e){}finally{$a=null}return Ca.value})(),$a)}const qa={class:"page-shell dashboard-page"},za={class:"page-content dashboard-content"},Sa="dashboardChannelOrder",La=w({__name:"Home",setup(a){const l=["claude","codex","gemini","opencode"],{uiConfig:s,updateConfig:t,loadUIConfig:o}=(wa||_a(),{uiConfig:Ca,loadUIConfig:_a,saveConfig:async function(e){try{const a=await P(e);return!!a.success&&(Ca.value=a.config,!0)}catch(a){return!1}},updateConfig:async function(e,a){try{const l=await D(e,a);return!!l.success&&(Ca.value=l.config,!0)}catch(l){return!1}},updateNestedConfig:async function(e,a,l){try{const n=await F(e,a,l);return!!n.success&&(Ca.value=n.config,!0)}catch(n){return!1}}});function r(e){try{localStorage.setItem(Sa,JSON.stringify(e))}catch(a){}}const g=n(function(){try{const e=localStorage.getItem(Sa);if(e){const a=JSON.parse(e);if(Array.isArray(a)&&4===a.length)return a}}catch(e){}return l}().map(e=>({type:e})));async function k(){const e=g.value.map(e=>e.type);r(e),await t("dashboardChannelOrder",e)}return c(async()=>{if(await o(),s.value.dashboardChannelOrder&&Array.isArray(s.value.dashboardChannelOrder)&&4===s.value.dashboardChannelOrder.length){const e=s.value.dashboardChannelOrder;g.value=e.map(e=>({type:e})),r(e)}}),(a,l)=>(u(),i("div",qa,[d("div",za,[v(h(e),{modelValue:g.value,"onUpdate:modelValue":l[0]||(l[0]=e=>g.value=e),class:"dashboard-grid","item-key":"type",animation:200,handle:".drag-handle",onEnd:k},{item:p(({element:e})=>[(u(),y(xa,{"channel-type":e.type,key:e.type},null,8,["channel-type"]))]),_:1},8,["modelValue"])])]))}},[["__scopeId","data-v-2fa76615"]]);export{La as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as a,P as s}from"./index-
|
|
1
|
+
import{_ as a,P as s}from"./index-Duc7QP4e.js";import{c as r,o as e,X as o,Y as i,N as d}from"./vue-vendor-BxIT0uQq.js";import{K as n}from"./naive-ui-Cg4_ZeoT.js";import"./vendors-Bsp-dq2d.js";import"./markdown-DyTJGI4N.js";import"./icons-CEq2hYB-.js";const t={class:"plugin-manager"},m=a({__name:"PluginManager",setup:a=>(a,m)=>(e(),r("div",t,[o(d(n),{title:"Plugins 插件管理",bordered:!1},{default:i(()=>[o(s,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-6d92033b"]]);export{m as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as e,f as a,c as s,o as t,a as l,X as o,s as n,Y as r,N as c,_ as i,G as u,Z as d,p,a0 as v,W as m,a9 as f,a5 as h,w as y,h as g,K as k,F as j,$ as _,a6 as C,v as b}from"./vue-vendor-BxIT0uQq.js";import{d as w}from"./vendors-Bsp-dq2d.js";import{_ as x,m as $,n as z,o as L,p as N,q as P,r as D}from"./index-
|
|
1
|
+
import{r as e,f as a,c as s,o as t,a as l,X as o,s as n,Y as r,N as c,_ as i,G as u,Z as d,p,a0 as v,W as m,a9 as f,a5 as h,w as y,h as g,K as k,F as j,$ as _,a6 as C,v as b}from"./vue-vendor-BxIT0uQq.js";import{d as w}from"./vendors-Bsp-dq2d.js";import{_ as x,m as $,n as z,o as L,p as N,q as P,r as D}from"./index-Duc7QP4e.js";import{a8 as M,T as I,d as E,ac as K,h as T}from"./icons-CEq2hYB-.js";import{N as U,B as q,c as O,a as R,q as V,g as W,x as G,h as H}from"./naive-ui-Cg4_ZeoT.js";import"./markdown-DyTJGI4N.js";const S={class:"card-content"},A={class:"header-row"},B={class:"project-name"},F={class:"stats-row"},X=x({__name:"ProjectCard",props:{project:{type:Object,required:!0}},emits:["click","delete"],setup(f,{emit:h}){const y=f,g=h,k=e(!1);function j(){g("click")}function _(){g("delete",y.project)}const C=a(()=>{var e,a;return(null==(e=y.project)?void 0:e.displayName)||(null==(a=y.project)?void 0:a.name)||""}),b=a(()=>{var e,a,s;return(null==(e=y.project)?void 0:e.path)||(null==(a=y.project)?void 0:a.fullPath)||(null==(s=y.project)?void 0:s.name)||""}),w=a(()=>{var e;return(null==(e=y.project)?void 0:e.sessionCount)||0}),x=a(()=>{var e;return null==(e=y.project)?void 0:e.lastUsed}),$=a(()=>{var e;const a=["#18a058","#2080f0","#f0a020","#d03050","#9333ea","#06b6d4"];return a[((null==(e=y.project)?void 0:e.name)||"").split("").reduce((e,a)=>e+a.charCodeAt(0),0)%a.length]});function z(e){if(!e)return"";const a=new Date(e),s=new Date-a;return s<6e4?"刚刚":s<36e5?`${Math.floor(s/6e4)}分钟前`:s<864e5?`${Math.floor(s/36e5)}小时前`:s<6048e5?`${Math.floor(s/864e5)}天前`:a.toLocaleDateString("zh-CN")}return(e,a)=>(t(),s("div",{class:"project-card",onClick:j,onMouseenter:a[0]||(a[0]=e=>k.value=!0),onMouseleave:a[1]||(a[1]=e=>k.value=!1)},[l("div",S,[l("div",A,[o(c(U),{size:"18",color:$.value},{default:r(()=>[o(c(M))]),_:1},8,["color"]),l("span",B,i(C.value),1),n(o(c(q),{text:"",type:"error",size:"tiny",class:"delete-btn",onClick:d(_,["stop"])},{icon:r(()=>[o(c(U),{size:"14"},{default:r(()=>[o(c(I))]),_:1})]),_:1},512),[[u,k.value]])]),o(c(O),{depth:"3",class:"project-path"},{default:r(()=>[p(i(b.value),1)]),_:1}),l("div",F,[o(c(R),{size:"tiny",bordered:!1,type:"success"},{default:r(()=>[p(i(w.value)+" 会话 ",1)]),_:1}),x.value?(t(),v(c(O),{key:0,depth:"3",class:"last-used"},{default:r(()=>[p(i(z(x.value)),1)]),_:1})):m("",!0)])])],32))}},[["__scopeId","data-v-3a18e66d"]]),Y={class:"page-shell project-list-container"},Z={class:"page-header project-header"},J={class:"page-header-meta"},Q={class:"page-eyebrow"},ee={class:"page-toolbar project-toolbar"},ae={key:0,class:"loading-container"},se={key:3,class:"projects-grid"},te={class:"floating-shortcut search-hint"},le={class:"project-search-header"},oe={class:"project-search-input-row"},ne={key:0,class:"project-search-results"},re={class:"search-result-header"},ce={class:"search-result-title"},ie=x({__name:"ProjectList",setup(n){const u=f(),x=h(),I=$(),S=a(()=>x.meta.channel||"claude"),A=a(()=>({claude:"Claude Code",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"}[S.value]||"Workspace")),B=e(""),F=e([]),ie=e(null),ue=e(!1),de=e(""),pe=e(null),ve=e(!1),me=e(null),fe=a(()=>{const e=B.value.toLowerCase();return F.value.filter(a=>{const s=(a.displayName||"").toLowerCase(),t=(a.fullPath||"").toLowerCase();return s.includes(e)||t.includes(e)})});function he(e){const a=x.meta.channel||"claude";u.push({name:`${a}-sessions`,params:{projectName:e}})}async function ye(){const e=F.value.map(e=>e.name);await I.saveProjectOrder(e)}function ge(e){const a=e.fullPath||e.name,s=e.sessionCount||0;z.warning({title:"删除项目",content:`确定要删除项目 "${a}" 吗?\n\n当前项目包含 ${s} 个会话,删除后所有会话数据将无法恢复!`,positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{try{await I.deleteProject(e.name),L.success("项目已删除")}catch(a){L.error("删除失败: "+a.message)}}})}async function ke(){try{const a="codex"===(e=S.value||"claude")?"codex":"gemini"===e?"gemini":"opencode"===e?"opencode":"claude",s=await P(a);if("manual"===(null==s?void 0:s.method))return void L.warning("自动复制失败,已弹出手动复制框");L.success("基础启动命令已复制到剪贴板")}catch(a){L.error("复制失败: "+a.message)}var e}async function je(){if(de.value){ve.value=!0;try{const e=await N(de.value,35,S.value);pe.value=e}catch(e){L.error("搜索失败: "+e.message)}finally{ve.value=!1}}}function _e(e,a){if(!a||!e)return e;const s=new RegExp(`(${a})`,"gi");return e.replace(s,'<mark class="keyword-highlight">$1</mark>')}function Ce(){ue.value=!1}function be(e){if((e.metaKey||e.ctrlKey)&&"k"===e.key)return e.preventDefault(),void(ue.value=!0);"Escape"===e.key&&ue.value&&(e.preventDefault(),Ce())}return y(()=>I.projects,e=>{F.value=[...e]},{immediate:!0}),y(ue,e=>{e?b(()=>{var e;null==(e=me.value)||e.focus()}):e||(de.value="",pe.value=null)}),y(S,e=>{I.setChannel(e),I.fetchProjects()},{immediate:!0}),g(()=>{document.addEventListener("keydown",be)}),k(()=>{document.removeEventListener("keydown",be)}),(e,a)=>(t(),s("div",Y,[l("div",Z,[l("div",J,[l("span",Q,i(A.value)+" Workspace",1),a[4]||(a[4]=l("h2",{class:"page-title"},"项目空间",-1)),a[5]||(a[5]=l("p",{class:"page-description"},"选择一个项目查看会话,拖拽可调整顺序,搜索会同时匹配显示名称与完整路径。",-1))]),l("div",ee,[o(c(q),{type:"primary",size:"medium",onClick:ke},{icon:r(()=>[o(c(U),null,{default:r(()=>[o(c(E))]),_:1})]),default:r(()=>[a[6]||(a[6]=p(" 复制启动命令 ",-1))]),_:1}),o(c(V),{value:B.value,"onUpdate:value":a[0]||(a[0]=e=>B.value=e),placeholder:"搜索项目...",clearable:"",class:"search-input"},{prefix:r(()=>[o(c(U),null,{default:r(()=>[o(c(K))]),_:1})]),_:1},8,["value"])])]),l("div",{class:"page-content project-content",ref_key:"contentEl",ref:ie},[c(I).loading?(t(),s("div",ae,[o(c(W),{size:"large"},{description:r(()=>[...a[7]||(a[7]=[p(" 加载项目列表... ",-1)])]),_:1})])):c(I).error?(t(),v(c(G),{key:1,type:"error",title:"加载失败",style:{"margin-top":"20px"}},{default:r(()=>[p(i(c(I).error),1)]),_:1})):B.value?(t(),s("div",se,[(t(!0),s(j,null,_(fe.value,e=>(t(),v(X,{key:e.name,project:e,onClick:a=>he(e.name),onDelete:ge},null,8,["project","onClick"]))),128))])):(t(),v(c(w),{key:2,modelValue:F.value,"onUpdate:modelValue":a[1]||(a[1]=e=>F.value=e),"item-key":"name",class:"projects-grid","ghost-class":"ghost","chosen-class":"chosen","drag-class":"drag",animation:"200",onEnd:ye},{item:r(({element:e})=>[o(X,{project:e,onClick:a=>he(e.name),onDelete:ge},null,8,["project","onClick"])]),_:1},8,["modelValue"])),c(I).loading||c(I).error||0!==c(I).projects.length?m("",!0):(t(),v(c(H),{key:4,description:"没有找到项目",style:{"margin-top":"60px"}},{icon:r(()=>[o(c(U),null,{default:r(()=>[o(c(M))]),_:1})]),_:1}))],512),l("div",te,[o(c(O),{depth:"3",style:{"font-size":"12px"}},{default:r(()=>[...a[8]||(a[8]=[l("kbd",{class:"ui-kbd"},"Cmd",-1),p(" / ",-1),l("kbd",{class:"ui-kbd"},"Ctrl",-1),p(" + ",-1),l("kbd",{class:"ui-kbd"},"K",-1),p(" 全局搜索 ",-1)])]),_:1})]),ue.value?(t(),s("div",{key:0,class:"project-search-overlay",onClick:d(Ce,["self"])},[l("div",{class:"project-search-panel surface-block",onClick:a[3]||(a[3]=d(()=>{},["stop"]))},[l("div",le,[a[10]||(a[10]=l("div",{class:"project-search-copy"},[l("span",{class:"project-search-title"},"全局搜索"),l("span",{class:"project-search-subtitle"},"在当前渠道的所有项目中搜索对话内容")],-1)),o(c(q),{text:"",onClick:Ce},{default:r(()=>[...a[9]||(a[9]=[p("关闭",-1)])]),_:1})]),l("div",oe,[o(c(V),{ref_key:"globalSearchInputRef",ref:me,value:de.value,"onUpdate:value":a[2]||(a[2]=e=>de.value=e),placeholder:"搜索所有项目的对话内容...",clearable:"",onKeyup:C(je,["enter"]),disabled:ve.value},{prefix:r(()=>[o(c(U),null,{default:r(()=>[o(c(K))]),_:1})]),suffix:r(()=>[o(c(q),{text:"",onClick:je,disabled:!de.value||ve.value,loading:ve.value},{default:r(()=>[...a[11]||(a[11]=[p(" 搜索 ",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["value","disabled"])]),pe.value?(t(),s("div",ne,[o(c(G),{type:"info",style:{"margin-bottom":"16px"}},{default:r(()=>[p(' 关键词 "'+i(pe.value.keyword)+'" 共找到 '+i(pe.value.totalMatches)+" 处匹配 ",1)]),_:1}),(t(!0),s(j,null,_(pe.value.sessions,e=>(t(),s("div",{key:`${e.projectName}-${e.sessionId}`,class:"search-result-item"},[l("div",re,[l("div",ce,[o(c(O),{strong:"",style:{"font-size":"15px","font-weight":"700"}},{default:r(()=>[p(i(e.projectDisplayName),1)]),_:2},1024),o(c(O),{depth:"2",style:{margin:"0 8px"}},{default:r(()=>[...a[12]||(a[12]=[p("·",-1)])]),_:1}),o(c(O),{strong:""},{default:r(()=>[p(i(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId.substring(0,8)),1)]),_:2},1024),o(c(R),{size:"small",bordered:!1},{default:r(()=>[p(i(e.matchCount)+" 个匹配",1)]),_:2},1024)]),o(c(q),{size:"small",type:"primary",onClick:a=>async function(e,a){try{const{copyResult:s}=await D(e,a,S.value);"manual"===(null==s?void 0:s.method)?L.warning("自动复制失败,已弹出手动复制框"):L.success("启动命令已复制到剪贴板"),ue.value=!1}catch(s){L.error("复制失败: "+s.message)}}(e.projectName,e.sessionId)},{icon:r(()=>[o(c(U),null,{default:r(()=>[o(c(T))]),_:1})]),default:r(()=>[a[13]||(a[13]=p(" 使用对话 ",-1))]),_:1},8,["onClick"])]),(t(!0),s(j,null,_(e.matches,(e,a)=>(t(),s("div",{key:a,class:"search-match"},[o(c(R),{size:"tiny",type:"user"===e.role?"info":"success",bordered:!1},{default:r(()=>[p(i("user"===e.role?"用户":"助手"),1)]),_:2},1032,["type"]),o(c(O),{depth:"3",class:"search-match-text",innerHTML:_e(e.context,pe.value.keyword)},null,8,["innerHTML"])]))),128))]))),128)),0===pe.value.sessions.length?(t(),v(c(H),{key:0,description:"没有找到匹配的内容"})):m("",!0)])):m("",!0)])])):m("",!0)]))}},[["__scopeId","data-v-1586bb2f"]]);export{ie as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.session-list-container[data-v-e1cf2619]{width:100%}.sessions-list[data-v-e1cf2619]{position:relative;overflow:hidden}.session-header[data-v-e1cf2619]{align-items:flex-start;gap:14px}.session-header-main[data-v-e1cf2619]{display:flex;align-items:flex-start;gap:12px;min-width:0;flex:1}.back-button[data-v-e1cf2619]{flex-shrink:0}.title-section[data-v-e1cf2619]{flex:1;min-width:0}.title-with-count[data-v-e1cf2619]{display:flex;align-items:center;gap:6px;margin-bottom:0;flex-wrap:wrap}.title-section h2[data-v-e1cf2619]{margin:0}.session-page-title[data-v-e1cf2619]{font-size:clamp(22px,1.75vw,27px);line-height:1.08;letter-spacing:-.03em}.session-count[data-v-e1cf2619]{font-size:13px;color:var(--text-secondary)}.total-size-tag[data-v-e1cf2619]{margin-left:0}.project-path[data-v-e1cf2619]{margin-top:0}.header-actions[data-v-e1cf2619]{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.session-toolbar[data-v-e1cf2619]{min-width:min(420px,100%)}.search-input[data-v-e1cf2619]{width:300px;min-width:min(300px,100%)}.search-input[data-v-e1cf2619] .n-input{border-radius:14px;background:var(--surface-panel-strong);border:1px solid var(--border-primary);transition:all .2s ease}.search-input[data-v-e1cf2619] .n-input:hover{border-color:var(--border-secondary);box-shadow:var(--shadow-sm)}.search-input[data-v-e1cf2619] .n-input:focus-within{border-color:var(--primary-color);box-shadow:var(--focus-ring)}.loading-container[data-v-e1cf2619]{display:flex;justify-content:center;align-items:center;min-height:400px}.session-item[data-v-e1cf2619]{display:flex;align-items:center;gap:12px;padding:18px;background:var(--surface-panel);border:1px solid var(--border-primary);border-radius:18px;margin-bottom:10px;transition:all .22s ease;cursor:pointer;box-shadow:var(--shadow-sm)}.session-item[data-v-e1cf2619]:hover{border-color:#18a05842;box-shadow:var(--shadow-md);transform:translateY(-1px)}.session-item-selection-mode[data-v-e1cf2619]{cursor:default}.session-item-selected[data-v-e1cf2619]{border-color:#18a0585c;box-shadow:0 0 0 3px #18a0581f;background:#18a0580a}.drag-handle[data-v-e1cf2619]{cursor:move;width:24px;height:24px;padding:4px;opacity:.4;transition:all .2s;flex-shrink:0;display:flex;align-items:center;justify-content:center}.session-item:hover .drag-handle[data-v-e1cf2619]{opacity:1;background-color:#18a0581a;border-radius:10px}.selection-checkbox[data-v-e1cf2619]{width:24px;min-width:24px;display:flex;align-items:center;justify-content:center}.session-left[data-v-e1cf2619]{flex:1;display:flex;align-items:center;gap:16px;min-width:0}.session-icon[data-v-e1cf2619]{flex-shrink:0}.session-info[data-v-e1cf2619]{flex:1;min-width:0}.session-header[data-v-e1cf2619]{display:flex;align-items:center;margin-bottom:6px}.session-title-row[data-v-e1cf2619]{display:flex;align-items:center;gap:8px}.session-title[data-v-e1cf2619]{font-size:15px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0}.session-meta[data-v-e1cf2619]{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px}.session-message[data-v-e1cf2619]{display:block;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.session-message-empty[data-v-e1cf2619]{font-style:italic;opacity:.5}.session-right[data-v-e1cf2619]{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-end;min-width:248px;flex-shrink:0;gap:12px}.session-tags-area[data-v-e1cf2619]{min-height:24px;display:flex;align-items:flex-start;justify-content:flex-end}.session-actions[data-v-e1cf2619]{display:flex;align-items:center;margin-top:auto}.session-actions[data-v-e1cf2619] .n-button{border-radius:12px}.ghost[data-v-e1cf2619]{opacity:.4}.chosen[data-v-e1cf2619]{box-shadow:0 4px 16px #00000026}.search-result-item[data-v-e1cf2619]{margin-bottom:16px;padding:14px;border:1px solid var(--border-primary);border-radius:14px;background:var(--surface-panel);box-shadow:var(--shadow-sm)}.search-result-header[data-v-e1cf2619]{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.search-result-title[data-v-e1cf2619]{display:flex;align-items:center;gap:8px}.search-match[data-v-e1cf2619]{display:flex;align-items:flex-start;gap:8px;margin-top:8px;padding:10px 12px;background:var(--surface-panel-muted);border-radius:12px}.search-match-text[data-v-e1cf2619]{flex:1;line-height:1.6}@media (max-width: 1024px){.session-header[data-v-e1cf2619]{align-items:stretch}.session-toolbar[data-v-e1cf2619]{width:100%;min-width:0}.search-input[data-v-e1cf2619]{width:100%}}@media (max-width: 900px){.session-page-title[data-v-e1cf2619]{font-size:20px}.session-item[data-v-e1cf2619]{flex-direction:column;align-items:stretch}.session-right[data-v-e1cf2619]{min-width:0;align-items:flex-start}.session-tags-area[data-v-e1cf2619],.session-actions[data-v-e1cf2619]{width:100%;justify-content:flex-start}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a9 as e,a5 as s,f as a,r as l,w as n,h as t,K as i,c as o,o as u,a as r,X as c,a0 as d,W as v,Y as f,N as p,_ as m,p as h,F as g,a6 as y,L as k,Z as _,s as w,G as C,y as I,$ as b,v as j}from"./vue-vendor-BxIT0uQq.js";import{d as z}from"./vendors-Bsp-dq2d.js";import{_ as x,m as N,t as F,C as S,v as $,o as B,n as M,r as L}from"./index-Clf0l3wc.js";import{X as U,T as P,ac as T,ay as A,j as E,G,a2 as K,az as O,p as V,h as H,V as R}from"./icons-CEq2hYB-.js";import{N as W,B as q,c as D,a as X,G as Y,q as Z,g as J,x as Q,s as ee,n as se,h as ae,p as le}from"./naive-ui-Cg4_ZeoT.js";import"./markdown-DyTJGI4N.js";const ne={class:"page-shell session-list-container"},te={class:"page-header session-header"},ie={class:"session-header-main"},oe={class:"page-header-meta title-section"},ue={class:"page-eyebrow"},re={class:"title-with-count"},ce={class:"page-title session-page-title"},de={class:"page-description project-path"},ve={class:"page-toolbar session-toolbar"},fe={class:"header-actions"},pe={key:0,class:"loading-container"},me=["onMouseenter","onClick"],he={key:0,class:"drag-handle"},ge={class:"session-left"},ye={class:"session-icon"},ke={class:"session-info"},_e={class:"session-header"},we={class:"session-title-row"},Ce={class:"session-title"},Ie={class:"session-meta"},be={class:"session-right"},je={class:"session-tags-area"},ze={key:0,class:"session-actions"},xe={key:0,style:{"max-height":"70vh","overflow-y":"auto"}},Ne={class:"search-result-header"},Fe={class:"search-result-title"},Se=x({__name:"SessionList",props:{projectName:{type:String,required:!0}},setup(x){const Se=x,$e=e(),Be=s(),Me=N(),{addFavorite:Le,removeFavorite:Ue,isFavorite:Pe}=F(),Te=a(()=>Be.meta.channel||"claude"),Ae=a(()=>({claude:"Claude Code",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"}[Te.value]||"Workspace")),Ee=l(Se.projectName),Ge=a(()=>Ee.value||Se.projectName),Ke=l(""),Oe=l(!1),Ve=l(null),He=l(""),Re=l(null),We=l([]),qe=l(null),De=l(!1),Xe=l(null),Ye=l(!1),Ze=l(!1),Je=l([]),Qe=l(!1),es=l(!1),ss=l(""),as=l(""),ls=l(null),ns={group:{name:`${Te.value}-sessions`,pull:!1,put:!1},forceFallback:!0,fallbackOnBody:!1,fallbackTolerance:4,scroll:!0},ts=a(()=>{var e;return(null==(e=Me.currentProjectInfo)?void 0:e.displayName)||Se.projectName}),is=a(()=>{var e;return(null==(e=Me.currentProjectInfo)?void 0:e.fullPath)||Ge.value}),os=a(()=>new Set(Je.value)),us=a(()=>Je.value.length),rs=a(()=>We.value.length>0&&We.value.every(e=>os.value.has(e.sessionId))),cs=a(()=>us.value>0&&!rs.value);async function ds(){const e=await async function(){Me.projects.length||await Me.fetchProjects();const e=Me.projects.find(e=>e.name===Se.projectName);if(e)return Ee.value=e.name,e.name;const s=Me.projects.find(e=>e.displayName===Se.projectName||e.fullPath===Se.projectName);return s?(Ee.value=s.name,s.name!==Se.projectName&&await $e.replace({name:`${Te.value}-sessions`,params:{projectName:s.name}}),s.name):(Ee.value=Se.projectName,Se.projectName)}();await Me.fetchSessions(e)}n(()=>Me.sessionsWithAlias,e=>{We.value=[...e];const s=new Set(e.map(e=>e.sessionId));Je.value=Je.value.filter(e=>s.has(e)),Ze.value&&0===e.length&&gs()},{immediate:!0});const vs=a(()=>{if(!Ke.value)return We.value;const e=Ke.value.toLowerCase();return We.value.filter(s=>s.sessionId.toLowerCase().includes(e)||s.alias&&s.alias.toLowerCase().includes(e)||s.firstMessage&&s.firstMessage.toLowerCase().includes(e)||s.gitBranch&&s.gitBranch.toLowerCase().includes(e))});function fs(){const e=Be.meta.channel||"claude";$e.push({name:`${e}-projects`})}async function ps(){if(Ke.value){Ye.value=!0;try{const e=await $(Ge.value,Ke.value,35,Te.value);qe.value=e,De.value=!0}catch(e){B.error("搜索失败: "+e.message)}finally{Ye.value=!1}}}async function ms(){const e=We.value.map(e=>e.sessionId);await Me.saveSessionOrder(e)}function hs(){Ze.value=!0,Re.value=null}function gs(){Ze.value=!1,Je.value=[],Re.value=null}function ys(e){return os.value.has(e)}function ks(e,s=!ys(e)){const a=new Set(Je.value);s?a.add(e):a.delete(e),Je.value=Array.from(a)}function _s(e){Je.value=e?We.value.map(e=>e.sessionId):[]}function ws(e){Ze.value?ks(e.sessionId):function(e){ss.value=e.sessionId,as.value=e.alias||"",es.value=!0,j(()=>{var e;null==(e=ls.value)||e.open()})}(e)}async function Cs(){if(Ve.value)try{const e=Ve.value.sessionId;He.value?(await Me.setAlias(e,He.value),B.success("别名设置成功")):(await Me.deleteAlias(e),B.success("别名已删除")),Oe.value=!1,Ve.value=null,He.value=""}catch(e){B.error("操作失败: "+e.message)}}function Is(e){B.error(e)}function bs(e){const s=new Set((e||[]).filter(Boolean));0!==s.size&&(Je.value=Je.value.filter(e=>!s.has(e)),ss.value&&s.has(ss.value)&&(es.value=!1,ss.value="",as.value=""))}async function js(e){try{const{copyResult:s}=await L(Ge.value,e,Te.value);if("manual"===(null==s?void 0:s.method))return void B.warning("自动复制失败,已弹出手动复制框");B.success("启动命令已复制到剪贴板")}catch(s){B.error("复制失败: "+s.message)}}function zs(){if(0===us.value)return void B.warning("请先选择要删除的会话");const e=[...Je.value];M.warning({title:"批量删除会话",content:`确定要删除选中的 ${e.length} 个会话吗?此操作不可恢复!`,positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{Qe.value=!0;try{const s=await Me.deleteSessions(e);if(bs(s.deletedSessionIds),0===s.failed.length)return B.success(`已删除 ${s.deletedSessionIds.length} 个会话`),void gs();Je.value=s.failed.map(e=>e.sessionId),s.deletedSessionIds.length>0?B.warning(`已删除 ${s.deletedSessionIds.length} 个会话,${s.failed.length} 个删除失败`):B.error(`删除失败: ${s.failed[0].error.message}`)}finally{Qe.value=!1}}})}function xs(e){if(!e)return"";return new Date(e).toLocaleString("zh-CN")}function Ns(e){if(!e)return"0 B";const s=1024;return e<s?e+" B":e<s*s?(e/s).toFixed(1)+" KB":(e/s/s).toFixed(1)+" MB"}function Fs(e,s){if(!s||!e)return e;const a=new RegExp(`(${s})`,"gi");return e.replace(a,'<mark class="keyword-highlight">$1</mark>')}function Ss(e,s=80){return e?e.length>s?e.substring(0,s)+"...":e:""}return n([Te,()=>Se.projectName],([e])=>{gs(),Me.setChannel(e),ds()},{immediate:!0}),t(()=>{}),i(()=>{}),(e,s)=>(u(),o("div",ne,[r("div",te,[r("div",ie,[c(p(q),{size:"small",tertiary:"",onClick:fs,class:"back-button"},{icon:f(()=>[c(p(W),{size:"18"},{default:f(()=>[c(p(U))]),_:1})]),_:1}),r("div",oe,[r("span",ue,m(Ae.value)+" Sessions",1),r("div",re,[r("h2",ce,m(ts.value),1),c(p(D),{depth:"3",class:"session-count"},{default:f(()=>[h(m(p(Me).sessions.length)+" 个对话",1)]),_:1}),c(p(X),{size:"small",bordered:!1,type:"info",class:"total-size-tag"},{default:f(()=>[h(m(Ns(p(Me).totalSize)),1)]),_:1})]),r("p",de,m(is.value),1)])]),r("div",ve,[r("div",fe,[Ze.value?(u(),o(g,{key:0},[c(p(Y),{checked:rs.value,indeterminate:cs.value,disabled:0===We.value.length||Qe.value,"onUpdate:checked":_s},{default:f(()=>[...s[9]||(s[9]=[h(" 全选 ",-1)])]),_:1},8,["checked","indeterminate","disabled"]),c(p(D),{depth:"3"},{default:f(()=>[h("已选 "+m(us.value)+" 个",1)]),_:1}),c(p(q),{size:"small",type:"error",disabled:0===us.value,loading:Qe.value,onClick:zs},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[10]||(s[10]=h(" 删除 ",-1))]),_:1},8,["disabled","loading"]),c(p(q),{size:"small",disabled:Qe.value,onClick:gs},{default:f(()=>[...s[11]||(s[11]=[h(" 完成 ",-1)])]),_:1},8,["disabled"])],64)):(u(),d(p(q),{key:1,size:"small",secondary:"",onClick:hs},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[12]||(s[12]=h(" 管理 ",-1))]),_:1}))]),c(p(Z),{value:Ke.value,"onUpdate:value":s[0]||(s[0]=e=>Ke.value=e),placeholder:"搜索会话...",clearable:"",class:"search-input",onKeyup:y(ps,["enter"]),disabled:Ye.value},{prefix:f(()=>[c(p(W),null,{default:f(()=>[c(p(T))]),_:1})]),suffix:f(()=>[c(p(q),{text:"",onClick:ps,disabled:!Ke.value||Ye.value,loading:Ye.value},{default:f(()=>[...s[13]||(s[13]=[h(" 搜索 ",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["value","disabled"])])]),r("div",{class:"page-content session-content",ref_key:"contentEl",ref:Xe},[p(Me).loading?(u(),o("div",pe,[c(p(J),{size:"large"},{description:f(()=>[...s[14]||(s[14]=[h(" 加载会话列表... ",-1)])]),_:1})])):p(Me).error?(u(),d(p(Q),{key:1,type:"error",title:"加载失败",style:{"margin-bottom":"16px"}},{default:f(()=>[h(m(p(Me).error),1)]),_:1})):vs.value.length>0?(u(),d(p(z),I({key:2,modelValue:We.value,"onUpdate:modelValue":s[3]||(s[3]=e=>We.value=e),"item-key":"sessionId",class:"sessions-list",handle:".drag-handle",disabled:Ze.value||Qe.value},ns,{"ghost-class":"ghost","chosen-class":"chosen",animation:"200",onEnd:ms}),{item:f(({element:e})=>[r("div",{class:k(["session-item",{"session-item-selected":ys(e.sessionId),"session-item-selection-mode":Ze.value}]),onMouseenter:s=>Re.value=e.sessionId,onMouseleave:s[2]||(s[2]=e=>Re.value=null),onClick:s=>ws(e)},[Ze.value?(u(),o("div",{key:1,class:"selection-checkbox",onClick:s[1]||(s[1]=_(()=>{},["stop"]))},[c(p(Y),{checked:ys(e.sessionId),"onUpdate:checked":s=>ks(e.sessionId,s)},null,8,["checked","onUpdate:checked"])])):(u(),o("div",he,[c(p(W),{size:"16",color:"#999"},{default:f(()=>[c(p(A))]),_:1})])),r("div",ge,[r("div",ye,[c(p(W),{size:"24",color:"#18a058"},{default:f(()=>[c(p(E))]),_:1})]),r("div",ke,[r("div",_e,[r("div",we,[r("span",Ce,m(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId),1),e.forkedFrom?(u(),d(p(ee),{key:0,placement:"top"},{trigger:f(()=>[c(p(X),{size:"small",type:"warning",bordered:!1,style:{"margin-left":"8px",cursor:"help"}},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[s[15]||(s[15]=h(" Fork ",-1))]),_:1})]),default:f(()=>[h(" Fork 自: "+m(e.forkedFrom),1)]),_:2},1024)):v("",!0)])]),r("div",Ie,[c(p(D),{depth:"3"},{default:f(()=>[h(m(xs(e.mtime)),1)]),_:2},1024),c(p(D),{depth:"3"},{default:f(()=>[...s[16]||(s[16]=[h("•",-1)])]),_:1}),c(p(X),{size:"small",bordered:!1},{default:f(()=>[h(m(Ns(e.size)),1)]),_:2},1024)]),e.firstMessage?(u(),d(p(D),{key:0,depth:"3",class:"session-message"},{default:f(()=>[h(m(Ss(e.firstMessage,80)),1)]),_:2},1024)):e.gitBranch||e.summary?v("",!0):(u(),d(p(D),{key:1,depth:"3",class:"session-message session-message-empty"},{default:f(()=>[...s[17]||(s[17]=[h(" 暂未读取到对话内容 ",-1)])]),_:1}))])]),r("div",be,[r("div",je,[e.gitBranch?(u(),d(p(X),{key:0,size:"small",type:"info",bordered:!1},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[h(" "+m(e.gitBranch),1)]),_:2},1024)):v("",!0)]),Ze.value?v("",!0):(u(),o("div",ze,[c(p(se),null,{default:f(()=>[w(c(p(q),{size:"small",type:"error",onClick:_(s=>{return a=e.sessionId,void M.warning({title:"删除会话",content:"确定要删除这个会话吗?此操作不可恢复!",positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{try{await Me.deleteSession(a),bs([a]),B.success("会话已删除")}catch(e){B.error("删除失败: "+e.message)}}});var a},["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[18]||(s[18]=h(" 删除 ",-1))]),_:1},8,["onClick"]),[[C,Re.value===e.sessionId]]),c(p(q),{size:"small",onClick:_(s=>function(e){Ve.value=e,He.value=e.alias||"",Oe.value=!0}(e),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(K))]),_:1})]),default:f(()=>[s[19]||(s[19]=h(" 别名 ",-1))]),_:1},8,["onClick"]),c(p(q),{size:"small",type:p(Pe)(Te.value,Ge.value,e.sessionId)?"warning":"default",onClick:_(s=>async function(e){const s=Te.value,a=Pe(s,Ge.value,e.sessionId);try{if(a)await Ue(s,Ge.value,e.sessionId),B.success("已取消收藏");else{const a={sessionId:e.sessionId,projectName:Ge.value,projectDisplayName:ts.value,projectFullPath:is.value,alias:e.alias||"",firstMessage:e.firstMessage||"",mtime:e.mtime,size:e.size,gitBranch:e.gitBranch||"",forkedFrom:e.forkedFrom||""};await Le(s,a),B.success("已添加到收藏")}}catch(l){B.error("操作失败: "+l.message)}}(e),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[p(Pe)(Te.value,Ge.value,e.sessionId)?(u(),d(p(O),{key:0})):(u(),d(p(V),{key:1}))]),_:2},1024)]),default:f(()=>[h(" "+m(p(Pe)(Te.value,Ge.value,e.sessionId)?"已收藏":"收藏"),1)]),_:2},1032,["type","onClick"]),"opencode"!==Te.value?(u(),d(p(q),{key:0,size:"small",onClick:_(s=>async function(e){if("opencode"!==Te.value)try{await Me.forkSession(e),B.success("Fork 成功!")}catch(s){B.error("Fork 失败: "+s.message)}else B.warning("OpenCode 当前不支持该 Fork 操作")}(e.sessionId),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[s[20]||(s[20]=h(" Fork ",-1))]),_:1},8,["onClick"])):v("",!0),c(p(q),{size:"small",type:"primary",onClick:_(s=>js(e.sessionId),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(H))]),_:1})]),default:f(()=>[s[21]||(s[21]=h(" 使用对话 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]))])],42,me)]),_:1},16,["modelValue","disabled"])):(u(),d(p(ae),{key:3,description:"没有找到会话",style:{"margin-top":"60px"}},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(R))]),_:1})]),_:1}))],512),c(p(le),{show:Oe.value,"onUpdate:show":s[6]||(s[6]=e=>Oe.value=e),preset:"dialog",title:"设置别名"},{action:f(()=>[c(p(se),null,{default:f(()=>[c(p(q),{onClick:s[5]||(s[5]=e=>Oe.value=!1)},{default:f(()=>[...s[22]||(s[22]=[h("取消",-1)])]),_:1}),c(p(q),{type:"primary",onClick:Cs},{default:f(()=>[...s[23]||(s[23]=[h("确定",-1)])]),_:1})]),_:1})]),default:f(()=>[c(p(Z),{value:He.value,"onUpdate:value":s[4]||(s[4]=e=>He.value=e),placeholder:"输入别名(留空删除)",onKeyup:y(Cs,["enter"])},null,8,["value"])]),_:1},8,["show"]),c(p(le),{show:De.value,"onUpdate:show":s[7]||(s[7]=e=>De.value=e),preset:"card",title:"搜索结果",style:{width:"1200px"}},{default:f(()=>[qe.value?(u(),o("div",xe,[c(p(Q),{type:"info",style:{"margin-bottom":"16px"}},{default:f(()=>[h(' 关键词 "'+m(qe.value.keyword)+'" 共找到 '+m(qe.value.totalMatches)+" 处匹配 ",1)]),_:1}),(u(!0),o(g,null,b(qe.value.sessions,e=>(u(),o("div",{key:e.sessionId,class:"search-result-item"},[r("div",Ne,[r("div",Fe,[c(p(D),{strong:""},{default:f(()=>[h(m(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId.substring(0,8)),1)]),_:2},1024),c(p(X),{size:"small",bordered:!1},{default:f(()=>[h(m(e.matchCount)+" 个匹配",1)]),_:2},1024)]),c(p(q),{size:"small",type:"primary",onClick:s=>js(e.sessionId)},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(H))]),_:1})]),default:f(()=>[s[24]||(s[24]=h(" 使用对话 ",-1))]),_:1},8,["onClick"])]),(u(!0),o(g,null,b(e.matches,(e,s)=>(u(),o("div",{key:s,class:"search-match"},[c(p(X),{size:"tiny",type:"user"===e.role?"info":"success",bordered:!1},{default:f(()=>[h(m("user"===e.role?"用户":"助手"),1)]),_:2},1032,["type"]),c(p(D),{depth:"3",class:"search-match-text",innerHTML:Fs(e.context,qe.value.keyword)},null,8,["innerHTML"])]))),128))]))),128)),0===qe.value.sessions.length?(u(),d(p(ae),{key:0,description:"没有找到匹配的内容"})):v("",!0)])):v("",!0)]),_:1},8,["show"]),ss.value?(u(),d(S,{key:0,ref_key:"chatHistoryRef",ref:ls,show:es.value,"onUpdate:show":s[8]||(s[8]=e=>es.value=e),"project-name":Ge.value,"session-id":ss.value,"session-alias":as.value,channel:Te.value,onError:Is},null,8,["show","project-name","session-id","session-alias","channel"])):v("",!0)]))}},[["__scopeId","data-v-e76934ff"]]);export{Se as default};
|
|
1
|
+
import{a9 as e,a5 as s,f as a,r as l,w as t,h as n,K as i,c as o,o as u,a as r,X as c,a0 as d,W as v,Y as f,N as p,_ as m,p as h,F as g,a6 as y,L as k,Z as _,s as w,G as I,y as C,$ as b,v as j}from"./vue-vendor-BxIT0uQq.js";import{d as z}from"./vendors-Bsp-dq2d.js";import{_ as x,m as N,t as S,C as F,v as $,o as B,n as M,r as L}from"./index-Duc7QP4e.js";import{X as U,T as P,ac as T,ay as A,j as E,G,a2 as K,az as V,p as H,h as O,V as R}from"./icons-CEq2hYB-.js";import{N as W,B as q,c as D,a as X,G as Y,q as Z,g as J,x as Q,s as ee,n as se,h as ae,p as le}from"./naive-ui-Cg4_ZeoT.js";import"./markdown-DyTJGI4N.js";const te={class:"page-shell session-list-container"},ne={class:"page-header session-header"},ie={class:"session-header-main"},oe={class:"page-header-meta title-section"},ue={class:"page-eyebrow"},re={class:"title-with-count"},ce={class:"page-title session-page-title"},de={class:"page-description project-path"},ve={class:"page-toolbar session-toolbar"},fe={class:"header-actions"},pe={key:0,class:"loading-container"},me=["onMouseenter","onClick"],he={key:0,class:"drag-handle"},ge={class:"session-left"},ye={class:"session-icon"},ke={class:"session-info"},_e={class:"session-header"},we={class:"session-title-row"},Ie={class:"session-title"},Ce={class:"session-meta"},be={class:"session-right"},je={class:"session-tags-area"},ze={key:0,class:"session-actions"},xe={key:0,style:{"max-height":"70vh","overflow-y":"auto"}},Ne={class:"search-result-header"},Se={class:"search-result-title"},Fe=x({__name:"SessionList",props:{projectName:{type:String,required:!0}},setup(x){const Fe=x,$e=e(),Be=s(),Me=N(),{addFavorite:Le,removeFavorite:Ue,isFavorite:Pe}=S(),Te=a(()=>Be.meta.channel||"claude"),Ae=a(()=>({claude:"Claude Code",codex:"Codex",gemini:"Gemini",opencode:"OpenCode"}[Te.value]||"Workspace")),Ee=l(Fe.projectName),Ge=a(()=>Ee.value||Fe.projectName),Ke=l(""),Ve=l(!1),He=l(null),Oe=l(""),Re=l(null),We=l([]),qe=l(null),De=l(!1),Xe=l(null),Ye=l(!1),Ze=l(!1),Je=l([]),Qe=l(!1),es=l(!1),ss=l(""),as=l(""),ls=l(null),ts={group:{name:`${Te.value}-sessions`,pull:!1,put:!1},forceFallback:!0,fallbackOnBody:!1,fallbackTolerance:4,scroll:!0},ns=a(()=>{var e;return(null==(e=Me.currentProjectInfo)?void 0:e.displayName)||Fe.projectName}),is=a(()=>{var e;return(null==(e=Me.currentProjectInfo)?void 0:e.fullPath)||Ge.value}),os=a(()=>new Set(Je.value)),us=a(()=>Je.value.length),rs=a(()=>We.value.length>0&&We.value.every(e=>os.value.has(e.sessionId))),cs=a(()=>us.value>0&&!rs.value);async function ds(){const e=await async function(){Me.projects.length||await Me.fetchProjects();const e=Me.projects.find(e=>e.name===Fe.projectName);if(e)return Ee.value=e.name,e.name;const s=Me.projects.find(e=>e.displayName===Fe.projectName||e.fullPath===Fe.projectName);return s?(Ee.value=s.name,s.name!==Fe.projectName&&await $e.replace({name:`${Te.value}-sessions`,params:{projectName:s.name}}),s.name):(Ee.value=Fe.projectName,Fe.projectName)}();await Me.fetchSessions(e)}t(()=>Me.sessionsWithAlias,e=>{We.value=[...e];const s=new Set(e.map(e=>e.sessionId));Je.value=Je.value.filter(e=>s.has(e)),Ze.value&&0===e.length&&gs()},{immediate:!0});const vs=a(()=>{if(!Ke.value)return We.value;const e=Ke.value.toLowerCase();return We.value.filter(s=>s.sessionId.toLowerCase().includes(e)||s.alias&&s.alias.toLowerCase().includes(e)||s.firstMessage&&s.firstMessage.toLowerCase().includes(e)||s.gitBranch&&s.gitBranch.toLowerCase().includes(e))});function fs(){const e=Be.meta.channel||"claude";$e.push({name:`${e}-projects`})}async function ps(){if(Ke.value){Ye.value=!0;try{const e=await $(Ge.value,Ke.value,35,Te.value);qe.value=e,De.value=!0}catch(e){B.error("搜索失败: "+e.message)}finally{Ye.value=!1}}}async function ms(){const e=We.value.map(e=>e.sessionId);await Me.saveSessionOrder(e)}function hs(){Ze.value=!0,Re.value=null}function gs(){Ze.value=!1,Je.value=[],Re.value=null}function ys(e){return os.value.has(e)}function ks(e,s=!ys(e)){const a=new Set(Je.value);s?a.add(e):a.delete(e),Je.value=Array.from(a)}function _s(e){Je.value=e?We.value.map(e=>e.sessionId):[]}function ws(e){Ze.value?ks(e.sessionId):function(e){ss.value=e.sessionId,as.value=e.alias||"",es.value=!0,j(()=>{var e;null==(e=ls.value)||e.open()})}(e)}async function Is(){if(He.value)try{const e=He.value.sessionId;Oe.value?(await Me.setAlias(e,Oe.value),B.success("别名设置成功")):(await Me.deleteAlias(e),B.success("别名已删除")),Ve.value=!1,He.value=null,Oe.value=""}catch(e){B.error("操作失败: "+e.message)}}function Cs(e){B.error(e)}function bs(e){const s=new Set((e||[]).filter(Boolean));0!==s.size&&(Je.value=Je.value.filter(e=>!s.has(e)),ss.value&&s.has(ss.value)&&(es.value=!1,ss.value="",as.value=""))}async function js(e){try{const{copyResult:s}=await L(Ge.value,e,Te.value);if("manual"===(null==s?void 0:s.method))return void B.warning("自动复制失败,已弹出手动复制框");B.success("启动命令已复制到剪贴板")}catch(s){B.error("复制失败: "+s.message)}}function zs(){if(0===us.value)return void B.warning("请先选择要删除的会话");const e=[...Je.value];M.warning({title:"批量删除会话",content:`确定要删除选中的 ${e.length} 个会话吗?此操作不可恢复!`,positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{Qe.value=!0;try{const s=await Me.deleteSessions(e);if(bs(s.deletedSessionIds),0===s.failed.length)return B.success(`已删除 ${s.deletedSessionIds.length} 个会话`),void gs();Je.value=s.failed.map(e=>e.sessionId),s.deletedSessionIds.length>0?B.warning(`已删除 ${s.deletedSessionIds.length} 个会话,${s.failed.length} 个删除失败`):B.error(`删除失败: ${s.failed[0].error.message}`)}finally{Qe.value=!1}}})}function xs(e){if(!e)return"";return new Date(e).toLocaleString("zh-CN")}function Ns(e){if(!e)return"0 B";const s=1024;return e<s?e+" B":e<s*s?(e/s).toFixed(1)+" KB":(e/s/s).toFixed(1)+" MB"}function Ss(e,s){if(!s||!e)return e;const a=new RegExp(`(${s})`,"gi");return e.replace(a,'<mark class="keyword-highlight">$1</mark>')}function Fs(e,s=80){return e?e.length>s?e.substring(0,s)+"...":e:""}return t([Te,()=>Fe.projectName],([e])=>{gs(),Me.setChannel(e),ds()},{immediate:!0}),n(()=>{}),i(()=>{}),(e,s)=>(u(),o("div",te,[r("div",ne,[r("div",ie,[c(p(q),{size:"small",tertiary:"",onClick:fs,class:"back-button"},{icon:f(()=>[c(p(W),{size:"18"},{default:f(()=>[c(p(U))]),_:1})]),_:1}),r("div",oe,[r("span",ue,m(Ae.value)+" Sessions",1),r("div",re,[r("h2",ce,m(ns.value),1),c(p(D),{depth:"3",class:"session-count"},{default:f(()=>[h(m(p(Me).sessions.length)+" 个对话",1)]),_:1}),c(p(X),{size:"small",bordered:!1,type:"info",class:"total-size-tag"},{default:f(()=>[h(m(Ns(p(Me).totalSize)),1)]),_:1})]),r("p",de,m(is.value),1)])]),r("div",ve,[r("div",fe,[Ze.value?(u(),o(g,{key:0},[c(p(Y),{checked:rs.value,indeterminate:cs.value,disabled:0===We.value.length||Qe.value,"onUpdate:checked":_s},{default:f(()=>[...s[9]||(s[9]=[h(" 全选 ",-1)])]),_:1},8,["checked","indeterminate","disabled"]),c(p(D),{depth:"3"},{default:f(()=>[h("已选 "+m(us.value)+" 个",1)]),_:1}),c(p(q),{size:"small",type:"error",disabled:0===us.value,loading:Qe.value,onClick:zs},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[10]||(s[10]=h(" 删除 ",-1))]),_:1},8,["disabled","loading"]),c(p(q),{size:"small",disabled:Qe.value,onClick:gs},{default:f(()=>[...s[11]||(s[11]=[h(" 完成 ",-1)])]),_:1},8,["disabled"])],64)):(u(),d(p(q),{key:1,size:"small",secondary:"",onClick:hs},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[12]||(s[12]=h(" 管理 ",-1))]),_:1}))]),c(p(Z),{value:Ke.value,"onUpdate:value":s[0]||(s[0]=e=>Ke.value=e),placeholder:"搜索会话...",clearable:"",class:"search-input",onKeyup:y(ps,["enter"]),disabled:Ye.value},{prefix:f(()=>[c(p(W),null,{default:f(()=>[c(p(T))]),_:1})]),suffix:f(()=>[c(p(q),{text:"",onClick:ps,disabled:!Ke.value||Ye.value,loading:Ye.value},{default:f(()=>[...s[13]||(s[13]=[h(" 搜索 ",-1)])]),_:1},8,["disabled","loading"])]),_:1},8,["value","disabled"])])]),r("div",{class:"page-content session-content",ref_key:"contentEl",ref:Xe},[p(Me).loading?(u(),o("div",pe,[c(p(J),{size:"large"},{description:f(()=>[...s[14]||(s[14]=[h(" 加载会话列表... ",-1)])]),_:1})])):p(Me).error?(u(),d(p(Q),{key:1,type:"error",title:"加载失败",style:{"margin-bottom":"16px"}},{default:f(()=>[h(m(p(Me).error),1)]),_:1})):vs.value.length>0?(u(),d(p(z),C({key:2,modelValue:We.value,"onUpdate:modelValue":s[3]||(s[3]=e=>We.value=e),"item-key":"sessionId",class:"sessions-list",handle:".drag-handle",disabled:Ze.value||Qe.value},ts,{"ghost-class":"ghost","chosen-class":"chosen",animation:"200",onEnd:ms}),{item:f(({element:e})=>[r("div",{class:k(["session-item",{"session-item-selected":ys(e.sessionId),"session-item-selection-mode":Ze.value}]),onMouseenter:s=>Re.value=e.sessionId,onMouseleave:s[2]||(s[2]=e=>Re.value=null),onClick:s=>ws(e)},[Ze.value?(u(),o("div",{key:1,class:"selection-checkbox",onClick:s[1]||(s[1]=_(()=>{},["stop"]))},[c(p(Y),{checked:ys(e.sessionId),"onUpdate:checked":s=>ks(e.sessionId,s)},null,8,["checked","onUpdate:checked"])])):(u(),o("div",he,[c(p(W),{size:"16",color:"#999"},{default:f(()=>[c(p(A))]),_:1})])),r("div",ge,[r("div",ye,[c(p(W),{size:"24",color:"#18a058"},{default:f(()=>[c(p(E))]),_:1})]),r("div",ke,[r("div",_e,[r("div",we,[r("span",Ie,m(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId),1),e.forkedFrom?(u(),d(p(ee),{key:0,placement:"top"},{trigger:f(()=>[c(p(X),{size:"small",type:"warning",bordered:!1,style:{"margin-left":"8px",cursor:"help"}},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[s[15]||(s[15]=h(" Fork ",-1))]),_:1})]),default:f(()=>[h(" Fork 自: "+m(e.forkedFrom),1)]),_:2},1024)):v("",!0)])]),r("div",Ce,[c(p(D),{depth:"3"},{default:f(()=>[h(m(xs(e.mtime)),1)]),_:2},1024),c(p(D),{depth:"3"},{default:f(()=>[...s[16]||(s[16]=[h("•",-1)])]),_:1}),c(p(X),{size:"small",bordered:!1},{default:f(()=>[h(m(Ns(e.size)),1)]),_:2},1024)]),e.firstMessage?(u(),d(p(D),{key:0,depth:"3",class:"session-message"},{default:f(()=>[h(m(Fs(e.firstMessage,80)),1)]),_:2},1024)):e.gitBranch||e.summary?v("",!0):(u(),d(p(D),{key:1,depth:"3",class:"session-message session-message-empty"},{default:f(()=>[...s[17]||(s[17]=[h(" 暂未读取到对话内容 ",-1)])]),_:1}))])]),r("div",be,[r("div",je,[e.gitBranch?(u(),d(p(X),{key:0,size:"small",type:"info",bordered:!1},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[h(" "+m(e.gitBranch),1)]),_:2},1024)):v("",!0)]),Ze.value?v("",!0):(u(),o("div",ze,[c(p(se),null,{default:f(()=>[w(c(p(q),{size:"small",type:"error",onClick:_(s=>{return a=e.sessionId,void M.warning({title:"删除会话",content:"确定要删除这个会话吗?此操作不可恢复!",positiveText:"确定删除",negativeText:"取消",onPositiveClick:async()=>{try{await Me.deleteSession(a),bs([a]),B.success("会话已删除")}catch(e){B.error("删除失败: "+e.message)}}});var a},["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(P))]),_:1})]),default:f(()=>[s[18]||(s[18]=h(" 删除 ",-1))]),_:1},8,["onClick"]),[[I,Re.value===e.sessionId]]),c(p(q),{size:"small",onClick:_(s=>function(e){He.value=e,Oe.value=e.alias||"",Ve.value=!0}(e),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(K))]),_:1})]),default:f(()=>[s[19]||(s[19]=h(" 别名 ",-1))]),_:1},8,["onClick"]),c(p(q),{size:"small",type:p(Pe)(Te.value,Ge.value,e.sessionId)?"warning":"default",onClick:_(s=>async function(e){const s=Te.value,a=Pe(s,Ge.value,e.sessionId);try{if(a)await Ue(s,Ge.value,e.sessionId),B.success("已取消收藏");else{const a={sessionId:e.sessionId,projectName:Ge.value,projectDisplayName:ns.value,projectFullPath:is.value,alias:e.alias||"",firstMessage:e.firstMessage||"",mtime:e.mtime,size:e.size,gitBranch:e.gitBranch||"",forkedFrom:e.forkedFrom||""};await Le(s,a),B.success("已添加到收藏")}}catch(l){B.error("操作失败: "+l.message)}}(e),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[p(Pe)(Te.value,Ge.value,e.sessionId)?(u(),d(p(V),{key:0})):(u(),d(p(H),{key:1}))]),_:2},1024)]),default:f(()=>[h(" "+m(p(Pe)(Te.value,Ge.value,e.sessionId)?"已收藏":"收藏"),1)]),_:2},1032,["type","onClick"]),c(p(q),{size:"small",onClick:_(s=>async function(e){try{await Me.forkSession(e),B.success("Fork 成功!")}catch(s){B.error("Fork 失败: "+s.message)}}(e.sessionId),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(G))]),_:1})]),default:f(()=>[s[20]||(s[20]=h(" Fork ",-1))]),_:1},8,["onClick"]),c(p(q),{size:"small",type:"primary",onClick:_(s=>js(e.sessionId),["stop"])},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(O))]),_:1})]),default:f(()=>[s[21]||(s[21]=h(" 使用对话 ",-1))]),_:1},8,["onClick"])]),_:2},1024)]))])],42,me)]),_:1},16,["modelValue","disabled"])):(u(),d(p(ae),{key:3,description:"没有找到会话",style:{"margin-top":"60px"}},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(R))]),_:1})]),_:1}))],512),c(p(le),{show:Ve.value,"onUpdate:show":s[6]||(s[6]=e=>Ve.value=e),preset:"dialog",title:"设置别名"},{action:f(()=>[c(p(se),null,{default:f(()=>[c(p(q),{onClick:s[5]||(s[5]=e=>Ve.value=!1)},{default:f(()=>[...s[22]||(s[22]=[h("取消",-1)])]),_:1}),c(p(q),{type:"primary",onClick:Is},{default:f(()=>[...s[23]||(s[23]=[h("确定",-1)])]),_:1})]),_:1})]),default:f(()=>[c(p(Z),{value:Oe.value,"onUpdate:value":s[4]||(s[4]=e=>Oe.value=e),placeholder:"输入别名(留空删除)",onKeyup:y(Is,["enter"])},null,8,["value"])]),_:1},8,["show"]),c(p(le),{show:De.value,"onUpdate:show":s[7]||(s[7]=e=>De.value=e),preset:"card",title:"搜索结果",style:{width:"1200px"}},{default:f(()=>[qe.value?(u(),o("div",xe,[c(p(Q),{type:"info",style:{"margin-bottom":"16px"}},{default:f(()=>[h(' 关键词 "'+m(qe.value.keyword)+'" 共找到 '+m(qe.value.totalMatches)+" 处匹配 ",1)]),_:1}),(u(!0),o(g,null,b(qe.value.sessions,e=>(u(),o("div",{key:e.sessionId,class:"search-result-item"},[r("div",Ne,[r("div",Se,[c(p(D),{strong:""},{default:f(()=>[h(m(e.alias?`${e.alias} (${e.sessionId.substring(0,8)})`:e.sessionId.substring(0,8)),1)]),_:2},1024),c(p(X),{size:"small",bordered:!1},{default:f(()=>[h(m(e.matchCount)+" 个匹配",1)]),_:2},1024)]),c(p(q),{size:"small",type:"primary",onClick:s=>js(e.sessionId)},{icon:f(()=>[c(p(W),null,{default:f(()=>[c(p(O))]),_:1})]),default:f(()=>[s[24]||(s[24]=h(" 使用对话 ",-1))]),_:1},8,["onClick"])]),(u(!0),o(g,null,b(e.matches,(e,s)=>(u(),o("div",{key:s,class:"search-match"},[c(p(X),{size:"tiny",type:"user"===e.role?"info":"success",bordered:!1},{default:f(()=>[h(m("user"===e.role?"用户":"助手"),1)]),_:2},1032,["type"]),c(p(D),{depth:"3",class:"search-match-text",innerHTML:Ss(e.context,qe.value.keyword)},null,8,["innerHTML"])]))),128))]))),128)),0===qe.value.sessions.length?(u(),d(p(ae),{key:0,description:"没有找到匹配的内容"})):v("",!0)])):v("",!0)]),_:1},8,["show"]),ss.value?(u(),d(F,{key:0,ref_key:"chatHistoryRef",ref:ls,show:es.value,"onUpdate:show":s[8]||(s[8]=e=>es.value=e),"project-name":Ge.value,"session-id":ss.value,"session-alias":as.value,channel:Te.value,onError:Cs},null,8,["show","project-name","session-id","session-alias","channel"])):v("",!0)]))}},[["__scopeId","data-v-e1cf2619"]]);export{Fe as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as a,S as s}from"./index-
|
|
1
|
+
import{_ as a,S as s}from"./index-Duc7QP4e.js";import{c as e,o as r,X as o,Y as i,N as t}from"./vue-vendor-BxIT0uQq.js";import{K as d}from"./naive-ui-Cg4_ZeoT.js";import"./vendors-Bsp-dq2d.js";import"./markdown-DyTJGI4N.js";import"./icons-CEq2hYB-.js";const m={class:"skill-manager"},n=a({__name:"SkillManager",setup:a=>(a,n)=>(r(),e("div",m,[o(t(d),{title:"Skills 技能管理",bordered:!1},{default:i(()=>[o(s,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-6ebc8a84"]]);export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as a,W as s}from"./index-
|
|
1
|
+
import{_ as a,W as s}from"./index-Duc7QP4e.js";import{c as r,o as e,X as o,Y as d,N as i}from"./vue-vendor-BxIT0uQq.js";import{K as t}from"./naive-ui-Cg4_ZeoT.js";import"./vendors-Bsp-dq2d.js";import"./markdown-DyTJGI4N.js";import"./icons-CEq2hYB-.js";const m={class:"workspace-manager"},n=a({__name:"WorkspaceManager",setup:a=>(a,n)=>(e(),r("div",m,[o(i(t),{title:"工作区管理",bordered:!1},{default:d(()=>[o(s,{"in-drawer":!1,"hide-back":!0})]),_:1})]))},[["__scopeId","data-v-c6211fd6"]]);export{n as default};
|