chainlesschain 0.45.81 → 0.46.0
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/bin/chainlesschain.js +0 -0
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{AppLayout-YdvJBMHH.js → AppLayout-BnvARObz.js} +1 -1
- package/src/assets/web-panel/assets/Cowork-B8ZDdRm4.js +7 -0
- package/src/assets/web-panel/assets/Cowork-CXuhlHew.css +1 -0
- package/src/assets/web-panel/assets/Dashboard-CKeMmCoT.css +1 -0
- package/src/assets/web-panel/assets/{Dashboard-HPh9FcPt.js → Dashboard-jt6XPIjB.js} +2 -2
- package/src/assets/web-panel/assets/{index-ByUk2Wmr.js → index-C1SPm_5l.js} +2 -2
- package/src/assets/web-panel/index.html +1 -1
- package/src/commands/cowork.js +695 -0
- package/src/gateways/ws/action-protocol.js +42 -2
- package/src/lib/cowork-cron.js +474 -0
- package/src/lib/cowork-learning.js +438 -0
- package/src/lib/cowork-mcp-tools.js +182 -0
- package/src/lib/cowork-share.js +218 -0
- package/src/lib/cowork-task-runner.js +317 -3
- package/src/lib/cowork-task-templates.js +101 -13
- package/src/lib/cowork-template-marketplace.js +205 -0
- package/src/lib/cowork-workflow.js +571 -0
- package/src/lib/sub-agent-context.js +40 -0
- package/src/lib/workflow-expr.js +318 -0
- package/src/assets/web-panel/assets/Cowork-BnrHWwZw.js +0 -7
- package/src/assets/web-panel/assets/Cowork-CcSoS3eX.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-BS-tzGNj.css +0 -1
package/bin/chainlesschain.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
27836e42ed0260d8f6060e996640fa35f4a6d134514bd5d1bba8a333aaddc1b8
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as fe,W as f,Z as t,X as d,$ as ve,a0 as ge,Y as i,k as e,a1 as a,a2 as w,a3 as r,a4 as S,F as j,u as s,a5 as g,G as l,a6 as be,a7 as Oe,f as Ce,c as m}from"./vendor-CN0Iv_qZ.js";import{u as we}from"./ws-Dma34ig_.js";import{u as je,T as Te}from"./index-
|
|
1
|
+
import{o as fe,W as f,Z as t,X as d,$ as ve,a0 as ge,Y as i,k as e,a1 as a,a2 as w,a3 as r,a4 as S,F as j,u as s,a5 as g,G as l,a6 as be,a7 as Oe,f as Ce,c as m}from"./vendor-CN0Iv_qZ.js";import{u as we}from"./ws-Dma34ig_.js";import{u as je,T as Te}from"./index-C1SPm_5l.js";import{_ as Se}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as B,G as x,D as M,M as F,R as K,C as P,b as A,c as G,d as I,e as W,B as D,f as V,h as z,T as E,S as U,L as $,W as H,i as X,j as Y,P as Z,k as q,l as J,m as Q,n as h,o as ee,K as te,I as Be}from"./antd-D6h4fDFf.js";const xe={key:0,class:"logo-text"},Le={key:0,class:"mode-banner project"},Ne={class:"banner-info"},Re={class:"banner-name"},Me={key:1,class:"mode-banner global"},Fe=["title"],Ke={key:0,class:"footer-text"},Pe={class:"header-left"},Ae={class:"header-right"},Ge={class:"theme-switcher"},Ie=["data-theme-key","onClick"],We={__name:"AppLayout",setup(De){const oe=ve(),se=ge(),b=we(),T=je(),u=Ce(!1),y=window.__CC_CONFIG__||{},p=m(()=>y.mode==="project"),ne=m(()=>T.current),le=m(()=>T.config.vars["--menu-mode"]),L=m(()=>{const c=se.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp"}[c]||c]}),O=m(()=>b.status),ae=m(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[b.status]||"default"),ie=m(()=>({connected:"已连接",connecting:"连接中...",error:"连接错误",disconnected:"未连接"})[b.status]||"未知");function de(c){T.setTheme(c)}function ue({key:c}){oe.push({mcp:"/mcp"}[c]||`/${c}`)}return fe(()=>b.connect()),(c,o)=>{const n=d("a-menu-item"),k=d("a-menu-item-group"),v=d("a-menu-divider"),re=d("a-menu"),ce=d("a-badge"),pe=d("a-layout-sider"),N=d("a-tooltip"),me=d("a-tag"),ye=d("a-layout-header"),ke=d("router-view"),_e=d("a-layout-content"),R=d("a-layout");return i(),f(R,{class:"app-root"},{default:t(()=>[e(pe,{collapsed:u.value,"onUpdate:collapsed":o[1]||(o[1]=_=>u.value=_),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[a("div",{class:w(["logo",{collapsed:u.value}])},[o[2]||(o[2]=a("span",{class:"logo-icon"},"⛓",-1)),u.value?S("",!0):(i(),r("span",xe,"ChainlessChain"))],2),u.value?(i(),r("div",{key:1,class:"mode-icon-sm",title:p.value?s(y).projectName:"全局模式"},[p.value?(i(),f(s(B),{key:0,style:{color:"#1677ff"}})):(i(),f(s(x),{key:1,style:{color:"#722ed1"}}))],8,Fe)):(i(),r(j,{key:0},[p.value?(i(),r("div",Le,[e(s(B),{class:"banner-icon"}),a("div",Ne,[a("div",Re,g(s(y).projectName||"项目"),1),o[3]||(o[3]=a("div",{class:"banner-sub"},"项目级面板",-1))])])):(i(),r("div",Me,[e(s(x),{class:"banner-icon"}),o[4]||(o[4]=a("span",{class:"banner-name"},"全局模式",-1))]))],64)),e(re,{selectedKeys:L.value,"onUpdate:selectedKeys":o[0]||(o[0]=_=>L.value=_),theme:le.value,mode:"inline","inline-collapsed":u.value,class:"side-menu",onClick:ue},{default:t(()=>[u.value?(i(),r(j,{key:1},[e(n,{key:"dashboard"},{icon:t(()=>[e(s(M))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(s(F))]),_:1}),e(n,{key:"cowork"},{icon:t(()=>[e(s(K))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(s(P))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(s(A))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"skills"},{icon:t(()=>[e(s(G))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(s(I))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(s(W))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"notes"},{icon:t(()=>[e(s(D))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(s(V))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(s(z))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(s(E))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"security"},{icon:t(()=>[e(s(U))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(s($))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(s(H))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(s(X))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(s(Y))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(s(Z))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"wallet"},{icon:t(()=>[e(s(q))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(s(J))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(s(Q))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(s(h))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"rssfeed"},{icon:t(()=>[e(s(ee))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(s(te))]),_:1})],64)):(i(),r(j,{key:0},[e(k,null,{title:t(()=>[...o[5]||(o[5]=[a("span",{class:"group-label"},"概 览",-1)])]),default:t(()=>[e(n,{key:"dashboard"},{icon:t(()=>[e(s(M))]),default:t(()=>[o[6]||(o[6]=l("仪表板",-1))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(s(F))]),default:t(()=>[o[7]||(o[7]=l("AI 对话",-1))]),_:1}),e(n,{key:"cowork"},{icon:t(()=>[e(s(K))]),default:t(()=>[o[8]||(o[8]=l("日常协作",-1))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(s(P))]),default:t(()=>[o[9]||(o[9]=l("服务管理",-1))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(s(A))]),default:t(()=>[o[10]||(o[10]=l("日志查看",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[11]||(o[11]=[a("span",{class:"group-label"},"配 置",-1)])]),default:t(()=>[e(n,{key:"skills"},{icon:t(()=>[e(s(G))]),default:t(()=>[o[12]||(o[12]=l("技能管理",-1))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(s(I))]),default:t(()=>[o[13]||(o[13]=l("LLM 配置",-1))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(s(W))]),default:t(()=>[o[14]||(o[14]=l("MCP 工具",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[15]||(o[15]=[a("span",{class:"group-label"},"数 据",-1)])]),default:t(()=>[e(n,{key:"notes"},{icon:t(()=>[e(s(D))]),default:t(()=>[o[16]||(o[16]=l("笔记管理",-1))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(s(V))]),default:t(()=>[o[17]||(o[17]=l("记忆文件",-1))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(s(z))]),default:t(()=>[o[18]||(o[18]=l("定时任务",-1))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(s(E))]),default:t(()=>[o[19]||(o[19]=l("后台任务",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[20]||(o[20]=[a("span",{class:"group-label"},"高 级",-1)])]),default:t(()=>[e(n,{key:"security"},{icon:t(()=>[e(s(U))]),default:t(()=>[o[21]||(o[21]=l("安全中心",-1))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(s($))]),default:t(()=>[o[22]||(o[22]=l("权限管理",-1))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(s(H))]),default:t(()=>[o[23]||(o[23]=l("P2P 网络",-1))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(s(X))]),default:t(()=>[o[24]||(o[24]=l("备份同步",-1))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(s(Y))]),default:t(()=>[o[25]||(o[25]=l("Git 与数据",-1))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(s(Z))]),default:t(()=>[o[26]||(o[26]=l("项目管理",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[27]||(o[27]=[a("span",{class:"group-label"},"企 业",-1)])]),default:t(()=>[e(n,{key:"wallet"},{icon:t(()=>[e(s(q))]),default:t(()=>[o[28]||(o[28]=l("钱包管理",-1))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(s(J))]),default:t(()=>[o[29]||(o[29]=l("组织管理",-1))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(s(Q))]),default:t(()=>[o[30]||(o[30]=l("使用分析",-1))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(s(h))]),default:t(()=>[o[31]||(o[31]=l("模板中心",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[32]||(o[32]=[a("span",{class:"group-label"},"扩 展",-1)])]),default:t(()=>[e(n,{key:"rssfeed"},{icon:t(()=>[e(s(ee))]),default:t(()=>[o[33]||(o[33]=l("RSS 订阅",-1))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(s(te))]),default:t(()=>[o[34]||(o[34]=l("身份认证",-1))]),_:1})]),_:1})],64))]),_:1},8,["selectedKeys","theme","inline-collapsed"]),a("div",{class:w(["sidebar-footer",{collapsed:u.value}])},[e(ce,{status:ae.value},null,8,["status"]),u.value?S("",!0):(i(),r("span",Ke,g(ie.value),1))],2)]),_:1},8,["collapsed"]),e(R,{class:"main-area"},{default:t(()=>[e(ye,{class:"app-header"},{default:t(()=>[a("div",Pe,[a("div",{class:w(["scope-tag",p.value?"project":"global"])},[(i(),f(be(p.value?s(B):s(x)))),a("span",null,g(p.value?s(y).projectName||"项目":"全局模式"),1),p.value&&s(y).projectRoot?(i(),f(N,{key:0,title:s(y).projectRoot},{default:t(()=>[e(s(Be),{class:"info-icon"})]),_:1},8,["title"])):S("",!0)],2)]),a("div",Ae,[a("div",Ge,[(i(!0),r(j,null,Oe(s(Te),(_,C)=>(i(),f(N,{key:C,title:_.label},{default:t(()=>[a("button",{class:w(["theme-btn",{active:ne.value===C}]),"data-theme-key":C,onClick:Ve=>de(C)},g(_.icon),11,Ie)]),_:2},1032,["title"]))),128))]),o[35]||(o[35]=a("span",{class:"version-tag"},"v5.0.2.9",-1)),e(me,{color:O.value==="connected"?"green":O.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[l(g(O.value==="connected"?"已连接":O.value==="connecting"?"连接中":"断开"),1)]),_:1},8,["color"])])]),_:1}),e(_e,{class:"page-content"},{default:t(()=>[e(ke)]),_:1})]),_:1})]),_:1})}}},Xe=Se(We,[["__scopeId","data-v-2d496e96"]]);export{Xe as default};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import{V as Tn,w as an,f as w,c as We,o as En,a3 as h,a1 as d,k as D,u as a,F as oe,a7 as ie,a2 as Ne,A as dt,a5 as A,a4 as N,G as U,W as $,a6 as pt,Z as k,a9 as An,X as le,Y as u,n as Vt}from"./vendor-CN0Iv_qZ.js";import{m as Xt,H as ft}from"./markdown-BZsB-Dsv.js";/* empty css */import{u as mt}from"./ws-Dma34ig_.js";import{u as _e}from"./chat-BYmuDvol.js";import{_ as vn}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as Pe,T as yn,v as jt,H as Sn,S as bn,o as On,G as Rn,r as wn,j as Cn,w as Dn,x as kn,m as Ln,y as Mn,b as In,s as xn,u as Nn}from"./antd-D6h4fDFf.js";const{entries:on,setPrototypeOf:qt,isFrozen:Pn,getPrototypeOf:Fn,getOwnPropertyDescriptor:Un}=Object;let{freeze:z,seal:q,create:Be}=Object,{apply:vt,construct:yt}=typeof Reflect<"u"&&Reflect;z||(z=function(t){return t});q||(q=function(t){return t});vt||(vt=function(t,c){for(var r=arguments.length,T=new Array(r>2?r-2:0),E=2;E<r;E++)T[E-2]=arguments[E];return t.apply(c,T)});yt||(yt=function(t){for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return new t(...r)});const Fe=G(Array.prototype.forEach),Hn=G(Array.prototype.lastIndexOf),Kt=G(Array.prototype.pop),Ue=G(Array.prototype.push),zn=G(Array.prototype.splice),Ze=G(String.prototype.toLowerCase),_t=G(String.prototype.toString),gt=G(String.prototype.match),Oe=G(String.prototype.replace),Gn=G(String.prototype.indexOf),Bn=G(String.prototype.trim),Q=G(Object.prototype.hasOwnProperty),H=G(RegExp.prototype.test),He=Wn(TypeError);function G(f){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return vt(f,t,r)}}function Wn(f){return function(){for(var t=arguments.length,c=new Array(t),r=0;r<t;r++)c[r]=arguments[r];return yt(f,c)}}function _(f,t){let c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ze;qt&&qt(f,null);let r=t.length;for(;r--;){let T=t[r];if(typeof T=="string"){const E=c(T);E!==T&&(Pn(t)||(t[r]=E),T=E)}f[T]=!0}return f}function Yn(f){for(let t=0;t<f.length;t++)Q(f,t)||(f[t]=null);return f}function ne(f){const t=Be(null);for(const[c,r]of on(f))Q(f,c)&&(Array.isArray(r)?t[c]=Yn(r):r&&typeof r=="object"&&r.constructor===Object?t[c]=ne(r):t[c]=r);return t}function ze(f,t){for(;f!==null;){const r=Un(f,t);if(r){if(r.get)return G(r.get);if(typeof r.value=="function")return G(r.value)}f=Fn(f)}function c(){return null}return c}const Qt=z(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ht=z(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Tt=z(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$n=z(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Et=z(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Vn=z(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Zt=z(["#text"]),Jt=z(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),At=z(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),en=z(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Qe=z(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Xn=q(/\{\{[\w\W]*|[\w\W]*\}\}/gm),jn=q(/<%[\w\W]*|[\w\W]*%>/gm),qn=q(/\$\{[\w\W]*/gm),Kn=q(/^data-[\-\w.\u00B7-\uFFFF]+$/),Qn=q(/^aria-[\-\w]+$/),ln=q(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zn=q(/^(?:\w+script|data):/i),Jn=q(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),rn=q(/^html$/i),es=q(/^[a-z][.\w]*(-[.\w]+)+$/i);var tn=Object.freeze({__proto__:null,ARIA_ATTR:Qn,ATTR_WHITESPACE:Jn,CUSTOM_ELEMENT:es,DATA_ATTR:Kn,DOCTYPE_NAME:rn,ERB_EXPR:jn,IS_ALLOWED_URI:ln,IS_SCRIPT_OR_DATA:Zn,MUSTACHE_EXPR:Xn,TMPLIT_EXPR:qn});const Ge={element:1,text:3,progressingInstruction:7,comment:8,document:9},ts=function(){return typeof window>"u"?null:window},ns=function(t,c){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null;const T="data-tt-policy-suffix";c&&c.hasAttribute(T)&&(r=c.getAttribute(T));const E="dompurify"+(r?"#"+r:"");try{return t.createPolicy(E,{createHTML(F){return F},createScriptURL(F){return F}})}catch{return console.warn("TrustedTypes policy "+E+" could not be created."),null}},nn=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function cn(){let f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ts();const t=l=>cn(l);if(t.version="3.4.0",t.removed=[],!f||!f.document||f.document.nodeType!==Ge.document||!f.Element)return t.isSupported=!1,t;let{document:c}=f;const r=c,T=r.currentScript,{DocumentFragment:E,HTMLTemplateElement:F,Node:y,Element:W,NodeFilter:V,NamedNodeMap:ge=f.NamedNodeMap||f.MozNamedAttrMap,HTMLFormElement:he,DOMParser:ue,trustedTypes:X}=f,j=W.prototype,Te=ze(j,"cloneNode"),Ee=ze(j,"remove"),Re=ze(j,"nextSibling"),de=ze(j,"childNodes"),se=ze(j,"parentNode");if(typeof F=="function"){const l=c.createElement("template");l.content&&l.content.ownerDocument&&(c=l.content.ownerDocument)}let p,i="";const{implementation:b,createNodeIterator:we,createDocumentFragment:Ce,getElementsByTagName:De}=c,{importNode:Ae}=r;let O=nn();t.isSupported=typeof on=="function"&&typeof se=="function"&&b&&b.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Z,ERB_EXPR:m,TMPLIT_EXPR:g,DATA_ATTR:s,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:J,ATTR_WHITESPACE:ke,CUSTOM_ELEMENT:un}=tn;let{IS_ALLOWED_URI:St}=tn,L=null;const bt=_({},[...Qt,...ht,...Tt,...Et,...Zt]);let I=null;const Ot=_({},[...Jt,...At,...en,...Qe]);let S=Object.seal(Be(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Le=null,Ye=null;const re=Object.seal(Be(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Rt=!0,Je=!0,wt=!1,Ct=!0,pe=!1,Me=!0,fe=!1,et=!1,tt=!1,ve=!1,$e=!1,Ve=!1,Dt=!0,kt=!1;const dn="user-content-";let nt=!0,Ie=!1,ye={},ee=null;const st=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Lt=null;const Mt=_({},["audio","video","img","source","image","track"]);let at=null;const It=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xe="http://www.w3.org/1998/Math/MathML",je="http://www.w3.org/2000/svg",te="http://www.w3.org/1999/xhtml";let Se=te,ot=!1,it=null;const pn=_({},[Xe,je,te],_t);let qe=_({},["mi","mo","mn","ms","mtext"]),Ke=_({},["annotation-xml"]);const fn=_({},["title","style","font","a","script"]);let xe=null;const mn=["application/xhtml+xml","text/html"],_n="text/html";let C=null,be=null;const gn=c.createElement("form"),xt=function(e){return e instanceof RegExp||e instanceof Function},lt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(be&&be===e)){if((!e||typeof e!="object")&&(e={}),e=ne(e),xe=mn.indexOf(e.PARSER_MEDIA_TYPE)===-1?_n:e.PARSER_MEDIA_TYPE,C=xe==="application/xhtml+xml"?_t:Ze,L=Q(e,"ALLOWED_TAGS")?_({},e.ALLOWED_TAGS,C):bt,I=Q(e,"ALLOWED_ATTR")?_({},e.ALLOWED_ATTR,C):Ot,it=Q(e,"ALLOWED_NAMESPACES")?_({},e.ALLOWED_NAMESPACES,_t):pn,at=Q(e,"ADD_URI_SAFE_ATTR")?_(ne(It),e.ADD_URI_SAFE_ATTR,C):It,Lt=Q(e,"ADD_DATA_URI_TAGS")?_(ne(Mt),e.ADD_DATA_URI_TAGS,C):Mt,ee=Q(e,"FORBID_CONTENTS")?_({},e.FORBID_CONTENTS,C):st,Le=Q(e,"FORBID_TAGS")?_({},e.FORBID_TAGS,C):ne({}),Ye=Q(e,"FORBID_ATTR")?_({},e.FORBID_ATTR,C):ne({}),ye=Q(e,"USE_PROFILES")?e.USE_PROFILES:!1,Rt=e.ALLOW_ARIA_ATTR!==!1,Je=e.ALLOW_DATA_ATTR!==!1,wt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ct=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,pe=e.SAFE_FOR_TEMPLATES||!1,Me=e.SAFE_FOR_XML!==!1,fe=e.WHOLE_DOCUMENT||!1,ve=e.RETURN_DOM||!1,$e=e.RETURN_DOM_FRAGMENT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,tt=e.FORCE_BODY||!1,Dt=e.SANITIZE_DOM!==!1,kt=e.SANITIZE_NAMED_PROPS||!1,nt=e.KEEP_CONTENT!==!1,Ie=e.IN_PLACE||!1,St=e.ALLOWED_URI_REGEXP||ln,Se=e.NAMESPACE||te,qe=e.MATHML_TEXT_INTEGRATION_POINTS||qe,Ke=e.HTML_INTEGRATION_POINTS||Ke,S=e.CUSTOM_ELEMENT_HANDLING||Be(null),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(S.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(S.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(S.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),pe&&(Je=!1),$e&&(ve=!0),ye&&(L=_({},Zt),I=Be(null),ye.html===!0&&(_(L,Qt),_(I,Jt)),ye.svg===!0&&(_(L,ht),_(I,At),_(I,Qe)),ye.svgFilters===!0&&(_(L,Tt),_(I,At),_(I,Qe)),ye.mathMl===!0&&(_(L,Et),_(I,en),_(I,Qe))),re.tagCheck=null,re.attributeCheck=null,e.ADD_TAGS&&(typeof e.ADD_TAGS=="function"?re.tagCheck=e.ADD_TAGS:(L===bt&&(L=ne(L)),_(L,e.ADD_TAGS,C))),e.ADD_ATTR&&(typeof e.ADD_ATTR=="function"?re.attributeCheck=e.ADD_ATTR:(I===Ot&&(I=ne(I)),_(I,e.ADD_ATTR,C))),e.ADD_URI_SAFE_ATTR&&_(at,e.ADD_URI_SAFE_ATTR,C),e.FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.FORBID_CONTENTS,C)),e.ADD_FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.ADD_FORBID_CONTENTS,C)),nt&&(L["#text"]=!0),fe&&_(L,["html","head","body"]),L.table&&(_(L,["tbody"]),delete Le.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');p=e.TRUSTED_TYPES_POLICY,i=p.createHTML("")}else p===void 0&&(p=ns(X,T)),p!==null&&typeof i=="string"&&(i=p.createHTML(""));z&&z(e),be=e}},Nt=_({},[...ht,...Tt,...$n]),Pt=_({},[...Et,...Vn]),hn=function(e){let n=se(e);(!n||!n.tagName)&&(n={namespaceURI:Se,tagName:"template"});const o=Ze(e.tagName),v=Ze(n.tagName);return it[e.namespaceURI]?e.namespaceURI===je?n.namespaceURI===te?o==="svg":n.namespaceURI===Xe?o==="svg"&&(v==="annotation-xml"||qe[v]):!!Nt[o]:e.namespaceURI===Xe?n.namespaceURI===te?o==="math":n.namespaceURI===je?o==="math"&&Ke[v]:!!Pt[o]:e.namespaceURI===te?n.namespaceURI===je&&!Ke[v]||n.namespaceURI===Xe&&!qe[v]?!1:!Pt[o]&&(fn[o]||!Nt[o]):!!(xe==="application/xhtml+xml"&&it[e.namespaceURI]):!1},K=function(e){Ue(t.removed,{element:e});try{se(e).removeChild(e)}catch{Ee(e)}},me=function(e,n){try{Ue(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Ue(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e==="is")if(ve||$e)try{K(n)}catch{}else try{n.setAttribute(e,"")}catch{}},Ft=function(e){let n=null,o=null;if(tt)e="<remove></remove>"+e;else{const R=gt(e,/^[\r\n\t ]+/);o=R&&R[0]}xe==="application/xhtml+xml"&&Se===te&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const v=p?p.createHTML(e):e;if(Se===te)try{n=new ue().parseFromString(v,xe)}catch{}if(!n||!n.documentElement){n=b.createDocument(Se,"template",null);try{n.documentElement.innerHTML=ot?i:v}catch{}}const P=n.body||n.documentElement;return e&&o&&P.insertBefore(c.createTextNode(o),P.childNodes[0]||null),Se===te?De.call(n,fe?"html":"body")[0]:fe?n.documentElement:P},Ut=function(e){return we.call(e.ownerDocument||e,e,V.SHOW_ELEMENT|V.SHOW_COMMENT|V.SHOW_TEXT|V.SHOW_PROCESSING_INSTRUCTION|V.SHOW_CDATA_SECTION,null)},rt=function(e){return e instanceof he&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof ge)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},ct=function(e){return typeof y=="function"&&e instanceof y};function ae(l,e,n){Fe(l,o=>{o.call(t,e,n,be)})}const Ht=function(e){let n=null;if(ae(O.beforeSanitizeElements,e,null),rt(e))return K(e),!0;const o=C(e.nodeName);if(ae(O.uponSanitizeElement,e,{tagName:o,allowedTags:L}),Me&&e.hasChildNodes()&&!ct(e.firstElementChild)&&H(/<[/\w!]/g,e.innerHTML)&&H(/<[/\w!]/g,e.textContent)||Me&&e.namespaceURI===te&&o==="style"&&ct(e.firstElementChild)||e.nodeType===Ge.progressingInstruction||Me&&e.nodeType===Ge.comment&&H(/<[/\w]/g,e.data))return K(e),!0;if(Le[o]||!(re.tagCheck instanceof Function&&re.tagCheck(o))&&!L[o]){if(!Le[o]&&Gt(o)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o)))return!1;if(nt&&!ee[o]){const v=se(e)||e.parentNode,P=de(e)||e.childNodes;if(P&&v){const R=P.length;for(let B=R-1;B>=0;--B){const Y=Te(P[B],!0);Y.__removalCount=(e.__removalCount||0)+1,v.insertBefore(Y,Re(e))}}}return K(e),!0}return e instanceof W&&!hn(e)||(o==="noscript"||o==="noembed"||o==="noframes")&&H(/<\/no(script|embed|frames)/i,e.innerHTML)?(K(e),!0):(pe&&e.nodeType===Ge.text&&(n=e.textContent,Fe([Z,m,g],v=>{n=Oe(n,v," ")}),e.textContent!==n&&(Ue(t.removed,{element:e.cloneNode()}),e.textContent=n)),ae(O.afterSanitizeElements,e,null),!1)},zt=function(e,n,o){if(Ye[n]||Dt&&(n==="id"||n==="name")&&(o in c||o in gn))return!1;if(!(Je&&!Ye[n]&&H(s,n))){if(!(Rt&&H(M,n))){if(!(re.attributeCheck instanceof Function&&re.attributeCheck(n,e))){if(!I[n]||Ye[n]){if(!(Gt(e)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,e)||S.tagNameCheck instanceof Function&&S.tagNameCheck(e))&&(S.attributeNameCheck instanceof RegExp&&H(S.attributeNameCheck,n)||S.attributeNameCheck instanceof Function&&S.attributeNameCheck(n,e))||n==="is"&&S.allowCustomizedBuiltInElements&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o))))return!1}else if(!at[n]){if(!H(St,Oe(o,ke,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&e!=="script"&&Gn(o,"data:")===0&&Lt[e])){if(!(wt&&!H(J,Oe(o,ke,"")))){if(o)return!1}}}}}}}return!0},Gt=function(e){return e!=="annotation-xml"&>(e,un)},Bt=function(e){ae(O.beforeSanitizeAttributes,e,null);const{attributes:n}=e;if(!n||rt(e))return;const o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I,forceKeepAttr:void 0};let v=n.length;for(;v--;){const P=n[v],{name:R,namespaceURI:B,value:Y}=P,ce=C(R),ut=Y;let x=R==="value"?ut:Bn(ut);if(o.attrName=ce,o.attrValue=x,o.keepAttr=!0,o.forceKeepAttr=void 0,ae(O.uponSanitizeAttribute,e,o),x=o.attrValue,kt&&(ce==="id"||ce==="name")&&(me(R,e),x=dn+x),Me&&H(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,x)){me(R,e);continue}if(ce==="attributename"&>(x,"href")){me(R,e);continue}if(o.forceKeepAttr)continue;if(!o.keepAttr){me(R,e);continue}if(!Ct&&H(/\/>/i,x)){me(R,e);continue}pe&&Fe([Z,m,g],$t=>{x=Oe(x,$t," ")});const Yt=C(e.nodeName);if(!zt(Yt,ce,x)){me(R,e);continue}if(p&&typeof X=="object"&&typeof X.getAttributeType=="function"&&!B)switch(X.getAttributeType(Yt,ce)){case"TrustedHTML":{x=p.createHTML(x);break}case"TrustedScriptURL":{x=p.createScriptURL(x);break}}if(x!==ut)try{B?e.setAttributeNS(B,R,x):e.setAttribute(R,x),rt(e)?K(e):Kt(t.removed)}catch{me(R,e)}}ae(O.afterSanitizeAttributes,e,null)},Wt=function(e){let n=null;const o=Ut(e);for(ae(O.beforeSanitizeShadowDOM,e,null);n=o.nextNode();)ae(O.uponSanitizeShadowNode,n,null),Ht(n),Bt(n),n.content instanceof E&&Wt(n.content);ae(O.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,o=null,v=null,P=null;if(ot=!l,ot&&(l="<!-->"),typeof l!="string"&&!ct(l))if(typeof l.toString=="function"){if(l=l.toString(),typeof l!="string")throw He("dirty is not a string, aborting")}else throw He("toString is not a function");if(!t.isSupported)return l;if(et||lt(e),t.removed=[],typeof l=="string"&&(Ie=!1),Ie){if(l.nodeName){const Y=C(l.nodeName);if(!L[Y]||Le[Y])throw He("root node is forbidden and cannot be sanitized in-place")}}else if(l instanceof y)n=Ft("<!---->"),o=n.ownerDocument.importNode(l,!0),o.nodeType===Ge.element&&o.nodeName==="BODY"||o.nodeName==="HTML"?n=o:n.appendChild(o);else{if(!ve&&!pe&&!fe&&l.indexOf("<")===-1)return p&&Ve?p.createHTML(l):l;if(n=Ft(l),!n)return ve?null:Ve?i:""}n&&tt&&K(n.firstChild);const R=Ut(Ie?l:n);for(;v=R.nextNode();)Ht(v),Bt(v),v.content instanceof E&&Wt(v.content);if(Ie)return l;if(ve){if(pe){n.normalize();let Y=n.innerHTML;Fe([Z,m,g],ce=>{Y=Oe(Y,ce," ")}),n.innerHTML=Y}if($e)for(P=Ce.call(n.ownerDocument);n.firstChild;)P.appendChild(n.firstChild);else P=n;return(I.shadowroot||I.shadowrootmode)&&(P=Ae.call(r,P,!0)),P}let B=fe?n.outerHTML:n.innerHTML;return fe&&L["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&H(rn,n.ownerDocument.doctype.name)&&(B="<!DOCTYPE "+n.ownerDocument.doctype.name+`>
|
|
2
|
+
`+B),pe&&Fe([Z,m,g],Y=>{B=Oe(B,Y," ")}),p&&Ve?p.createHTML(B):B},t.setConfig=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};lt(l),et=!0},t.clearConfig=function(){be=null,et=!1},t.isValidAttribute=function(l,e,n){be||lt({});const o=C(l),v=C(e);return zt(o,v,n)},t.addHook=function(l,e){typeof e=="function"&&Ue(O[l],e)},t.removeHook=function(l,e){if(e!==void 0){const n=Hn(O[l],e);return n===-1?void 0:zn(O[l],n,1)[0]}return Kt(O[l])},t.removeHooks=function(l){O[l]=[]},t.removeAllHooks=function(){O=nn()},t}var sn=cn();const ss=[{id:"doc-convert",name:"文档格式转换",icon:"FileTextOutlined",category:"document",description:"Word、Markdown、HTML、PDF 之间的格式互转",examples:["把 report.docx 转成 PDF","合并多个 Markdown 为一个文档"],acceptsFiles:!0},{id:"media-process",name:"音视频处理",icon:"PlayCircleOutlined",category:"media",description:"视频压缩、音频提取、格式转换、剪辑",examples:["提取 MP4 的音频","压缩视频到 50MB 以内"],acceptsFiles:!0},{id:"data-analysis",name:"数据分析",icon:"BarChartOutlined",category:"data",description:"CSV/Excel 分析、统计、可视化图表",examples:["分析 sales.csv 的月度趋势"],acceptsFiles:!0},{id:"web-research",name:"信息检索与调研",icon:"SearchOutlined",category:"research",description:"网页抓取、API 调用、多源信息汇总",examples:["调研 AI Agent 框架对比"],acceptsFiles:!1},{id:"image-process",name:"图片处理",icon:"PictureOutlined",category:"media",description:"批量压缩、格式转换、加水印、OCR",examples:["批量压缩到 500KB"],acceptsFiles:!0},{id:"code-helper",name:"代码辅助",icon:"CodeOutlined",category:"development",description:"生成脚本、调试代码、自动化任务",examples:["写一个批量重命名脚本"],acceptsFiles:!0},{id:"system-admin",name:"系统运维",icon:"DesktopOutlined",category:"system",description:"磁盘分析、进程管理、日志分析",examples:["查看磁盘使用情况"],acceptsFiles:!1},{id:"file-organize",name:"文件整理",icon:"FolderOpenOutlined",category:"file",description:"批量重命名、分类整理、查找重复",examples:["按文件类型分类整理"],acceptsFiles:!1},{id:"network-tools",name:"网络工具",icon:"GlobalOutlined",category:"network",description:"API 调试、网页抓取、网络诊断",examples:["测试 API 接口"],acceptsFiles:!1},{id:"learning-assist",name:"学习辅助",icon:"ReadOutlined",category:"learning",description:"文档翻译、内容总结、论文分析",examples:["翻译 PDF 摘要"],acceptsFiles:!0}],as=Tn("cowork",()=>{const f=w(ss),t=w(null),c=w([]),r=w(!1),T=w([]),E=w([]),F=w(null),y=w(null),W=w(null),V=w([]),ge=w(!1),he=w(3),ue=w(!1),X=w([]),j=_e();an(()=>j.isLoading,m=>{!m&&y.value&&(r.value=!1)});function Te(m){t.value=m,Ee()}function Ee(){T.value=[],E.value=[],F.value=null,r.value=!1,y.value=null,W.value=null}function Re(m){c.value.includes(m)||c.value.push(m)}function de(m){c.value=c.value.filter(g=>g!==m)}async function se(){const m=mt();try{await m.waitConnected(5e3);const g=await m.sendRaw({type:"cowork-templates"},1e4);g?.templates?.length&&(f.value=g.templates)}catch{}}async function p(){const m=mt();try{await m.waitConnected(5e3);const g=await m.sendRaw({type:"cowork-history",limit:50},1e4);g?.entries&&(V.value=g.entries)}catch{}}async function i(m){W.value={mode:"session",message:m},r.value=!0;const g=t.value;let s="";g&&(s=`## 当前任务类型: ${g.name}
|
|
3
|
+
${g.description||""}`);let M=m;c.value.length&&(M+=`
|
|
4
|
+
|
|
5
|
+
[用户提供的文件: ${c.value.join(", ")}]`),E.value.push({role:"user",content:m,timestamp:Date.now()});const J={systemPromptExtension:s};g?.shellPolicyOverrides&&(J.shellPolicyOverrides=g.shellPolicyOverrides);const ke=await j.createSession("agent",J);y.value=ke,await j.sendMessage(ke,M)}async function b(m){W.value={mode:"direct",message:m};const g=mt();r.value=!0,E.value.push({role:"user",content:m,timestamp:Date.now()});try{await g.waitConnected(8e3);const s={type:"cowork-task",templateId:t.value?.id||null,userMessage:m,files:c.value};ge.value&&(s.parallel=!0,s.agents=he.value);const M=t.value;(ue.value||M?.mode==="debate")&&(s.mode="debate",X.value.length&&(s.perspectives=X.value));const J=await g.sendRaw(s,3e5);E.value.push({role:"assistant",content:J.summary||"(No output)",timestamp:Date.now(),toolsUsed:J.toolsUsed||[],iterationCount:J.iterationCount||0}),F.value=J}catch(s){E.value.push({role:"assistant",content:`Error: ${s.message}`,timestamp:Date.now()})}finally{r.value=!1}}const we=We(()=>y.value?_e().getMessages(y.value):[]),Ce=We(()=>{if(!y.value)return null;const g=_e().streaming[y.value];return g?.active?g.content:null}),De=We(()=>y.value&&_e().pendingQuestion[y.value]||null);function Ae(m){if(!y.value)return;_e().answerQuestion(y.value,m)}async function O(){if(!W.value)return;const{mode:m,message:g}=W.value;m==="direct"?await b(g):await i(g)}async function Z(m){if(!y.value)return;const g=_e();E.value.push({role:"user",content:m,timestamp:Date.now()});let s=m;c.value.length&&(s+=`
|
|
6
|
+
|
|
7
|
+
[用户提供的文件: ${c.value.join(", ")}]`),await g.sendMessage(y.value,s)}return{selectedTemplate:t,files:c,isRunning:r,steps:T,messages:E,result:F,agentSessionId:y,currentAgentMessages:we,currentStreaming:Ce,currentQuestion:De,selectTemplate:Te,reset:Ee,addFile:Re,removeFile:de,execute:i,executeDirectWs:b,sendFollowUp:Z,answerQuestion:Ae,loadTemplates:se,templates:f,lastRequest:W,retry:O,history:V,loadHistory:p,parallelMode:ge,parallelAgents:he,debateMode:ue,debatePerspectives:X}}),os={class:"cowork-root"},is={class:"template-panel"},ls={class:"template-header"},rs={class:"template-list"},cs=["onClick"],us={class:"card-icon"},ds={class:"card-body"},ps={class:"card-name"},fs={class:"card-desc"},ms={class:"card-icon"},_s={class:"drop-text"},gs={key:0,class:"file-list"},hs={key:1,class:"history-section"},Ts={key:0,class:"history-list"},Es={class:"history-summary"},As={class:"history-meta"},vs={class:"exec-panel"},ys={key:0,class:"empty-state"},Ss={class:"empty-icon"},bs={class:"example-grid"},Os=["onClick"],Rs={key:1,class:"ready-state"},ws={class:"ready-header"},Cs={class:"ready-name"},Ds={key:0,class:"parallel-toggle"},ks={key:1,class:"parallel-hint"},Ls={class:"ready-examples"},Ms=["onClick"],Is={key:0,class:"tool-msg"},xs={class:"tool-input"},Ns={key:0,class:"tool-result-box"},Ps={class:"tool-result"},Fs={key:1,class:"user-msg"},Us={class:"bubble user"},Hs={key:2,class:"assistant-msg"},zs=["innerHTML"],Gs={key:0,class:"assistant-msg"},Bs=["innerHTML"],Ws={key:1,class:"question-card"},Ys={class:"question-text"},$s={key:0,class:"question-choices"},Vs={key:3,class:"debate-panel"},Xs={class:"debate-verdict"},js={class:"consensus"},qs=["innerHTML"],Ks={key:4,class:"task-stats"},Qs={class:"input-area"},Zs={key:0,class:"input-context"},Js={class:"input-row"},ea={__name:"Cowork",setup(f){Xt.setOptions({highlight:(p,i)=>i&&ft.getLanguage(i)?ft.highlight(p,{language:i}).value:ft.highlightAuto(p).value,breaks:!0});const t=as(),c=_e(),r=w(""),T=w(null),E=w(!1),F=w(""),y=w(!1),W=w(!1),V={FileTextOutlined:In,PlayCircleOutlined:Mn,BarChartOutlined:Ln,SearchOutlined:kn,PictureOutlined:Dn,CodeOutlined:Cn,DesktopOutlined:wn,FolderOpenOutlined:jt,GlobalOutlined:Rn,ReadOutlined:On,SafetyCertificateOutlined:bn},ge=["把 report.docx 转成 PDF","压缩视频到 50MB","分析 CSV 生成图表","查询今天的汇率","批量压缩图片","写一个自动化脚本"],he=We(()=>c.isLoading?"等待响应中...":t.selectedTemplate?t.selectedTemplate.examples?.[0]||"描述你的需求...":"描述你想完成的任务,Agent 会帮你搞定"),ue=We(()=>t.currentAgentMessages);function X(p){try{return sn.sanitize(Xt(p||""))}catch{return sn.sanitize(p||"")}}function j(p){return p==="APPROVE"?"green":p==="REJECT"?"red":p==="ERROR"?"default":"orange"}function Te(p){return p.split(/[\\/]/).pop()||p}function Ee(p){E.value=!1;const i=p.dataTransfer?.files;if(i)for(const b of i)t.addFile(b.path||b.name)}function Re(){const p=F.value.trim();p&&(t.addFile(p),F.value="")}async function de(){const p=r.value.trim();!p||c.isLoading||(r.value="",t.agentSessionId?await t.sendFollowUp(p):await t.execute(p))}function se(p){r.value=p,Vt(()=>de())}return an([ue,()=>t.currentStreaming],()=>{Vt(()=>{T.value&&(T.value.scrollTop=T.value.scrollHeight)})},{deep:!0}),En(()=>{c.loadSessions(),t.loadTemplates(),t.loadHistory()}),(p,i)=>{const b=le("a-tag"),we=le("a-input"),Ce=le("a-switch"),De=le("a-input-number"),Ae=le("a-collapse-panel"),O=le("a-collapse"),Z=le("a-button"),m=le("a-input-search"),g=le("a-textarea");return u(),h("div",os,[d("div",is,[d("div",ls,[D(a(Pe),{class:"header-icon"}),i[9]||(i[9]=d("span",{class:"header-title"},"日常协作",-1))]),i[11]||(i[11]=d("div",{class:"template-hint"},"选择任务类型,或直接输入需求",-1)),d("div",rs,[(u(!0),h(oe,null,ie(a(t).templates,s=>(u(),h("div",{key:s.id,class:Ne(["template-card",{active:a(t).selectedTemplate?.id===s.id}]),onClick:M=>a(t).selectTemplate(s)},[d("div",us,[(u(),$(pt(V[s.icon]||a(Pe))))]),d("div",ds,[d("div",ps,A(s.name),1),d("div",fs,A(s.description),1)])],10,cs))),128)),d("div",{class:Ne(["template-card free",{active:a(t).selectedTemplate===null&&y.value}]),onClick:i[0]||(i[0]=s=>{a(t).selectTemplate(null),y.value=!0})},[d("div",ms,[D(a(yn))]),i[10]||(i[10]=d("div",{class:"card-body"},[d("div",{class:"card-name"},"自由提问"),d("div",{class:"card-desc"},"任意任务,Agent 自主完成")],-1))],2)]),a(t).selectedTemplate?.acceptsFiles!==!1?(u(),h("div",{key:0,class:Ne(["file-zone",{dragging:E.value}]),onDragover:i[2]||(i[2]=dt(s=>E.value=!0,["prevent"])),onDragleave:i[3]||(i[3]=s=>E.value=!1),onDrop:dt(Ee,["prevent"])},[D(a(jt),{class:"drop-icon"}),d("div",_s,A(E.value?"松开以添加文件":"拖拽文件到此处"),1),a(t).files.length?(u(),h("div",gs,[(u(!0),h(oe,null,ie(a(t).files,s=>(u(),$(b,{key:s,closable:"",onClose:M=>a(t).removeFile(s),class:"file-tag"},{default:k(()=>[U(A(Te(s)),1)]),_:2},1032,["onClose"]))),128))])):N("",!0),D(we,{value:F.value,"onUpdate:value":i[1]||(i[1]=s=>F.value=s),placeholder:"或输入文件路径,按 Enter 添加",size:"small",class:"path-input",onPressEnter:Re},null,8,["value"])],34)):N("",!0),a(t).history.length?(u(),h("div",hs,[d("div",{class:"history-header",onClick:i[4]||(i[4]=s=>W.value=!W.value)},[D(a(Sn)),U(" 历史记录 ("+A(a(t).history.length)+") ",1)]),W.value?(u(),h("div",Ts,[(u(!0),h(oe,null,ie(a(t).history.slice().reverse().slice(0,20),(s,M)=>(u(),h("div",{key:M,class:Ne(["history-item",s.status])},[d("div",Es,A(s.userMessage),1),d("div",As,[d("span",null,A(s.templateName||"自由模式"),1),d("span",null,A(s.status),1)])],2))),128))])):N("",!0)])):N("",!0)]),d("div",vs,[!a(t).agentSessionId&&!a(t).selectedTemplate?(u(),h("div",ys,[d("div",Ss,[D(a(Pe))]),i[12]||(i[12]=d("div",{class:"empty-title"},"选择一个任务模板开始",-1)),i[13]||(i[13]=d("div",{class:"empty-sub"},"或选择「自由提问」处理任何问题",-1)),d("div",bs,[(u(),h(oe,null,ie(ge,s=>d("div",{key:s,class:"example-chip",onClick:M=>se(s)},A(s),9,Os)),64))])])):a(t).selectedTemplate&&!a(t).agentSessionId?(u(),h("div",Rs,[d("div",ws,[(u(),$(pt(V[a(t).selectedTemplate.icon]||a(Pe)),{class:"ready-icon"})),d("span",Cs,A(a(t).selectedTemplate.name),1)]),a(t).selectedTemplate.parallelStrategy&&a(t).selectedTemplate.parallelStrategy!=="none"?(u(),h("div",Ds,[D(Ce,{checked:a(t).parallelMode,"onUpdate:checked":i[5]||(i[5]=s=>a(t).parallelMode=s),size:"small"},null,8,["checked"]),i[14]||(i[14]=d("span",{class:"parallel-label"},"多 Agent 并行",-1)),a(t).parallelMode?(u(),$(De,{key:0,value:a(t).parallelAgents,"onUpdate:value":i[6]||(i[6]=s=>a(t).parallelAgents=s),min:2,max:10,size:"small",class:"agent-count"},null,8,["value"])):N("",!0),a(t).parallelMode?(u(),h("span",ks,"个 Agent")):N("",!0)])):N("",!0),d("div",Ls,[i[15]||(i[15]=d("div",{class:"example-label"},"试试这些:",-1)),(u(!0),h(oe,null,ie(a(t).selectedTemplate.examples,s=>(u(),h("div",{key:s,class:"example-chip",onClick:M=>se(s)},A(s),9,Ms))),128))])])):(u(),h("div",{key:2,class:"messages-area",ref_key:"messagesEl",ref:T},[(u(!0),h(oe,null,ie(ue.value,(s,M)=>(u(),h("div",{key:M,class:Ne(["message-row",s.role])},[s.role==="tool"?(u(),h("div",Is,[D(O,{ghost:"",size:"small"},{default:k(()=>[D(Ae,{class:"tool-collapse"},{header:k(()=>[D(a(xn)),U(" "+A(s.tool)+" "+A(s.status==="running"?"(执行中...)":"✓"),1)]),default:k(()=>[d("pre",xs,A(JSON.stringify(s.input,null,2)),1),s.result?(u(),h("div",Ns,[d("pre",Ps,A(typeof s.result=="string"?s.result:JSON.stringify(s.result,null,2)),1)])):N("",!0)]),_:2},1024)]),_:2},1024)])):s.role==="user"?(u(),h("div",Fs,[d("div",Us,A(s.content),1)])):(u(),h("div",Hs,[i[17]||(i[17]=d("div",{class:"avatar"},"AI",-1)),d("div",{class:"bubble assistant",innerHTML:X(s.content)},null,8,zs),s.content?.startsWith("Error:")&&!a(t).isRunning&&a(t).lastRequest?(u(),$(Z,{key:0,size:"small",type:"link",onClick:i[7]||(i[7]=J=>a(t).retry())},{default:k(()=>[...i[16]||(i[16]=[U(" 重试 ",-1)])]),_:1})):N("",!0)]))],2))),128)),a(t).currentStreaming?(u(),h("div",Gs,[i[18]||(i[18]=d("div",{class:"avatar"},"AI",-1)),d("div",{class:"bubble assistant streaming",innerHTML:X(a(t).currentStreaming)},null,8,Bs)])):N("",!0),a(t).currentQuestion?(u(),h("div",Ws,[d("div",Ys,A(a(t).currentQuestion.question),1),a(t).currentQuestion.choices?.length?(u(),h("div",$s,[(u(!0),h(oe,null,ie(a(t).currentQuestion.choices,s=>(u(),$(Z,{key:s,size:"small",onClick:M=>a(t).answerQuestion(s)},{default:k(()=>[U(A(s),1)]),_:2},1032,["onClick"]))),128))])):(u(),$(m,{key:1,placeholder:"输入回答...","enter-button":"发送",style:{"margin-top":"10px"},onSearch:a(t).answerQuestion},null,8,["onSearch"]))])):N("",!0)],512)),a(t).result?.mode==="debate"&&!a(t).isRunning?(u(),h("div",Vs,[d("div",Xs,[D(b,{color:j(a(t).result.verdict)},{default:k(()=>[U(A(a(t).result.verdict),1)]),_:1},8,["color"]),d("span",js,"共识 "+A(a(t).result.consensusScore||0)+"/100",1)]),D(O,{ghost:"",size:"small"},{default:k(()=>[(u(!0),h(oe,null,ie(a(t).result.reviews||[],(s,M)=>(u(),$(Ae,{key:M,class:"review-collapse"},{header:k(()=>[D(b,{color:j(s.verdict)},{default:k(()=>[U(A(s.verdict),1)]),_:2},1032,["color"]),U(" "+A(s.role),1)]),default:k(()=>[d("div",{class:"review-body",innerHTML:X(s.review)},null,8,qs)]),_:2},1024))),128))]),_:1})])):N("",!0),a(t).result&&!a(t).isRunning?(u(),h("div",Ks,[a(t).result.mode==="debate"?(u(),$(b,{key:0,color:"magenta"},{default:k(()=>[...i[19]||(i[19]=[U("debate",-1)])]),_:1})):N("",!0),a(t).result.parallel?(u(),$(b,{key:1,color:"purple"},{default:k(()=>[U(A(a(t).result.subtaskCount||0)+" subtasks",1)]),_:1})):N("",!0),D(b,{color:"geekblue"},{default:k(()=>[U(A(a(t).result.iterationCount||0)+" iterations",1)]),_:1}),D(b,{color:"cyan"},{default:k(()=>[U("~"+A((a(t).result.tokenCount||0).toLocaleString())+" tokens",1)]),_:1}),a(t).result.toolsUsed?.length?(u(),$(b,{key:2,color:"green"},{default:k(()=>[U(A(a(t).result.toolsUsed.length)+" tools",1)]),_:1})):N("",!0)])):N("",!0),d("div",Qs,[a(t).selectedTemplate?(u(),h("div",Zs,[D(b,{color:"blue",class:"context-tag"},{default:k(()=>[(u(),$(pt(V[a(t).selectedTemplate.icon]||a(Pe)))),U(" "+A(a(t).selectedTemplate.name),1)]),_:1}),(u(!0),h(oe,null,ie(a(t).files,s=>(u(),$(b,{key:s,class:"context-tag file"},{default:k(()=>[U(A(Te(s)),1)]),_:2},1024))),128))])):N("",!0),d("div",Js,[D(g,{value:r.value,"onUpdate:value":i[8]||(i[8]=s=>r.value=s),placeholder:he.value,"auto-size":{minRows:1,maxRows:6},disabled:a(c).isLoading,class:"msg-input",onKeydown:An(dt(de,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),D(Z,{type:"primary",loading:a(c).isLoading,class:"send-btn",onClick:de},{icon:k(()=>[D(a(Nn))]),_:1},8,["loading"])])])])])}}},ra=vn(ea,[["__scopeId","data-v-68912dc6"]]);export{ra as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.cowork-root[data-v-68912dc6]{display:flex;height:calc(100vh - 104px);gap:16px}.template-panel[data-v-68912dc6]{width:280px;flex-shrink:0;background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.template-header[data-v-68912dc6]{padding:16px 16px 8px;display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:var(--text-primary)}.header-icon[data-v-68912dc6]{font-size:18px;color:#1677ff}.template-hint[data-v-68912dc6]{padding:0 16px 12px;font-size:12px;color:var(--text-muted);border-bottom:1px solid var(--border-color)}.template-list[data-v-68912dc6]{flex:1;overflow-y:auto;padding:8px}.template-card[data-v-68912dc6]{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:8px;cursor:pointer;transition:all .15s;margin-bottom:4px;border:1px solid transparent}.template-card[data-v-68912dc6]:hover{background:var(--bg-card-hover)}.template-card.active[data-v-68912dc6]{background:#1677ff14;border-color:#1677ff4d}.template-card.free .card-icon[data-v-68912dc6]{color:#faad14}.card-icon[data-v-68912dc6]{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:16px;color:#1677ff;background:#1677ff14;border-radius:8px;flex-shrink:0;margin-top:2px}.card-name[data-v-68912dc6]{font-size:13px;font-weight:500;color:var(--text-primary)}.card-desc[data-v-68912dc6]{font-size:11px;color:var(--text-muted);margin-top:2px;line-height:1.4}.file-zone[data-v-68912dc6]{padding:12px;border-top:1px solid var(--border-color);text-align:center;transition:background .2s}.file-zone.dragging[data-v-68912dc6]{background:#1677ff14}.drop-icon[data-v-68912dc6]{font-size:20px;color:var(--text-muted)}.drop-text[data-v-68912dc6]{font-size:11px;color:var(--text-muted);margin:4px 0 8px}.file-list[data-v-68912dc6]{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px;justify-content:center}.file-tag[data-v-68912dc6]{max-width:140px;overflow:hidden;text-overflow:ellipsis;font-size:11px}.path-input[data-v-68912dc6]{font-size:11px}.exec-panel[data-v-68912dc6]{flex:1;background:var(--bg-card);border-radius:8px;border:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden}.empty-state[data-v-68912dc6],.ready-state[data-v-68912dc6]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px}.empty-icon[data-v-68912dc6]{font-size:48px;color:#1677ff40;margin-bottom:16px}.empty-title[data-v-68912dc6]{font-size:16px;color:var(--text-primary);margin-bottom:6px}.empty-sub[data-v-68912dc6]{font-size:13px;color:var(--text-muted);margin-bottom:24px}.ready-header[data-v-68912dc6]{display:flex;align-items:center;gap:10px;margin-bottom:20px}.ready-icon[data-v-68912dc6]{font-size:28px;color:#1677ff}.ready-name[data-v-68912dc6]{font-size:18px;font-weight:600;color:var(--text-primary)}.parallel-toggle[data-v-68912dc6]{display:flex;align-items:center;gap:8px;margin-bottom:16px;padding:8px 14px;background:var(--bg-card-hover);border-radius:8px;border:1px solid var(--border-color)}.parallel-label[data-v-68912dc6]{font-size:13px;color:var(--text-primary)}.agent-count[data-v-68912dc6]{width:60px}.parallel-hint[data-v-68912dc6]{font-size:12px;color:var(--text-muted)}.ready-examples[data-v-68912dc6]{text-align:center}.example-label[data-v-68912dc6]{font-size:13px;color:var(--text-muted);margin-bottom:12px}.example-grid[data-v-68912dc6]{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:500px}.example-chip[data-v-68912dc6]{padding:6px 14px;border-radius:16px;font-size:12px;color:var(--text-primary);background:var(--bg-card-hover);border:1px solid var(--border-color);cursor:pointer;transition:all .15s}.example-chip[data-v-68912dc6]:hover{border-color:#1677ff;background:#1677ff14;color:#1677ff}.messages-area[data-v-68912dc6]{flex:1;overflow-y:auto;padding:20px}.message-row[data-v-68912dc6]{margin-bottom:16px}.user-msg[data-v-68912dc6]{display:flex;justify-content:flex-end}.assistant-msg[data-v-68912dc6]{display:flex;gap:10px;align-items:flex-start}.avatar[data-v-68912dc6]{width:32px;height:32px;border-radius:50%;background:#1677ff;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text-primary);flex-shrink:0}.bubble[data-v-68912dc6]{padding:10px 14px;border-radius:12px;max-width:80%;line-height:1.6;font-size:14px}.bubble.user[data-v-68912dc6]{background:#1677ff;color:var(--text-primary);border-bottom-right-radius:4px}.bubble.assistant[data-v-68912dc6]{background:var(--bg-card-hover);color:var(--text-primary);border-bottom-left-radius:4px}.bubble.streaming[data-v-68912dc6]:after{content:"○";animation:blink-68912dc6 .7s step-start infinite;color:#1677ff}@keyframes blink-68912dc6{50%{opacity:0}}.tool-msg[data-v-68912dc6]{margin:8px 0}.tool-collapse[data-v-68912dc6]{border:1px solid var(--border-color);border-radius:6px;background:var(--bg-card)}.tool-input[data-v-68912dc6]{margin:0;font-size:11px;color:#aaa;white-space:pre-wrap}.tool-result-box[data-v-68912dc6]{margin-top:8px;padding-top:8px;border-top:1px solid var(--border-color)}.tool-result[data-v-68912dc6]{margin:0;font-size:11px;color:#52c41a;white-space:pre-wrap}.question-card[data-v-68912dc6]{background:var(--bg-card-hover);border:1px solid #1677ff40;border-radius:10px;padding:14px 16px;margin-top:8px}.question-text[data-v-68912dc6]{color:#aaa;font-size:13px}.question-choices[data-v-68912dc6]{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.debate-panel[data-v-68912dc6]{border-top:1px solid var(--border-color);padding:12px 16px;background:var(--bg-card-hover)}.debate-verdict[data-v-68912dc6]{display:flex;align-items:center;gap:12px;margin-bottom:8px;font-size:13px}.consensus[data-v-68912dc6]{color:var(--text-muted);font-size:12px}.review-collapse[data-v-68912dc6]{border-bottom:1px solid var(--border-color)}.review-body[data-v-68912dc6]{font-size:12px;line-height:1.6;color:var(--text-primary);padding:4px 0}.task-stats[data-v-68912dc6]{display:flex;gap:6px;padding:6px 16px;border-top:1px solid var(--border-color);justify-content:flex-end}.input-area[data-v-68912dc6]{padding:12px 16px 16px;border-top:1px solid var(--border-color)}.input-context[data-v-68912dc6]{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.context-tag[data-v-68912dc6]{font-size:11px}.context-tag.file[data-v-68912dc6]{background:var(--bg-card-hover)}.input-row[data-v-68912dc6]{display:flex;gap:8px;align-items:flex-end}.msg-input[data-v-68912dc6]{flex:1;background:var(--bg-card-hover);border-color:var(--border-color);color:var(--text-primary);resize:none}.send-btn[data-v-68912dc6]{height:40px}[data-v-68912dc6] .bubble.assistant pre{background:var(--bg-base);border-radius:6px;padding:12px;overflow-x:auto;font-size:12px}[data-v-68912dc6] .bubble.assistant code:not(pre code){background:var(--bg-card-hover);padding:1px 5px;border-radius:3px;font-size:12px;color:#f0a500}[data-v-68912dc6] .bubble.assistant p{margin:0 0 8px}[data-v-68912dc6] .bubble.assistant p:last-child{margin:0}.history-section[data-v-68912dc6]{margin-top:12px;border-top:1px solid var(--border-color);padding-top:8px}.history-header[data-v-68912dc6]{display:flex;align-items:center;gap:6px;font-size:12px;color:#888;cursor:pointer;padding:4px 0}.history-header[data-v-68912dc6]:hover{color:#1677ff}.history-list[data-v-68912dc6]{max-height:200px;overflow-y:auto}.history-item[data-v-68912dc6]{padding:6px 8px;border-radius:6px;margin-bottom:4px;background:var(--bg-card-hover);cursor:default}.history-item.failed[data-v-68912dc6]{border-left:2px solid #ff4d4f}.history-item.completed[data-v-68912dc6]{border-left:2px solid #52c41a}.history-summary[data-v-68912dc6]{font-size:12px;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-meta[data-v-68912dc6]{display:flex;justify-content:space-between;font-size:10px;color:#888;margin-top:2px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.stat-card[data-v-c2d8ed1e]{background:var(--bg-card)!important;border-color:var(--border-color)!important;transition:border-color .2s}.stat-card[data-v-c2d8ed1e]:hover{border-color:var(--text-muted)!important}.stat-header[data-v-c2d8ed1e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.stat-label[data-v-c2d8ed1e]{color:var(--text-secondary);font-size:12px}.stat-value[data-v-c2d8ed1e]{font-size:22px;font-weight:600;line-height:1.2;margin-bottom:4px}.stat-sub[data-v-c2d8ed1e]{color:var(--text-muted);font-size:11px}.gateway-card[data-v-c2d8ed1e]{border-left:3px solid #1677ff!important}.status-log[data-v-c2d8ed1e]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:6px;padding:10px 14px;color:var(--text-secondary);font-size:11px;font-family:Consolas,monospace;max-height:200px;overflow-y:auto;white-space:pre-wrap;margin:0;line-height:1.6}.telemetry-card[data-v-c2d8ed1e]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;padding:14px;height:100%}.telemetry-filter[data-v-c2d8ed1e]{display:flex;flex-direction:column;gap:6px}.telemetry-filter-label[data-v-c2d8ed1e]{color:var(--text-muted);font-size:12px}.telemetry-label[data-v-c2d8ed1e]{color:var(--text-muted);font-size:12px;margin-bottom:6px}.telemetry-value[data-v-c2d8ed1e]{color:#91caff;font-size:24px;font-weight:600;line-height:1.2}.telemetry-sub[data-v-c2d8ed1e]{color:var(--text-secondary);font-size:11px;margin-top:4px}.telemetry-section[data-v-c2d8ed1e]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;padding:14px;min-height:140px}.telemetry-section-title[data-v-c2d8ed1e]{color:var(--text-secondary);font-size:12px;margin-bottom:10px}.telemetry-list[data-v-c2d8ed1e]{display:flex;flex-direction:column;gap:8px}.telemetry-row[data-v-c2d8ed1e]{display:flex;justify-content:space-between;gap:12px;color:var(--text-secondary);font-size:12px}.telemetry-empty[data-v-c2d8ed1e]{color:var(--text-muted);font-size:12px}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{V as se,f as T,o as le,b as oe,a3 as p,a1 as l,a5 as o,u as r,k as t,Z as s,W as I,a4 as H,c as S,X as x,$ as ae,Y as i,G as m,a8 as q,F as P,a7 as O}from"./vendor-CN0Iv_qZ.js";import{u as B}from"./ws-Dma34ig_.js";import{u as ne}from"./chat-BYmuDvol.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{p as ie,F as ue,q as X,c as Y,M as Z,r as de,s as ve,b as J,t as ce,d as pe}from"./antd-D6h4fDFf.js";function me(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const fe=se("dashboard",()=>{const V=T(!1),j=T(!1),d=T({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),F=T(""),
|
|
1
|
+
import{V as se,f as T,o as le,b as oe,a3 as p,a1 as l,a5 as o,u as r,k as t,Z as s,W as I,a4 as H,c as S,X as x,$ as ae,Y as i,G as m,a8 as q,F as P,a7 as O}from"./vendor-CN0Iv_qZ.js";import{u as B}from"./ws-Dma34ig_.js";import{u as ne}from"./chat-BYmuDvol.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{p as ie,F as ue,q as X,c as Y,M as Z,r as de,s as ve,b as J,t as ce,d as pe}from"./antd-D6h4fDFf.js";function me(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const fe=se("dashboard",()=>{const V=T(!1),j=T(!1),d=T({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),F=T(""),b=T(me()),v=T({windowPreset:"all",provider:"",model:""});let k=null;function D(n=B()){k||(k=n.onRuntimeEvent(c=>{c.type==="compression:summary"?N(c.payload?.summary||{}):c.type==="session:start"?d.value.sessionCount=(d.value.sessionCount||0)+1:c.type==="session:end"&&(d.value.sessionCount=Math.max(0,(d.value.sessionCount||0)-1))}))}function E(){k&&(k(),k=null)}function N(n){b.value={...b.value,...n||{}}}function h(n){return n==="1h"?3600*1e3:n==="24h"?1440*60*1e3:n==="7d"?10080*60*1e3:null}function f(n){d.value.appRunning=n.includes("Desktop app running"),d.value.setupDone=n.includes("Setup completed");const c=n.match(/Edition:\s+(\S+)/i);c&&(d.value.edition=c[1]);const w=n.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(w)d.value.activeLlm=w[1],d.value.activeModel=w[2];else{const _=n.match(/LLM:\s+(\S+)/i);_&&(d.value.activeLlm=_[1])}}async function g(){const n=B();D(n),j.value=!0;const c={type:"compression-stats",windowMs:h(v.value.windowPreset)};v.value.provider&&(c.provider=v.value.provider),v.value.model&&(c.model=v.value.model);try{const w=await n.sendRaw(c,1e4);N(w.summary||{})}catch{}finally{j.value=!1}}async function W(){const n=B();D(n),V.value=!0,d.value.wsStatus=n.status,F.value="";try{const[c,w]=await Promise.allSettled([n.execute("status",15e3),n.listSessions()]);if(c.status==="fulfilled"){const _=c.value.output;F.value=_.split(`
|
|
2
2
|
`).slice(0,20).join(`
|
|
3
|
-
`),f(b)}w.status==="fulfilled"&&(d.value.sessionCount=w.value.length),Promise.allSettled([n.execute("skill sources",15e3),n.execute("llm providers",15e3)]).then(([b,$])=>{if(b.status==="fulfilled"){const A=b.value.output.match(/(\d+)\s*(?:skills|技能)/i);A&&(d.value.skillCount=parseInt(A[1],10))}if($.status==="fulfilled"){const y=$.value.output.match(/active[:\s]+(\S+)/i);y&&!d.value.activeLlm&&(d.value.activeLlm=y[1])}}),n.execute("mcp servers",1e4).then(({output:b})=>{const $=(b.match(/^[a-z]/gm)||[]).length;d.value.mcpCount=$}).catch(()=>{d.value.mcpCount=0}),await g()}catch{}finally{V.value=!1}}return{loading:V,compressionLoading:j,stats:d,statusLog:F,compression:_,telemetryFilters:v,ensureRuntimeSubscription:D,stopRuntimeSubscription:E,refresh:W,refreshCompression:g,applyCompressionSummary:N,toWindowMs:h}}),ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ge={class:"page-sub"},be={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},_e={style:{color:"#91caff","font-weight":"600"}},ke={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},we={class:"stat-header"},Ce={class:"stat-sub"},xe={class:"stat-header"},Se={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},he={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},$e={class:"stat-header"},Re={class:"stat-value",style:{color:"#1677ff"}},ze={class:"stat-header"},Le={class:"stat-value",style:{color:"#c084fc"}},De={class:"stat-header"},Me={class:"stat-sub"},Te={class:"stat-header"},Pe={class:"stat-value",style:{color:"#13c2c2"}},Oe={class:"stat-header"},je={class:"stat-value",style:{color:"#faad14"}},Fe={class:"status-log"},Ee={class:"telemetry-filter"},Ne={class:"telemetry-filter"},Ae={class:"telemetry-filter"},Ie={class:"telemetry-card"},Ve={class:"telemetry-value"},We={class:"telemetry-sub"},Be={class:"telemetry-card"},Ue={class:"telemetry-value"},Ge={class:"telemetry-sub"},He={class:"telemetry-card"},qe={class:"telemetry-value"},Xe={class:"telemetry-sub"},Ye={class:"telemetry-section"},Ze={key:0,class:"telemetry-empty"},Je={key:1,class:"telemetry-list"},Ke={class:"telemetry-section"},Qe={key:0,class:"telemetry-empty"},et={key:1,class:"telemetry-list"},tt={class:"telemetry-section"},st={key:0,class:"telemetry-empty"},lt={key:1,class:"telemetry-list"},ot={class:"telemetry-section"},at={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},rt={style:{color:"#91caff"}},it={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},ut={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},dt={__name:"Dashboard",setup(V){const j=ae(),d=B(),F=ne(),_=fe(),v=window.__CC_CONFIG__||{},k=S(()=>v.mode==="project"),D=S(()=>d.status),E=S(()=>_.loading),N=S(()=>_.statusLog),h=S(()=>_.telemetryFilters),f=S(()=>_.compression),g=S(()=>_.stats),W=S(()=>Object.entries(f.value.variantDistribution||{})),n=S(()=>f.value.providerDistribution||[]),c=S(()=>f.value.modelDistribution||[]);async function w(){await _.refresh()}async function b(){await _.refreshCompression()}function $(y){return`${((y||0)*100).toFixed(1)}%`}async function A(){await F.createSession("agent"),j.push("/chat")}return le(()=>{_.ensureRuntimeSubscription(d),setTimeout(w,300)}),oe(()=>{_.stopRuntimeSubscription()}),(y,e)=>{const z=x("a-button"),U=x("a-tag"),C=x("a-card"),K=x("a-badge"),u=x("a-col"),R=x("a-row"),Q=x("a-space"),L=x("a-select-option"),G=x("a-select"),M=x("a-descriptions-item"),ee=x("a-descriptions");return i(),p("div",null,[l("div",ye,[l("div",null,[e[13]||(e[13]=l("h2",{class:"page-title"},"仪表板",-1)),l("p",ge,o(k.value?`项目「${r(v).projectName||"未命名"}」运行概览`:"ChainlessChain 全局运行概览"),1)]),t(z,{type:"primary",ghost:"",loading:E.value,onClick:w},{icon:s(()=>[t(r(ie))]),default:s(()=>[e[14]||(e[14]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),k.value?(i(),I(C,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:s(()=>[l("div",be,[t(r(ue),{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",_e,o(r(v).projectName||"项目"),1),l("div",ke,o(r(v).projectRoot),1)]),t(U,{color:"blue",style:{"margin-left":"auto"}},{default:s(()=>[...e[15]||(e[15]=[m("项目面板",-1)])]),_:1})])]),_:1})):H("",!0),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card gateway-card",size:"small"},{default:s(()=>[l("div",we,[e[16]||(e[16]=l("span",{class:"stat-label"},"WebSocket Gateway",-1)),t(K,{status:D.value==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:q({color:D.value==="connected"?"#52c41a":"#888"})},o(D.value==="connected"?"运行中":"未连接"),5),l("div",Ce,"端口 "+o(r(v).wsPort||18800)+" · "+o(r(v).wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",xe,[e[17]||(e[17]=l("span",{class:"stat-label"},"当前 LLM",-1)),t(r(X),{style:{color:"#1677ff"}})]),l("div",Se,o(g.value.activeLlm||"未配置"),1),l("div",he,o(g.value.activeModel||"—"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[0]||(e[0]=a=>y.$router.push("/skills"))},{default:s(()=>[l("div",$e,[e[18]||(e[18]=l("span",{class:"stat-label"},"可用技能",-1)),t(r(Y),{style:{color:"#1677ff"}})]),l("div",Re,o(g.value.skillCount||"—"),1),e[19]||(e[19]=l("div",{class:"stat-sub"},"点击管理技能",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[1]||(e[1]=a=>y.$router.push("/chat"))},{default:s(()=>[l("div",ze,[e[20]||(e[20]=l("span",{class:"stat-label"},"AI 会话",-1)),t(r(Z),{style:{color:"#722ed1"}})]),l("div",Le,o(g.value.sessionCount),1),e[21]||(e[21]=l("div",{class:"stat-sub"},"点击进入对话",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",De,[e[22]||(e[22]=l("span",{class:"stat-label"},"应用状态",-1)),t(r(de),{style:q({color:g.value.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:q({color:g.value.appRunning?"#52c41a":"#888",fontSize:"15px"})},o(g.value.appRunning?"运行中":g.value.setupDone?"已初始化":"未启动"),5),l("div",Me,o(g.value.edition||"Community")+" Edition",1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[2]||(e[2]=a=>y.$router.push("/mcp"))},{default:s(()=>[l("div",Te,[e[23]||(e[23]=l("span",{class:"stat-label"},"MCP 工具",-1)),t(r(ve),{style:{color:"#13c2c2"}})]),l("div",Pe,o(g.value.mcpCount??"—"),1),e[24]||(e[24]=l("div",{class:"stat-sub"},"已挂载扩展",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[3]||(e[3]=a=>y.$router.push("/notes"))},{default:s(()=>[l("div",Oe,[e[25]||(e[25]=l("span",{class:"stat-label"},"知识库笔记",-1)),t(r(J),{style:{color:"#faad14"}})]),l("div",je,o(g.value.noteCount??"—"),1),e[26]||(e[26]=l("div",{class:"stat-sub"},"点击管理笔记",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[16,16]},{default:s(()=>[t(u,{xs:24,lg:10},{default:s(()=>[t(C,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:s(()=>[t(Q,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:s(()=>[t(z,{type:"primary",block:"",onClick:e[4]||(e[4]=a=>y.$router.push("/chat"))},{icon:s(()=>[t(r(Z))]),default:s(()=>[m(" "+o(k.value?"进入项目 Chat":"新建 AI 对话"),1)]),_:1}),t(z,{block:"",onClick:A,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:s(()=>[t(r(X))]),default:s(()=>[e[27]||(e[27]=m(" 启动 Agent 模式 ",-1))]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[5]||(e[5]=a=>y.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(ce))]),default:s(()=>[e[28]||(e[28]=m(" 服务管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[6]||(e[6]=a=>y.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(J))]),default:s(()=>[e[29]||(e[29]=m(" 查看日志 ",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[7]||(e[7]=a=>y.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(Y))]),default:s(()=>[e[30]||(e[30]=m(" 技能管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[8]||(e[8]=a=>y.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(pe))]),default:s(()=>[e[31]||(e[31]=m(" LLM 配置 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(u,{xs:24,lg:14},{default:s(()=>[t(C,{title:"最近状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:E.value},{extra:s(()=>[t(z,{type:"link",size:"small",onClick:e[9]||(e[9]=a=>y.$router.push("/logs"))},{default:s(()=>[...e[32]||(e[32]=[m("查看更多",-1)])]),_:1})]),default:s(()=>[l("pre",Fe,o(N.value||"点击刷新加载系统状态..."),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(C,{title:"压缩策略观测",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:E.value},{default:s(()=>[t(R,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:s(()=>[t(u,{xs:24,md:8},{default:s(()=>[l("div",Ee,[e[37]||(e[37]=l("div",{class:"telemetry-filter-label"},"时间窗口",-1)),t(G,{value:h.value.windowPreset,"onUpdate:value":e[10]||(e[10]=a=>h.value.windowPreset=a),style:{width:"100%"},onChange:b},{default:s(()=>[t(L,{value:"all"},{default:s(()=>[...e[33]||(e[33]=[m("全部样本",-1)])]),_:1}),t(L,{value:"1h"},{default:s(()=>[...e[34]||(e[34]=[m("近 1 小时",-1)])]),_:1}),t(L,{value:"24h"},{default:s(()=>[...e[35]||(e[35]=[m("近 24 小时",-1)])]),_:1}),t(L,{value:"7d"},{default:s(()=>[...e[36]||(e[36]=[m("近 7 天",-1)])]),_:1})]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ne,[e[39]||(e[39]=l("div",{class:"telemetry-filter-label"},"Provider 切片",-1)),t(G,{value:h.value.provider,"onUpdate:value":e[11]||(e[11]=a=>h.value.provider=a),style:{width:"100%"},onChange:b},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[38]||(e[38]=[m("全部 Provider",-1)])]),_:1}),(i(!0),p(P,null,O(n.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ae,[e[41]||(e[41]=l("div",{class:"telemetry-filter-label"},"Model 切片",-1)),t(G,{value:h.value.model,"onUpdate:value":e[12]||(e[12]=a=>h.value.model=a),style:{width:"100%"},onChange:b},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[40]||(e[40]=[m("全部 Model",-1)])]),_:1}),(i(!0),p(P,null,O(c.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),t(R,{gutter:[12,12]},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[l("div",Ie,[e[42]||(e[42]=l("div",{class:"telemetry-label"},"压缩命中率",-1)),l("div",Ve,o($(f.value.hitRate)),1),l("div",We,o(f.value.compressedSamples)+" / "+o(f.value.samples)+" 次压缩产生了有效节省 ",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",Be,[e[43]||(e[43]=l("div",{class:"telemetry-label"},"累计节省 Token",-1)),l("div",Ue,o(f.value.totalSavedTokens),1),l("div",Ge,"平均每次 "+o(f.value.averageSavedTokens)+" Token",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",He,[e[44]||(e[44]=l("div",{class:"telemetry-label"},"净节省率",-1)),l("div",qe,o($(f.value.netSavingsRate)),1),l("div",Xe," 原始 "+o(f.value.totalOriginalTokens)+" -> 压缩后 "+o(f.value.totalCompressedTokens),1)])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ye,[e[45]||(e[45]=l("div",{class:"telemetry-section-title"},"策略命中分布",-1)),f.value.strategyDistribution.length===0?(i(),p("div",Ze,"暂无压缩样本")):(i(),p("div",Je,[(i(!0),p(P,null,O(f.value.strategyDistribution.slice(0,6),a=>(i(),p("div",{key:a.strategy,class:"telemetry-row"},[l("span",null,o(a.strategy),1),l("span",null,o(a.hits)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ke,[e[46]||(e[46]=l("div",{class:"telemetry-section-title"},"变体分布",-1)),W.value.length===0?(i(),p("div",Qe,"暂无变体数据")):(i(),p("div",et,[(i(!0),p(P,null,O(W.value,([a,te])=>(i(),p("div",{key:a,class:"telemetry-row"},[l("span",null,o(a),1),l("span",null,o(te)+" 次",1)]))),128))]))])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",tt,[e[47]||(e[47]=l("div",{class:"telemetry-section-title"},"Provider 切片",-1)),n.value.length===0?(i(),p("div",st,"暂无 Provider 数据")):(i(),p("div",lt,[(i(!0),p(P,null,O(n.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",ot,[e[48]||(e[48]=l("div",{class:"telemetry-section-title"},"Model 切片",-1)),c.value.length===0?(i(),p("div",at,"暂无 Model 数据")):(i(),p("div",nt,[(i(!0),p(P,null,O(c.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o(a.savedTokens)+" saved",1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["loading"]),t(C,{title:"运行信息",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:s(()=>[t(ee,{column:{xs:1,sm:2,lg:3},size:"small"},{default:s(()=>[t(M,{label:"面板模式"},{default:s(()=>[t(U,{color:k.value?"blue":"purple"},{default:s(()=>[m(o(k.value?"项目级":"全局"),1)]),_:1},8,["color"])]),_:1}),k.value?(i(),I(M,{key:0,label:"项目名称"},{default:s(()=>[l("span",rt,o(r(v).projectName||"—"),1)]),_:1})):H("",!0),k.value?(i(),I(M,{key:1,label:"项目路径"},{default:s(()=>[l("span",it,o(r(v).projectRoot),1)]),_:1})):H("",!0),t(M,{label:"WebSocket"},{default:s(()=>[l("span",ut," ws://"+o(r(v).wsHost||"127.0.0.1")+":"+o(r(v).wsPort||18800),1)]),_:1}),t(M,{label:"认证"},{default:s(()=>[t(U,{color:r(v).wsToken?"green":"default",style:{"font-size":"11px"}},{default:s(()=>[m(o(r(v).wsToken?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),t(M,{label:"版本"},{default:s(()=>[...e[49]||(e[49]=[l("span",{style:{color:"var(--text-muted)"}},"v5.0.2.7",-1)])]),_:1})]),_:1})]),_:1})])}}},yt=re(dt,[["__scopeId","data-v-39c5aabc"]]);export{yt as default};
|
|
3
|
+
`),f(_)}w.status==="fulfilled"&&(d.value.sessionCount=w.value.length),Promise.allSettled([n.execute("skill sources",15e3),n.execute("llm providers",15e3)]).then(([_,$])=>{if(_.status==="fulfilled"){const A=_.value.output.match(/(\d+)\s*(?:skills|技能)/i);A&&(d.value.skillCount=parseInt(A[1],10))}if($.status==="fulfilled"){const y=$.value.output.match(/active[:\s]+(\S+)/i);y&&!d.value.activeLlm&&(d.value.activeLlm=y[1])}}),n.execute("mcp servers",1e4).then(({output:_})=>{const $=(_.match(/^[a-z]/gm)||[]).length;d.value.mcpCount=$}).catch(()=>{d.value.mcpCount=0}),await g()}catch{}finally{V.value=!1}}return{loading:V,compressionLoading:j,stats:d,statusLog:F,compression:b,telemetryFilters:v,ensureRuntimeSubscription:D,stopRuntimeSubscription:E,refresh:W,refreshCompression:g,applyCompressionSummary:N,toWindowMs:h}}),ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ge={class:"page-sub"},_e={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},be={style:{color:"#91caff","font-weight":"600"}},ke={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},we={class:"stat-header"},Ce={class:"stat-sub"},xe={class:"stat-header"},Se={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},he={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},$e={class:"stat-header"},Re={class:"stat-value",style:{color:"#1677ff"}},ze={class:"stat-header"},Le={class:"stat-value",style:{color:"#c084fc"}},De={class:"stat-header"},Me={class:"stat-sub"},Te={class:"stat-header"},Pe={class:"stat-value",style:{color:"#13c2c2"}},Oe={class:"stat-header"},je={class:"stat-value",style:{color:"#faad14"}},Fe={class:"status-log"},Ee={class:"telemetry-filter"},Ne={class:"telemetry-filter"},Ae={class:"telemetry-filter"},Ie={class:"telemetry-card"},Ve={class:"telemetry-value"},We={class:"telemetry-sub"},Be={class:"telemetry-card"},Ue={class:"telemetry-value"},Ge={class:"telemetry-sub"},He={class:"telemetry-card"},qe={class:"telemetry-value"},Xe={class:"telemetry-sub"},Ye={class:"telemetry-section"},Ze={key:0,class:"telemetry-empty"},Je={key:1,class:"telemetry-list"},Ke={class:"telemetry-section"},Qe={key:0,class:"telemetry-empty"},et={key:1,class:"telemetry-list"},tt={class:"telemetry-section"},st={key:0,class:"telemetry-empty"},lt={key:1,class:"telemetry-list"},ot={class:"telemetry-section"},at={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},rt={style:{color:"#91caff"}},it={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},ut={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},dt={__name:"Dashboard",setup(V){const j=ae(),d=B(),F=ne(),b=fe(),v=window.__CC_CONFIG__||{},k=S(()=>v.mode==="project"),D=S(()=>d.status),E=S(()=>b.loading),N=S(()=>b.statusLog),h=S(()=>b.telemetryFilters),f=S(()=>b.compression),g=S(()=>b.stats),W=S(()=>Object.entries(f.value.variantDistribution||{})),n=S(()=>f.value.providerDistribution||[]),c=S(()=>f.value.modelDistribution||[]);async function w(){await b.refresh()}async function _(){await b.refreshCompression()}function $(y){return`${((y||0)*100).toFixed(1)}%`}async function A(){await F.createSession("agent"),j.push("/chat")}return le(()=>{b.ensureRuntimeSubscription(d),setTimeout(w,300)}),oe(()=>{b.stopRuntimeSubscription()}),(y,e)=>{const z=x("a-button"),U=x("a-tag"),C=x("a-card"),K=x("a-badge"),u=x("a-col"),R=x("a-row"),Q=x("a-space"),L=x("a-select-option"),G=x("a-select"),M=x("a-descriptions-item"),ee=x("a-descriptions");return i(),p("div",null,[l("div",ye,[l("div",null,[e[13]||(e[13]=l("h2",{class:"page-title"},"仪表板",-1)),l("p",ge,o(k.value?`项目「${r(v).projectName||"未命名"}」运行概览`:"ChainlessChain 全局运行概览"),1)]),t(z,{type:"primary",ghost:"",loading:E.value,onClick:w},{icon:s(()=>[t(r(ie))]),default:s(()=>[e[14]||(e[14]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),k.value?(i(),I(C,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:s(()=>[l("div",_e,[t(r(ue),{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",be,o(r(v).projectName||"项目"),1),l("div",ke,o(r(v).projectRoot),1)]),t(U,{color:"blue",style:{"margin-left":"auto"}},{default:s(()=>[...e[15]||(e[15]=[m("项目面板",-1)])]),_:1})])]),_:1})):H("",!0),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card gateway-card",size:"small"},{default:s(()=>[l("div",we,[e[16]||(e[16]=l("span",{class:"stat-label"},"WebSocket Gateway",-1)),t(K,{status:D.value==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:q({color:D.value==="connected"?"#52c41a":"#888"})},o(D.value==="connected"?"运行中":"未连接"),5),l("div",Ce,"端口 "+o(r(v).wsPort||18800)+" · "+o(r(v).wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",xe,[e[17]||(e[17]=l("span",{class:"stat-label"},"当前 LLM",-1)),t(r(X),{style:{color:"#1677ff"}})]),l("div",Se,o(g.value.activeLlm||"未配置"),1),l("div",he,o(g.value.activeModel||"—"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[0]||(e[0]=a=>y.$router.push("/skills"))},{default:s(()=>[l("div",$e,[e[18]||(e[18]=l("span",{class:"stat-label"},"可用技能",-1)),t(r(Y),{style:{color:"#1677ff"}})]),l("div",Re,o(g.value.skillCount||"—"),1),e[19]||(e[19]=l("div",{class:"stat-sub"},"点击管理技能",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[1]||(e[1]=a=>y.$router.push("/chat"))},{default:s(()=>[l("div",ze,[e[20]||(e[20]=l("span",{class:"stat-label"},"AI 会话",-1)),t(r(Z),{style:{color:"#722ed1"}})]),l("div",Le,o(g.value.sessionCount),1),e[21]||(e[21]=l("div",{class:"stat-sub"},"点击进入对话",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",De,[e[22]||(e[22]=l("span",{class:"stat-label"},"应用状态",-1)),t(r(de),{style:q({color:g.value.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:q({color:g.value.appRunning?"#52c41a":"#888",fontSize:"15px"})},o(g.value.appRunning?"运行中":g.value.setupDone?"已初始化":"未启动"),5),l("div",Me,o(g.value.edition||"Community")+" Edition",1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[2]||(e[2]=a=>y.$router.push("/mcp"))},{default:s(()=>[l("div",Te,[e[23]||(e[23]=l("span",{class:"stat-label"},"MCP 工具",-1)),t(r(ve),{style:{color:"#13c2c2"}})]),l("div",Pe,o(g.value.mcpCount??"—"),1),e[24]||(e[24]=l("div",{class:"stat-sub"},"已挂载扩展",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[3]||(e[3]=a=>y.$router.push("/notes"))},{default:s(()=>[l("div",Oe,[e[25]||(e[25]=l("span",{class:"stat-label"},"知识库笔记",-1)),t(r(J),{style:{color:"#faad14"}})]),l("div",je,o(g.value.noteCount??"—"),1),e[26]||(e[26]=l("div",{class:"stat-sub"},"点击管理笔记",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[16,16]},{default:s(()=>[t(u,{xs:24,lg:10},{default:s(()=>[t(C,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:s(()=>[t(Q,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:s(()=>[t(z,{type:"primary",block:"",onClick:e[4]||(e[4]=a=>y.$router.push("/chat"))},{icon:s(()=>[t(r(Z))]),default:s(()=>[m(" "+o(k.value?"进入项目 Chat":"新建 AI 对话"),1)]),_:1}),t(z,{block:"",onClick:A,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:s(()=>[t(r(X))]),default:s(()=>[e[27]||(e[27]=m(" 启动 Agent 模式 ",-1))]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[5]||(e[5]=a=>y.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(ce))]),default:s(()=>[e[28]||(e[28]=m(" 服务管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[6]||(e[6]=a=>y.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(J))]),default:s(()=>[e[29]||(e[29]=m(" 查看日志 ",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[7]||(e[7]=a=>y.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(Y))]),default:s(()=>[e[30]||(e[30]=m(" 技能管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[8]||(e[8]=a=>y.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(pe))]),default:s(()=>[e[31]||(e[31]=m(" LLM 配置 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(u,{xs:24,lg:14},{default:s(()=>[t(C,{title:"最近状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:E.value},{extra:s(()=>[t(z,{type:"link",size:"small",onClick:e[9]||(e[9]=a=>y.$router.push("/logs"))},{default:s(()=>[...e[32]||(e[32]=[m("查看更多",-1)])]),_:1})]),default:s(()=>[l("pre",Fe,o(N.value||"点击刷新加载系统状态..."),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(C,{title:"压缩策略观测",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:E.value},{default:s(()=>[t(R,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:s(()=>[t(u,{xs:24,md:8},{default:s(()=>[l("div",Ee,[e[37]||(e[37]=l("div",{class:"telemetry-filter-label"},"时间窗口",-1)),t(G,{value:h.value.windowPreset,"onUpdate:value":e[10]||(e[10]=a=>h.value.windowPreset=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:"all"},{default:s(()=>[...e[33]||(e[33]=[m("全部样本",-1)])]),_:1}),t(L,{value:"1h"},{default:s(()=>[...e[34]||(e[34]=[m("近 1 小时",-1)])]),_:1}),t(L,{value:"24h"},{default:s(()=>[...e[35]||(e[35]=[m("近 24 小时",-1)])]),_:1}),t(L,{value:"7d"},{default:s(()=>[...e[36]||(e[36]=[m("近 7 天",-1)])]),_:1})]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ne,[e[39]||(e[39]=l("div",{class:"telemetry-filter-label"},"Provider 切片",-1)),t(G,{value:h.value.provider,"onUpdate:value":e[11]||(e[11]=a=>h.value.provider=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[38]||(e[38]=[m("全部 Provider",-1)])]),_:1}),(i(!0),p(P,null,O(n.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ae,[e[41]||(e[41]=l("div",{class:"telemetry-filter-label"},"Model 切片",-1)),t(G,{value:h.value.model,"onUpdate:value":e[12]||(e[12]=a=>h.value.model=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[40]||(e[40]=[m("全部 Model",-1)])]),_:1}),(i(!0),p(P,null,O(c.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),t(R,{gutter:[12,12]},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[l("div",Ie,[e[42]||(e[42]=l("div",{class:"telemetry-label"},"压缩命中率",-1)),l("div",Ve,o($(f.value.hitRate)),1),l("div",We,o(f.value.compressedSamples)+" / "+o(f.value.samples)+" 次压缩产生了有效节省 ",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",Be,[e[43]||(e[43]=l("div",{class:"telemetry-label"},"累计节省 Token",-1)),l("div",Ue,o(f.value.totalSavedTokens),1),l("div",Ge,"平均每次 "+o(f.value.averageSavedTokens)+" Token",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",He,[e[44]||(e[44]=l("div",{class:"telemetry-label"},"净节省率",-1)),l("div",qe,o($(f.value.netSavingsRate)),1),l("div",Xe," 原始 "+o(f.value.totalOriginalTokens)+" -> 压缩后 "+o(f.value.totalCompressedTokens),1)])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ye,[e[45]||(e[45]=l("div",{class:"telemetry-section-title"},"策略命中分布",-1)),f.value.strategyDistribution.length===0?(i(),p("div",Ze,"暂无压缩样本")):(i(),p("div",Je,[(i(!0),p(P,null,O(f.value.strategyDistribution.slice(0,6),a=>(i(),p("div",{key:a.strategy,class:"telemetry-row"},[l("span",null,o(a.strategy),1),l("span",null,o(a.hits)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ke,[e[46]||(e[46]=l("div",{class:"telemetry-section-title"},"变体分布",-1)),W.value.length===0?(i(),p("div",Qe,"暂无变体数据")):(i(),p("div",et,[(i(!0),p(P,null,O(W.value,([a,te])=>(i(),p("div",{key:a,class:"telemetry-row"},[l("span",null,o(a),1),l("span",null,o(te)+" 次",1)]))),128))]))])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",tt,[e[47]||(e[47]=l("div",{class:"telemetry-section-title"},"Provider 切片",-1)),n.value.length===0?(i(),p("div",st,"暂无 Provider 数据")):(i(),p("div",lt,[(i(!0),p(P,null,O(n.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",ot,[e[48]||(e[48]=l("div",{class:"telemetry-section-title"},"Model 切片",-1)),c.value.length===0?(i(),p("div",at,"暂无 Model 数据")):(i(),p("div",nt,[(i(!0),p(P,null,O(c.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o(a.savedTokens)+" saved",1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["loading"]),t(C,{title:"运行信息",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:s(()=>[t(ee,{column:{xs:1,sm:2,lg:3},size:"small"},{default:s(()=>[t(M,{label:"面板模式"},{default:s(()=>[t(U,{color:k.value?"blue":"purple"},{default:s(()=>[m(o(k.value?"项目级":"全局"),1)]),_:1},8,["color"])]),_:1}),k.value?(i(),I(M,{key:0,label:"项目名称"},{default:s(()=>[l("span",rt,o(r(v).projectName||"—"),1)]),_:1})):H("",!0),k.value?(i(),I(M,{key:1,label:"项目路径"},{default:s(()=>[l("span",it,o(r(v).projectRoot),1)]),_:1})):H("",!0),t(M,{label:"WebSocket"},{default:s(()=>[l("span",ut," ws://"+o(r(v).wsHost||"127.0.0.1")+":"+o(r(v).wsPort||18800),1)]),_:1}),t(M,{label:"认证"},{default:s(()=>[t(U,{color:r(v).wsToken?"green":"default",style:{"font-size":"11px"}},{default:s(()=>[m(o(r(v).wsToken?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),t(M,{label:"版本"},{default:s(()=>[...e[49]||(e[49]=[l("span",{style:{color:"var(--text-muted)"}},"v5.0.2.7",-1)])]),_:1})]),_:1})]),_:1})])}}},yt=re(dt,[["__scopeId","data-v-c2d8ed1e"]]);export{yt as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AppLayout-
|
|
2
|
-
import{S as B,U as L,V as I,f as T,c as E,o as R,W as O,u as k,X as y,Y as V,Z as x,k as D,R as S,_ as w}from"./vendor-CN0Iv_qZ.js";import{a as g,A as M}from"./antd-D6h4fDFf.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))m(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const n of o.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&m(n)}).observe(document,{childList:!0,subtree:!0});function c(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function m(t){if(t.ep)return;t.ep=!0;const o=c(t);fetch(t.href,o)}})();const C="modulepreload",N=function(s,a){return new URL(s,a).href},P={},e=function(a,c,m){let t=Promise.resolve();if(c&&c.length>0){let b=function(i){return Promise.all(i.map(d=>Promise.resolve(d).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};const n=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),u=r?.nonce||r?.getAttribute("nonce");t=b(c.map(i=>{if(i=N(i,m),i in P)return;P[i]=!0;const d=i.endsWith(".css"),p=d?'[rel="stylesheet"]':"";if(m)for(let f=n.length-1;f>=0;f--){const _=n[f];if(_.href===i&&(!d||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${p}`))return;const l=document.createElement("link");if(l.rel=d?"stylesheet":C,d||(l.as="script"),l.crossOrigin="",l.href=i,u&&l.setAttribute("nonce",u),document.head.appendChild(l),d)return new Promise((f,_)=>{l.addEventListener("load",f),l.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})}))}function o(n){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=n,window.dispatchEvent(r),!r.defaultPrevented)throw n}return t.then(n=>{for(const r of n||[])r.status==="rejected"&&o(r.reason);return a().catch(o)})},U=[{path:"/",component:()=>e(()=>import("./AppLayout-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AppLayout-BnvARObz.js","./vendor-CN0Iv_qZ.js","./ws-Dma34ig_.js","./_plugin-vue_export-helper-DlAUqK2U.js","./antd-D6h4fDFf.js","./AppLayout-cxfKLu-m.css","./Dashboard-jt6XPIjB.js","./chat-BYmuDvol.js","./Dashboard-CKeMmCoT.css","./Chat-DiXJ3TuK.js","./markdown-BZsB-Dsv.js","./Chat-DfR76jyX.css","./github-dark-Dfs9RUU9.css","./Cowork-B8ZDdRm4.js","./Cowork-CXuhlHew.css","./Services-D2EsLq-v.js","./Services-C8Qs6KXv.css","./Logs-4D9p6PRM.js","./Logs-Gf_Mv9Nx.css","./Skills-C9v-f3vZ.js","./parsers-DftYMnlk.js","./Skills-BdjRyorN.css","./Providers-DAwgG5KV.js","./Providers-BEakqcO5.css","./McpTools-CyAUjbbs.js","./McpTools-CyhSLDwf.css","./Notes-Cmas8i4E.js","./Notes-BG69sJKi.css","./Memory-BMqOR7S-.js","./Memory-DRghrGJr.css","./Cron-DBt1ueXh.js","./Tasks-yMEcU0n7.js","./Tasks-BJjN_YEm.css","./Security-Cz17qBny.js","./Security-Dwxw7rfP.css","./Permissions-Bq5Qn2s3.js","./Permissions-C9WlkGl-.css","./P2P-BxksIBWs.js","./P2P-OEzOeMZX.css","./Git-hwQ1oZHj.js","./Git-DGcuBXST.css","./Projects-B7EM0uPg.js","./Projects-DxKelI5h.css","./Wallet-BHWhLWn9.js","./Wallet-DnIumafl.css","./Organization-DnSa58Tl.js","./Organization-DdOOM4ic.css","./Analytics-C1AnPdMx.js","./Analytics-B4OM8S8X.css","./Templates-l7SvlKuB.js","./Templates-DOY_oZnm.css","./Backup-D31iZX3l.js","./Backup-fZqtfC1m.css","./RssFeed-HSZoRXvS.js","./RssFeed-BlFC20eg.css","./WebAuthn-kWhFYaUK.js","./WebAuthn-CNPl2VQR.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{S as B,U as L,V as I,f as T,c as E,o as R,W as O,u as k,X as y,Y as V,Z as x,k as D,R as S,_ as w}from"./vendor-CN0Iv_qZ.js";import{a as g,A as M}from"./antd-D6h4fDFf.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))m(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const n of o.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&m(n)}).observe(document,{childList:!0,subtree:!0});function c(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function m(t){if(t.ep)return;t.ep=!0;const o=c(t);fetch(t.href,o)}})();const C="modulepreload",N=function(s,a){return new URL(s,a).href},P={},e=function(a,c,m){let t=Promise.resolve();if(c&&c.length>0){let b=function(i){return Promise.all(i.map(d=>Promise.resolve(d).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};const n=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),u=r?.nonce||r?.getAttribute("nonce");t=b(c.map(i=>{if(i=N(i,m),i in P)return;P[i]=!0;const d=i.endsWith(".css"),p=d?'[rel="stylesheet"]':"";if(m)for(let f=n.length-1;f>=0;f--){const _=n[f];if(_.href===i&&(!d||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${p}`))return;const l=document.createElement("link");if(l.rel=d?"stylesheet":C,d||(l.as="script"),l.crossOrigin="",l.href=i,u&&l.setAttribute("nonce",u),document.head.appendChild(l),d)return new Promise((f,_)=>{l.addEventListener("load",f),l.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})}))}function o(n){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=n,window.dispatchEvent(r),!r.defaultPrevented)throw n}return t.then(n=>{for(const r of n||[])r.status==="rejected"&&o(r.reason);return a().catch(o)})},U=[{path:"/",component:()=>e(()=>import("./AppLayout-BnvARObz.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url),children:[{path:"",redirect:"/dashboard"},{path:"dashboard",name:"Dashboard",component:()=>e(()=>import("./Dashboard-jt6XPIjB.js"),__vite__mapDeps([6,1,2,7,3,4,8]),import.meta.url)},{path:"chat",name:"Chat",component:()=>e(()=>import("./Chat-DiXJ3TuK.js"),__vite__mapDeps([9,1,10,4,7,2,3,11,12]),import.meta.url)},{path:"cowork",name:"Cowork",component:()=>e(()=>import("./Cowork-B8ZDdRm4.js"),__vite__mapDeps([13,1,10,4,2,7,3,14,12]),import.meta.url)},{path:"services",name:"Services",component:()=>e(()=>import("./Services-D2EsLq-v.js"),__vite__mapDeps([15,2,1,3,4,16]),import.meta.url)},{path:"logs",name:"Logs",component:()=>e(()=>import("./Logs-4D9p6PRM.js"),__vite__mapDeps([17,2,1,3,4,18]),import.meta.url)},{path:"skills",name:"Skills",component:()=>e(()=>import("./Skills-C9v-f3vZ.js"),__vite__mapDeps([19,1,2,20,7,3,4,21]),import.meta.url)},{path:"providers",name:"Providers",component:()=>e(()=>import("./Providers-DAwgG5KV.js"),__vite__mapDeps([22,1,2,20,3,4,23]),import.meta.url)},{path:"mcp",name:"McpTools",component:()=>e(()=>import("./McpTools-CyAUjbbs.js"),__vite__mapDeps([24,2,1,3,4,25]),import.meta.url)},{path:"notes",name:"Notes",component:()=>e(()=>import("./Notes-Cmas8i4E.js"),__vite__mapDeps([26,2,1,3,4,27]),import.meta.url)},{path:"memory",name:"Memory",component:()=>e(()=>import("./Memory-BMqOR7S-.js"),__vite__mapDeps([28,2,1,3,4,29]),import.meta.url)},{path:"cron",name:"Cron",component:()=>e(()=>import("./Cron-DBt1ueXh.js"),__vite__mapDeps([30,2,1,4]),import.meta.url)},{path:"tasks",name:"Tasks",component:()=>e(()=>import("./Tasks-yMEcU0n7.js"),__vite__mapDeps([31,1,2,3,4,32]),import.meta.url)},{path:"security",name:"Security",component:()=>e(()=>import("./Security-Cz17qBny.js"),__vite__mapDeps([33,2,1,3,4,34]),import.meta.url)},{path:"permissions",name:"Permissions",component:()=>e(()=>import("./Permissions-Bq5Qn2s3.js"),__vite__mapDeps([35,2,1,3,4,36]),import.meta.url)},{path:"p2p",name:"P2P",component:()=>e(()=>import("./P2P-BxksIBWs.js"),__vite__mapDeps([37,2,1,3,4,38]),import.meta.url)},{path:"git",name:"Git",component:()=>e(()=>import("./Git-hwQ1oZHj.js"),__vite__mapDeps([39,2,1,3,4,40]),import.meta.url)},{path:"projects",name:"Projects",component:()=>e(()=>import("./Projects-B7EM0uPg.js"),__vite__mapDeps([41,2,1,3,4,42]),import.meta.url)},{path:"wallet",name:"Wallet",component:()=>e(()=>import("./Wallet-BHWhLWn9.js"),__vite__mapDeps([43,2,1,3,4,44]),import.meta.url)},{path:"organization",name:"Organization",component:()=>e(()=>import("./Organization-DnSa58Tl.js"),__vite__mapDeps([45,1,2,3,4,46]),import.meta.url)},{path:"analytics",name:"Analytics",component:()=>e(()=>import("./Analytics-C1AnPdMx.js"),__vite__mapDeps([47,2,1,3,4,48]),import.meta.url)},{path:"templates",name:"Templates",component:()=>e(()=>import("./Templates-l7SvlKuB.js"),__vite__mapDeps([49,1,2,3,4,50]),import.meta.url)},{path:"backup",name:"Backup",component:()=>e(()=>import("./Backup-D31iZX3l.js"),__vite__mapDeps([51,2,1,3,4,52]),import.meta.url)},{path:"rssfeed",name:"RssFeed",component:()=>e(()=>import("./RssFeed-HSZoRXvS.js"),__vite__mapDeps([53,1,2,3,4,54]),import.meta.url)},{path:"webauthn",name:"WebAuthn",component:()=>e(()=>import("./WebAuthn-kWhFYaUK.js"),__vite__mapDeps([55,2,1,3,4,56]),import.meta.url)}]}],F=B({history:L(),routes:U}),A="cc_theme",v={dark:{label:"暗黑",icon:"🌑",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#141414",colorBgContainer:"#1f1f1f",colorBgElevated:"#2a2a2a",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#1c1c1c",headerBg:"#1c1c1c",bodyBg:"#141414"},Menu:{darkItemBg:"#1c1c1c",darkSubMenuItemBg:"#171717"}}},vars:{"--bg-base":"#141414","--bg-sidebar":"#1c1c1c","--bg-header":"#1c1c1c","--bg-card":"#1f1f1f","--bg-card-hover":"#262626","--border-color":"#252525","--border-subtle":"#1e1e1e","--text-primary":"#e0e0e0","--text-secondary":"#888","--text-muted":"#444","--logo-text":"#ffffff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,0,0,.45)","--group-title":"#3a3a3a"}},light:{label:"亮白",icon:"☀️",antd:{algorithm:g.defaultAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#ffffff",colorBgContainer:"#ffffff",colorBgElevated:"#ffffff",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#ffffff",headerBg:"#ffffff",bodyBg:"#f4f6fb"},Menu:{itemBg:"#ffffff"}}},vars:{"--bg-base":"#f4f6fb","--bg-sidebar":"#ffffff","--bg-header":"#ffffff","--bg-card":"#ffffff","--bg-card-hover":"#f0f4ff","--border-color":"#e8edf5","--border-subtle":"#f0f0f0","--text-primary":"#1a1a2e","--text-secondary":"#5a6474","--text-muted":"#b0b8c8","--logo-text":"#1a1a2e","--menu-mode":"light","--shadow-card":"0 2px 12px rgba(0,0,0,.07)","--group-title":"#aab0bc"}},blue:{label:"深蓝",icon:"🌊",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#2f80ed",colorBgBase:"#0d1117",colorBgContainer:"#161b22",colorBgElevated:"#1c2230",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0f1923",headerBg:"#0f1923",bodyBg:"#0d1117"},Menu:{darkItemBg:"#0f1923",darkSubMenuItemBg:"#0b1520"}}},vars:{"--bg-base":"#0d1117","--bg-sidebar":"#0f1923","--bg-header":"#0f1923","--bg-card":"#161b22","--bg-card-hover":"#1c2230","--border-color":"#21303f","--border-subtle":"#182030","--text-primary":"#c9d8ef","--text-secondary":"#6e8caa","--text-muted":"#2d4060","--logo-text":"#e0eeff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,80,.5)","--group-title":"#2d4060"}},green:{label:"翠绿",icon:"🌿",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#29a270",colorBgBase:"#0a1a12",colorBgContainer:"#0f2318",colorBgElevated:"#152e20",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0c1e14",headerBg:"#0c1e14",bodyBg:"#0a1a12"},Menu:{darkItemBg:"#0c1e14",darkSubMenuItemBg:"#091810"}}},vars:{"--bg-base":"#0a1a12","--bg-sidebar":"#0c1e14","--bg-header":"#0c1e14","--bg-card":"#0f2318","--bg-card-hover":"#152e20","--border-color":"#1a3828","--border-subtle":"#122a1c","--text-primary":"#c0e8c8","--text-secondary":"#5a9a6a","--text-muted":"#1e4028","--logo-text":"#d8f0e0","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,20,.5)","--group-title":"#1e4028"}}},j=I("theme",()=>{const s=T(localStorage.getItem(A)||"light"),a=E(()=>v[s.value]||v.dark),c=E(()=>a.value.antd),m=E(()=>s.value!=="light");function t(){const r=a.value.vars,u=document.documentElement;for(const[b,i]of Object.entries(r))u.style.setProperty(b,i);u.setAttribute("data-theme",s.value)}function o(r){v[r]&&(s.value=r,localStorage.setItem(A,r),t())}function n(){t()}return{current:s,config:a,antdTheme:c,isDark:m,setTheme:o,init:n}}),W={__name:"App",setup(s){const a=j();return R(()=>a.init()),(c,m)=>{const t=y("router-view"),o=y("a-config-provider");return V(),O(o,{theme:k(a).antdTheme},{default:x(()=>[D(t)]),_:1},8,["theme"])}}},h=S(W);h.use(w());h.use(F);h.use(M);h.mount("#app");export{v as T,j as u};
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Injected by web-ui-server.js at serve time
|
|
9
9
|
window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
|
|
10
10
|
</script>
|
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
|
11
|
+
<script type="module" crossorigin src="./assets/index-C1SPm_5l.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="./assets/vendor-CN0Iv_qZ.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="./assets/antd-D6h4fDFf.js">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="./assets/index-CyGyEIVX.css">
|