chainlesschain 0.156.7 → 0.157.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/bin/chainlesschain.js +13 -0
- package/package.json +3 -2
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{ActionButton-Cs4QdjYb.js → ActionButton-Dp5EHuSs.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-Xot0e9TT.js → Analytics-Dt69R7IX.js} +1 -1
- package/src/assets/web-panel/assets/AppLayout-BiOlkA-r.js +1 -0
- package/src/assets/web-panel/assets/AppLayout-Wr63FaJ2.css +1 -0
- package/src/assets/web-panel/assets/{Backup-Cih5dXcD.js → Backup-sEweroFg.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-Tg40P4JM.js → BaseInput-CMHSpW6z.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CRfTuSl8.js → Chat-DQusK0UJ.js} +2 -2
- package/src/assets/web-panel/assets/{Checkbox-CheA2Ety.js → Checkbox-DXQE64jQ.js} +1 -1
- package/src/assets/web-panel/assets/{Col-Cdfsmnaq.js → Col-GesfSTFv.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-D3LSgEpW.js → Compact-DOVOXT5H.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-BLRUoSoO.js → Cowork-BaJ4irYi.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-9MV6k-MV.js → Cron-DLx6zElQ.js} +2 -2
- package/src/assets/web-panel/assets/DID-BDvsVa08.css +1 -0
- package/src/assets/web-panel/assets/DID-O2dY9RPB.js +2 -0
- package/src/assets/web-panel/assets/Dashboard-BReDcgB_.js +3 -0
- package/src/assets/web-panel/assets/{Dropdown-DZxUTZvw.js → Dropdown-O-lFvQpB.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-C3_-j_SR.js → FormItemContext-Dld2C8JQ.js} +1 -1
- package/src/assets/web-panel/assets/{Git-Cw-gW-kh.js → Git-hvFWgySH.js} +2 -2
- package/src/assets/web-panel/assets/KnowledgeGraph-B_y3Ap4i.js +19 -0
- package/src/assets/web-panel/assets/KnowledgeGraph-U8ps3aGJ.css +1 -0
- package/src/assets/web-panel/assets/{Logs-0SXs6Eyx.js → Logs-DhFPaoDT.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-VVSCkpV2.js → McpTools-D0XTOWu9.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-CMweTJyn.js → Memory-DW_B6rnE.js} +2 -2
- package/src/assets/web-panel/assets/{Notes-B_W3BfZF.js → Notes-BbyhsweS.js} +2 -2
- package/src/assets/web-panel/assets/{Organization-Dz_jGbAM.js → Organization-CChT-ntv.js} +3 -3
- package/src/assets/web-panel/assets/{Overflow-Dka3nWV9.js → Overflow-CZx2xJzC.js} +1 -1
- package/src/assets/web-panel/assets/{OverrideContext-7M2Kv4Ru.js → OverrideContext-9ePmgwvW.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-DGPIG-9j.js → P2P-CwaXSJZR.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-DvXVIlHX.js → Permissions-D5U7ha3z.js} +4 -4
- package/src/assets/web-panel/assets/Portal-DXIqogG2.js +1 -0
- package/src/assets/web-panel/assets/ProjectSettings-BQX5tF8E.js +2 -0
- package/src/assets/web-panel/assets/ProjectSettings-pLSae-wy.css +1 -0
- package/src/assets/web-panel/assets/{Projects-Bzn-dJ59.js → Projects-CLL9WS2z.js} +2 -2
- package/src/assets/web-panel/assets/{Providers-DUfX_ynl.js → Providers-fjohdAMK.js} +1 -1
- package/src/assets/web-panel/assets/{Row-DZhDSo2Q.js → Row-C-bX9EFG.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CHQpUl3h.js → RssFeed-BsKQE8pe.js} +3 -3
- package/src/assets/web-panel/assets/{Security-FUSOn89T.js → Security-DXW6YBaw.js} +3 -3
- package/src/assets/web-panel/assets/{Services-CDh7r75R.js → Services-BnNYoCwx.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-DxmZ7zRw.js → Skeleton-B-K9_08N.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-Dk9Cp1NG.js → Skills-DB8Qba_i.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-CfHL1NrP.js → Tasks-0fHss8Sn.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-BVbmyn38.js → Templates-Cfch0kkR.js} +1 -1
- package/src/assets/web-panel/assets/Trigger-CAZQ8LeJ.js +1 -0
- package/src/assets/web-panel/assets/{VideoEditing-BUWYQv2y.js → VideoEditing-CiTgOTo4.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BDYdEwFf.js → Wallet-BQiQ4WyF.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-CvpuagtK.js → WebAuthn-Dq27qj5Y.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-BR7W5cjw.js → WorkflowEditor-BSXLy_fi.js} +1 -1
- package/src/assets/web-panel/assets/{chat-B2uGA8wN.js → chat-BNXQJRrX.js} +1 -1
- package/src/assets/web-panel/assets/{collapseMotion-DnZigkzG.js → collapseMotion-CSS8MlIE.js} +1 -1
- package/src/assets/web-panel/assets/{colors-C5kDbQCi.js → colors-CHcJ8oqQ.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-Bo_1zDrX.js → compact-item-BIM24cFh.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CniPpJsG.js → createContext-yGfIqyCQ.js} +1 -1
- package/src/assets/web-panel/assets/{hasIn-ClDc6Sz8.js → hasIn-BXMsXiz7.js} +1 -1
- package/src/assets/web-panel/assets/icons-DEoqYzGZ.js +57 -0
- package/src/assets/web-panel/assets/{index-Ch5mAXeh.js → index-36fB-tdr.js} +3 -3
- package/src/assets/web-panel/assets/index-B-tWHvIW.js +1 -0
- package/src/assets/web-panel/assets/{index-CCdb36il.js → index-B50P9i-m.js} +1 -1
- package/src/assets/web-panel/assets/{index-DSiHmo4b.js → index-BDzwtAvJ.js} +1 -1
- package/src/assets/web-panel/assets/{index-BUTCJTbj.js → index-BEPQ53hT.js} +1 -1
- package/src/assets/web-panel/assets/{index-C92K4iDE.js → index-BPRyVdxV.js} +1 -1
- package/src/assets/web-panel/assets/index-BPln_4T8.js +1 -0
- package/src/assets/web-panel/assets/index-BPzN5a2A.js +36 -0
- package/src/assets/web-panel/assets/{index-CMcGcbea.js → index-BaV1qPw2.js} +2 -2
- package/src/assets/web-panel/assets/index-Bm7xqsYQ.js +1 -0
- package/src/assets/web-panel/assets/{index-cIgCeEqo.js → index-BsSnr41N.js} +1 -1
- package/src/assets/web-panel/assets/{index--lcO-bOn.js → index-BtfOEVOq.js} +2 -2
- package/src/assets/web-panel/assets/{index-BCXFoTAw.js → index-C6RUQfzA.js} +1 -1
- package/src/assets/web-panel/assets/index-CEBBaWRc.js +1 -0
- package/src/assets/web-panel/assets/{index-DTYnvYqB.js → index-CELIaC07.js} +2 -2
- package/src/assets/web-panel/assets/{index-BAlSSCbs.js → index-CN1O5Ka0.js} +1 -1
- package/src/assets/web-panel/assets/index-CPzBvwi4.js +1 -0
- package/src/assets/web-panel/assets/{index-B8y0NO-M.js → index-CSzJBDW_.js} +1 -1
- package/src/assets/web-panel/assets/{index-CeSV8f3b.js → index-CWRVLGUY.js} +3 -3
- package/src/assets/web-panel/assets/{index-D2fe9a6f.js → index-CWhMnsWX.js} +5 -5
- package/src/assets/web-panel/assets/{index-DnQkqOZj.js → index-C_VBCJdj.js} +1 -1
- package/src/assets/web-panel/assets/{index-Dtfrhky9.js → index-CfXwGGJa.js} +2 -2
- package/src/assets/web-panel/assets/{index-DkSNIJhM.js → index-Csq1ymAd.js} +1 -1
- package/src/assets/web-panel/assets/{index-BHruTebo.js → index-CvI-6roc.js} +2 -2
- package/src/assets/web-panel/assets/{index-DNY0K7iI.js → index-D2aA1Eww.js} +1 -1
- package/src/assets/web-panel/assets/{index-D9bolkbl.js → index-DNwo9Dzx.js} +3 -3
- package/src/assets/web-panel/assets/{index-DaLYbr0E.js → index-DViNLv05.js} +1 -1
- package/src/assets/web-panel/assets/index-DX3NKnlx.js +1 -0
- package/src/assets/web-panel/assets/{index-6tQekF0Y.js → index-DYbkrS1k.js} +1 -1
- package/src/assets/web-panel/assets/index-D_E9PBtZ.js +1 -0
- package/src/assets/web-panel/assets/{index-vBi4x_6g.js → index-DlqQ3NPc.js} +1 -1
- package/src/assets/web-panel/assets/{index-JNbd08FN.js → index-DrBsteza.js} +2 -2
- package/src/assets/web-panel/assets/{index-B7nGNm_C.js → index-Mc421_zZ.js} +2 -2
- package/src/assets/web-panel/assets/{index-CwhWEkmA.js → index-OcnmMROX.js} +2 -2
- package/src/assets/web-panel/assets/{index-Bv2OmZAS.js → index-PbAFYgta.js} +1 -1
- package/src/assets/web-panel/assets/{index-CTetsi8W.js → index-T5htsJq3.js} +1 -1
- package/src/assets/web-panel/assets/index-lx2gVL_l.js +1 -0
- package/src/assets/web-panel/assets/{index-CXxLp7Aw.js → index-pj_DB3gf.js} +4 -4
- package/src/assets/web-panel/assets/{initDefaultProps-DMfJaUzk.js → initDefaultProps-DR3dFRrN.js} +1 -1
- package/src/assets/web-panel/assets/{motion-sEbWmOWo.js → motion-Dab0Jzue.js} +2 -2
- package/src/assets/web-panel/assets/{move-DIWXVs--.js → move-CbXivKK7.js} +1 -1
- package/src/assets/web-panel/assets/{omit-D7mkMPhu.js → omit-CyPQ4Rvu.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-B25NUX4k.js → pickAttrs-DLkAq0jb.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-By1Bkq1d.js → placementArrow-OJpzGLKb.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-B3aCQz5r.js → responsiveObserve-BSL-2rcG.js} +1 -1
- package/src/assets/web-panel/assets/{slide-eR-f56FQ.js → slide-CSTFi1jq.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-zcNWczhN.js → statusUtils-DYDvuHx4.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-u9Z0IfRy.js → styleChecker-BMkbm-8r.js} +1 -1
- package/src/assets/web-panel/assets/{transition-gRK4XSlW.js → transition-B3-w1SVL.js} +1 -1
- package/src/assets/web-panel/assets/{useConfigInject-ZEunuNHN.js → useConfigInject-DIr4olCu.js} +2 -2
- package/src/assets/web-panel/assets/useFlexGapSupport-d0_YPT4c.js +1 -0
- package/src/assets/web-panel/assets/{useMergedState-CXfbNKuO.js → useMergedState-DUMpRiCy.js} +1 -1
- package/src/assets/web-panel/assets/{useRefs-DwsdQTxa.js → useRefs-C8A7zAB_.js} +1 -1
- package/src/assets/web-panel/assets/{useState-DRbnp348.js → useState-CSbzOa8O.js} +1 -1
- package/src/assets/web-panel/assets/{vendor-C5RM7MZO.js → vendor-aH7YaPZi.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-DVHvXn9F.js → vnode-Df_mZ5AJ.js} +1 -1
- package/src/assets/web-panel/assets/{ws-D-sl0vsW.js → ws-BTS8ehTm.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-ByzgJIn6.js → zoom-CY5xo2Ia.js} +1 -1
- package/src/assets/web-panel/index.html +3 -3
- package/src/commands/mtc.js +786 -0
- package/src/gateways/ws/ws-server.js +20 -2
- package/src/index.js +3 -0
- package/src/lib/packer/pkg-runner.js +59 -5
- package/src/assets/web-panel/assets/AppLayout-3qsE1-pz.js +0 -1
- package/src/assets/web-panel/assets/AppLayout-nff99EgA.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-A1TZC5_t.js +0 -3
- package/src/assets/web-panel/assets/Portal-CFB5Y97t.js +0 -1
- package/src/assets/web-panel/assets/Trigger-xAvohiq9.js +0 -1
- package/src/assets/web-panel/assets/icons-CpgFsfkd.js +0 -57
- package/src/assets/web-panel/assets/index-8qWxPHSb.js +0 -1
- package/src/assets/web-panel/assets/index-BJx6C3J8.js +0 -1
- package/src/assets/web-panel/assets/index-BYShDlZ0.js +0 -1
- package/src/assets/web-panel/assets/index-CKR2ITFk.js +0 -1
- package/src/assets/web-panel/assets/index-D3UDIt7h.js +0 -1
- package/src/assets/web-panel/assets/index-D90sLw5Q.js +0 -1
- package/src/assets/web-panel/assets/index-Dn_OQQaV.js +0 -36
- package/src/assets/web-panel/assets/index-PT376OZM.js +0 -1
- package/src/assets/web-panel/assets/index-xL8gcpmy.js +0 -1
- package/src/assets/web-panel/assets/useFlexGapSupport-BpbEJfeh.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-v-1f8caef3] .kg-row:hover td{background:var(--bg-card-hover)!important}[data-v-1f8caef3] .ant-tabs-tab{color:var(--text-secondary)!important}[data-v-1f8caef3] .ant-tabs-tab-active .ant-tabs-tab-btn{color:#1677ff!important}[data-v-1f8caef3] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as K}from"./ws-
|
|
1
|
+
import{u as K}from"./ws-BTS8ehTm.js";import{_ as O}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{r as U}from"./icons-DEoqYzGZ.js";import{w as j,l as z,F as i,D as o,c as a,x as d,m as A,G as F,I as h,H as I,L as R,n as w,q as l,r,j as L,v as u,J as b,u as G,E as J}from"./vendor-aH7YaPZi.js";const Q={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},P={style:{display:"flex",gap:"10px",margin:"12px 0"}},X={key:0,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},Y={key:1,style:{"text-align":"center",padding:"40px",color:"var(--text-muted)"}},Z={key:2},ee=["innerHTML"],te={__name:"Logs",setup(ae){const C=K(),k=r("status"),v=r(!1),g=r(""),m=r(""),c=r(""),_=r(!0),n=r(null),T={status:"status",doctor:"doctor","skill-sources":"skill sources","llm-providers":"llm providers"},f=L(()=>m.value.split(`
|
|
2
2
|
`)),p=L(()=>{if(!c.value)return f.value;const e=c.value.toLowerCase();return f.value.filter(t=>t.toLowerCase().includes(e))});function H(e){return e.includes("✖")||e.includes("error")||e.includes("Error")||e.includes("failed")?"line-error":e.includes("✔")||e.includes("✓")||e.includes("success")||e.includes("running")?"line-success":e.includes("warn")||e.includes("Warn")||e.includes("○")?"line-warn":e.startsWith(" ")||e.startsWith(" ")?"line-indent":""}function M(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function B(e){if(!c.value)return e;const t=c.value.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`(${t})`,"gi"),"<mark>$1</mark>")}async function x(){v.value=!0,g.value="",m.value="";const e=T[k.value]||"status";try{const{output:t}=await C.execute(e,3e4);m.value=t,_.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}catch(t){g.value=`执行失败: ${t.message}`,m.value=g.value}finally{v.value=!1}}return j(p,async()=>{_.value&&(await w(),n.value&&(n.value.scrollTop=n.value.scrollHeight))}),z(x),(e,t)=>{const N=l("a-checkbox"),S=l("a-button"),$=l("a-space"),y=l("a-tab-pane"),E=l("a-tabs"),V=l("a-input-search"),W=l("a-tag"),q=l("a-spin");return u(),i("div",null,[o("div",Q,[t[5]||(t[5]=o("div",null,[o("h2",{class:"page-title"},"日志查看"),o("p",{class:"page-sub"},"系统运行日志与诊断输出")],-1)),a($,null,{default:d(()=>[a(N,{checked:_.value,"onUpdate:checked":t[0]||(t[0]=s=>_.value=s)},{default:d(()=>[...t[3]||(t[3]=[b("自动滚动",-1)])]),_:1},8,["checked"]),a(S,{type:"primary",ghost:"",loading:v.value,onClick:x},{icon:d(()=>[a(G(U))]),default:d(()=>[t[4]||(t[4]=b(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),a(E,{activeKey:k.value,"onUpdate:activeKey":t[1]||(t[1]=s=>k.value=s),onChange:x,style:{"margin-bottom":"0"}},{default:d(()=>[a(y,{key:"status",tab:"系统状态"}),a(y,{key:"doctor",tab:"环境诊断"}),a(y,{key:"skill-sources",tab:"技能来源"}),a(y,{key:"llm-providers",tab:"LLM 提供商"})]),_:1},8,["activeKey"]),o("div",P,[a(V,{value:c.value,"onUpdate:value":t[2]||(t[2]=s=>c.value=s),placeholder:"搜索日志内容...","allow-clear":"",style:{flex:"1"}},null,8,["value"]),p.value.length!==f.value.length?(u(),A(W,{key:0,color:"blue"},{default:d(()=>[b(h(p.value.length)+" / "+h(f.value.length)+" 行 ",1)]),_:1})):F("",!0)]),o("div",{ref_key:"logContainer",ref:n,class:"log-box"},[v.value?(u(),i("div",X,[a(q,{size:"large"}),t[6]||(t[6]=o("div",{style:{"margin-top":"10px"}},"加载中...",-1))])):p.value.length?(u(),i("div",Z,[(u(!0),i(I,null,R(p.value,(s,D)=>(u(),i("div",{key:D,class:J(["log-line",H(s)]),innerHTML:B(M(s))},null,10,ee))),128))])):(u(),i("div",Y,h(g.value||"暂无日志内容,点击刷新加载"),1))],512)])}}},re=O(te,[["__scopeId","data-v-b316ead3"]]);export{re as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as j}from"./ws-
|
|
1
|
+
import{u as j}from"./ws-BTS8ehTm.js";import{_ as R}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{r as q,c as W,u as D,U as E}from"./icons-DEoqYzGZ.js";import{l as F,F as u,D as m,c as o,x as a,r as b,q as d,v as l,J as k,u as v,H as U,L as $,m as C,I as p,G as z,j as A}from"./vendor-aH7YaPZi.js";const G={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},H={key:0,style:{"text-align":"center",padding:"30px"}},J={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},K={key:2,class:"servers-grid"},Q={style:{display:"flex","align-items":"center",gap:"10px","margin-bottom":"6px"}},X={style:{color:"#e0e0e0","font-weight":"500","font-family":"monospace"}},Y={key:0,style:{color:"var(--text-secondary)","font-size":"11px","font-family":"monospace"}},Z={key:1,style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},ee={key:0,style:{"text-align":"center",padding:"30px"}},te={key:0,style:{color:"#91caff","font-family":"monospace","font-size":"12px"}},oe={__name:"McpTools",setup(ae){const w=j(),f=b(!1),g=b([]),y=b([]),x=b(""),P=A(()=>{if(!x.value)return y.value;const r=x.value.toLowerCase();return y.value.filter(t=>t.name?.toLowerCase().includes(r)||t.description?.toLowerCase().includes(r))}),T=[{title:"工具名称",key:"name",dataIndex:"name",width:"30%"},{title:"服务器",key:"server",dataIndex:"server",width:"20%"},{title:"描述",dataIndex:"description",ellipsis:!0}];async function M(){f.value=!0;try{const[r,t]=await Promise.all([w.execute("mcp servers",15e3).catch(()=>({output:""})),w.execute("mcp tools",15e3).catch(()=>({output:""}))]);g.value=I(r.output),y.value=L(t.output)}catch(r){console.error("MCP load failed:",r)}finally{f.value=!1}}function I(r){const t=[],_=r.split(`
|
|
2
2
|
`);let s=null;for(const i of _){const e=i.trim();if(!e||e.startsWith("─")||e.startsWith("MCP"))continue;const c=e.match(/^[●•]?\s*([a-z][a-z0-9-_]+)\s*$/i)||e.match(/^([a-z][a-z0-9-_]+)\s*[::]/);c?(s&&t.push(s),s={key:c[1],name:c[1],command:"",args:[],description:""}):s&&(e.startsWith("command:")||e.startsWith("Command:")?s.command=e.replace(/^command:\s*/i,"").trim():e.startsWith("args:")||e.startsWith("Args:")?s.args=e.replace(/^args:\s*/i,"").split(",").map(h=>h.trim()):s.description||(s.description=e.slice(0,80)))}return s&&t.push(s),!t.length&&r.trim()&&!r.includes("No MCP")&&r.split(`
|
|
3
3
|
`).filter(e=>e.trim()&&!e.includes("─")).slice(0,10).forEach((e,c)=>{t.push({key:c,name:e.trim(),command:"",args:[],description:""})}),t}function L(r){const t=[],_=r.split(`
|
|
4
|
-
`);let s="unknown";for(const i of _){const e=i.trim();if(!e||e.startsWith("─"))continue;if(e.match(/^\[/)||e.match(/^Server:/i)){s=e.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const c=e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);c&&t.push({key:t.length,name:c[1],description:c[2]||"",server:s})}return t}return F(M),(r,t)=>{const _=d("a-button"),s=d("a-statistic"),i=d("a-card"),e=d("a-col"),c=d("a-row"),h=d("a-spin"),N=d("a-badge"),
|
|
4
|
+
`);let s="unknown";for(const i of _){const e=i.trim();if(!e||e.startsWith("─"))continue;if(e.match(/^\[/)||e.match(/^Server:/i)){s=e.replace(/[\[\]]/g,"").replace(/^Server:\s*/i,"").trim();continue}const c=e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)\s*[-–]\s*(.+)/i)||e.match(/^[●•]?\s*([a-z][a-z0-9_-]+)$/);c&&t.push({key:t.length,name:c[1],description:c[2]||"",server:s})}return t}return F(M),(r,t)=>{const _=d("a-button"),s=d("a-statistic"),i=d("a-card"),e=d("a-col"),c=d("a-row"),h=d("a-spin"),N=d("a-badge"),B=d("a-input-search"),O=d("a-tag"),V=d("a-table");return l(),u("div",null,[m("div",G,[t[2]||(t[2]=m("div",null,[m("h2",{class:"page-title"},"MCP 工具"),m("p",{class:"page-sub"},"Model Context Protocol — 已挂载工具与服务器")],-1)),o(_,{type:"primary",ghost:"",loading:f.value,onClick:M},{icon:a(()=>[o(v(q))]),default:a(()=>[t[1]||(t[1]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),o(c,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:a(()=>[o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"服务器数量",value:g.value.length,"value-style":"color: #1677ff; font-size: 20px;"},{prefix:a(()=>[o(v(W))]),_:1},8,["value"])]),_:1})]),_:1}),o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"工具数量",value:y.value.length,"value-style":"color: #52c41a; font-size: 20px;"},{prefix:a(()=>[o(v(D))]),_:1},8,["value"])]),_:1})]),_:1}),o(e,{xs:24,sm:8},{default:a(()=>[o(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:a(()=>[o(s,{title:"运行状态",value:"就绪","value-style":"color: #52c41a; font-size: 20px;"},{prefix:a(()=>[o(v(E))]),_:1})]),_:1})]),_:1})]),_:1}),o(i,{title:"已配置服务器",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{default:a(()=>[f.value?(l(),u("div",H,[o(h)])):g.value.length?(l(),u("div",K,[(l(!0),u(U,null,$(g.value,n=>(l(),C(i,{key:n.name,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{default:a(()=>[m("div",Q,[o(v(W),{style:{color:"#1677ff"}}),m("span",X,p(n.name),1),o(N,{status:"success"})]),n.command?(l(),u("div",Y,p(n.command)+" "+p(n.args?.join(" ")),1)):z("",!0),n.description?(l(),u("div",Z,p(n.description),1)):z("",!0)]),_:2},1024))),128))])):(l(),u("div",J,[...t[3]||(t[3]=[k(" 暂无 MCP 服务器,使用 ",-1),m("code",{style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px"}},"chainlesschain mcp add",-1),k(" 添加 ",-1)])]))]),_:1}),o(i,{title:"可用工具",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:a(()=>[o(B,{value:x.value,"onUpdate:value":t[0]||(t[0]=n=>x.value=n),placeholder:"搜索工具...","allow-clear":"",size:"small",style:{width:"200px"}},null,8,["value"])]),default:a(()=>[f.value?(l(),u("div",ee,[o(h)])):(l(),C(V,{key:1,columns:T,"data-source":P.value,pagination:{pageSize:15},size:"small"},{bodyCell:a(({column:n,record:S})=>[n.key==="name"?(l(),u("span",te,p(S.name),1)):z("",!0),n.key==="server"?(l(),C(O,{key:1,color:"blue",style:{"font-size":"10px"}},{default:a(()=>[k(p(S.server),1)]),_:2},1024)):z("",!0)]),emptyText:a(()=>[...t[4]||(t[4]=[m("div",{style:{padding:"30px",color:"var(--text-muted)"}},"暂无可用工具",-1)])]),_:1},8,["data-source"]))]),_:1})])}}},ie=R(oe,[["__scopeId","data-v-8a49311e"]]);export{ie as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as A}from"./ws-
|
|
2
|
-
`);for(const x of d){const i=x.trim();if(!i||i.startsWith("─")||i.startsWith("Recall"))continue;const p=i.match(/^[-●•\d.]+\s+(.+)/);if(p){const b=p[1].trim();b.length>5&&e.push({id:e.length,content:b,layer:s.value,importance:"",time:""})}else i.length>10&&!i.includes(":")&&e.length<30&&e.push({id:e.length,content:i,layer:s.value,importance:"",time:""})}return e.slice(0,20)}async function j(){if(!c.value.content.trim()){h.warning("请输入记忆内容");return}$.value=!0;try{const a=`hmemory store "${c.value.content.replace(/"/g,'\\"')}" --importance ${c.value.importance}`,{output:e}=await w.execute(a,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(h.success("记忆已存储"),C.value=!1,c.value={content:"",importance:.5},await B()):(h.warning(e.slice(0,100)||"存储完成"),C.value=!1)}catch(a){h.error("存储失败: "+a.message)}finally{$.value=!1}}async function D(){T.value=!0;try{const{output:a}=await w.execute("hmemory consolidate",2e4);h.success("记忆巩固完成"),await B()}catch(a){h.error("巩固失败: "+a.message)}finally{T.value=!1}}return ne(B),(a,e)=>{const d=n("a-button"),x=n("a-space"),i=n("a-statistic"),p=n("a-card"),b=n("a-col"),F=n("a-row"),M=n("a-radio-button"),E=n("a-radio-group"),G=n("a-input-search"),H=n("a-spin"),be=n("BrainOutlined"),J=n("a-tag"),P=n("a-textarea"),
|
|
1
|
+
import{u as A}from"./ws-BTS8ehTm.js";import{_ as K}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{Y as X,r as ee,h as te,e as oe,Z as ae,_ as le}from"./icons-DEoqYzGZ.js";import{a as h}from"./index-36fB-tdr.js";import{l as ne,F as v,D as r,c as t,x as o,q as n,r as u,v as f,J as m,u as k,G as N,H as re,L as se,I as O}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const ie={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ue={style:{display:"flex","align-items":"center",gap:"12px"}},ce={key:0,style:{"text-align":"center",padding:"30px"}},de={key:1,style:{"text-align":"center",padding:"30px",color:"var(--text-muted)"}},me={key:2,class:"memory-list"},pe={style:{display:"flex","justify-content":"space-between","align-items":"flex-start","margin-bottom":"4px"}},ve={style:{display:"flex",gap:"8px","align-items":"center"}},fe={key:0,style:{color:"var(--text-secondary)","font-size":"11px"}},ye={style:{color:"var(--text-muted)","font-size":"11px"}},ge={style:{color:"#ccc","font-size":"13px","line-height":"1.6"}},_e={__name:"Memory",setup(xe){const w=A(),S=u(!1),y=u(!1),T=u(!1),$=u(!1),C=u(!1),g=u({shortTerm:0,longTerm:0,core:0}),_=u([]),s=u("short-term"),z=u(""),c=u({content:"",importance:.5});function V(a){return{"short-term":"purple","long-term":"blue",core:"green"}[a]||"default"}function q(a){return{"short-term":"短期","long-term":"长期",core:"核心"}[a]||a}async function B(){S.value=!0;try{const{output:a}=await w.execute("hmemory stats",15e3);R(a)}catch(a){console.error("hmemory stats failed:",a)}finally{S.value=!1,await L()}}function R(a){const e=a.match(/short.?term[^\d]*(\d+)/i),d=a.match(/long.?term[^\d]*(\d+)/i),x=a.match(/core[^\d]*(\d+)/i);e&&(g.value.shortTerm=parseInt(e[1])),d&&(g.value.longTerm=parseInt(d[1])),x&&(g.value.core=parseInt(x[1]))}async function L(){y.value=!0;try{const a=s.value==="short-term"?"recent":s.value==="long-term"?"important":"core",{output:e}=await w.execute(`hmemory recall "${a}" --limit 20`,15e3);_.value=I(e)}catch{_.value=[]}finally{y.value=!1}}async function W(){if(!z.value.trim()){await L();return}y.value=!0;try{const{output:a}=await w.execute(`hmemory recall "${z.value}"`,15e3);_.value=I(a)}catch{_.value=[]}finally{y.value=!1}}function I(a){const e=[],d=a.split(`
|
|
2
|
+
`);for(const x of d){const i=x.trim();if(!i||i.startsWith("─")||i.startsWith("Recall"))continue;const p=i.match(/^[-●•\d.]+\s+(.+)/);if(p){const b=p[1].trim();b.length>5&&e.push({id:e.length,content:b,layer:s.value,importance:"",time:""})}else i.length>10&&!i.includes(":")&&e.length<30&&e.push({id:e.length,content:i,layer:s.value,importance:"",time:""})}return e.slice(0,20)}async function j(){if(!c.value.content.trim()){h.warning("请输入记忆内容");return}$.value=!0;try{const a=`hmemory store "${c.value.content.replace(/"/g,'\\"')}" --importance ${c.value.importance}`,{output:e}=await w.execute(a,15e3);e.toLowerCase().includes("stored")||e.includes("✔")?(h.success("记忆已存储"),C.value=!1,c.value={content:"",importance:.5},await B()):(h.warning(e.slice(0,100)||"存储完成"),C.value=!1)}catch(a){h.error("存储失败: "+a.message)}finally{$.value=!1}}async function D(){T.value=!0;try{const{output:a}=await w.execute("hmemory consolidate",2e4);h.success("记忆巩固完成"),await B()}catch(a){h.error("巩固失败: "+a.message)}finally{T.value=!1}}return ne(B),(a,e)=>{const d=n("a-button"),x=n("a-space"),i=n("a-statistic"),p=n("a-card"),b=n("a-col"),F=n("a-row"),M=n("a-radio-button"),E=n("a-radio-group"),G=n("a-input-search"),H=n("a-spin"),be=n("BrainOutlined"),J=n("a-tag"),P=n("a-textarea"),U=n("a-form-item"),Q=n("a-slider"),Y=n("a-form"),Z=n("a-modal");return f(),v("div",null,[r("div",ie,[e[11]||(e[11]=r("div",null,[r("h2",{class:"page-title"},"记忆文件"),r("p",{class:"page-sub"},"分层记忆系统 — 短期 / 长期 / 核心记忆")],-1)),t(x,null,{default:o(()=>[t(d,{onClick:e[0]||(e[0]=l=>C.value=!0),type:"primary"},{icon:o(()=>[t(k(X))]),default:o(()=>[e[9]||(e[9]=m(" 存储记忆 ",-1))]),_:1}),t(d,{ghost:"",loading:S.value,onClick:B},{icon:o(()=>[t(k(ee))]),default:o(()=>[e[10]||(e[10]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),t(F,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[t(b,{xs:24,sm:8},{default:o(()=>[t(p,{style:{background:"rgba(114,46,209,.1)","border-color":"rgba(114,46,209,.35)",cursor:"pointer"},hoverable:"",onClick:e[1]||(e[1]=l=>s.value="short-term")},{default:o(()=>[t(i,{title:"短期记忆",value:g.value.shortTerm||0,"value-style":"color: #c084fc; font-size: 20px;"},{prefix:o(()=>[t(k(te))]),_:1},8,["value"]),e[12]||(e[12]=r("div",{style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},"最近会话内容",-1))]),_:1})]),_:1}),t(b,{xs:24,sm:8},{default:o(()=>[t(p,{style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.3)",cursor:"pointer"},hoverable:"",onClick:e[2]||(e[2]=l=>s.value="long-term")},{default:o(()=>[t(i,{title:"长期记忆",value:g.value.longTerm||0,"value-style":"color: #91caff; font-size: 20px;"},{prefix:o(()=>[t(k(oe))]),_:1},8,["value"]),e[13]||(e[13]=r("div",{style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},"巩固后的重要信息",-1))]),_:1})]),_:1}),t(b,{xs:24,sm:8},{default:o(()=>[t(p,{style:{background:"rgba(41,162,112,.08)","border-color":"rgba(41,162,112,.3)",cursor:"pointer"},hoverable:"",onClick:e[3]||(e[3]=l=>s.value="core")},{default:o(()=>[t(i,{title:"核心记忆",value:g.value.core||0,"value-style":"color: #69db7c; font-size: 20px;"},{prefix:o(()=>[t(k(ae))]),_:1},8,["value"]),e[14]||(e[14]=r("div",{style:{"margin-top":"4px",color:"var(--text-secondary)","font-size":"11px"}},"高重要性长期保留",-1))]),_:1})]),_:1})]),_:1}),t(p,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"}},{title:o(()=>[r("div",ue,[e[18]||(e[18]=r("span",null,"记忆内容",-1)),t(E,{value:s.value,"onUpdate:value":e[4]||(e[4]=l=>s.value=l),"button-style":"solid",size:"small",onChange:L},{default:o(()=>[t(M,{value:"short-term"},{default:o(()=>[...e[15]||(e[15]=[m("短期",-1)])]),_:1}),t(M,{value:"long-term"},{default:o(()=>[...e[16]||(e[16]=[m("长期",-1)])]),_:1}),t(M,{value:"core"},{default:o(()=>[...e[17]||(e[17]=[m("核心",-1)])]),_:1})]),_:1},8,["value"])])]),extra:o(()=>[t(G,{value:z.value,"onUpdate:value":e[5]||(e[5]=l=>z.value=l),placeholder:"语义搜索记忆...","allow-clear":"",size:"small",style:{width:"220px"},loading:y.value,onSearch:W},null,8,["value","loading"])]),default:o(()=>[y.value?(f(),v("div",ce,[t(H)])):_.value.length?(f(),v("div",me,[(f(!0),v(re,null,se(_.value,l=>(f(),v("div",{key:l.id,class:"memory-item"},[r("div",pe,[r("div",ve,[t(J,{color:V(l.layer||s.value),style:{"font-size":"10px"}},{default:o(()=>[m(O(q(l.layer||s.value)),1)]),_:2},1032,["color"]),l.importance?(f(),v("span",fe," 重要度 "+O(l.importance),1)):N("",!0)]),r("span",ye,O(l.time),1)]),r("div",ge,O(l.content),1)]))),128))])):(f(),v("div",de,[N("",!0),e[19]||(e[19]=m(' 暂无记忆内容,点击"存储记忆"添加 ',-1))]))]),_:1}),t(d,{loading:T.value,onClick:D,style:{background:"var(--bg-card-hover)","border-color":"var(--text-muted)",width:"100%"}},{icon:o(()=>[t(k(le))]),default:o(()=>[e[20]||(e[20]=m(" 巩固记忆(短期 → 长期晋升) ",-1))]),_:1},8,["loading"]),t(Z,{open:C.value,"onUpdate:open":e[8]||(e[8]=l=>C.value=l),title:"存储新记忆","confirm-loading":$.value,onOk:j},{default:o(()=>[t(Y,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[t(U,{label:"内容",required:""},{default:o(()=>[t(P,{value:c.value.content,"onUpdate:value":e[6]||(e[6]=l=>c.value.content=l),rows:4,placeholder:"要存储的记忆内容..."},null,8,["value"])]),_:1}),t(U,{label:"重要度"},{default:o(()=>[t(Q,{value:c.value.importance,"onUpdate:value":e[7]||(e[7]=l=>c.value.importance=l),min:0,max:1,step:.1,marks:{0:"低",.5:"中",1:"高"}},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}},Ie=K(_e,[["__scopeId","data-v-ebb07e22"]]);export{Ie as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as
|
|
2
|
-
`);for(const O of y){const r=O.trim();if(!r||r.startsWith("─")||r.startsWith("Note")||r.match(/^\d+ note/i))continue;const u=r.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);u?e.push({key:u[1],id:u[1],title:u[2].trim(),tags:u[3]?u[3].split(",").map(T=>T.trim()):[],preview:(u[4]||"").trim().slice(0,100),content:""}):r.length>2&&!r.startsWith("✖")&&!r.startsWith("[")&&e.push({key:e.length,id:String(e.length),title:r,tags:[],preview:"",content:""})}return e}async function H(){if(!f.value.trim()){L();return}S.value=!0,k.value=!0;try{const{output:a}=await $.execute(`note search "${f.value}"`,15e3);w.value=q(a)}catch{w.value=[]}finally{S.value=!1}}function L(){f.value="",k.value=!1,w.value=[]}async function J(){if(!n.value.title.trim()){C.warning("请输入标题");return}z.value=!0;try{let a=`note add "${n.value.title}"`;n.value.content&&(a+=` -c "${n.value.content.replace(/"/g,'\\"')}"`),n.value.tags&&(a+=` -t "${n.value.tags}"`);const{output:e}=await $.execute(a,15e3);e.includes("✖")||e.toLowerCase().includes("error")?C.error("添加失败: "+e.slice(0,100)):(C.success("笔记已添加"),b.value=!1,n.value={title:"",content:"",tags:""},await B())}catch(a){C.error("添加失败: "+a.message)}finally{z.value=!1}}function P(a){g.value=a,W.value=!0}return oe(B),(a,e)=>{const y=c("a-button"),O=c("a-space"),r=c("a-input-search"),u=c("a-tag"),T=c("a-spin"),Q=c("a-table"),D=c("a-input"),F=c("a-form-item"),
|
|
1
|
+
import{u as X}from"./ws-BTS8ehTm.js";import{_ as Z}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{Y as ee,r as te,a as ae}from"./icons-DEoqYzGZ.js";import{a as C}from"./index-36fB-tdr.js";import{l as oe,F as v,D as p,I as d,c as o,x as l,m as x,G as _,r as s,q as c,j as le,v as i,J as m,u as j,H as R,L as A}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const ne={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},se={class:"page-sub"},ie={style:{"margin-bottom":"16px",display:"flex",gap:"10px"}},re={key:0,style:{"text-align":"center",padding:"60px"}},ue={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ce={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},pe={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},de={key:0,style:{"max-height":"60vh","overflow-y":"auto"}},ve={style:{"margin-bottom":"10px"}},me={style:{"white-space":"pre-wrap",color:"#ccc","font-family":"inherit","line-height":"1.7",background:"var(--bg-base)",padding:"16px","border-radius":"6px",border:"1px solid var(--border-color)"}},fe={__name:"Notes",setup(ge){const $=X(),h=s(!1),S=s(!1),z=s(!1),U=s(""),V=s([]),w=s([]),k=s(!1),f=s(""),b=s(!1),W=s(!1),g=s(null),n=s({title:"",content:"",tags:""}),E=le(()=>k.value?w.value:V.value),G=[{title:"标题",dataIndex:"title",key:"title",width:"30%"},{title:"预览",key:"content",ellipsis:!0},{title:"标签",key:"tags",width:"20%"},{title:"操作",key:"actions",width:"80px"}];async function B(){h.value=!0,U.value="";try{const{output:a}=await $.execute("note list",2e4);V.value=q(a)}catch(a){U.value=`加载失败: ${a.message}`}finally{h.value=!1}}function q(a){const e=[],y=a.split(`
|
|
2
|
+
`);for(const O of y){const r=O.trim();if(!r||r.startsWith("─")||r.startsWith("Note")||r.match(/^\d+ note/i))continue;const u=r.match(/^(\d+)\.\s+(.+?)(?:\s+\[([^\]]+)\])?\s*(?:-\s*(.*))?$/);u?e.push({key:u[1],id:u[1],title:u[2].trim(),tags:u[3]?u[3].split(",").map(T=>T.trim()):[],preview:(u[4]||"").trim().slice(0,100),content:""}):r.length>2&&!r.startsWith("✖")&&!r.startsWith("[")&&e.push({key:e.length,id:String(e.length),title:r,tags:[],preview:"",content:""})}return e}async function H(){if(!f.value.trim()){L();return}S.value=!0,k.value=!0;try{const{output:a}=await $.execute(`note search "${f.value}"`,15e3);w.value=q(a)}catch{w.value=[]}finally{S.value=!1}}function L(){f.value="",k.value=!1,w.value=[]}async function J(){if(!n.value.title.trim()){C.warning("请输入标题");return}z.value=!0;try{let a=`note add "${n.value.title}"`;n.value.content&&(a+=` -c "${n.value.content.replace(/"/g,'\\"')}"`),n.value.tags&&(a+=` -t "${n.value.tags}"`);const{output:e}=await $.execute(a,15e3);e.includes("✖")||e.toLowerCase().includes("error")?C.error("添加失败: "+e.slice(0,100)):(C.success("笔记已添加"),b.value=!1,n.value={title:"",content:"",tags:""},await B())}catch(a){C.error("添加失败: "+a.message)}finally{z.value=!1}}function P(a){g.value=a,W.value=!0}return oe(B),(a,e)=>{const y=c("a-button"),O=c("a-space"),r=c("a-input-search"),u=c("a-tag"),T=c("a-spin"),Q=c("a-table"),D=c("a-input"),F=c("a-form-item"),Y=c("a-textarea"),K=c("a-form"),M=c("a-modal");return i(),v("div",null,[p("div",ne,[p("div",null,[e[7]||(e[7]=p("h2",{class:"page-title"},"笔记管理",-1)),p("p",se,"个人知识库 · "+d(V.value.length)+" 条笔记",1)]),o(O,null,{default:l(()=>[o(y,{onClick:e[0]||(e[0]=t=>b.value=!0),type:"primary"},{icon:l(()=>[o(j(ee))]),default:l(()=>[e[8]||(e[8]=m(" 新建笔记 ",-1))]),_:1}),o(y,{ghost:"",loading:h.value,onClick:B},{icon:l(()=>[o(j(te))]),default:l(()=>[e[9]||(e[9]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),p("div",ie,[o(r,{value:f.value,"onUpdate:value":e[1]||(e[1]=t=>f.value=t),placeholder:"搜索笔记...","allow-clear":"",style:{"max-width":"400px"},loading:S.value,onSearch:H,onClear:L},null,8,["value","loading"]),k.value?(i(),x(u,{key:0,color:"blue",closable:"",onClose:L},{default:l(()=>[m(" 搜索: "+d(f.value),1)]),_:1})):_("",!0)]),h.value?(i(),v("div",re,[o(T,{size:"large"})])):(i(),x(Q,{key:1,columns:G,"data-source":E.value,pagination:{pageSize:20,showTotal:t=>`共 ${t} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"note-row"},{bodyCell:l(({column:t,record:N})=>[t.key==="title"?(i(),v("span",ue,d(N.title),1)):_("",!0),t.key==="tags"?(i(!0),v(R,{key:1},A(N.tags,I=>(i(),x(u,{key:I,color:"blue",style:{"font-size":"10px",margin:"1px"}},{default:l(()=>[m(d(I),1)]),_:2},1024))),128)):_("",!0),t.key==="content"?(i(),v("span",ce,d(N.preview),1)):_("",!0),t.key==="actions"?(i(),x(y,{key:3,size:"small",type:"link",onClick:I=>P(N)},{default:l(()=>[...e[10]||(e[10]=[m("查看",-1)])]),_:1},8,["onClick"])):_("",!0)]),emptyText:l(()=>[p("div",pe,[o(j(ae),{style:{"font-size":"40px","margin-bottom":"12px",display:"block"}}),m(" "+d(U.value||'暂无笔记,点击"新建笔记"添加'),1)])]),_:1},8,["data-source","pagination"])),o(M,{open:b.value,"onUpdate:open":e[5]||(e[5]=t=>b.value=t),title:"新建笔记","confirm-loading":z.value,onOk:J},{default:l(()=>[o(K,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:l(()=>[o(F,{label:"标题",required:""},{default:l(()=>[o(D,{value:n.value.title,"onUpdate:value":e[2]||(e[2]=t=>n.value.title=t),placeholder:"笔记标题"},null,8,["value"])]),_:1}),o(F,{label:"内容"},{default:l(()=>[o(Y,{value:n.value.content,"onUpdate:value":e[3]||(e[3]=t=>n.value.content=t),rows:5,placeholder:"笔记内容..."},null,8,["value"])]),_:1}),o(F,{label:"标签"},{default:l(()=>[o(D,{value:n.value.tags,"onUpdate:value":e[4]||(e[4]=t=>n.value.tags=t),placeholder:"用逗号分隔,如: work,ideas"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),o(M,{open:W.value,"onUpdate:open":e[6]||(e[6]=t=>W.value=t),title:g.value?.title,footer:null,width:"700px"},{default:l(()=>[g.value?(i(),v("div",de,[p("div",ve,[(i(!0),v(R,null,A(g.value.tags,t=>(i(),x(u,{key:t,color:"blue"},{default:l(()=>[m(d(t),1)]),_:2},1024))),128))]),p("pre",me,d(g.value.content||g.value.preview),1)])):_("",!0)]),_:1},8,["open","title"])])}}},ze=Z(fe,[["__scopeId","data-v-4630ece9"]]);export{ze as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{l as Fe,F as
|
|
1
|
+
import{l as Fe,F as m,D as h,c as a,x as o,r as i,q as g,v as r,J as f,u as C,m as _,I as v,G as y,H as be,P as ke,j as Ee}from"./vendor-aH7YaPZi.js";import{u as Ge}from"./ws-BTS8ehTm.js";import{_ as He}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as p}from"./index-36fB-tdr.js";import{r as Ye,Y as ge,m as Qe,a8 as _e,a4 as Xe,a9 as Ze,a1 as et}from"./icons-DEoqYzGZ.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const tt={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},at={key:0,style:{"text-align":"center",padding:"60px"}},lt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},nt={key:1,style:{color:"#1677ff"}},ot={key:2,style:{color:"var(--text-secondary)"}},st={key:3,style:{color:"var(--text-muted)","font-size":"12px"}},it={key:0,style:{"text-align":"center",padding:"40px"}},rt={key:1},ut={style:{"font-family":"monospace",color:"#ccc"}},dt={key:0,style:{"white-space":"pre-wrap","word-break":"break-all",color:"var(--text-secondary)","font-size":"11px",background:"var(--bg-base)",padding:"12px","border-radius":"6px",border:"1px solid var(--border-color)","max-height":"300px","overflow-y":"auto"}},pt={style:{"margin-bottom":"16px",display:"flex","align-items":"center",gap:"12px"}},ct={key:0,style:{"text-align":"center",padding:"60px"}},mt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},vt={key:1,style:{color:"#e0e0e0"}},yt={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},ft={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"12px"}},gt={key:0,style:{"text-align":"center",padding:"40px"}},xt={key:0,style:{color:"#e0e0e0"}},bt={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},kt={key:2,style:{color:"var(--text-secondary)"}},_t={key:0,style:{"text-align":"center",padding:"60px"}},wt={key:0,style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},Ct={key:1,style:{color:"#e0e0e0"}},It={key:3,style:{color:"var(--text-secondary)"}},ht={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},Ot={__name:"Organization",setup(jt){const k=Ge(),z=i("orgs"),ee=i(!1);async function we(){ee.value=!0;try{z.value==="orgs"?await $():z.value==="members"?(await $(),x.value&&(await pe(),await ce())):z.value==="approvals"&&await M()}finally{ee.value=!1}}function Ce(l){l==="orgs"&&O.value.length===0&&$(),l==="members"&&O.value.length===0&&$(),l==="approvals"&&G.value.length===0&&M()}function T(l){try{const e=l.trim(),t=e.indexOf("["),s=e.indexOf("{"),u=t>=0&&(s<0||t<s)?t:s;return u>=0?JSON.parse(e.slice(u)):null}catch{return null}}const te=i(!1),O=i([]),J=i(!1),ae=i(!1),U=i(""),P=i(""),le=i(!1),ne=i(!1),w=i({}),j=i(""),Ie=[{title:"ID",key:"id",dataIndex:"id",width:"100px"},{title:"名称",key:"name",dataIndex:"name",width:"180px"},{title:"所有者",key:"owner",dataIndex:"owner",width:"140px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"成员数",key:"memberCount",dataIndex:"memberCount",width:"90px"}],xe=Ee(()=>O.value.map(l=>({label:l.name,value:l.id})));async function $(){te.value=!0;try{const{output:l}=await k.execute("org list --json",15e3),e=T(l);Array.isArray(e)?O.value=e.map((t,s)=>({key:t.id||s,id:t.id||"-",name:t.name||"-",owner:t.owner||"-",description:t.description||"",memberCount:t.memberCount??t.members??0})):O.value=he(l)}catch(l){p.error("加载组织列表失败: "+l.message)}finally{te.value=!1}}function he(l){const e=[],t=l.split(`
|
|
2
2
|
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ org/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=3&&e.push({key:e.length,id:c[0]||"-",name:c[1]||"-",owner:c[2]||"-",description:c[3]||"",memberCount:parseInt(c[4],10)||0})}return e}async function Oe(){if(!U.value.trim()){p.warning("请输入组织名称");return}ae.value=!0;try{const l=U.value.trim().replace(/"/g,'\\"'),e=P.value.trim().replace(/"/g,'\\"');let t=`org create "${l}" --json`;e&&(t=`org create "${l}" --description "${e}" --json`);const{output:s}=await k.execute(t,2e4);s.includes("error")||s.includes("失败")?p.error("创建失败: "+s.slice(0,120)):(p.success("组织已创建"),J.value=!1,U.value="",P.value="",await $())}catch(l){p.error("创建失败: "+l.message)}finally{ae.value=!1}}async function je(l){w.value={...l},j.value="",le.value=!0,ne.value=!0;try{const{output:e}=await k.execute(`org show ${l.id} --json`,15e3),t=T(e);t&&typeof t=="object"?(w.value={id:t.id||l.id,name:t.name||l.name,owner:t.owner||l.owner,description:t.description||l.description,memberCount:t.memberCount??t.members??l.memberCount,createdAt:t.createdAt||t.created||""},j.value=JSON.stringify(t,null,2)):j.value=e}catch(e){j.value="加载详情失败: "+e.message}finally{ne.value=!1}}const x=i(null),oe=i(!1),se=i([]),ie=i(!1),re=i([]),V=i(!1),ue=i(!1),L=i(""),W=i(""),K=i("member"),R=i(!1),de=i(!1),D=i(""),F=i(""),E=i(""),$e=[{label:"管理员 (admin)",value:"admin"},{label:"成员 (member)",value:"member"},{label:"查看者 (viewer)",value:"viewer"}],Ae=[{title:"用户 ID",key:"userId",dataIndex:"userId",width:"160px"},{title:"名称",key:"name",dataIndex:"name",width:"140px"},{title:"角色",key:"role",dataIndex:"role",width:"100px"},{title:"加入时间",key:"joinedAt",dataIndex:"joinedAt",width:"180px"}],ze=[{title:"团队名称",key:"name",dataIndex:"name",width:"180px"},{title:"描述",key:"description",dataIndex:"description",ellipsis:!0},{title:"负责人",key:"lead",dataIndex:"lead",width:"140px"}];function Te(l){return{admin:"gold",member:"blue",viewer:"default",owner:"purple"}[(l||"").toLowerCase()]||"default"}async function Ue(){x.value&&await Promise.all([pe(),ce()])}async function pe(){if(x.value){oe.value=!0;try{const{output:l}=await k.execute(`org members ${x.value} --json`,15e3),e=T(l);Array.isArray(e)?se.value=e.map((t,s)=>({key:t.userId||t.id||s,userId:t.userId||t.id||"-",name:t.name||t.displayName||"-",role:t.role||"member",joinedAt:t.joinedAt||t.joined||"-"})):se.value=Le(l)}catch(l){p.error("加载成员失败: "+l.message)}finally{oe.value=!1}}}function Le(l){const e=[],t=l.split(`
|
|
3
|
-
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ member/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=3&&e.push({key:e.length,userId:c[0]||"-",name:c[1]||"-",role:c[2]||"member",joinedAt:c[3]||"-"})}return e}async function ce(){if(x.value){ie.value=!0;try{const{output:l}=await k.execute(`org teams ${x.value} --json`,15e3),e=T(l);Array.isArray(e)?re.value=e.map((t,s)=>({key:t.id||t.name||s,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):re.value=[]}catch(l){p.error("加载团队失败: "+l.message)}finally{ie.value=!1}}}async function De(){if(!L.value.trim()){p.warning("请输入用户 ID");return}ue.value=!0;try{const l=L.value.trim().replace(/"/g,'\\"'),e=W.value.trim().replace(/"/g,'\\"');let t=`org invite ${x.value} ${l} --role ${K.value}`;e&&(t+=` --name "${e}"`);const{output:s}=await k.execute(t,2e4);s.includes("error")||s.includes("失败")?p.error("邀请失败: "+s.slice(0,120)):(p.success("邀请已发送"),V.value=!1,L.value="",W.value="",K.value="member",await pe())}catch(l){p.error("邀请失败: "+l.message)}finally{ue.value=!1}}async function qe(){if(!D.value.trim()){p.warning("请输入团队名称");return}de.value=!0;try{const l=D.value.trim().replace(/"/g,'\\"'),e=F.value.trim().replace(/"/g,'\\"'),t=E.value.trim().replace(/"/g,'\\"');let s=`org teams ${x.value} create "${l}"`;e&&(s+=` --description "${e}"`),t&&(s+=` --lead "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("创建失败: "+u.slice(0,120)):(p.success("团队已创建"),R.value=!1,D.value="",F.value="",E.value="",await ce())}catch(l){p.error("创建失败: "+l.message)}finally{de.value=!1}}const
|
|
4
|
-
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ approval/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=4&&e.push({key:e.length,id:c[0]||"-",title:c[1]||"-",type:c[2]||"-",requester:c[3]||"-",status:c[4]||"pending",_approving:!1,_rejecting:!1})}return e}async function Be(l){l._approving=!0;try{const{output:e}=await k.execute(`org approve ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("审批失败: "+e.slice(0,120)):(p.success("已通过"),await M())}catch(e){p.error("审批失败: "+e.message)}finally{l._approving=!1}}async function Je(l){l._rejecting=!0;try{const{output:e}=await k.execute(`org reject ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("拒绝失败: "+e.slice(0,120)):(p.success("已拒绝"),await M())}catch(e){p.error("拒绝失败: "+e.message)}finally{l._rejecting=!1}}async function Pe(){if(!q.value){p.warning("请选择组织");return}if(!S.value.trim()){p.warning("请输入审批标题");return}me.value=!0;try{const l=S.value.trim().replace(/"/g,'\\"'),e=Z.value.trim().replace(/"/g,'\\"'),t=Q.value.trim().replace(/"/g,'\\"');let s=`org approve --submit --org ${q.value} --title "${l}"`;e&&(s+=` --type "${e}"`),t&&(s+=` --description "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("提交失败: "+u.slice(0,120)):(p.success("审批已提交"),H.value=!1,q.value=null,S.value="",Z.value="",Q.value="",await M())}catch(l){p.error("提交失败: "+l.message)}finally{me.value=!1}}return Fe(()=>{$()}),(l,e)=>{const t=g("a-button"),s=g("a-space"),u=g("a-spin"),c=g("a-tag"),N=g("a-empty"),X=g("a-table"),A=g("a-descriptions-item"),Ve=g("a-descriptions"),B=g("a-modal"),I=g("a-input"),b=g("a-form-item"),Y=g("a-form"),ye=g("a-tab-pane"),fe=g("a-select"),We=g("a-textarea"),Ke=g("a-tabs");return r(),v("div",null,[h("div",tt,[e[24]||(e[24]=h("div",null,[h("h2",{class:"page-title"},"组织管理"),h("p",{class:"page-sub"},"组织 / 成员 / 审批")],-1)),a(t,{type:"primary",ghost:"",loading:ee.value,onClick:we},{icon:o(()=>[a(C(Ze))]),default:o(()=>[e[23]||(e[23]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Ke,{activeKey:z.value,"onUpdate:activeKey":e[22]||(e[22]=n=>z.value=n),type:"card",onChange:Ce},{default:o(()=>[a(ye,{key:"orgs"},{tab:o(()=>[a(C(Qe)),e[25]||(e[25]=f(" 组织列表 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[0]||(e[0]=n=>J.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[26]||(e[26]=f(" 创建组织 ",-1))]),_:1})]),_:1}),te.value?(r(),v("div",at,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Ie,"data-source":O.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":n=>({onClick:()=>je(n)})},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),v("span",lt,m(d.id),1)):y("",!0),n.key==="name"?(r(),v("a",nt,m(d.name),1)):y("",!0),n.key==="owner"?(r(),v("span",ot,m(d.owner),1)):y("",!0),n.key==="description"?(r(),v("span",st,m(d.description),1)):y("",!0),n.key==="memberCount"?(r(),_(c,{key:4,color:"blue"},{default:o(()=>[f(m(d.memberCount),1)]),_:2},1024)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无组织,点击「创建组织」添加"})]),_:1},8,["data-source","pagination","custom-row"])),a(B,{open:le.value,"onUpdate:open":e[1]||(e[1]=n=>le.value=n),title:"组织详情: "+w.value.name,footer:null,width:"640px"},{default:o(()=>[ne.value?(r(),v("div",it,[a(u)])):(r(),v("div",rt,[a(Ve,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:o(()=>[a(A,{label:"ID"},{default:o(()=>[h("span",ut,m(w.value.id),1)]),_:1}),a(A,{label:"名称"},{default:o(()=>[f(m(w.value.name),1)]),_:1}),a(A,{label:"所有者"},{default:o(()=>[f(m(w.value.owner),1)]),_:1}),a(A,{label:"描述"},{default:o(()=>[f(m(w.value.description||"-"),1)]),_:1}),a(A,{label:"成员数"},{default:o(()=>[f(m(w.value.memberCount),1)]),_:1}),w.value.createdAt?(r(),_(A,{key:0,label:"创建时间"},{default:o(()=>[f(m(w.value.createdAt),1)]),_:1})):y("",!0)]),_:1}),j.value?(r(),v("pre",dt,m(j.value),1)):y("",!0)]))]),_:1},8,["open","title"]),a(B,{open:J.value,"onUpdate:open":e[4]||(e[4]=n=>J.value=n),title:"创建组织","confirm-loading":ae.value,onOk:Oe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"名称",required:""},{default:o(()=>[a(I,{value:U.value,"onUpdate:value":e[2]||(e[2]=n=>U.value=n),placeholder:"请输入组织名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:P.value,"onUpdate:value":e[3]||(e[3]=n=>P.value=n),placeholder:"请输入组织描述(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"members"},{tab:o(()=>[a(C(_e)),e[27]||(e[27]=f(" 成员管理 ",-1))]),default:o(()=>[h("div",pt,[a(fe,{value:x.value,"onUpdate:value":e[5]||(e[5]=n=>x.value=n),placeholder:"选择组织",style:{width:"280px"},options:xe.value,onChange:Ue},null,8,["value","options"]),a(t,{type:"primary",disabled:!x.value,onClick:e[6]||(e[6]=n=>V.value=!0)},{icon:o(()=>[a(C(_e))]),default:o(()=>[e[28]||(e[28]=f(" 邀请成员 ",-1))]),_:1},8,["disabled"])]),oe.value?(r(),v("div",ct,[a(u,{size:"large"})])):x.value?(r(),_(X,{key:1,columns:Ae,"data-source":se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="userId"?(r(),v("span",vt,m(d.userId),1)):y("",!0),n.key==="name"?(r(),v("span",mt,m(d.name),1)):y("",!0),n.key==="role"?(r(),_(c,{key:2,color:Te(d.role)},{default:o(()=>[f(m(d.role),1)]),_:2},1032,["color"])):y("",!0),n.key==="joinedAt"?(r(),v("span",yt,m(d.joinedAt),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无成员"})]),_:1},8,["data-source","pagination"])):(r(),_(N,{key:2,description:"请先选择一个组织",style:{padding:"60px 0"}})),x.value?(r(),v(be,{key:3},[h("div",ft,[e[30]||(e[30]=h("h3",{style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},"团队",-1)),a(t,{size:"small",onClick:e[7]||(e[7]=n=>R.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[29]||(e[29]=f(" 创建团队 ",-1))]),_:1})]),ie.value?(r(),v("div",gt,[a(u)])):(r(),_(X,{key:1,columns:ze,"data-source":re.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="name"?(r(),v("span",xt,m(d.name),1)):y("",!0),n.key==="description"?(r(),v("span",bt,m(d.description),1)):y("",!0),n.key==="lead"?(r(),v("span",kt,m(d.lead),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无团队"})]),_:1},8,["data-source"]))],64)):y("",!0),a(B,{open:V.value,"onUpdate:open":e[11]||(e[11]=n=>V.value=n),title:"邀请成员","confirm-loading":ue.value,onOk:De,"ok-text":"邀请","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"用户 ID",required:""},{default:o(()=>[a(I,{value:L.value,"onUpdate:value":e[8]||(e[8]=n=>L.value=n),placeholder:"请输入用户 ID"},null,8,["value"])]),_:1}),a(b,{label:"名称"},{default:o(()=>[a(I,{value:W.value,"onUpdate:value":e[9]||(e[9]=n=>W.value=n),placeholder:"请输入用户名称"},null,8,["value"])]),_:1}),a(b,{label:"角色"},{default:o(()=>[a(fe,{value:K.value,"onUpdate:value":e[10]||(e[10]=n=>K.value=n),options:$e},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(B,{open:R.value,"onUpdate:open":e[15]||(e[15]=n=>R.value=n),title:"创建团队","confirm-loading":de.value,onOk:qe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"团队名称",required:""},{default:o(()=>[a(I,{value:D.value,"onUpdate:value":e[12]||(e[12]=n=>D.value=n),placeholder:"请输入团队名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:F.value,"onUpdate:value":e[13]||(e[13]=n=>F.value=n),placeholder:"请输入团队描述(可选)"},null,8,["value"])]),_:1}),a(b,{label:"负责人"},{default:o(()=>[a(I,{value:E.value,"onUpdate:value":e[14]||(e[14]=n=>E.value=n),placeholder:"请输入负责人 ID(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"approvals"},{tab:o(()=>[a(C(et)),e[31]||(e[31]=f(" 审批管理 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[16]||(e[16]=n=>H.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[32]||(e[32]=f(" 提交审批 ",-1))]),_:1})]),_:1}),ve.value?(r(),v("div",_t,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Se,"data-source":G.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),v("span",wt,m(d.id),1)):y("",!0),n.key==="title"?(r(),v("span",Ct,m(d.title),1)):y("",!0),n.key==="type"?(r(),_(c,{key:2,color:"blue"},{default:o(()=>[f(m(d.type),1)]),_:2},1024)):y("",!0),n.key==="requester"?(r(),v("span",It,m(d.requester),1)):y("",!0),n.key==="status"?(r(),_(c,{key:4,color:Me(d.status)},{default:o(()=>[f(m(d.status),1)]),_:2},1032,["color"])):y("",!0),n.key==="actions"?(r(),v(be,{key:5},[(d.status||"").toLowerCase()==="pending"?(r(),_(s,{key:0},{default:o(()=>[a(t,{type:"primary",size:"small",loading:d._approving,onClick:ke(Re=>Be(d),["stop"])},{icon:o(()=>[a(C(Xe))]),default:o(()=>[e[33]||(e[33]=f(" 通过 ",-1))]),_:1},8,["loading","onClick"]),a(t,{danger:"",size:"small",loading:d._rejecting,onClick:ke(Re=>Je(d),["stop"])},{icon:o(()=>[a(C(Ye))]),default:o(()=>[e[34]||(e[34]=f(" 拒绝 ",-1))]),_:1},8,["loading","onClick"])]),_:2},1024)):(r(),v("span",ht,"-"))],64)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无审批记录"})]),_:1},8,["data-source","pagination"])),a(B,{open:H.value,"onUpdate:open":e[21]||(e[21]=n=>H.value=n),title:"提交审批","confirm-loading":me.value,onOk:Pe,"ok-text":"提交","cancel-text":"取消"},{default:o(()=>[a(Y,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"组织",required:""},{default:o(()=>[a(fe,{value:q.value,"onUpdate:value":e[17]||(e[17]=n=>q.value=n),placeholder:"选择组织",options:xe.value},null,8,["value","options"])]),_:1}),a(b,{label:"标题",required:""},{default:o(()=>[a(I,{value:S.value,"onUpdate:value":e[18]||(e[18]=n=>S.value=n),placeholder:"请输入审批标题"},null,8,["value"])]),_:1}),a(b,{label:"类型"},{default:o(()=>[a(I,{value:Z.value,"onUpdate:value":e[19]||(e[19]=n=>Z.value=n),placeholder:"请输入审批类型"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(We,{value:Q.value,"onUpdate:value":e[20]||(e[20]=n=>Q.value=n),placeholder:"请输入审批描述(可选)",rows:3},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},Bt=He(Ot,[["__scopeId","data-v-02062899"]]);export{Bt as default};
|
|
3
|
+
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ member/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=3&&e.push({key:e.length,userId:c[0]||"-",name:c[1]||"-",role:c[2]||"member",joinedAt:c[3]||"-"})}return e}async function ce(){if(x.value){ie.value=!0;try{const{output:l}=await k.execute(`org teams ${x.value} --json`,15e3),e=T(l);Array.isArray(e)?re.value=e.map((t,s)=>({key:t.id||t.name||s,name:t.name||"-",description:t.description||"",lead:t.lead||t.leader||"-"})):re.value=[]}catch(l){p.error("加载团队失败: "+l.message)}finally{ie.value=!1}}}async function De(){if(!L.value.trim()){p.warning("请输入用户 ID");return}ue.value=!0;try{const l=L.value.trim().replace(/"/g,'\\"'),e=W.value.trim().replace(/"/g,'\\"');let t=`org invite ${x.value} ${l} --role ${K.value}`;e&&(t+=` --name "${e}"`);const{output:s}=await k.execute(t,2e4);s.includes("error")||s.includes("失败")?p.error("邀请失败: "+s.slice(0,120)):(p.success("邀请已发送"),V.value=!1,L.value="",W.value="",K.value="member",await pe())}catch(l){p.error("邀请失败: "+l.message)}finally{ue.value=!1}}async function qe(){if(!D.value.trim()){p.warning("请输入团队名称");return}de.value=!0;try{const l=D.value.trim().replace(/"/g,'\\"'),e=F.value.trim().replace(/"/g,'\\"'),t=E.value.trim().replace(/"/g,'\\"');let s=`org teams ${x.value} create "${l}"`;e&&(s+=` --description "${e}"`),t&&(s+=` --lead "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("创建失败: "+u.slice(0,120)):(p.success("团队已创建"),R.value=!1,D.value="",F.value="",E.value="",await ce())}catch(l){p.error("创建失败: "+l.message)}finally{de.value=!1}}const me=i(!1),G=i([]),H=i(!1),ve=i(!1),q=i(null),S=i(""),Y=i(""),Q=i(""),Se=[{title:"ID",key:"id",dataIndex:"id",width:"100px"},{title:"标题",key:"title",dataIndex:"title",width:"200px"},{title:"类型",key:"type",dataIndex:"type",width:"120px"},{title:"申请人",key:"requester",dataIndex:"requester",width:"140px"},{title:"状态",key:"status",dataIndex:"status",width:"100px"},{title:"操作",key:"actions",width:"180px"}];function Me(l){return{pending:"orange",approved:"green",rejected:"red"}[(l||"").toLowerCase()]||"default"}async function M(){me.value=!0;try{const{output:l}=await k.execute("org approvals --json",15e3),e=T(l);Array.isArray(e)?G.value=e.map((t,s)=>({key:t.id||s,id:t.id||"-",title:t.title||"-",type:t.type||"-",requester:t.requester||t.requestedBy||"-",status:t.status||"pending",_approving:!1,_rejecting:!1})):G.value=Ne(l)}catch(l){p.error("加载审批列表失败: "+l.message)}finally{me.value=!1}}function Ne(l){const e=[],t=l.split(`
|
|
4
|
+
`);for(const s of t){const u=s.trim();if(!u||u.startsWith("─")||u.match(/^\d+ approval/i))continue;const c=u.split(/\s*[|│]\s*/);c.length>=4&&e.push({key:e.length,id:c[0]||"-",title:c[1]||"-",type:c[2]||"-",requester:c[3]||"-",status:c[4]||"pending",_approving:!1,_rejecting:!1})}return e}async function Be(l){l._approving=!0;try{const{output:e}=await k.execute(`org approve ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("审批失败: "+e.slice(0,120)):(p.success("已通过"),await M())}catch(e){p.error("审批失败: "+e.message)}finally{l._approving=!1}}async function Je(l){l._rejecting=!0;try{const{output:e}=await k.execute(`org reject ${l.id}`,15e3);e.includes("error")||e.includes("失败")?p.error("拒绝失败: "+e.slice(0,120)):(p.success("已拒绝"),await M())}catch(e){p.error("拒绝失败: "+e.message)}finally{l._rejecting=!1}}async function Pe(){if(!q.value){p.warning("请选择组织");return}if(!S.value.trim()){p.warning("请输入审批标题");return}ve.value=!0;try{const l=S.value.trim().replace(/"/g,'\\"'),e=Y.value.trim().replace(/"/g,'\\"'),t=Q.value.trim().replace(/"/g,'\\"');let s=`org approve --submit --org ${q.value} --title "${l}"`;e&&(s+=` --type "${e}"`),t&&(s+=` --description "${t}"`);const{output:u}=await k.execute(s,2e4);u.includes("error")||u.includes("失败")?p.error("提交失败: "+u.slice(0,120)):(p.success("审批已提交"),H.value=!1,q.value=null,S.value="",Y.value="",Q.value="",await M())}catch(l){p.error("提交失败: "+l.message)}finally{ve.value=!1}}return Fe(()=>{$()}),(l,e)=>{const t=g("a-button"),s=g("a-space"),u=g("a-spin"),c=g("a-tag"),N=g("a-empty"),X=g("a-table"),A=g("a-descriptions-item"),Ve=g("a-descriptions"),B=g("a-modal"),I=g("a-input"),b=g("a-form-item"),Z=g("a-form"),ye=g("a-tab-pane"),fe=g("a-select"),We=g("a-textarea"),Ke=g("a-tabs");return r(),m("div",null,[h("div",tt,[e[24]||(e[24]=h("div",null,[h("h2",{class:"page-title"},"组织管理"),h("p",{class:"page-sub"},"组织 / 成员 / 审批")],-1)),a(t,{type:"primary",ghost:"",loading:ee.value,onClick:we},{icon:o(()=>[a(C(Ye))]),default:o(()=>[e[23]||(e[23]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Ke,{activeKey:z.value,"onUpdate:activeKey":e[22]||(e[22]=n=>z.value=n),type:"card",onChange:Ce},{default:o(()=>[a(ye,{key:"orgs"},{tab:o(()=>[a(C(Qe)),e[25]||(e[25]=f(" 组织列表 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[0]||(e[0]=n=>J.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[26]||(e[26]=f(" 创建组织 ",-1))]),_:1})]),_:1}),te.value?(r(),m("div",at,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Ie,"data-source":O.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row","custom-row":n=>({onClick:()=>je(n)})},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),m("span",lt,v(d.id),1)):y("",!0),n.key==="name"?(r(),m("a",nt,v(d.name),1)):y("",!0),n.key==="owner"?(r(),m("span",ot,v(d.owner),1)):y("",!0),n.key==="description"?(r(),m("span",st,v(d.description),1)):y("",!0),n.key==="memberCount"?(r(),_(c,{key:4,color:"blue"},{default:o(()=>[f(v(d.memberCount),1)]),_:2},1024)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无组织,点击「创建组织」添加"})]),_:1},8,["data-source","pagination","custom-row"])),a(B,{open:le.value,"onUpdate:open":e[1]||(e[1]=n=>le.value=n),title:"组织详情: "+w.value.name,footer:null,width:"640px"},{default:o(()=>[ne.value?(r(),m("div",it,[a(u)])):(r(),m("div",rt,[a(Ve,{column:1,bordered:"",size:"small",style:{"margin-bottom":"16px"}},{default:o(()=>[a(A,{label:"ID"},{default:o(()=>[h("span",ut,v(w.value.id),1)]),_:1}),a(A,{label:"名称"},{default:o(()=>[f(v(w.value.name),1)]),_:1}),a(A,{label:"所有者"},{default:o(()=>[f(v(w.value.owner),1)]),_:1}),a(A,{label:"描述"},{default:o(()=>[f(v(w.value.description||"-"),1)]),_:1}),a(A,{label:"成员数"},{default:o(()=>[f(v(w.value.memberCount),1)]),_:1}),w.value.createdAt?(r(),_(A,{key:0,label:"创建时间"},{default:o(()=>[f(v(w.value.createdAt),1)]),_:1})):y("",!0)]),_:1}),j.value?(r(),m("pre",dt,v(j.value),1)):y("",!0)]))]),_:1},8,["open","title"]),a(B,{open:J.value,"onUpdate:open":e[4]||(e[4]=n=>J.value=n),title:"创建组织","confirm-loading":ae.value,onOk:Oe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Z,{"label-col":{span:4},"wrapper-col":{span:20},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"名称",required:""},{default:o(()=>[a(I,{value:U.value,"onUpdate:value":e[2]||(e[2]=n=>U.value=n),placeholder:"请输入组织名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:P.value,"onUpdate:value":e[3]||(e[3]=n=>P.value=n),placeholder:"请输入组织描述(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"members"},{tab:o(()=>[a(C(_e)),e[27]||(e[27]=f(" 成员管理 ",-1))]),default:o(()=>[h("div",pt,[a(fe,{value:x.value,"onUpdate:value":e[5]||(e[5]=n=>x.value=n),placeholder:"选择组织",style:{width:"280px"},options:xe.value,onChange:Ue},null,8,["value","options"]),a(t,{type:"primary",disabled:!x.value,onClick:e[6]||(e[6]=n=>V.value=!0)},{icon:o(()=>[a(C(_e))]),default:o(()=>[e[28]||(e[28]=f(" 邀请成员 ",-1))]),_:1},8,["disabled"])]),oe.value?(r(),m("div",ct,[a(u,{size:"large"})])):x.value?(r(),_(X,{key:1,columns:Ae,"data-source":se.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)","margin-bottom":"24px"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="userId"?(r(),m("span",mt,v(d.userId),1)):y("",!0),n.key==="name"?(r(),m("span",vt,v(d.name),1)):y("",!0),n.key==="role"?(r(),_(c,{key:2,color:Te(d.role)},{default:o(()=>[f(v(d.role),1)]),_:2},1032,["color"])):y("",!0),n.key==="joinedAt"?(r(),m("span",yt,v(d.joinedAt),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无成员"})]),_:1},8,["data-source","pagination"])):(r(),_(N,{key:2,description:"请先选择一个组织",style:{padding:"60px 0"}})),x.value?(r(),m(be,{key:3},[h("div",ft,[e[30]||(e[30]=h("h3",{style:{color:"var(--text-primary)",margin:"0","font-size":"15px"}},"团队",-1)),a(t,{size:"small",onClick:e[7]||(e[7]=n=>R.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[29]||(e[29]=f(" 创建团队 ",-1))]),_:1})]),ie.value?(r(),m("div",gt,[a(u)])):(r(),_(X,{key:1,columns:ze,"data-source":re.value,pagination:!1,size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="name"?(r(),m("span",xt,v(d.name),1)):y("",!0),n.key==="description"?(r(),m("span",bt,v(d.description),1)):y("",!0),n.key==="lead"?(r(),m("span",kt,v(d.lead),1)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无团队"})]),_:1},8,["data-source"]))],64)):y("",!0),a(B,{open:V.value,"onUpdate:open":e[11]||(e[11]=n=>V.value=n),title:"邀请成员","confirm-loading":ue.value,onOk:De,"ok-text":"邀请","cancel-text":"取消"},{default:o(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"用户 ID",required:""},{default:o(()=>[a(I,{value:L.value,"onUpdate:value":e[8]||(e[8]=n=>L.value=n),placeholder:"请输入用户 ID"},null,8,["value"])]),_:1}),a(b,{label:"名称"},{default:o(()=>[a(I,{value:W.value,"onUpdate:value":e[9]||(e[9]=n=>W.value=n),placeholder:"请输入用户名称"},null,8,["value"])]),_:1}),a(b,{label:"角色"},{default:o(()=>[a(fe,{value:K.value,"onUpdate:value":e[10]||(e[10]=n=>K.value=n),options:$e},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"]),a(B,{open:R.value,"onUpdate:open":e[15]||(e[15]=n=>R.value=n),title:"创建团队","confirm-loading":de.value,onOk:qe,"ok-text":"创建","cancel-text":"取消"},{default:o(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"团队名称",required:""},{default:o(()=>[a(I,{value:D.value,"onUpdate:value":e[12]||(e[12]=n=>D.value=n),placeholder:"请输入团队名称"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(I,{value:F.value,"onUpdate:value":e[13]||(e[13]=n=>F.value=n),placeholder:"请输入团队描述(可选)"},null,8,["value"])]),_:1}),a(b,{label:"负责人"},{default:o(()=>[a(I,{value:E.value,"onUpdate:value":e[14]||(e[14]=n=>E.value=n),placeholder:"请输入负责人 ID(可选)"},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1}),a(ye,{key:"approvals"},{tab:o(()=>[a(C(et)),e[31]||(e[31]=f(" 审批管理 ",-1))]),default:o(()=>[a(s,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(t,{type:"primary",onClick:e[16]||(e[16]=n=>H.value=!0)},{icon:o(()=>[a(C(ge))]),default:o(()=>[e[32]||(e[32]=f(" 提交审批 ",-1))]),_:1})]),_:1}),me.value?(r(),m("div",_t,[a(u,{size:"large"})])):(r(),_(X,{key:1,columns:Se,"data-source":G.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"org-row"},{bodyCell:o(({column:n,record:d})=>[n.key==="id"?(r(),m("span",wt,v(d.id),1)):y("",!0),n.key==="title"?(r(),m("span",Ct,v(d.title),1)):y("",!0),n.key==="type"?(r(),_(c,{key:2,color:"blue"},{default:o(()=>[f(v(d.type),1)]),_:2},1024)):y("",!0),n.key==="requester"?(r(),m("span",It,v(d.requester),1)):y("",!0),n.key==="status"?(r(),_(c,{key:4,color:Me(d.status)},{default:o(()=>[f(v(d.status),1)]),_:2},1032,["color"])):y("",!0),n.key==="actions"?(r(),m(be,{key:5},[(d.status||"").toLowerCase()==="pending"?(r(),_(s,{key:0},{default:o(()=>[a(t,{type:"primary",size:"small",loading:d._approving,onClick:ke(Re=>Be(d),["stop"])},{icon:o(()=>[a(C(Xe))]),default:o(()=>[e[33]||(e[33]=f(" 通过 ",-1))]),_:1},8,["loading","onClick"]),a(t,{danger:"",size:"small",loading:d._rejecting,onClick:ke(Re=>Je(d),["stop"])},{icon:o(()=>[a(C(Ze))]),default:o(()=>[e[34]||(e[34]=f(" 拒绝 ",-1))]),_:1},8,["loading","onClick"])]),_:2},1024)):(r(),m("span",ht,"-"))],64)):y("",!0)]),emptyText:o(()=>[a(N,{description:"暂无审批记录"})]),_:1},8,["data-source","pagination"])),a(B,{open:H.value,"onUpdate:open":e[21]||(e[21]=n=>H.value=n),title:"提交审批","confirm-loading":ve.value,onOk:Pe,"ok-text":"提交","cancel-text":"取消"},{default:o(()=>[a(Z,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:o(()=>[a(b,{label:"组织",required:""},{default:o(()=>[a(fe,{value:q.value,"onUpdate:value":e[17]||(e[17]=n=>q.value=n),placeholder:"选择组织",options:xe.value},null,8,["value","options"])]),_:1}),a(b,{label:"标题",required:""},{default:o(()=>[a(I,{value:S.value,"onUpdate:value":e[18]||(e[18]=n=>S.value=n),placeholder:"请输入审批标题"},null,8,["value"])]),_:1}),a(b,{label:"类型"},{default:o(()=>[a(I,{value:Y.value,"onUpdate:value":e[19]||(e[19]=n=>Y.value=n),placeholder:"请输入审批类型"},null,8,["value"])]),_:1}),a(b,{label:"描述"},{default:o(()=>[a(We,{value:Q.value,"onUpdate:value":e[20]||(e[20]=n=>Q.value=n),placeholder:"请输入审批描述(可选)",rows:3},null,8,["value"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},Bt=He(Ot,[["__scopeId","data-v-02062899"]]);export{Bt as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as u,c as H}from"./useConfigInject-
|
|
1
|
+
import{_ as u,c as H}from"./useConfigInject-DIr4olCu.js";import{_ as D}from"./index-BPzN5a2A.js";import{R as ee}from"./index-Bm7xqsYQ.js";import{P}from"./index-U4Zd5IK6.js";import{d as k,p as ge,i as pe,j as c,M as be,c as v,r as he,w as Oe,s as C}from"./vendor-aH7YaPZi.js";const te=Symbol("OverflowContextProviderKey"),X=k({compatConfig:{MODE:3},name:"OverflowContextProvider",inheritAttrs:!1,props:{value:{type:Object}},setup(e,a){let{slots:r}=a;return ge(te,c(()=>e.value)),()=>{var t;return(t=r.default)===null||t===void 0?void 0:t.call(r)}}}),Se=()=>pe(te,c(()=>null));var xe=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const _=void 0,$=k({compatConfig:{MODE:3},name:"Item",props:{prefixCls:String,item:P.any,renderItem:Function,responsive:Boolean,itemKey:{type:[String,Number]},registerSize:Function,display:Boolean,order:Number,component:P.any,invalidate:Boolean},setup(e,a){let{slots:r,expose:t}=a;const n=c(()=>e.responsive&&!e.display),p=he();t({itemNodeRef:p});function b(i){e.registerSize(e.itemKey,i)}return be(()=>{b(null)}),()=>{var i;const{prefixCls:O,invalidate:w,item:m,renderItem:y,responsive:f,registerSize:z,itemKey:R,display:V,order:I,component:M="div"}=e,S=xe(e,["prefixCls","invalidate","item","renderItem","responsive","registerSize","itemKey","display","order","component"]),W=(i=r.default)===null||i===void 0?void 0:i.call(r),T=y&&m!==_?y(m):W;let h;w||(h={opacity:n.value?0:1,height:n.value?0:_,overflowY:n.value?"hidden":_,order:f?I:_,pointerEvents:n.value?"none":_,position:n.value?"absolute":_});const N={};return n.value&&(N["aria-hidden"]=!0),v(ee,{disabled:!f,onResize:E=>{let{offsetWidth:B}=E;b(B)}},{default:()=>v(M,u(u(u({class:H(!w&&O),style:h},N),S),{},{ref:p}),{default:()=>[T]})})}}});var U=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const Ce=k({compatConfig:{MODE:3},name:"RawItem",inheritAttrs:!1,props:{component:P.any,title:P.any,id:String,onMouseenter:{type:Function},onMouseleave:{type:Function},onClick:{type:Function},onKeydown:{type:Function},onFocus:{type:Function},role:String,tabindex:Number},setup(e,a){let{slots:r,attrs:t}=a;const n=Se();return()=>{var p;if(!n.value){const{component:y="div"}=e,f=U(e,["component"]);return v(y,u(u({},f),t),{default:()=>[(p=r.default)===null||p===void 0?void 0:p.call(r)]})}const b=n.value,{className:i}=b,O=U(b,["className"]),{class:w}=t,m=U(t,["class"]);return v(X,{value:null},{default:()=>[v($,u(u(u({class:H(i,w)},O),m),e),r)]})}}});var we=function(e,a){var r={};for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&a.indexOf(t)<0&&(r[t]=e[t]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var n=0,t=Object.getOwnPropertySymbols(e);n<t.length;n++)a.indexOf(t[n])<0&&Object.prototype.propertyIsEnumerable.call(e,t[n])&&(r[t[n]]=e[t[n]]);return r};const ne="responsive",le="invalidate";function Re(e){return`+ ${e.length} ...`}const Ie=()=>({id:String,prefixCls:String,data:Array,itemKey:[String,Number,Function],itemWidth:{type:Number,default:10},renderItem:Function,renderRawItem:Function,maxCount:[Number,String],renderRest:Function,renderRawRest:Function,suffix:P.any,component:String,itemComponent:P.any,onVisibleChange:Function,ssr:String,onMousedown:Function,role:String}),Y=k({name:"Overflow",inheritAttrs:!1,props:Ie(),emits:["visibleChange"],setup(e,a){let{attrs:r,emit:t,slots:n}=a;const p=c(()=>e.ssr==="full"),b=C(null),i=c(()=>b.value||0),O=C(new Map),w=C(0),m=C(0),y=C(0),f=C(null),z=C(null),R=c(()=>z.value===null&&p.value?Number.MAX_SAFE_INTEGER:z.value||0),V=C(!1),I=c(()=>`${e.prefixCls}-item`),M=c(()=>Math.max(w.value,m.value)),S=c(()=>!!(e.data.length&&e.maxCount===ne)),W=c(()=>e.maxCount===le),T=c(()=>S.value||typeof e.maxCount=="number"&&e.data.length>e.maxCount),h=c(()=>{let l=e.data;return S.value?b.value===null&&p.value?l=e.data:l=e.data.slice(0,Math.min(e.data.length,i.value/e.itemWidth)):typeof e.maxCount=="number"&&(l=e.data.slice(0,e.maxCount)),l}),N=c(()=>S.value?e.data.slice(R.value+1):e.data.slice(h.value.length)),E=(l,o)=>{var s;return typeof e.itemKey=="function"?e.itemKey(l):(s=e.itemKey&&l?.[e.itemKey])!==null&&s!==void 0?s:o},B=c(()=>e.renderItem||(l=>l)),A=(l,o)=>{z.value=l,o||(V.value=l<e.data.length-1,t("visibleChange",l))},re=(l,o)=>{b.value=o.clientWidth},q=(l,o)=>{const s=new Map(O.value);o===null?s.delete(l):s.set(l,o),O.value=s},oe=(l,o)=>{w.value=m.value,m.value=o},ae=(l,o)=>{y.value=o},G=l=>O.value.get(E(h.value[l],l));return Oe([i,O,m,y,()=>e.itemKey,h],()=>{if(i.value&&M.value&&h.value){let l=y.value;const o=h.value.length,s=o-1;if(!o){A(0),f.value=null;return}for(let g=0;g<o;g+=1){const F=G(g);if(F===void 0){A(g-1,!0);break}if(l+=F,s===0&&l<=i.value||g===s-1&&l+G(s)<=i.value){A(s),f.value=null;break}else if(l+M.value>i.value){A(g-1),f.value=l-F-y.value+m.value;break}}e.suffix&&G(0)+y.value>i.value&&(f.value=null)}}),()=>{const l=V.value&&!!N.value.length,{itemComponent:o,renderRawItem:s,renderRawRest:g,renderRest:F,prefixCls:ie="rc-overflow",suffix:J,component:se="div",id:ue,onMousedown:de}=e,{class:ce,style:ve}=r,fe=we(r,["class","style"]);let Q={};f.value!==null&&S.value&&(Q={position:"absolute",left:`${f.value}px`,top:0});const j={prefixCls:I.value,responsive:S.value,component:o,invalidate:W.value},me=s?(d,x)=>{const K=E(d,x);return v(X,{key:K,value:D(D({},j),{order:x,item:d,itemKey:K,registerSize:q,display:x<=R.value})},{default:()=>[s(d,x)]})}:(d,x)=>{const K=E(d,x);return v($,u(u({},j),{},{order:x,key:K,item:d,renderItem:B.value,itemKey:K,registerSize:q,display:x<=R.value}),null)};let L=()=>null;const Z={order:l?R.value:Number.MAX_SAFE_INTEGER,className:`${I.value} ${I.value}-rest`,registerSize:oe,display:l};if(g)g&&(L=()=>v(X,{value:D(D({},j),Z)},{default:()=>[g(N.value)]}));else{const d=F||Re;L=()=>v($,u(u({},j),Z),{default:()=>typeof d=="function"?d(N.value):d})}const ye=()=>{var d;return v(se,u({id:ue,class:H(!W.value&&ie,ce),style:ve,onMousedown:de,role:e.role},fe),{default:()=>[h.value.map(me),T.value?L():null,J&&v($,u(u({},j),{},{order:R.value,class:`${I.value}-suffix`,registerSize:ae,display:!0,style:Q}),{default:()=>J}),(d=n.default)===null||d===void 0?void 0:d.call(n)]})};return v(ee,{disabled:!S.value,onResize:re},{default:ye})}}});Y.Item=Ce;Y.RESPONSIVE=ne;Y.INVALIDATE=le;export{Y as O};
|
package/src/assets/web-panel/assets/{OverrideContext-7M2Kv4Ru.js → OverrideContext-9ePmgwvW.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{i as _,p as b,j as t}from"./vendor-
|
|
1
|
+
import{i as _,p as b,j as t}from"./vendor-aH7YaPZi.js";const c=Symbol("OverrideContextKey"),C=()=>_(c,void 0),f=o=>{var v,i,d;const{prefixCls:n,mode:a,selectable:u,validator:s,onClick:x,expandIcon:r}=C()||{};b(c,{prefixCls:t(()=>{var e,l;return(l=(e=o.prefixCls)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:n?.value}),mode:t(()=>{var e,l;return(l=(e=o.mode)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:a?.value}),selectable:t(()=>{var e,l;return(l=(e=o.selectable)===null||e===void 0?void 0:e.value)!==null&&l!==void 0?l:u?.value}),validator:(v=o.validator)!==null&&v!==void 0?v:s,onClick:(i=o.onClick)!==null&&i!==void 0?i:x,expandIcon:(d=o.expandIcon)!==null&&d!==void 0?d:r?.value})};export{C as a,f as u};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as ve}from"./ws-
|
|
2
|
-
`).filter(m=>m.trim()),i=[];for(const m of e){const _=m.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(_){i.push({id:_[1],name:_[2].trim(),connected:/connected|online/i.test(_[3])});continue}const k=m.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(k){const C=k[2].trim();i.push({id:k[1],name:C||k[1].slice(0,12),connected:/connected|online/i.test(C)})}}return i}const
|
|
1
|
+
import{u as ve}from"./ws-BTS8ehTm.js";import{_ as pe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{r as fe,a3 as ye,E as ee,Y as me,_ as M}from"./icons-DEoqYzGZ.js";import{l as ge,F as d,D as u,c as t,x as o,r as n,q as r,v as s,J as p,u as c,m as w,I as v,G as f,H as te,L as _e}from"./vendor-aH7YaPZi.js";const be={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},xe={key:0,style:{"text-align":"center",padding:"30px"}},ke={key:2,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},we={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},Pe={key:0,style:{"text-align":"center",padding:"30px"}},he={key:0,style:{"margin-top":"16px"}},Se={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"200px","overflow-y":"auto","white-space":"pre-wrap"}},ze={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},$e={key:0,style:{"margin-top":"12px"}},Ce={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},Oe={key:0,style:{"margin-top":"12px"}},Me={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","white-space":"pre-wrap"}},Le={__name:"P2P",setup(Ee){const b=ve(),L=n(!1),E=n(""),P=n([]),ae=[{title:"设备名称",key:"name"},{title:"Peer ID",key:"id"},{title:"状态",key:"status"},{title:"操作",key:"action",width:100}];async function J(){L.value=!0,E.value="";try{const{output:a}=await b.execute("p2p peers",15e3);P.value=oe(a)}catch(a){E.value=`加载失败: ${a.message}`}finally{L.value=!1}}function oe(a){if(!a||a.includes("No peers")||a.includes("no peers"))return[];const e=a.split(`
|
|
2
|
+
`).filter(m=>m.trim()),i=[];for(const m of e){const _=m.match(/^\s*(\S+)\s+(.+?)\s+(connected|online|offline|disconnected)\s*$/i);if(_){i.push({id:_[1],name:_[2].trim(),connected:/connected|online/i.test(_[3])});continue}const k=m.match(/^\s*((?:12D3|Qm)\S{10,})\s*(.*)$/);if(k){const C=k[2].trim();i.push({id:k[1],name:C||k[1].slice(0,12),connected:/connected|online/i.test(C)})}}return i}const U=n(!1),B=n(!1),N=n(""),h=n("");async function Q(){if(N.value.trim()){B.value=!0,h.value="";try{const{output:a}=await b.execute(`p2p pair "${N.value.trim()}"`,3e4);h.value=a,await J()}catch(a){h.value=`配对失败: ${a.message}`}finally{B.value=!1}}}const D=n(!1),I=n(!1),S=n(void 0),z=n(""),x=n("");function le(a){S.value=a.id,z.value="",x.value="",D.value=!0}async function W(){if(!(!S.value||!z.value.trim())){I.value=!0,x.value="";try{const{output:a}=await b.execute(`p2p send ${S.value} "${z.value.trim()}"`,15e3);x.value=a||"消息已发送"}catch(a){x.value=`发送失败: ${a.message}`}finally{I.value=!1}}}const V=n(!1),T=n(""),$=n(!1),R=n("未知"),F=n(0),Y=n(""),y=n(""),j=n(!1),q=n(!1);async function A(){V.value=!0,T.value="";try{const{output:a}=await b.execute("sync status",15e3);ne(a)}catch(a){T.value=`加载失败: ${a.message}`}finally{V.value=!1}}function ne(a){if(!a){R.value="未知";return}$.value=/synced|online|up.to.date/i.test(a),R.value=$.value?"已同步":"未同步";const e=a.match(/pending[:\s]+(\d+)/i);F.value=e?parseInt(e[1]):0;const i=a.match(/last[:\s]+(.+)/i);i&&(Y.value=i[1].trim())}async function se(){j.value=!0,y.value="";try{const{output:a}=await b.execute("sync push",3e4);y.value=a||"推送完成",await A()}catch(a){y.value=`推送失败: ${a.message}`}finally{j.value=!1}}async function re(){q.value=!0,y.value="";try{const{output:a}=await b.execute("sync pull",3e4);y.value=a||"拉取完成",await A()}catch(a){y.value=`拉取失败: ${a.message}`}finally{q.value=!1}}async function K(){await Promise.all([J(),A()])}return ge(K),(a,e)=>{const i=r("a-button"),m=r("a-space"),_=r("a-spin"),k=r("a-empty"),C=r("a-tag"),ie=r("a-table"),O=r("a-card"),G=r("a-statistic"),H=r("a-col"),ue=r("a-row"),X=r("a-input"),Z=r("a-modal"),de=r("a-select-option"),ce=r("a-select");return s(),d("div",null,[u("div",be,[e[8]||(e[8]=u("div",null,[u("h2",{class:"page-title"},"P2P 网络"),u("p",{class:"page-sub"},"设备管理与数据同步")],-1)),t(i,{type:"primary",ghost:"",loading:L.value,onClick:K},{icon:o(()=>[t(c(fe))]),default:o(()=>[e[7]||(e[7]=p(" 刷新 ",-1))]),_:1},8,["loading"])]),t(O,{title:"P2P 设备",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[t(m,null,{default:o(()=>[t(i,{size:"small",onClick:e[0]||(e[0]=l=>U.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(c(me))]),default:o(()=>[e[9]||(e[9]=p(" 配对设备 ",-1))]),_:1}),t(i,{size:"small",onClick:e[1]||(e[1]=l=>D.value=!0),disabled:P.value.length===0,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(c(ee))]),default:o(()=>[e[10]||(e[10]=p(" 发送消息 ",-1))]),_:1},8,["disabled"])]),_:1})]),default:o(()=>[L.value?(s(),d("div",xe,[t(_)])):P.value.length===0?(s(),w(k,{key:1,description:"暂无已连接设备"})):(s(),w(ie,{key:2,columns:ae,"data-source":P.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:o(({column:l,record:g})=>[l.key==="status"?(s(),w(C,{key:0,color:g.connected?"green":"default"},{default:o(()=>[p(v(g.connected?"在线":"离线"),1)]),_:2},1032,["color"])):f("",!0),l.key==="name"?(s(),w(m,{key:1},{default:o(()=>[t(c(ye),{style:{color:"var(--text-muted)"}}),u("span",null,v(g.name||g.id),1)]),_:2},1024)):f("",!0),l.key==="id"?(s(),d("span",ke,v(g.id.length>16?g.id.slice(0,16)+"...":g.id),1)):f("",!0),l.key==="action"?(s(),w(i,{key:3,size:"small",type:"link",onClick:Ne=>le(g)},{default:o(()=>[t(c(ee)),e[11]||(e[11]=p(" 发送 ",-1))]),_:1},8,["onClick"])):f("",!0)]),_:1},8,["data-source"])),E.value?(s(),d("div",we,v(E.value),1)):f("",!0)]),_:1}),t(O,{title:"同步状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[t(C,{color:$.value?"green":"default"},{default:o(()=>[p(v($.value?"已同步":"未同步"),1)]),_:1},8,["color"])]),default:o(()=>[V.value?(s(),d("div",Pe,[t(_)])):(s(),d(te,{key:1},[t(ue,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[t(H,{xs:24,sm:8},{default:o(()=>[t(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(G,{title:"同步状态",value:R.value,"value-style":{color:$.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[t(c(M))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(H,{xs:24,sm:8},{default:o(()=>[t(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(G,{title:"待推送",value:F.value,"value-style":{color:F.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:o(()=>[t(c(M))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),t(H,{xs:24,sm:8},{default:o(()=>[t(O,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[t(G,{title:"最近同步",value:Y.value||"无","value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:o(()=>[t(c(M))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),t(m,null,{default:o(()=>[t(i,{loading:j.value,onClick:se,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(c(M))]),default:o(()=>[e[12]||(e[12]=p(" 推送变更 ",-1))]),_:1},8,["loading"]),t(i,{loading:q.value,onClick:re,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[t(c(M))]),default:o(()=>[e[13]||(e[13]=p(" 拉取变更 ",-1))]),_:1},8,["loading"])]),_:1}),y.value?(s(),d("div",he,[e[14]||(e[14]=u("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"操作结果",-1)),u("pre",Se,v(y.value),1)])):f("",!0)],64)),T.value?(s(),d("div",ze,v(T.value),1)):f("",!0)]),_:1}),t(Z,{open:U.value,"onUpdate:open":e[3]||(e[3]=l=>U.value=l),title:"配对新设备","confirm-loading":B.value,onOk:Q,"ok-text":"配对","cancel-text":"取消"},{default:o(()=>[e[15]||(e[15]=u("div",{style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},"请输入要配对的设备名称",-1)),t(X,{value:N.value,"onUpdate:value":e[2]||(e[2]=l=>N.value=l),placeholder:"设备名称,例如: My Phone",onPressEnter:Q},null,8,["value"]),h.value?(s(),d("div",$e,[u("pre",Ce,v(h.value),1)])):f("",!0)]),_:1},8,["open","confirm-loading"]),t(Z,{open:D.value,"onUpdate:open":e[6]||(e[6]=l=>D.value=l),title:"发送消息","confirm-loading":I.value,onOk:W,"ok-text":"发送","cancel-text":"取消"},{default:o(()=>[e[16]||(e[16]=u("div",{style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},"选择目标设备",-1)),t(ce,{value:S.value,"onUpdate:value":e[4]||(e[4]=l=>S.value=l),style:{width:"100%","margin-bottom":"16px"},placeholder:"选择设备"},{default:o(()=>[(s(!0),d(te,null,_e(P.value,l=>(s(),w(de,{key:l.id,value:l.id},{default:o(()=>[p(v(l.name||l.id),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"]),e[17]||(e[17]=u("div",{style:{"margin-bottom":"8px",color:"var(--text-secondary)"}},"消息内容",-1)),t(X,{value:z.value,"onUpdate:value":e[5]||(e[5]=l=>z.value=l),placeholder:"输入消息内容",onPressEnter:W},null,8,["value"]),x.value?(s(),d("div",Oe,[u("pre",Me,v(x.value),1)])):f("",!0)]),_:1},8,["open","confirm-loading"])])}}},Ie=pe(Le,[["__scopeId","data-v-f56a4f0e"]]);export{Ie as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{u as ue}from"./ws-
|
|
2
|
-
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.match(/^Role/i))continue;const r=n.split(/\s*[|│]\s*/);r.length>=2?e.push({key:e.length,name:r[0]||"-",description:r[1]||"",permissions:r[2]?r[2].split(/[,;\s]+/).filter(Boolean):[],userCount:r[3]&&parseInt(r[3],10)||0}):n.length>2&&e.push({key:e.length,name:n.slice(0,60),description:"",permissions:[],userCount:0})}return e}const C=v(""),w=v(""),$=v(!1),k=v(null),
|
|
3
|
-
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.startsWith("Audit")||n.startsWith("Recent"))continue;const r=n.split(/\s*[|│]\s*/);if(r.length>=3){e.push({key:e.length,timestamp:r[0]||"-",event:r[1]||"-",user:r[2]||"-",level:r[3]||"info",detail:r.slice(4).join(" ")||""});continue}const y=n.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(y){const m=y[2],f=m.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);e.push({key:e.length,timestamp:y[1],event:m.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:f?f[1].toLowerCase():"info",detail:""})}else n.length>3&&!n.match(/^\d+ event/i)&&e.push({key:e.length,timestamp:"-",event:n.slice(0,80),user:"-",level:"info",detail:""})}return e}function se(t){const e=
|
|
4
|
-
`),n=["#1677ff","#52c41a","#faad14","#ff4d4f"];let r=0;for(const y of p){const m=y.trim();if(!m||m.startsWith("─")||m.startsWith("Audit"))continue;const f=m.match(/^(.+?)\s*[:=]\s*(.+)$/);if(f){const x=f[1].trim(),L=f[2].trim(),N=L.match(/^(\d+)/);l.push({label:x,value:N?parseInt(N[1],10):L,color:n[r%n.length]}),r++}}return l.length===0&&l.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),l}function
|
|
1
|
+
import{u as ue}from"./ws-BTS8ehTm.js";import{_ as ce}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as G}from"./index-36fB-tdr.js";import{r as de,L as pe,U as K,a1 as me}from"./icons-DEoqYzGZ.js";import{l as fe,F as d,D as T,c as o,x as s,r as v,q as u,v as i,J as h,u as I,m as b,I as _,G as g,H as j,L as E}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ve={key:0,style:{"text-align":"center",padding:"60px"}},_e={key:0,style:{color:"#e0e0e0","font-weight":"500"}},ge={key:1,style:{color:"var(--text-secondary)"}},he={key:0,style:{"margin-top":"16px"}},ke={key:0,style:{"text-align":"center",padding:"60px"}},xe={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},be={key:1,style:{color:"#e0e0e0"}},we={key:2,style:{color:"var(--text-secondary)"}},Ce={key:4,style:{color:"var(--text-muted)","font-size":"12px"}},Ie={__name:"Permissions",setup(Re){const R=ue(),O=v("roles"),z=v(!1);async function q(){z.value=!0;try{O.value==="roles"?await P():O.value==="audit"&&await U()}finally{z.value=!1}}function H(t){t==="roles"&&S.value.length===0&&P(),t==="audit"&&A.value.length===0&&U()}const W=v(!1),S=v([]),Q=[{title:"角色名",key:"name",dataIndex:"name",width:"160px"},{title:"描述",key:"description",dataIndex:"description",width:"240px"},{title:"权限",key:"permissions",dataIndex:"permissions"},{title:"用户数",key:"userCount",dataIndex:"userCount",width:"100px"}];async function P(){W.value=!0;try{const{output:t}=await R.execute("auth roles --json",15e3);S.value=D(t,X)}catch(t){G.error("加载角色列表失败: "+t.message)}finally{W.value=!1}}function X(t){const e=[],l=t.split(`
|
|
2
|
+
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.match(/^Role/i))continue;const r=n.split(/\s*[|│]\s*/);r.length>=2?e.push({key:e.length,name:r[0]||"-",description:r[1]||"",permissions:r[2]?r[2].split(/[,;\s]+/).filter(Boolean):[],userCount:r[3]&&parseInt(r[3],10)||0}):n.length>2&&e.push({key:e.length,name:n.slice(0,60),description:"",permissions:[],userCount:0})}return e}const C=v(""),w=v(""),$=v(!1),k=v(null),Y=["note:read","note:write","admin:*","skill:execute"];async function Z(){if(!(!C.value.trim()||!w.value.trim())){$.value=!0,k.value=null;try{const t=`auth check ${C.value.trim()} "${w.value.trim()}"`,{output:e}=await R.execute(t,15e3),l=e.toLowerCase(),p=l.includes("allow")||l.includes("granted")||l.includes("true")||l.includes("yes"),n=l.includes("denied")||l.includes("reject")||l.includes("false")||l.includes("no permission");k.value={allowed:p&&!n,detail:e.trim()||(p?"用户拥有该权限":"用户没有该权限")}}catch(t){k.value={allowed:!1,detail:"检查失败: "+t.message}}finally{$.value=!1}}}const B=v(!1),A=v([]),M=v([]),ee=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"事件",key:"event",dataIndex:"event",width:"200px"},{title:"用户",key:"user",dataIndex:"user",width:"120px"},{title:"级别",key:"level",dataIndex:"level",width:"80px"},{title:"详情",key:"detail",dataIndex:"detail",ellipsis:!0}];function te(t){return{info:"blue",warn:"orange",warning:"orange",error:"red",critical:"red"}[(t||"").toLowerCase()]||"default"}async function U(){B.value=!0;try{const[t,e]=await Promise.all([R.execute("audit log --json",15e3),R.execute("audit stats --json",15e3)]);A.value=D(t.output,ae),M.value=se(e.output)}catch(t){G.error("加载审计日志失败: "+t.message)}finally{B.value=!1}}function ae(t){const e=[],l=t.split(`
|
|
3
|
+
`);for(const p of l){const n=p.trim();if(!n||n.startsWith("─")||n.startsWith("Audit")||n.startsWith("Recent"))continue;const r=n.split(/\s*[|│]\s*/);if(r.length>=3){e.push({key:e.length,timestamp:r[0]||"-",event:r[1]||"-",user:r[2]||"-",level:r[3]||"info",detail:r.slice(4).join(" ")||""});continue}const y=n.match(/^(\d{4}-\d{2}-\d{2}[\sT]\d{2}:\d{2}(?::\d{2})?)\s+(.+)/);if(y){const m=y[2],f=m.match(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i);e.push({key:e.length,timestamp:y[1],event:m.replace(/\b(INFO|WARN|WARNING|ERROR|CRITICAL)\b/i,"").trim().slice(0,80),user:"-",level:f?f[1].toLowerCase():"info",detail:""})}else n.length>3&&!n.match(/^\d+ event/i)&&e.push({key:e.length,timestamp:"-",event:n.slice(0,80),user:"-",level:"info",detail:""})}return e}function se(t){const e=V(t);if(e&&typeof e=="object"&&!Array.isArray(e)){const y=["#1677ff","#52c41a","#faad14","#ff4d4f"];return Object.entries(e).slice(0,4).map(([m,f],x)=>({label:m,value:typeof f=="number"?f:String(f),color:y[x%y.length]}))}const l=[],p=t.split(`
|
|
4
|
+
`),n=["#1677ff","#52c41a","#faad14","#ff4d4f"];let r=0;for(const y of p){const m=y.trim();if(!m||m.startsWith("─")||m.startsWith("Audit"))continue;const f=m.match(/^(.+?)\s*[:=]\s*(.+)$/);if(f){const x=f[1].trim(),L=f[2].trim(),N=L.match(/^(\d+)/);l.push({label:x,value:N?parseInt(N[1],10):L,color:n[r%n.length]}),r++}}return l.length===0&&l.push({label:"总事件数",value:A.value.length,color:"#1677ff"},{label:"状态",value:"就绪",color:"#52c41a"}),l}function V(t){try{const e=t.indexOf("[")!==-1?t.indexOf("["):t.indexOf("{");if(e===-1)return null;const l=t.lastIndexOf("]")!==-1?t.lastIndexOf("]")+1:t.lastIndexOf("}")+1;return JSON.parse(t.slice(e,l))}catch{return null}}function D(t,e){const l=V(t);return Array.isArray(l)?l.map((p,n)=>({key:n,...p})):e(t)}return fe(()=>{P()}),(t,e)=>{const l=u("a-button"),p=u("a-spin"),n=u("a-tag"),r=u("a-empty"),y=u("a-table"),m=u("a-tab-pane"),f=u("a-input"),x=u("a-form-item"),L=u("a-space"),N=u("a-form"),ne=u("a-alert"),F=u("a-card"),oe=u("a-statistic"),le=u("a-col"),ie=u("a-row"),re=u("a-tabs");return i(),d("div",null,[T("div",ye,[e[4]||(e[4]=T("div",null,[T("h2",{class:"page-title"},"权限管理"),T("p",{class:"page-sub"},"角色 / 权限检查 / 审计")],-1)),o(l,{type:"primary",ghost:"",loading:z.value,onClick:q},{icon:s(()=>[o(I(de))]),default:s(()=>[e[3]||(e[3]=h(" 刷新 ",-1))]),_:1},8,["loading"])]),o(re,{activeKey:O.value,"onUpdate:activeKey":e[2]||(e[2]=a=>O.value=a),type:"card",onChange:H},{default:s(()=>[o(m,{key:"roles"},{tab:s(()=>[o(I(pe)),e[5]||(e[5]=h(" 角色列表 ",-1))]),default:s(()=>[W.value?(i(),d("div",ve,[o(p,{size:"large"})])):(i(),b(y,{key:1,columns:Q,"data-source":S.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="name"?(i(),d("span",_e,_(c.name),1)):g("",!0),a.key==="description"?(i(),d("span",ge,_(c.description),1)):g("",!0),a.key==="permissions"?(i(),d(j,{key:2},[(i(!0),d(j,null,E((c.permissions||[]).slice(0,5),J=>(i(),b(n,{key:J,color:"blue",style:{"margin-bottom":"2px"}},{default:s(()=>[h(_(J),1)]),_:2},1024))),128)),(c.permissions||[]).length>5?(i(),b(n,{key:0,color:"default"},{default:s(()=>[h(" +"+_(c.permissions.length-5),1)]),_:2},1024)):g("",!0)],64)):g("",!0),a.key==="userCount"?(i(),b(n,{key:3,color:c.userCount>0?"green":"default"},{default:s(()=>[h(_(c.userCount??0),1)]),_:2},1032,["color"])):g("",!0)]),emptyText:s(()=>[o(r,{description:"暂无角色数据"})]),_:1},8,["data-source","pagination"]))]),_:1}),o(m,{key:"check"},{tab:s(()=>[o(I(K)),e[6]||(e[6]=h(" 权限检查 ",-1))]),default:s(()=>[o(F,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","max-width":"640px"}},{default:s(()=>[o(N,{"label-col":{span:5},"wrapper-col":{span:19}},{default:s(()=>[o(x,{label:"用户 ID",required:""},{default:s(()=>[o(f,{value:C.value,"onUpdate:value":e[0]||(e[0]=a=>C.value=a),placeholder:"输入用户 ID"},null,8,["value"])]),_:1}),o(x,{label:"权限",required:""},{default:s(()=>[o(f,{value:w.value,"onUpdate:value":e[1]||(e[1]=a=>w.value=a),placeholder:"note:read"},null,8,["value"])]),_:1}),o(x,{"wrapper-col":{offset:5,span:19}},{default:s(()=>[o(L,{wrap:""},{default:s(()=>[o(l,{type:"primary",loading:$.value,disabled:!C.value.trim()||!w.value.trim(),onClick:Z},{icon:s(()=>[o(I(K))]),default:s(()=>[e[7]||(e[7]=h(" 检查权限 ",-1))]),_:1},8,["loading","disabled"]),(i(),d(j,null,E(Y,a=>o(l,{key:a,size:"small",onClick:c=>w.value=a},{default:s(()=>[h(_(a),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1})]),_:1}),k.value!==null?(i(),d("div",he,[o(ne,{message:k.value.allowed?"权限允许":"权限拒绝",description:k.value.detail,type:k.value.allowed?"success":"error","show-icon":""},null,8,["message","description","type"])])):g("",!0)]),_:1})]),_:1}),o(m,{key:"audit"},{tab:s(()=>[o(I(me)),e[8]||(e[8]=h(" 审计日志 ",-1))]),default:s(()=>[o(ie,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[(i(!0),d(j,null,E(M.value,a=>(i(),b(le,{xs:12,sm:6,key:a.label},{default:s(()=>[o(F,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:s(()=>[o(oe,{title:a.label,value:a.value,"value-style":{color:a.color,fontSize:"20px"}},null,8,["title","value","value-style"])]),_:2},1024)]),_:2},1024))),128))]),_:1}),B.value?(i(),d("div",ke,[o(p,{size:"large"})])):(i(),b(y,{key:1,columns:ee,"data-source":A.value,pagination:{pageSize:20,showTotal:a=>`共 ${a} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"perm-row"},{bodyCell:s(({column:a,record:c})=>[a.key==="timestamp"?(i(),d("span",xe,_(c.timestamp),1)):g("",!0),a.key==="event"?(i(),d("span",be,_(c.event),1)):g("",!0),a.key==="user"?(i(),d("span",we,_(c.user),1)):g("",!0),a.key==="level"?(i(),b(n,{key:3,color:te(c.level)},{default:s(()=>[h(_(c.level),1)]),_:2},1032,["color"])):g("",!0),a.key==="detail"?(i(),d("span",Ce,_(c.detail),1)):g("",!0)]),emptyText:s(()=>[o(r,{description:"暂无审计日志"})]),_:1},8,["data-source","pagination"]))]),_:1})]),_:1},8,["activeKey"])])}}},Be=ce(Ie,[["__scopeId","data-v-71782e36"]]);export{Be as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{P as f}from"./index-U4Zd5IK6.js";import{i as c,j as l,p as g,d as p,a0 as m,l as C,w as v,a1 as x,n as P,c as h,V as R}from"./vendor-aH7YaPZi.js";function S(e){let{prefixCls:s,animation:t,transitionName:o}=e;return t?{name:`${s}-${t}`}:o?{name:o}:{}}const u=Symbol("PortalContextKey"),T=function(e){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{inTriggerContext:!0};g(u,{inTriggerContext:s.inTriggerContext,shouldRender:l(()=>{const{sPopupVisible:t,popupRef:o,forceRender:n,autoDestroy:r}=e||{};let i=!1;return(t||o||n)&&(i=!0),!t&&r&&(i=!1),i})})},y=()=>{T({},{inTriggerContext:!1});const e=c(u,{shouldRender:l(()=>!1),inTriggerContext:!1});return{shouldRender:l(()=>e.shouldRender.value||e.inTriggerContext===!1)}},U=p({compatConfig:{MODE:3},name:"Portal",inheritAttrs:!1,props:{getContainer:f.func.isRequired,didUpdate:Function},setup(e,s){let{slots:t}=s,o=!0,n;const{shouldRender:r}=y();function i(){r.value&&(n=e.getContainer())}m(()=>{o=!1,i()}),C(()=>{n||i()});const d=v(r,()=>{r.value&&!n&&(n=e.getContainer()),n&&d()});return x(()=>{P(()=>{var a;r.value&&((a=e.didUpdate)===null||a===void 0||a.call(e,e))})}),()=>{var a;return r.value?o?(a=t.default)===null||a===void 0?void 0:a.call(t):n?h(R,{to:n},t):null:null}}});export{U as P,S as g,T as u};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{u as V}from"./ws-BTS8ehTm.js";import{_ as A}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{a as k}from"./index-36fB-tdr.js";import{r as D,F as E}from"./icons-DEoqYzGZ.js";import{a as T,r as P,l as L,F as I,D as v,c as a,x as i,q as l,v as M,J as w,u as O,m as R,G as $,j as W}from"./vendor-aH7YaPZi.js";import"./index-BPzN5a2A.js";import"./useConfigInject-DIr4olCu.js";import"./transition-B3-w1SVL.js";import"./Keyframes-C7fCrnlS.js";import"./Portal-DXIqogG2.js";import"./index-U4Zd5IK6.js";const c=Object.freeze({rootPath:"",maxSizeMB:1e3,autoSync:!1,syncIntervalSeconds:300});function q(s){if(!s)return null;const e=s.trim();try{return JSON.parse(e)}catch{const o=e.match(/(\{[\s\S]*\}|\[[\s\S]*\])/);if(!o)return null;try{return JSON.parse(o[1])}catch{return null}}}function N(s){if(typeof s=="boolean")return s;const e=String(s).trim().toLowerCase();return e==="true"||e==="1"||e==="yes"||e==="on"}function B(s,e){if(typeof s=="number"&&Number.isFinite(s))return s;const o=parseFloat(s);return Number.isFinite(o)?o:e}function G(s){const e={...c};if(!s)return e;const o=s.trim();if(!o||/key not found/i.test(o))return e;const n=q(o);if(n&&typeof n=="object"&&!Array.isArray(n))return n.rootPath!==void 0&&(e.rootPath=String(n.rootPath||"")),n.maxSizeMB!==void 0&&(e.maxSizeMB=B(n.maxSizeMB,c.maxSizeMB)),n.autoSync!==void 0&&(e.autoSync=N(n.autoSync)),n.syncIntervalSeconds!==void 0&&(e.syncIntervalSeconds=B(n.syncIntervalSeconds,c.syncIntervalSeconds)),e;const r=o.split(`
|
|
2
|
+
`);for(const u of r){const m=u.trim().match(/^(?:project\.)?(rootPath|maxSizeMB|autoSync|syncIntervalSeconds)\s*[=:]\s*(.+)$/i);if(!m)continue;const b=m[1],g=m[2].trim();b==="rootPath"?e.rootPath=g:b==="maxSizeMB"?e.maxSizeMB=B(g,c.maxSizeMB):b==="autoSync"?e.autoSync=N(g):b==="syncIntervalSeconds"&&(e.syncIntervalSeconds=B(g,c.syncIntervalSeconds))}return e}function F(s,e){const o={};for(const n of Object.keys(c))s[n]!==e[n]&&(o[n]=e[n]);return o}const H={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},K={style:{color:"var(--text-primary)"}},Q={key:0,style:{color:"#faad14","font-size":"12px","margin-left":"8px"}},X={__name:"ProjectSettings",setup(s){const e=V(),o=P(!1),n=P(!1),r=T({...c}),u=P({...c}),h=W(()=>Object.keys(F(u.value,r)).length>0);async function m(){o.value=!0;try{const{output:d}=await e.execute("config get project",1e4),t=G(d);Object.assign(r,t),u.value={...t}}catch(d){/key not found/i.test(d.message)?(Object.assign(r,c),u.value={...c}):k.error("加载配置失败: "+d.message)}finally{o.value=!1}}function b(){Object.assign(r,u.value)}async function g(){const d=F(u.value,r),t=Object.keys(d);if(t.length===0){k.info("没有需要保存的修改");return}n.value=!0;let f=0,S=0;for(const _ of t){const p=d[_],j=String(p).replace(/"/g,'\\"'),z=`config set project.${_} "${j}"`;try{const{output:x,exitCode:C}=await e.execute(z,1e4);C!==0||/error|failed|失败/i.test(x)?(S++,k.error(`保存 ${_} 失败: ${x.slice(0,80)}`)):f++}catch(x){S++,k.error(`保存 ${_} 失败: ${x.message}`)}}n.value=!1,S===0?(k.success(`保存成功(${f} 项)`),u.value={...r}):f>0&&(k.warning(`部分保存成功:${f} 成功 / ${S} 失败`),await m())}return L(()=>{m()}),(d,t)=>{const f=l("a-button"),S=l("a-alert"),_=l("a-input"),p=l("a-form-item"),j=l("a-input-number"),z=l("a-switch"),x=l("a-space"),C=l("a-form"),J=l("a-spin"),U=l("a-card");return M(),I("div",null,[v("div",H,[t[5]||(t[5]=v("div",null,[v("h2",{class:"page-title"},"项目存储配置"),v("p",{class:"page-sub"},"根目录 / 配额 / 自动同步")],-1)),a(f,{loading:o.value,onClick:m},{icon:i(()=>[a(O(D))]),default:i(()=>[t[4]||(t[4]=w(" 刷新 ",-1))]),_:1},8,["loading"])]),a(S,{message:"仅 Web 模式",description:"目录选择器(原生文件对话框)仅在桌面端可用,本页面需手动输入路径。修改根目录后需重启桌面应用生效;web 端只影响后端配置文件。",type:"info","show-icon":"",closable:"",style:{"margin-bottom":"16px"}}),a(U,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{title:i(()=>[v("span",K,[a(O(E),{style:{"margin-right":"8px"}}),t[6]||(t[6]=w("项目存储 ",-1))])]),default:i(()=>[a(J,{spinning:o.value},{default:i(()=>[a(C,{"label-col":{span:6},"wrapper-col":{span:18},style:{"max-width":"720px"}},{default:i(()=>[a(p,{label:"项目根目录"},{extra:i(()=>[...t[7]||(t[7]=[v("span",{style:{color:"var(--text-muted)","font-size":"11px"}}," 需绝对路径;修改后重启桌面应用生效 ",-1)])]),default:i(()=>[a(_,{value:r.rootPath,"onUpdate:value":t[0]||(t[0]=y=>r.rootPath=y),placeholder:"项目文件存储的根目录绝对路径",disabled:n.value},null,8,["value","disabled"])]),_:1}),a(p,{label:"最大项目大小"},{default:i(()=>[a(j,{value:r.maxSizeMB,"onUpdate:value":t[1]||(t[1]=y=>r.maxSizeMB=y),min:100,max:1e4,step:100,"addon-after":"MB",style:{width:"220px"},disabled:n.value},null,8,["value","disabled"])]),_:1}),a(p,{label:"自动同步"},{default:i(()=>[a(z,{checked:r.autoSync,"onUpdate:checked":t[2]||(t[2]=y=>r.autoSync=y),disabled:n.value},null,8,["checked","disabled"]),t[8]||(t[8]=v("span",{style:{"margin-left":"12px",color:"var(--text-secondary)","font-size":"12px"}}," 自动同步项目到后端服务器 ",-1))]),_:1}),r.autoSync?(M(),R(p,{key:0,label:"同步间隔"},{default:i(()=>[a(j,{value:r.syncIntervalSeconds,"onUpdate:value":t[3]||(t[3]=y=>r.syncIntervalSeconds=y),min:60,max:3600,step:60,"addon-after":"秒",style:{width:"220px"},disabled:n.value},null,8,["value","disabled"])]),_:1})):$("",!0),a(p,{"wrapper-col":{offset:6,span:18}},{default:i(()=>[a(x,null,{default:i(()=>[a(f,{onClick:b,disabled:n.value||o.value},{default:i(()=>[...t[9]||(t[9]=[w(" 重置 ",-1)])]),_:1},8,["disabled"]),a(f,{type:"primary",loading:n.value,disabled:!h.value,onClick:g},{default:i(()=>[...t[10]||(t[10]=[w(" 保存配置 ",-1)])]),_:1},8,["loading","disabled"]),h.value?(M(),I("span",Q," 有未保存的修改 ")):$("",!0)]),_:1})]),_:1})]),_:1})]),_:1},8,["spinning"])]),_:1})])}}},ce=A(X,[["__scopeId","data-v-17603429"]]);export{ce as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[data-v-17603429] .ant-card-head{border-color:var(--border-color)!important;color:var(--text-primary)!important}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as
|
|
2
|
-
`);for(const m of i){const l=m.match(/^\s*(\S+)\s*[=:]\s*(.+)$/);l&&o.push({key:l[1].trim(),value:l[2].trim()})}M.value=o,L.value=o.length>0}async function P(){D.value=!0;try{const[a,o]=await Promise.all([w.execute("status",15e3),w.execute("config list",15e3)]);E(a.output),A(o.output)}catch(a){console.error("refresh failed:",a)}finally{D.value=!1}}async function F(){if(v.value){S.value=!0,f.value=null;try{const a=`init --template ${v.value} --yes`,{output:o,exitCode:i}=await w.execute(a,3e4);f.value={success:i===0,output:o},i===0&&await P()}catch(a){f.value={success:!1,output:`初始化失败: ${a.message}`}}finally{S.value=!1}}}async function T(){z.value=!0,x.value="";try{const{output:a}=await w.execute("doctor",3e4);x.value=a}catch(a){x.value=`诊断失败: ${a.message}`}finally{z.value=!1}}return
|
|
1
|
+
import{u as U}from"./ws-BTS8ehTm.js";import{_ as W}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{r as X,U as R,R as C,P as j,X as B}from"./icons-DEoqYzGZ.js";import{l as Q,F as u,D as n,c as e,x as t,m as h,G as _,r as g,q as d,a as Y,v as r,J as k,u as y,I as p,H as N,L as V,E as Z,K as ee}from"./vendor-aH7YaPZi.js";const te={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},oe={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},ae={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},se={key:0,style:{"margin-top":"6px",color:"var(--text-muted)","font-size":"11px"}},le={style:{"font-family":"monospace",color:"#ccc"}},re={style:{display:"flex","align-items":"flex-start",gap:"10px"}},ne={style:{flex:"1","min-width":"0"}},ie={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","font-family":"monospace","margin-bottom":"4px"}},ce={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},de={key:0,style:{"margin-top":"8px","text-align":"right"}},ue={style:{"margin-top":"16px",display:"flex","align-items":"center",gap:"12px"}},pe={key:0,style:{color:"var(--text-secondary)","font-size":"12px"}},me={style:{margin:"0","font-size":"12px","white-space":"pre-wrap","max-height":"200px","overflow-y":"auto"}},ve={key:0,style:{"text-align":"center",padding:"30px"}},fe={key:1},ge={style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px",color:"#aaa","font-size":"12px","max-height":"400px","overflow-y":"auto","white-space":"pre-wrap"}},_e={__name:"Projects",setup(ye){const w=U(),D=g(!1),S=g(!1),z=g(!1),v=g(""),x=g(""),f=g(null),L=g(!1),M=g([]),s=Y({running:!1,edition:"",llmProvider:"",llmModel:"",setupDone:!1,setupDate:""}),I=[{name:"code-project",description:"代码项目模板 — 代码审查、重构、单元测试生成",icon:j},{name:"medical-triage",description:"医疗分诊模板 — 症状分析、分诊建议、病历管理",icon:B},{name:"agriculture-expert",description:"农业专家模板 — 作物管理、病虫害识别、农事建议",icon:C},{name:"general-assistant",description:"通用助手模板 — 日常问答、文档处理、任务管理",icon:R},{name:"ai-media-creator",description:"AI 媒体创作模板 — 图文生成、视频脚本、内容编辑",icon:C},{name:"ai-doc-creator",description:"AI 文档创作模板 — 文档生成、格式转换、文档编辑",icon:j}];function E(a){s.running=a.includes("Desktop app running")||a.includes("Running");const o=a.match(/Edition:\s+(\S+)/i);o&&(s.edition=o[1]);const i=a.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(i)s.llmProvider=i[1],s.llmModel=i[2];else{const l=a.match(/LLM:\s+(\S+)/i);l&&(s.llmProvider=l[1])}s.setupDone=a.includes("Setup completed");const m=a.match(/Setup completed \(([^)]+)\)/i);if(m)try{s.setupDate=new Date(m[1]).toLocaleDateString("zh-CN")}catch{s.setupDate=""}}function A(a){const o=[],i=a.split(`
|
|
2
|
+
`);for(const m of i){const l=m.match(/^\s*(\S+)\s*[=:]\s*(.+)$/);l&&o.push({key:l[1].trim(),value:l[2].trim()})}M.value=o,L.value=o.length>0}async function P(){D.value=!0;try{const[a,o]=await Promise.all([w.execute("status",15e3),w.execute("config list",15e3)]);E(a.output),A(o.output)}catch(a){console.error("refresh failed:",a)}finally{D.value=!1}}async function F(){if(v.value){S.value=!0,f.value=null;try{const a=`init --template ${v.value} --yes`,{output:o,exitCode:i}=await w.execute(a,3e4);f.value={success:i===0,output:o},i===0&&await P()}catch(a){f.value={success:!1,output:`初始化失败: ${a.message}`}}finally{S.value=!1}}}async function T(){z.value=!0,x.value="";try{const{output:a}=await w.execute("doctor",3e4);x.value=a}catch(a){x.value=`诊断失败: ${a.message}`}finally{z.value=!1}}return Q(P),(a,o)=>{const i=d("a-button"),m=d("a-statistic"),l=d("a-card"),b=d("a-col"),O=d("a-row"),q=d("a-descriptions-item"),G=d("a-descriptions"),$=d("a-tag"),H=d("a-alert"),J=d("a-spin"),K=d("a-empty");return r(),u("div",null,[n("div",te,[o[2]||(o[2]=n("div",null,[n("h2",{class:"page-title"},"项目管理"),n("p",{class:"page-sub"},"初始化 / 状态 / 诊断")],-1)),e(i,{type:"primary",ghost:"",loading:D.value,onClick:P},{icon:t(()=>[e(y(X))]),default:t(()=>[o[1]||(o[1]=k(" 刷新 ",-1))]),_:1},8,["loading"])]),e(O,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[e(b,{xs:24,sm:12,lg:6},{default:t(()=>[e(l,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(m,{title:"系统状态",value:s.running?"运行中":"未运行","value-style":{color:s.running?"#52c41a":"#888",fontSize:"16px"}},{prefix:t(()=>[e(y(R))]),_:1},8,["value","value-style"]),s.edition?(r(),u("div",oe," 版本: "+p(s.edition),1)):_("",!0)]),_:1})]),_:1}),e(b,{xs:24,sm:12,lg:6},{default:t(()=>[e(l,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(m,{title:"LLM 提供商",value:s.llmProvider||"未配置","value-style":{color:s.llmProvider?"#1677ff":"#888",fontSize:"16px"}},{prefix:t(()=>[e(y(C))]),_:1},8,["value","value-style"]),s.llmModel?(r(),u("div",ae,p(s.llmModel),1)):_("",!0)]),_:1})]),_:1}),e(b,{xs:24,sm:12,lg:6},{default:t(()=>[e(l,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(m,{title:"初始化",value:s.setupDone?"已完成":"未完成","value-style":{color:s.setupDone?"#52c41a":"#faad14",fontSize:"16px"}},{prefix:t(()=>[e(y(R))]),_:1},8,["value","value-style"]),s.setupDate?(r(),u("div",se,p(s.setupDate),1)):_("",!0)]),_:1})]),_:1}),e(b,{xs:24,sm:12,lg:6},{default:t(()=>[e(l,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[e(m,{title:"项目配置",value:L.value?"已加载":"未加载","value-style":{color:L.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:t(()=>[e(y(j))]),_:1},8,["value","value-style"])]),_:1})]),_:1})]),_:1}),M.value.length?(r(),h(l,{key:0,title:"项目配置",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:t(()=>[e(G,{column:{xs:1,sm:2,lg:3},bordered:"",size:"small"},{default:t(()=>[(r(!0),u(N,null,V(M.value,c=>(r(),h(q,{key:c.key,label:c.key},{default:t(()=>[n("span",le,p(c.value),1)]),_:2},1032,["label"]))),128))]),_:1})]),_:1})):_("",!0),e(l,{title:"项目初始化",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:t(()=>[e($,{color:"blue"},{default:t(()=>[k(p(I.length)+" 个模板",1)]),_:1})]),default:t(()=>[e(O,{gutter:[16,16]},{default:t(()=>[(r(),u(N,null,V(I,c=>e(b,{key:c.name,xs:24,sm:12,lg:8},{default:t(()=>[e(l,{size:"small",hoverable:"",class:Z(["template-card",{"template-selected":v.value===c.name}]),style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"pointer"},onClick:xe=>v.value=c.name},{default:t(()=>[n("div",re,[(r(),h(ee(c.icon),{style:{"font-size":"24px",color:"#1677ff","flex-shrink":"0","margin-top":"2px"}})),n("div",ne,[n("div",ie,p(c.name),1),n("div",ce,p(c.description),1)])]),v.value===c.name?(r(),u("div",de,[e($,{color:"green"},{default:t(()=>[...o[3]||(o[3]=[k("已选择",-1)])]),_:1})])):_("",!0)]),_:2},1032,["class","onClick"])]),_:2},1024)),64))]),_:1}),n("div",ue,[e(i,{type:"primary",loading:S.value,disabled:!v.value,onClick:F},{icon:t(()=>[e(y(C))]),default:t(()=>[o[4]||(o[4]=k(" 初始化 ",-1))]),_:1},8,["loading","disabled"]),v.value?(r(),u("span",pe," 模板: "+p(v.value),1)):_("",!0)]),f.value?(r(),h(H,{key:0,message:f.value.success?"初始化成功":"初始化失败",type:f.value.success?"success":"error","show-icon":"",closable:"",style:{"margin-top":"16px"},onClose:o[0]||(o[0]=c=>f.value=null)},{description:t(()=>[n("pre",me,p(f.value.output),1)]),_:1},8,["message","type"])):_("",!0)]),_:1}),e(l,{title:"环境诊断",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:t(()=>[e(i,{loading:z.value,onClick:T,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:t(()=>[e(y(B))]),default:t(()=>[o[5]||(o[5]=k(" 运行诊断 ",-1))]),_:1},8,["loading"])]),default:t(()=>[z.value?(r(),u("div",ve,[e(J),o[6]||(o[6]=n("div",{style:{color:"var(--text-muted)","margin-top":"8px"}},"正在诊断环境...",-1))])):x.value?(r(),u("div",fe,[n("pre",ge,p(x.value),1)])):(r(),h(K,{key:2,description:"点击「运行诊断」检查环境状态"}))]),_:1})])}}},ze=W(_e,[["__scopeId","data-v-c64ad08b"]]);export{ze as default};
|