chainlesschain 0.46.0 → 0.47.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 +16 -5
- package/bin/chainlesschain.js +0 -0
- package/package.json +1 -1
- package/src/assets/web-panel/.build-hash +1 -1
- package/src/assets/web-panel/assets/{Analytics-C1AnPdMx.js → Analytics-DgypYeUB.js} +2 -2
- package/src/assets/web-panel/assets/AppLayout-DQyDwGut.css +1 -0
- package/src/assets/web-panel/assets/AppLayout-ZHpCFO_p.js +1 -0
- package/src/assets/web-panel/assets/{Backup-D31iZX3l.js → Backup-Ba9UybpT.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-DiXJ3TuK.js → Chat-BwXskT21.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-B8ZDdRm4.js → Cowork-UmOe7qvE.js} +1 -1
- package/src/assets/web-panel/assets/{Cron-DBt1ueXh.js → Cron-JHS-rc-4.js} +2 -2
- package/src/assets/web-panel/assets/Dashboard-BS-tzGNj.css +1 -0
- package/src/assets/web-panel/assets/{Dashboard-jt6XPIjB.js → Dashboard-CpWz2g0n.js} +2 -2
- package/src/assets/web-panel/assets/{Git-hwQ1oZHj.js → Git-CSYO0_zk.js} +2 -2
- package/src/assets/web-panel/assets/{Logs-4D9p6PRM.js → Logs-Hxw_K0km.js} +2 -2
- package/src/assets/web-panel/assets/{McpTools-CyAUjbbs.js → McpTools-DIE75TrB.js} +2 -2
- package/src/assets/web-panel/assets/{Memory-BMqOR7S-.js → Memory-C4KVnLlp.js} +2 -2
- package/src/assets/web-panel/assets/{Notes-Cmas8i4E.js → Notes-DuzrHMAk.js} +2 -2
- package/src/assets/web-panel/assets/{Organization-DnSa58Tl.js → Organization-DTq6uF82.js} +4 -4
- package/src/assets/web-panel/assets/{P2P-BxksIBWs.js → P2P-C0hjlhsR.js} +2 -2
- package/src/assets/web-panel/assets/{Permissions-Bq5Qn2s3.js → Permissions-Ec0NH-xC.js} +4 -4
- package/src/assets/web-panel/assets/{Projects-B7EM0uPg.js → Projects-U8D0asCS.js} +2 -2
- package/src/assets/web-panel/assets/{Providers-DAwgG5KV.js → Providers-BngtTLvJ.js} +2 -2
- package/src/assets/web-panel/assets/{RssFeed-HSZoRXvS.js → RssFeed-B9NbwCKM.js} +3 -3
- package/src/assets/web-panel/assets/{Security-Cz17qBny.js → Security-BL5Rkr1T.js} +3 -3
- package/src/assets/web-panel/assets/{Services-D2EsLq-v.js → Services-D4MJzLld.js} +2 -2
- package/src/assets/web-panel/assets/{Skills-C9v-f3vZ.js → Skills-CQTOMDwF.js} +1 -1
- package/src/assets/web-panel/assets/{Tasks-yMEcU0n7.js → Tasks-DepbJMnL.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-l7SvlKuB.js → Templates-C24PVZPu.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BHWhLWn9.js → Wallet-PQoSpN_P.js} +3 -3
- package/src/assets/web-panel/assets/{WebAuthn-kWhFYaUK.js → WebAuthn-BcuyQ4Lr.js} +4 -4
- package/src/assets/web-panel/assets/WorkflowEditor-C-SvXbHW.js +1 -0
- package/src/assets/web-panel/assets/WorkflowEditor-D5bX6woe.css +1 -0
- package/src/assets/web-panel/assets/{antd-D6h4fDFf.js → antd-DEjZPGMj.js} +82 -82
- package/src/assets/web-panel/assets/index-CLmYSvow.js +2 -0
- package/src/assets/web-panel/assets/{markdown-BZsB-Dsv.js → markdown-CusdXFxb.js} +1 -1
- package/src/assets/web-panel/index.html +2 -2
- package/src/commands/cowork.js +213 -41
- package/src/gateways/ws/action-protocol.js +140 -0
- package/src/gateways/ws/message-dispatcher.js +5 -0
- package/src/gateways/ws/ws-server.js +21 -0
- package/src/lib/cowork-evomap-adapter.js +121 -0
- package/src/lib/cowork-observe-html.js +108 -0
- package/src/lib/cowork-observe.js +160 -0
- package/src/lib/cowork-share.js +114 -10
- package/src/lib/provider-options.js +133 -0
- package/src/lib/skill-loader.js +65 -0
- package/src/lib/sub-agent-context.js +16 -4
- package/src/lib/sub-agent-profiles.js +164 -0
- package/src/lib/todo-manager.js +108 -0
- package/src/lib/turn-context.js +95 -0
- package/src/lib/web-fetch.js +224 -0
- package/src/repl/agent-repl.js +4 -0
- package/src/runtime/agent-core.js +135 -3
- package/src/runtime/coding-agent-contract-shared.cjs +131 -0
- package/src/runtime/coding-agent-policy.cjs +30 -0
- package/src/assets/web-panel/assets/AppLayout-BnvARObz.js +0 -1
- package/src/assets/web-panel/assets/AppLayout-cxfKLu-m.css +0 -1
- package/src/assets/web-panel/assets/Dashboard-CKeMmCoT.css +0 -1
- package/src/assets/web-panel/assets/index-C1SPm_5l.js +0 -2
package/README.md
CHANGED
|
@@ -198,7 +198,7 @@ chainlesschain a --model llama3 # Short alias
|
|
|
198
198
|
chainlesschain agent --provider openai --api-key sk-...
|
|
199
199
|
```
|
|
200
200
|
|
|
201
|
-
Built-in tools (
|
|
201
|
+
Built-in tools (16): `read_file`, `write_file`, `edit_file`, `edit_file_hashed`, `run_shell`, `git`, `search_files`, `search_sessions`, `list_dir`, `run_skill`, `list_skills`, `run_code`, `spawn_sub_agent`, `web_fetch`, `todo_write`, `ask_user_question`
|
|
202
202
|
|
|
203
203
|
Agent slash commands: `/plan` (plan mode), `/plan interactive <request>` (LLM-driven planning with skill recommendations), `/model`, `/provider`, `/clear`, `/compact`, `/task`, `/session`, `/stats`, `/auto` (autonomous agent), `/cowork` (multi-agent collaboration), `/sub-agents` (show active/completed sub-agents)
|
|
204
204
|
|
|
@@ -623,11 +623,11 @@ chainlesschain cowork analyze <path> # Code analysis (style/kn
|
|
|
623
623
|
chainlesschain cowork status # Show cowork status
|
|
624
624
|
```
|
|
625
625
|
|
|
626
|
-
### Web Cowork: Daily Task Collaboration (v0.
|
|
626
|
+
### Web Cowork: Daily Task Collaboration (v0.46.0)
|
|
627
627
|
|
|
628
|
-
Web-based daily task collaboration via the `/#/cowork` page. Powered by SubAgentContext + agentLoop, with
|
|
628
|
+
Web-based daily task collaboration via the `/#/cowork` page. Powered by SubAgentContext + agentLoop, with 11 task templates covering common daily tasks. Prioritizes open-source CLI tools (ffmpeg, pandoc, ImageMagick, Tesseract, etc.) via cli-anything bridge, with automatic tool installation (winget > choco > pip > npm).
|
|
629
629
|
|
|
630
|
-
**
|
|
630
|
+
**11 Task Templates**:
|
|
631
631
|
|
|
632
632
|
| Template ID | Name | Category | Accepts Files |
|
|
633
633
|
| ----------------- | ------------ | --------- | ------------- |
|
|
@@ -637,6 +637,7 @@ Web-based daily task collaboration via the `/#/cowork` page. Powered by SubAgent
|
|
|
637
637
|
| `web-research` | 网络调研 | research | ❌ |
|
|
638
638
|
| `image-process` | 图片处理 | image | ✅ |
|
|
639
639
|
| `code-helper` | 代码辅助 | code | ✅ |
|
|
640
|
+
| `code_review` | 代码评审 | code | ✅ |
|
|
640
641
|
| `system-admin` | 系统管理 | system | ❌ |
|
|
641
642
|
| `file-organize` | 文件整理 | file | ✅ |
|
|
642
643
|
| `network-tools` | 网络工具 | network | ❌ |
|
|
@@ -652,7 +653,17 @@ Web-based daily task collaboration via the `/#/cowork` page. Powered by SubAgent
|
|
|
652
653
|
← { type: "cowork:done", taskId, status, templateName, summary, artifacts, toolsUsed, iterationCount }
|
|
653
654
|
```
|
|
654
655
|
|
|
655
|
-
**Key files**: `src/lib/cowork-task-templates.js` (
|
|
656
|
+
**Key files**: `src/lib/cowork-task-templates.js` (11 templates), `src/lib/cowork-task-runner.js` (pipeline), `src/gateways/ws/action-protocol.js` (WS handler). **Tests**: 79+ (57 unit + 11 integration + 11 E2E).
|
|
657
|
+
|
|
658
|
+
### Cowork Workflow Editor (v0.47.0, N1)
|
|
659
|
+
|
|
660
|
+
Form-based Cowork Workflow editor at `/#/workflow` in the Web Panel. Create, edit, run, and export multi-step Cowork DAG workflows — each step invokes a Cowork task with placeholder substitution (`${step.<id>.summary}`) from upstream step outputs. Client-side DFS cycle detection mirrors the backend `validateWorkflow` guard.
|
|
661
|
+
|
|
662
|
+
**WS protocol**: `workflow-list` / `workflow-get` / `workflow-save` / `workflow-remove` / `workflow-run` (streams `workflow:started` / `step-start` / `step-complete` / `workflow:done`).
|
|
663
|
+
|
|
664
|
+
**Key files**: `src/gateways/ws/action-protocol.js` (5 handlers), `src/lib/cowork-workflow.js` (CRUD + `executeWorkflow`), `packages/web-panel/src/stores/workflow.js` (Pinia store + `validateLocal`), `packages/web-panel/src/views/WorkflowEditor.vue`. **Tests**: 39 (10 backend unit + 16 frontend store unit + 5 integration + 8 E2E).
|
|
665
|
+
|
|
666
|
+
> Vue Flow visual canvas (drag-to-connect, branch rendering) is planned as M2.
|
|
656
667
|
|
|
657
668
|
---
|
|
658
669
|
|
package/bin/chainlesschain.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3a319aa5f15160334711532d0d40af269bc3695425aa53fb80312c3cae4e1428
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{u as ie}from"./ws-Dma34ig_.js";import{_ as ue}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{
|
|
1
|
+
import{u as ie}from"./ws-Dma34ig_.js";import{_ as ue}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{q as ce,n as de,T as G,a2 as pe,a3 as ve,a4 as H,N as C}from"./antd-DEjZPGMj.js";import{w as fe,o as me,a3 as m,a1 as S,k as o,Z as s,f as y,X as f,r as X,Y as r,G as i,u as b,W as I,a5 as x,a4 as g}from"./vendor-CN0Iv_qZ.js";const ke={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},ye={style:{display:"flex","align-items":"center",gap:"12px"}},_e={key:0,style:{"text-align":"center",padding:"60px"}},xe={key:1,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},ge={key:2,style:{color:"#faad14"}},Te={key:3,style:{color:"var(--text-secondary)"}},be={key:0,style:{"text-align":"center",padding:"60px"}},he={key:0,style:{color:"var(--text-secondary)","font-size":"12px","font-family":"monospace"}},we={key:2,style:{color:"#e0e0e0","font-family":"monospace","font-size":"12px"}},Ce={key:3,style:{color:"#faad14"}},Se={key:4,style:{color:"var(--text-secondary)"}},Ie={key:0,style:{"text-align":"center",padding:"40px"}},ze={__name:"Analytics",setup(Re){const h=ie(),z=y("all"),O=y(!1),M=y(!1),N=y(!1),B=y(!1),D=y(!1),A=y(!1),L=y(20),p=X({totalCalls:0,totalTokens:0,totalCost:0,avgResponseTime:0}),R=y([]),j=y([]),v=X({entries:0,hits:0,tokensSaved:0,expired:0}),Y=[{title:"Provider",key:"provider",dataIndex:"provider",width:"120px",sorter:(e,t)=>(e.provider||"").localeCompare(t.provider||"")},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0,sorter:(e,t)=>(e.model||"").localeCompare(t.model||"")},{title:"调用次数",key:"calls",dataIndex:"calls",width:"100px",sorter:(e,t)=>(e.calls||0)-(t.calls||0)},{title:"Input Tokens",key:"inputTokens",dataIndex:"inputTokens",width:"120px",sorter:(e,t)=>(e.inputTokens||0)-(t.inputTokens||0)},{title:"Output Tokens",key:"outputTokens",dataIndex:"outputTokens",width:"130px",sorter:(e,t)=>(e.outputTokens||0)-(t.outputTokens||0)},{title:"Total Tokens",key:"totalTokens",dataIndex:"totalTokens",width:"120px",sorter:(e,t)=>(e.totalTokens||0)-(t.totalTokens||0)},{title:"费用 (USD)",key:"cost",dataIndex:"cost",width:"110px",sorter:(e,t)=>(e.cost||0)-(t.cost||0)},{title:"平均响应",key:"avgResponseTime",dataIndex:"avgResponseTime",width:"110px",sorter:(e,t)=>(e.avgResponseTime||0)-(t.avgResponseTime||0)}],Z=[{title:"时间",key:"timestamp",dataIndex:"timestamp",width:"180px"},{title:"Provider",key:"provider",dataIndex:"provider",width:"110px"},{title:"Model",key:"model",dataIndex:"model",ellipsis:!0},{title:"Input",key:"inputTokens",dataIndex:"inputTokens",width:"90px"},{title:"Output",key:"outputTokens",dataIndex:"outputTokens",width:"90px"},{title:"费用",key:"cost",dataIndex:"cost",width:"100px"},{title:"响应时间",key:"responseTime",dataIndex:"responseTime",width:"100px"}];function T(e){return(e||"").replace(/,/g,"")}function w(e){try{const t=(e||"").trim(),a=t.search(/[{[]/);return a>=0?JSON.parse(t.slice(a)):null}catch{return null}}function K(e){const t=(e||"").split(`
|
|
2
2
|
`);for(const a of t){const l=a.trim(),_=l.match(/total\s*calls?\s*[::]\s*([\d,]+)/i);_&&(p.totalCalls=parseInt(T(_[1]),10)||0);const u=l.match(/total\s*tokens?\s*[::]\s*([\d,]+)/i);u&&(p.totalTokens=parseInt(T(u[1]),10)||0);const d=l.match(/cost\s*[::]\s*\$?([\d,.]+)/i);d&&(p.totalCost=parseFloat(T(d[1]))||0);const c=l.match(/(?:avg|average)\s*(?:response\s*)?time\s*[::]\s*([\d,.]+)/i);c&&(p.avgResponseTime=parseFloat(T(c[1]))||0)}}function Q(e){p.totalCalls=e.totalCalls??e.total_calls??e.calls??0,p.totalTokens=e.totalTokens??e.total_tokens??e.tokens??0,p.totalCost=e.totalCost??e.total_cost??e.cost??0,p.avgResponseTime=e.avgResponseTime??e.avg_response_time??e.avgTime??0}function ee(e){return(Array.isArray(e)?e:e.breakdown||e.providers||e.rows||[]).map((a,l)=>({key:l,provider:a.provider||"-",model:a.model||"-",calls:a.calls||a.count||0,inputTokens:a.inputTokens??a.input_tokens??0,outputTokens:a.outputTokens??a.output_tokens??0,totalTokens:a.totalTokens??a.total_tokens??(a.inputTokens??0)+(a.outputTokens??0),cost:a.cost??a.total_cost??0,avgResponseTime:a.avgResponseTime??a.avg_response_time??0}))}function te(e){return(Array.isArray(e)?e:e.recent||e.records||e.rows||[]).map((a,l)=>({key:l,timestamp:a.timestamp||a.time||a.created_at||"-",provider:a.provider||"-",model:a.model||"-",inputTokens:a.inputTokens??a.input_tokens??0,outputTokens:a.outputTokens??a.output_tokens??0,cost:a.cost??0,responseTime:a.responseTime??a.response_time??0}))}function oe(e){v.entries=e.entries??e.count??e.size??0,v.hits=e.hits??e.cacheHits??e.cache_hits??0,v.tokensSaved=e.tokensSaved??e.tokens_saved??0,v.expired=e.expired??e.expiredCount??e.expired_count??0}function se(e){const t=(e||"").split(`
|
|
3
|
-
`);for(const a of t){const l=a.trim(),_=l.match(/entries?\s*[::]\s*([\d,]+)/i);_&&(v.entries=parseInt(T(_[1]),10)||0);const u=l.match(/hits?\s*[::]\s*([\d,]+)/i);u&&(v.hits=parseInt(T(u[1]),10)||0);const d=l.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);d&&(v.tokensSaved=parseInt(T(d[1]),10)||0);const c=l.match(/expired?\s*[::]\s*([\d,]+)/i);c&&(v.expired=parseInt(T(c[1]),10)||0)}}async function P(){O.value=!0;try{const{output:e}=await h.execute(`tokens show --period ${z.value} --json`,15e3),t=w(e);t?Q(t):K(e)}catch(e){console.error("loadSummary failed:",e)}finally{O.value=!1}}async function ae(){M.value=!0;try{const{output:e}=await h.execute("tokens breakdown --json",15e3),t=w(e);t?R.value=ee(t):R.value=[]}catch(e){console.error("loadBreakdown failed:",e),R.value=[]}finally{M.value=!1}}async function F(){N.value=!0;try{const{output:e}=await h.execute(`tokens recent --limit ${
|
|
3
|
+
`);for(const a of t){const l=a.trim(),_=l.match(/entries?\s*[::]\s*([\d,]+)/i);_&&(v.entries=parseInt(T(_[1]),10)||0);const u=l.match(/hits?\s*[::]\s*([\d,]+)/i);u&&(v.hits=parseInt(T(u[1]),10)||0);const d=l.match(/(?:tokens?\s*)?saved\s*[::]\s*([\d,]+)/i);d&&(v.tokensSaved=parseInt(T(d[1]),10)||0);const c=l.match(/expired?\s*[::]\s*([\d,]+)/i);c&&(v.expired=parseInt(T(c[1]),10)||0)}}async function P(){O.value=!0;try{const{output:e}=await h.execute(`tokens show --period ${z.value} --json`,15e3),t=w(e);t?Q(t):K(e)}catch(e){console.error("loadSummary failed:",e)}finally{O.value=!1}}async function ae(){M.value=!0;try{const{output:e}=await h.execute("tokens breakdown --json",15e3),t=w(e);t?R.value=ee(t):R.value=[]}catch(e){console.error("loadBreakdown failed:",e),R.value=[]}finally{M.value=!1}}async function F(){N.value=!0;try{const{output:e}=await h.execute(`tokens recent --limit ${L.value} --json`,15e3),t=w(e);t?j.value=te(t):j.value=[]}catch(e){console.error("loadRecent failed:",e),j.value=[]}finally{N.value=!1}}async function $(){B.value=!0;try{const{output:e}=await h.execute("tokens cache --json",15e3),t=w(e);t?oe(t):se(e)}catch(e){console.error("loadCache failed:",e)}finally{B.value=!1}}async function ne(){D.value=!0;try{const{output:e}=await h.execute("tokens cache --clear --json",15e3),t=w(e);t&&t.error?C.error("清理缓存失败: "+t.error):(C.success("缓存已清理"),await $())}catch(e){C.error("清理缓存失败: "+e.message)}finally{D.value=!1}}async function le(){A.value=!0;try{const{output:e}=await h.execute("tokens cache --cleanup --json",15e3),t=w(e);t&&t.error?C.error("清理过期失败: "+t.error):(C.success("过期缓存已清理"),await $())}catch(e){C.error("清理过期失败: "+e.message)}finally{A.value=!1}}async function U(){await Promise.all([P(),ae(),F(),$()])}return fe(z,()=>{P()}),me(U),(e,t)=>{const a=f("a-radio-button"),l=f("a-radio-group"),_=f("a-button"),u=f("a-statistic"),d=f("a-card"),c=f("a-col"),V=f("a-row"),J=f("a-spin"),W=f("a-tag"),q=f("a-empty"),E=f("a-table"),re=f("a-space");return r(),m("div",null,[S("div",ke,[t[7]||(t[7]=S("div",null,[S("h2",{class:"page-title"},"使用分析"),S("p",{class:"page-sub"},"Token 用量 / 成本 / 缓存")],-1)),S("div",ye,[o(l,{value:z.value,"onUpdate:value":t[0]||(t[0]=n=>z.value=n),"button-style":"solid",size:"small"},{default:s(()=>[o(a,{value:"today"},{default:s(()=>[...t[2]||(t[2]=[i("今天",-1)])]),_:1}),o(a,{value:"week"},{default:s(()=>[...t[3]||(t[3]=[i("本周",-1)])]),_:1}),o(a,{value:"month"},{default:s(()=>[...t[4]||(t[4]=[i("本月",-1)])]),_:1}),o(a,{value:"all"},{default:s(()=>[...t[5]||(t[5]=[i("全部",-1)])]),_:1})]),_:1},8,["value"]),o(_,{type:"primary",ghost:"",loading:O.value,onClick:U},{icon:s(()=>[o(b(ce))]),default:s(()=>[t[6]||(t[6]=i(" 刷新 ",-1))]),_:1},8,["loading"])])]),o(V,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:s(()=>[o(c,{xs:24,sm:12,lg:6},{default:s(()=>[o(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(u,{title:"总调用次数",value:p.totalCalls,"value-style":{color:"#1677ff",fontSize:"20px"}},{prefix:s(()=>[o(b(de))]),suffix:s(()=>[...t[8]||(t[8]=[i("次",-1)])]),_:1},8,["value"])]),_:1})]),_:1}),o(c,{xs:24,sm:12,lg:6},{default:s(()=>[o(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(u,{title:"总 Token 数",value:p.totalTokens,"value-style":{color:"#52c41a",fontSize:"20px"}},{prefix:s(()=>[o(b(G))]),_:1},8,["value"])]),_:1})]),_:1}),o(c,{xs:24,sm:12,lg:6},{default:s(()=>[o(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(u,{title:"总费用",value:p.totalCost,precision:4,"value-style":{color:"#faad14",fontSize:"20px"}},{prefix:s(()=>[o(b(pe))]),suffix:s(()=>[...t[9]||(t[9]=[i("USD",-1)])]),_:1},8,["value"])]),_:1})]),_:1}),o(c,{xs:24,sm:12,lg:6},{default:s(()=>[o(d,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:s(()=>[o(u,{title:"平均响应时间",value:p.avgResponseTime,"value-style":{color:"#722ed1",fontSize:"20px"}},{prefix:s(()=>[o(b(G))]),suffix:s(()=>[...t[10]||(t[10]=[i("ms",-1)])]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),o(d,{title:"Provider 分布",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{default:s(()=>[M.value?(r(),m("div",_e,[o(J,{size:"large"})])):(r(),I(E,{key:1,columns:Y,"data-source":R.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:s(({column:n,record:k})=>[n.key==="provider"?(r(),I(W,{key:0,color:"blue"},{default:s(()=>[i(x(k.provider),1)]),_:2},1024)):g("",!0),n.key==="model"?(r(),m("span",xe,x(k.model),1)):g("",!0),n.key==="cost"?(r(),m("span",ge,"$"+x((k.cost||0).toFixed(4)),1)):g("",!0),n.key==="avgResponseTime"?(r(),m("span",Te,x(k.avgResponseTime||0)+" ms",1)):g("",!0)]),emptyText:s(()=>[o(q,{description:"暂无调用记录"})]),_:1},8,["data-source","pagination"]))]),_:1}),o(d,{title:"最近调用记录",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:s(()=>[o(l,{value:L.value,"onUpdate:value":t[1]||(t[1]=n=>L.value=n),size:"small",onChange:F},{default:s(()=>[o(a,{value:10},{default:s(()=>[...t[11]||(t[11]=[i("10",-1)])]),_:1}),o(a,{value:20},{default:s(()=>[...t[12]||(t[12]=[i("20",-1)])]),_:1}),o(a,{value:50},{default:s(()=>[...t[13]||(t[13]=[i("50",-1)])]),_:1})]),_:1},8,["value"])]),default:s(()=>[N.value?(r(),m("div",be,[o(J,{size:"large"})])):(r(),I(E,{key:1,columns:Z,"data-source":j.value,pagination:{pageSize:20,showTotal:n=>`共 ${n} 条`},size:"small",style:{background:"var(--bg-card)"},"row-class-name":()=>"analytics-row"},{bodyCell:s(({column:n,record:k})=>[n.key==="timestamp"?(r(),m("span",he,x(k.timestamp),1)):g("",!0),n.key==="provider"?(r(),I(W,{key:1,color:"blue"},{default:s(()=>[i(x(k.provider),1)]),_:2},1024)):g("",!0),n.key==="model"?(r(),m("span",we,x(k.model),1)):g("",!0),n.key==="cost"?(r(),m("span",Ce,"$"+x((k.cost||0).toFixed(4)),1)):g("",!0),n.key==="responseTime"?(r(),m("span",Se,x(k.responseTime||0)+" ms",1)):g("",!0)]),emptyText:s(()=>[o(q,{description:"暂无调用记录"})]),_:1},8,["data-source","pagination"]))]),_:1}),o(d,{title:"缓存状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:s(()=>[o(re,null,{default:s(()=>[o(_,{size:"small",loading:A.value,onClick:le,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[o(b(H))]),default:s(()=>[t[14]||(t[14]=i(" 清理过期 ",-1))]),_:1},8,["loading"]),o(_,{size:"small",danger:"",loading:D.value,onClick:ne,style:{"border-color":"var(--border-color)"}},{icon:s(()=>[o(b(H))]),default:s(()=>[t[15]||(t[15]=i(" 清理缓存 ",-1))]),_:1},8,["loading"])]),_:1})]),default:s(()=>[B.value?(r(),m("div",Ie,[o(J)])):(r(),I(V,{key:1,gutter:[16,16]},{default:s(()=>[o(c,{xs:12,sm:6},{default:s(()=>[o(u,{title:"缓存条目",value:v.entries,"value-style":{color:"#1677ff",fontSize:"18px"}},{prefix:s(()=>[o(b(ve))]),_:1},8,["value"])]),_:1}),o(c,{xs:12,sm:6},{default:s(()=>[o(u,{title:"命中次数",value:v.hits,"value-style":{color:"#52c41a",fontSize:"18px"}},null,8,["value"])]),_:1}),o(c,{xs:12,sm:6},{default:s(()=>[o(u,{title:"节省 Token",value:v.tokensSaved,"value-style":{color:"#faad14",fontSize:"18px"}},null,8,["value"])]),_:1}),o(c,{xs:12,sm:6},{default:s(()=>[o(u,{title:"已过期",value:v.expired,"value-style":{color:"#ff4d4f",fontSize:"18px"}},null,8,["value"])]),_:1})]),_:1}))]),_:1})])}}},Be=ue(ze,[["__scopeId","data-v-92f257d5"]]);export{Be as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.app-root[data-v-0f2124da]{min-height:100vh;background:var(--bg-base)}.sidebar[data-v-0f2124da]{background:var(--bg-sidebar)!important;border-right:1px solid var(--border-color);transition:background .25s}[data-v-0f2124da] .ant-layout-sider-children{display:flex;flex-direction:column;overflow:hidden}.main-area[data-v-0f2124da]{background:var(--bg-base)}.logo[data-v-0f2124da]{height:52px;display:flex;align-items:center;padding:0 18px;gap:10px;border-bottom:1px solid var(--border-color);overflow:hidden;white-space:nowrap;flex-shrink:0}.logo.collapsed[data-v-0f2124da]{padding:0;justify-content:center}.logo-icon[data-v-0f2124da]{font-size:20px;flex-shrink:0}.logo-text[data-v-0f2124da]{color:var(--logo-text);font-weight:700;font-size:14px;letter-spacing:.01em}.mode-banner[data-v-0f2124da]{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:8px 8px 4px;border-radius:7px;overflow:hidden}.mode-banner.project[data-v-0f2124da]{background:#1677ff1a;border:1px solid rgba(22,119,255,.2)}.mode-banner.global[data-v-0f2124da]{background:#722ed11a;border:1px solid rgba(114,46,209,.2)}.banner-icon[data-v-0f2124da]{font-size:13px;flex-shrink:0;color:#1677ff}.mode-banner.global .banner-icon[data-v-0f2124da]{color:#722ed1}.banner-info[data-v-0f2124da]{flex:1;min-width:0}.banner-name[data-v-0f2124da]{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub[data-v-0f2124da]{font-size:10px;color:#1677ff;margin-top:1px}.mode-banner.global .banner-name[data-v-0f2124da]{color:#c084fc}.mode-icon-sm[data-v-0f2124da]{display:flex;justify-content:center;padding:8px 0;font-size:14px}.side-menu[data-v-0f2124da]{border:none!important;margin-top:2px;-webkit-user-select:none;user-select:none;background:transparent!important;flex:1;overflow-y:auto;overflow-x:hidden}.group-label[data-v-0f2124da]{color:var(--group-title);font-size:10px;font-weight:700;letter-spacing:.12em;padding-left:6px}[data-v-0f2124da] .ant-menu-item-group-title{padding:8px 16px 2px!important}[data-v-0f2124da] .ant-menu-item{height:38px!important;line-height:38px!important;margin:1px 4px!important;border-radius:6px!important}.divider-sm[data-v-0f2124da]{margin:4px 0!important}.sidebar-footer[data-v-0f2124da]{flex-shrink:0;padding:8px 18px;display:flex;align-items:center;gap:8px;border-top:1px solid var(--border-color)}.sidebar-footer.collapsed[data-v-0f2124da]{justify-content:center;padding:8px 0}.footer-text[data-v-0f2124da]{color:var(--text-secondary);font-size:11px}.app-header[data-v-0f2124da]{background:var(--bg-header)!important;padding:0 20px!important;border-bottom:1px solid var(--border-color);height:50px!important;line-height:50px!important;display:flex!important;align-items:center!important;justify-content:space-between!important;box-shadow:0 1px 4px #0000000f}.header-left[data-v-0f2124da],.header-right[data-v-0f2124da]{display:flex;align-items:center;gap:10px}.scope-tag[data-v-0f2124da]{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:5px;font-size:12px;font-weight:500}.scope-tag.project[data-v-0f2124da]{background:#1677ff1a;color:#1677ff;border:1px solid rgba(22,119,255,.2)}.scope-tag.global[data-v-0f2124da]{background:#722ed11a;color:#722ed1;border:1px solid rgba(114,46,209,.2)}.info-icon[data-v-0f2124da]{opacity:.45;cursor:help;margin-left:2px}.theme-switcher[data-v-0f2124da]{display:flex;align-items:center;gap:4px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;padding:3px 6px}.theme-btn[data-v-0f2124da]{width:26px;height:26px;border:none;border-radius:50%;cursor:pointer;background:transparent;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,transform .15s;opacity:.55}.theme-btn[data-v-0f2124da]:hover{opacity:.9;transform:scale(1.15);background:var(--bg-card-hover)}.theme-btn.active[data-v-0f2124da]{opacity:1;transform:scale(1.1);background:var(--bg-card-hover);outline:2px solid var(--text-secondary)}.version-tag[data-v-0f2124da]{color:var(--text-muted);font-size:11px}.ws-tag[data-v-0f2124da]{margin:0!important;font-size:11px}.page-content[data-v-0f2124da]{padding:24px;overflow:auto;background:var(--bg-base);min-height:calc(100vh - 50px)}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{o as ve,W as _,Z as t,X as d,$ as ge,a0 as be,Y as i,k as e,a1 as a,a2 as w,a3 as r,a4 as S,F as j,u as s,a5 as g,G as l,a6 as Oe,a7 as Ce,f as we,c as m}from"./vendor-CN0Iv_qZ.js";import{u as je}from"./ws-Dma34ig_.js";import{u as Te,T as Se}from"./index-CLmYSvow.js";import{_ as Be}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as B,G as x,D as M,M as A,R as F,C as K,b as P,c as G,d as I,e as W,B as D,f as V,h as z,i as E,T as U,S as $,L as H,W as X,j as Y,k as Z,P as q,l as J,m as Q,n as h,o as ee,p as te,K as oe,I as xe}from"./antd-DEjZPGMj.js";const Le={key:0,class:"logo-text"},Ne={key:0,class:"mode-banner project"},Re={class:"banner-info"},Me={class:"banner-name"},Ae={key:1,class:"mode-banner global"},Fe=["title"],Ke={key:0,class:"footer-text"},Pe={class:"header-left"},Ge={class:"header-right"},Ie={class:"theme-switcher"},We=["data-theme-key","onClick"],De={__name:"AppLayout",setup(Ve){const se=ge(),ne=be(),b=je(),T=Te(),u=we(!1),y=window.__CC_CONFIG__||{},p=m(()=>y.mode==="project"),le=m(()=>T.current),ae=m(()=>T.config.vars["--menu-mode"]),L=m(()=>{const c=ne.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp"}[c]||c]}),O=m(()=>b.status),ie=m(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[b.status]||"default"),de=m(()=>({connected:"已连接",connecting:"连接中...",error:"连接错误",disconnected:"未连接"})[b.status]||"未知");function ue(c){T.setTheme(c)}function re({key:c}){se.push({mcp:"/mcp"}[c]||`/${c}`)}return ve(()=>b.connect()),(c,o)=>{const n=d("a-menu-item"),k=d("a-menu-item-group"),v=d("a-menu-divider"),ce=d("a-menu"),pe=d("a-badge"),me=d("a-layout-sider"),N=d("a-tooltip"),ye=d("a-tag"),ke=d("a-layout-header"),fe=d("router-view"),_e=d("a-layout-content"),R=d("a-layout");return i(),_(R,{class:"app-root"},{default:t(()=>[e(me,{collapsed:u.value,"onUpdate:collapsed":o[1]||(o[1]=f=>u.value=f),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[a("div",{class:w(["logo",{collapsed:u.value}])},[o[2]||(o[2]=a("span",{class:"logo-icon"},"⛓",-1)),u.value?S("",!0):(i(),r("span",Le,"ChainlessChain"))],2),u.value?(i(),r("div",{key:1,class:"mode-icon-sm",title:p.value?s(y).projectName:"全局模式"},[p.value?(i(),_(s(B),{key:0,style:{color:"#1677ff"}})):(i(),_(s(x),{key:1,style:{color:"#722ed1"}}))],8,Fe)):(i(),r(j,{key:0},[p.value?(i(),r("div",Ne,[e(s(B),{class:"banner-icon"}),a("div",Re,[a("div",Me,g(s(y).projectName||"项目"),1),o[3]||(o[3]=a("div",{class:"banner-sub"},"项目级面板",-1))])])):(i(),r("div",Ae,[e(s(x),{class:"banner-icon"}),o[4]||(o[4]=a("span",{class:"banner-name"},"全局模式",-1))]))],64)),e(ce,{selectedKeys:L.value,"onUpdate:selectedKeys":o[0]||(o[0]=f=>L.value=f),theme:ae.value,mode:"inline","inline-collapsed":u.value,class:"side-menu",onClick:re},{default:t(()=>[u.value?(i(),r(j,{key:1},[e(n,{key:"dashboard"},{icon:t(()=>[e(s(M))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(s(A))]),_:1}),e(n,{key:"cowork"},{icon:t(()=>[e(s(F))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(s(K))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(s(P))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"skills"},{icon:t(()=>[e(s(G))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(s(I))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(s(W))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"notes"},{icon:t(()=>[e(s(D))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(s(V))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(s(z))]),_:1}),e(n,{key:"workflow"},{icon:t(()=>[e(s(E))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(s(U))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"security"},{icon:t(()=>[e(s($))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(s(H))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(s(X))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(s(Y))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(s(Z))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(s(q))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"wallet"},{icon:t(()=>[e(s(J))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(s(Q))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(s(h))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(s(ee))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"rssfeed"},{icon:t(()=>[e(s(te))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(s(oe))]),_:1})],64)):(i(),r(j,{key:0},[e(k,null,{title:t(()=>[...o[5]||(o[5]=[a("span",{class:"group-label"},"概 览",-1)])]),default:t(()=>[e(n,{key:"dashboard"},{icon:t(()=>[e(s(M))]),default:t(()=>[o[6]||(o[6]=l("仪表板",-1))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(s(A))]),default:t(()=>[o[7]||(o[7]=l("AI 对话",-1))]),_:1}),e(n,{key:"cowork"},{icon:t(()=>[e(s(F))]),default:t(()=>[o[8]||(o[8]=l("日常协作",-1))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(s(K))]),default:t(()=>[o[9]||(o[9]=l("服务管理",-1))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(s(P))]),default:t(()=>[o[10]||(o[10]=l("日志查看",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[11]||(o[11]=[a("span",{class:"group-label"},"配 置",-1)])]),default:t(()=>[e(n,{key:"skills"},{icon:t(()=>[e(s(G))]),default:t(()=>[o[12]||(o[12]=l("技能管理",-1))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(s(I))]),default:t(()=>[o[13]||(o[13]=l("LLM 配置",-1))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(s(W))]),default:t(()=>[o[14]||(o[14]=l("MCP 工具",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[15]||(o[15]=[a("span",{class:"group-label"},"数 据",-1)])]),default:t(()=>[e(n,{key:"notes"},{icon:t(()=>[e(s(D))]),default:t(()=>[o[16]||(o[16]=l("笔记管理",-1))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(s(V))]),default:t(()=>[o[17]||(o[17]=l("记忆文件",-1))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(s(z))]),default:t(()=>[o[18]||(o[18]=l("定时任务",-1))]),_:1}),e(n,{key:"workflow"},{icon:t(()=>[e(s(E))]),default:t(()=>[o[19]||(o[19]=l("工作流编辑",-1))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(s(U))]),default:t(()=>[o[20]||(o[20]=l("后台任务",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[21]||(o[21]=[a("span",{class:"group-label"},"高 级",-1)])]),default:t(()=>[e(n,{key:"security"},{icon:t(()=>[e(s($))]),default:t(()=>[o[22]||(o[22]=l("安全中心",-1))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(s(H))]),default:t(()=>[o[23]||(o[23]=l("权限管理",-1))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(s(X))]),default:t(()=>[o[24]||(o[24]=l("P2P 网络",-1))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(s(Y))]),default:t(()=>[o[25]||(o[25]=l("备份同步",-1))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(s(Z))]),default:t(()=>[o[26]||(o[26]=l("Git 与数据",-1))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(s(q))]),default:t(()=>[o[27]||(o[27]=l("项目管理",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[28]||(o[28]=[a("span",{class:"group-label"},"企 业",-1)])]),default:t(()=>[e(n,{key:"wallet"},{icon:t(()=>[e(s(J))]),default:t(()=>[o[29]||(o[29]=l("钱包管理",-1))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(s(Q))]),default:t(()=>[o[30]||(o[30]=l("组织管理",-1))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(s(h))]),default:t(()=>[o[31]||(o[31]=l("使用分析",-1))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(s(ee))]),default:t(()=>[o[32]||(o[32]=l("模板中心",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...o[33]||(o[33]=[a("span",{class:"group-label"},"扩 展",-1)])]),default:t(()=>[e(n,{key:"rssfeed"},{icon:t(()=>[e(s(te))]),default:t(()=>[o[34]||(o[34]=l("RSS 订阅",-1))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(s(oe))]),default:t(()=>[o[35]||(o[35]=l("身份认证",-1))]),_:1})]),_:1})],64))]),_:1},8,["selectedKeys","theme","inline-collapsed"]),a("div",{class:w(["sidebar-footer",{collapsed:u.value}])},[e(pe,{status:ie.value},null,8,["status"]),u.value?S("",!0):(i(),r("span",Ke,g(de.value),1))],2)]),_:1},8,["collapsed"]),e(R,{class:"main-area"},{default:t(()=>[e(ke,{class:"app-header"},{default:t(()=>[a("div",Pe,[a("div",{class:w(["scope-tag",p.value?"project":"global"])},[(i(),_(Oe(p.value?s(B):s(x)))),a("span",null,g(p.value?s(y).projectName||"项目":"全局模式"),1),p.value&&s(y).projectRoot?(i(),_(N,{key:0,title:s(y).projectRoot},{default:t(()=>[e(s(xe),{class:"info-icon"})]),_:1},8,["title"])):S("",!0)],2)]),a("div",Ge,[a("div",Ie,[(i(!0),r(j,null,Ce(s(Se),(f,C)=>(i(),_(N,{key:C,title:f.label},{default:t(()=>[a("button",{class:w(["theme-btn",{active:le.value===C}]),"data-theme-key":C,onClick:ze=>ue(C)},g(f.icon),11,We)]),_:2},1032,["title"]))),128))]),o[36]||(o[36]=a("span",{class:"version-tag"},"v5.0.2.9",-1)),e(ye,{color:O.value==="connected"?"green":O.value==="connecting"?"orange":"red",class:"ws-tag"},{default:t(()=>[l(g(O.value==="connected"?"已连接":O.value==="connecting"?"连接中":"断开"),1)]),_:1},8,["color"])])]),_:1}),e(_e,{class:"page-content"},{default:t(()=>[e(fe)]),_:1})]),_:1})]),_:1})}}},Ye=Be(De,[["__scopeId","data-v-0f2124da"]]);export{Ye as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as Me}from"./ws-Dma34ig_.js";import{_ as Ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{p as Le,N as me,i as re,Q as N,a5 as U,a3 as Te}from"./antd-D6h4fDFf.js";import{o as je,a3 as s,a1 as p,k as a,Z as o,f as n,X as y,Y as l,G as f,u as v,W as b,a4 as r,a5 as u,F as Re}from"./vendor-CN0Iv_qZ.js";const De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={key:0,style:{"text-align":"center",padding:"30px"}},Ue={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ke={key:1},Ve={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:3,style:{"margin-top":"16px"}},Ge={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"}},We={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},He={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},Qe={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={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"}},qe={key:0,style:{"text-align":"center",padding:"30px"}},et={key:0,style:{"margin-bottom":"16px"}},tt={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"}},at={key:0,style:{"font-family":"monospace","font-size":"12px"}},ot={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},lt={key:0,style:{"text-align":"center",padding:"30px"}},nt={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},st={key:0,style:{"text-align":"center",padding:"30px"}},rt={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},it={key:1},ut={key:2},ct={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},dt={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},pt={key:0,style:{"margin-top":"12px"}},vt={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"}},yt={__name:"Backup",setup(ft){const g=Me(),ie=n("backup"),K=n(!1),V=n(!1),J=n(!1),B=n(""),w=n([]),_=n(""),be=[{title:"备份 ID",key:"id"},{title:"大小",key:"size",width:120},{title:"创建时间",key:"createdAt"},{title:"操作",key:"action",width:100}];async function ue(){V.value=!0,B.value="";try{const{output:t}=await g.execute("backup list --json",15e3),e=M(t);Array.isArray(e)?w.value=e:e&&Array.isArray(e.backups)?w.value=e.backups:(w.value=[],t&&t.trim()&&(_.value=t))}catch(t){B.value=`加载备份列表失败: ${t.message}`}finally{V.value=!1}}async function xe(){J.value=!0,_.value="",B.value="";try{const{output:t}=await g.execute("backup create --json",3e4);_.value=t||"备份已创建",await ue()}catch(t){_.value=`创建备份失败: ${t.message}`}finally{J.value=!1}}const G=n(!1),W=n(!1),k=n(null),z=n("");function _e(t){k.value=t,z.value="",G.value=!0}async function ke(){if(k.value){W.value=!0,z.value="";try{const{output:t}=await g.execute(`backup restore ${k.value.id}`,6e4);z.value=t||"恢复完成"}catch(t){z.value=`恢复失败: ${t.message}`}finally{W.value=!1}}}const H=n(!1),L=n(""),I=n(!1),T=n("未知"),j=n(0),Q=n(""),x=n(""),X=n(!1),Y=n(!1),S=n([]),he=[{title:"文件路径",key:"path"},{title:"冲突类型",key:"type",width:120}];async function Z(){H.value=!0,L.value="";try{const{output:t}=await g.execute("sync status --json",15e3),e=M(t);e?(I.value=e.online||e.synced||e.status==="online"||!1,T.value=I.value?"已同步":"未同步",j.value=e.pending??e.pendingChanges??0,Q.value=e.lastSync||e.lastSyncTime||""):we(t)}catch(t){L.value=`加载同步状态失败: ${t.message}`}finally{H.value=!1}}function we(t){if(!t){T.value="未知";return}I.value=/synced|online|up.to.date/i.test(t),T.value=I.value?"已同步":"未同步";const e=t.match(/pending[:\s]+(\d+)/i);j.value=e?parseInt(e[1]):0;const c=t.match(/last[:\s]+(.+)/i);c&&(Q.value=c[1].trim())}async function ze(){X.value=!0,x.value="";try{const{output:t}=await g.execute("sync push",3e4);x.value=t||"推送完成",await Z()}catch(t){x.value=`推送失败: ${t.message}`}finally{X.value=!1}}async function Se(){Y.value=!0,x.value="";try{const{output:t}=await g.execute("sync pull",3e4);x.value=t||"拉取完成",await Z()}catch(t){x.value=`拉取失败: ${t.message}`}finally{Y.value=!1}}async function Ce(){try{const{output:t}=await g.execute("sync conflicts --json",15e3),e=M(t);Array.isArray(e)?S.value=e:e&&Array.isArray(e.conflicts)?S.value=e.conflicts:S.value=[]}catch{S.value=[]}}const q=n(!1),R=n(""),C=n(!1),ee=n(""),te=n(!1),O=n(""),A=n([]),Ae=[{title:"CID",key:"cid"},{title:"名称",key:"name"},{title:"大小",key:"size",width:120},{title:"固定时间",key:"pinnedAt"},{title:"操作",key:"action",width:120}];async function Pe(){q.value=!0,R.value="";try{const{output:t}=await g.execute("ipfs status --json",15e3),e=M(t);if(e)C.value=e.online||e.status==="online"||e.connected||!1,ee.value=e.peerId||e.id||"";else{C.value=t?/online|connected|running/i.test(t):!1;const c=t?t.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;ee.value=c?c[1]:""}}catch(t){R.value=`加载 IPFS 状态失败: ${t.message}`}finally{q.value=!1}}async function ae(){te.value=!0,O.value="";try{const{output:t}=await g.execute("ipfs pins --json",15e3),e=M(t);Array.isArray(e)?A.value=e:e&&Array.isArray(e.pins)?A.value=e.pins:A.value=[]}catch(t){O.value=`加载固定列表失败: ${t.message}`}finally{te.value=!1}}const oe=n(!1),le=n(!1),D=n(""),F=n("");async function ce(){if(D.value.trim()){le.value=!0,F.value="";try{const{output:t}=await g.execute(`ipfs pin "${D.value.trim()}"`,3e4);F.value=t||"固定成功",await ae()}catch(t){F.value=`固定失败: ${t.message}`}finally{le.value=!1}}}async function $e(t){try{await g.execute(`ipfs unpin ${t.cid}`,15e3),await ae()}catch(e){O.value=`取消固定失败: ${e.message}`}}function M(t){if(!t||!t.trim())return null;try{return JSON.parse(t.trim())}catch{const c=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(c)try{return JSON.parse(c[0])}catch{}return null}}function de(t){if(t==null||isNaN(t))return"-";const e=Number(t);if(e===0)return"0 B";const c=["B","KB","MB","GB","TB"],h=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,h)).toFixed(h>0?1:0)+" "+c[h]}async function pe(){K.value=!0;try{await Promise.all([ue(),Z(),Ce(),Pe(),ae()])}finally{K.value=!1}}return je(pe),(t,e)=>{const c=y("a-button"),h=y("a-space"),E=y("a-spin"),ve=y("a-empty"),ne=y("a-table"),m=y("a-card"),ye=y("a-modal"),se=y("a-tab-pane"),P=y("a-statistic"),$=y("a-col"),fe=y("a-row"),ge=y("a-tag"),Be=y("a-popconfirm"),Ie=y("a-input"),Oe=y("a-tabs");return l(),s("div",null,[p("div",De,[e[6]||(e[6]=p("div",null,[p("h2",{class:"page-title"},"备份与同步"),p("p",{class:"page-sub"},"备份管理 / 数据同步 / IPFS")],-1)),a(c,{type:"primary",ghost:"",loading:K.value,onClick:pe},{icon:o(()=>[a(v(Le))]),default:o(()=>[e[5]||(e[5]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Oe,{activeKey:ie.value,"onUpdate:activeKey":e[4]||(e[4]=i=>ie.value=i),type:"card"},{default:o(()=>[a(se,{key:"backup"},{tab:o(()=>[a(v(re)),e[7]||(e[7]=f(" 备份管理",-1))]),default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:o(()=>[a(h,null,{default:o(()=>[a(v(re)),e[8]||(e[8]=p("span",null,"备份操作",-1))]),_:1})]),extra:o(()=>[a(c,{type:"primary",loading:J.value,onClick:xe},{icon:o(()=>[a(v(me))]),default:o(()=>[e[9]||(e[9]=f(" 创建备份 ",-1))]),_:1},8,["loading"])]),default:o(()=>[V.value?(l(),s("div",Ee,[a(E)])):w.value.length===0&&!_.value?(l(),b(ve,{key:1,description:"暂无备份记录"})):r("",!0),w.value.length>0?(l(),b(ne,{key:2,columns:be,"data-source":w.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:o(({column:i,record:d})=>[i.key==="id"?(l(),s("span",Ue,u(d.id.length>20?d.id.slice(0,20)+"...":d.id),1)):r("",!0),i.key==="size"?(l(),s("span",Ke,u(de(d.size)),1)):r("",!0),i.key==="createdAt"?(l(),s("span",Ve,u(d.createdAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(c,{key:3,size:"small",type:"link",onClick:Fe=>_e(d)},{default:o(()=>[...e[10]||(e[10]=[f(" 恢复 ",-1)])]),_:1},8,["onClick"])):r("",!0)]),_:1},8,["data-source"])):r("",!0),_.value?(l(),s("div",Je,[e[11]||(e[11]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"最近操作结果",-1)),p("pre",Ge,u(_.value),1)])):r("",!0),B.value?(l(),s("div",We,u(B.value),1)):r("",!0)]),_:1}),a(ye,{open:G.value,"onUpdate:open":e[0]||(e[0]=i=>G.value=i),title:"确认恢复备份","ok-text":"确认恢复","cancel-text":"取消","confirm-loading":W.value,onOk:ke,"ok-type":"danger"},{default:o(()=>[e[15]||(e[15]=p("p",{style:{color:"var(--text-secondary)"}}," 确定要恢复以下备份吗?此操作将覆盖当前数据。 ",-1)),k.value?(l(),s("div",He,[p("div",null,[e[12]||(e[12]=p("strong",null,"备份 ID:",-1)),e[13]||(e[13]=f()),p("span",Qe,u(k.value.id),1)]),k.value.createdAt?(l(),s("div",Xe,[e[14]||(e[14]=p("strong",null,"创建时间:",-1)),f(" "+u(k.value.createdAt),1)])):r("",!0)])):r("",!0),z.value?(l(),s("div",Ye,[p("pre",Ze,u(z.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1}),a(se,{key:"sync"},{tab:o(()=>[a(v(N)),e[16]||(e[16]=f(" 数据同步",-1))]),default:o(()=>[H.value?(l(),s("div",qe,[a(E)])):(l(),s(Re,{key:1},[a(fe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"同步状态",value:T.value,"value-style":{color:I.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"待同步变更",value:j.value,"value-style":{color:j.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"最近同步",value:Q.value||"无","value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),a(h,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(c,{loading:X.value,onClick:ze,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(re))]),default:o(()=>[e[17]||(e[17]=f(" 推送 ",-1))]),_:1},8,["loading"]),a(c,{loading:Y.value,onClick:Se,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(N))]),default:o(()=>[e[18]||(e[18]=f(" 拉取 ",-1))]),_:1},8,["loading"])]),_:1}),x.value?(l(),s("div",et,[e[19]||(e[19]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"操作结果",-1)),p("pre",tt,u(x.value),1)])):r("",!0),S.value.length>0?(l(),b(m,{key:1,title:"冲突列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(ne,{columns:he,"data-source":S.value,pagination:!1,size:"small","row-key":"path"},{bodyCell:o(({column:i,record:d})=>[i.key==="path"?(l(),s("span",at,u(d.path),1)):r("",!0),i.key==="type"?(l(),b(ge,{key:1,color:"red"},{default:o(()=>[f(u(d.type||"冲突"),1)]),_:2},1024)):r("",!0)]),_:1},8,["data-source"])]),_:1})):r("",!0)],64)),L.value?(l(),s("div",ot,u(L.value),1)):r("",!0)]),_:1}),a(se,{key:"ipfs"},{tab:o(()=>[a(v(U)),e[20]||(e[20]=f(" IPFS 存储",-1))]),default:o(()=>[a(m,{title:"IPFS 状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(ge,{color:C.value?"green":"default"},{default:o(()=>[f(u(C.value?"在线":"离线"),1)]),_:1},8,["color"])]),default:o(()=>[q.value?(l(),s("div",lt,[a(E)])):(l(),b(fe,{key:1,gutter:[16,16]},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"节点状态",value:C.value?"已连接":"未连接","value-style":{color:C.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"已固定文件",value:A.value.length,"value-style":{fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"Peer ID",value:ee.value||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1})),R.value?(l(),s("div",nt,u(R.value),1)):r("",!0)]),_:1}),a(m,{title:"固定文件列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(c,{size:"small",onClick:e[1]||(e[1]=i=>oe.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(me))]),default:o(()=>[e[21]||(e[21]=f(" 固定文件 ",-1))]),_:1})]),default:o(()=>[te.value?(l(),s("div",st,[a(E)])):A.value.length===0?(l(),b(ve,{key:1,description:"暂无固定文件"})):(l(),b(ne,{key:2,columns:Ae,"data-source":A.value,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:o(({column:i,record:d})=>[i.key==="cid"?(l(),s("span",rt,u(d.cid.length>24?d.cid.slice(0,24)+"...":d.cid),1)):r("",!0),i.key==="name"?(l(),s("span",it,u(d.name||"-"),1)):r("",!0),i.key==="size"?(l(),s("span",ut,u(de(d.size)),1)):r("",!0),i.key==="pinnedAt"?(l(),s("span",ct,u(d.pinnedAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(Be,{key:4,title:"确定取消固定?","ok-text":"确定","cancel-text":"取消",onConfirm:Fe=>$e(d)},{default:o(()=>[a(c,{size:"small",type:"link",danger:""},{default:o(()=>[a(v(Te)),e[22]||(e[22]=f(" 取消固定 ",-1))]),_:1})]),_:1},8,["onConfirm"])):r("",!0)]),_:1},8,["data-source"])),O.value?(l(),s("div",dt,u(O.value),1)):r("",!0)]),_:1}),a(ye,{open:oe.value,"onUpdate:open":e[3]||(e[3]=i=>oe.value=i),title:"固定文件到 IPFS","confirm-loading":le.value,onOk:ce,"ok-text":"固定","cancel-text":"取消"},{default:o(()=>[e[23]||(e[23]=p("div",{style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},"请输入要固定的文件路径",-1)),a(Ie,{value:D.value,"onUpdate:value":e[2]||(e[2]=i=>D.value=i),placeholder:"文件路径,例如: /path/to/file.txt",onPressEnter:ce},null,8,["value"]),F.value?(l(),s("div",pt,[p("pre",vt,u(F.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},_t=Ne(yt,[["__scopeId","data-v-3d5d81e6"]]);export{_t as default};
|
|
1
|
+
import{u as Me}from"./ws-Dma34ig_.js";import{_ as Ne}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{q as je,O as me,j as re,U as N,a6 as U,a4 as Le}from"./antd-DEjZPGMj.js";import{o as Te,a3 as s,a1 as p,k as a,Z as o,f as n,X as y,Y as l,G as f,u as v,W as b,a4 as r,a5 as u,F as Re}from"./vendor-CN0Iv_qZ.js";const De={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},Ee={key:0,style:{"text-align":"center",padding:"30px"}},Ue={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},Ke={key:1},Ve={key:2,style:{color:"var(--text-secondary)","font-size":"12px"}},Je={key:3,style:{"margin-top":"16px"}},Ge={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"}},We={key:4,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},qe={key:0,style:{background:"var(--bg-base)",border:"1px solid var(--border-color)","border-radius":"6px",padding:"12px","margin-top":"8px"}},He={style:{"font-family":"monospace"}},Xe={key:0},Ye={key:1,style:{"margin-top":"12px"}},Ze={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"}},Qe={key:0,style:{"text-align":"center",padding:"30px"}},et={key:0,style:{"margin-bottom":"16px"}},tt={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"}},at={key:0,style:{"font-family":"monospace","font-size":"12px"}},ot={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},lt={key:0,style:{"text-align":"center",padding:"30px"}},nt={key:2,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},st={key:0,style:{"text-align":"center",padding:"30px"}},rt={key:0,style:{"font-family":"monospace",color:"var(--text-muted)","font-size":"12px"}},it={key:1},ut={key:2},ct={key:3,style:{color:"var(--text-secondary)","font-size":"12px"}},dt={key:3,style:{"margin-top":"12px",color:"#ff4d4f","font-size":"12px"}},pt={key:0,style:{"margin-top":"12px"}},vt={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"}},yt={__name:"Backup",setup(ft){const g=Me(),ie=n("backup"),K=n(!1),V=n(!1),J=n(!1),B=n(""),w=n([]),_=n(""),be=[{title:"备份 ID",key:"id"},{title:"大小",key:"size",width:120},{title:"创建时间",key:"createdAt"},{title:"操作",key:"action",width:100}];async function ue(){V.value=!0,B.value="";try{const{output:t}=await g.execute("backup list --json",15e3),e=M(t);Array.isArray(e)?w.value=e:e&&Array.isArray(e.backups)?w.value=e.backups:(w.value=[],t&&t.trim()&&(_.value=t))}catch(t){B.value=`加载备份列表失败: ${t.message}`}finally{V.value=!1}}async function xe(){J.value=!0,_.value="",B.value="";try{const{output:t}=await g.execute("backup create --json",3e4);_.value=t||"备份已创建",await ue()}catch(t){_.value=`创建备份失败: ${t.message}`}finally{J.value=!1}}const G=n(!1),W=n(!1),k=n(null),z=n("");function _e(t){k.value=t,z.value="",G.value=!0}async function ke(){if(k.value){W.value=!0,z.value="";try{const{output:t}=await g.execute(`backup restore ${k.value.id}`,6e4);z.value=t||"恢复完成"}catch(t){z.value=`恢复失败: ${t.message}`}finally{W.value=!1}}}const q=n(!1),j=n(""),I=n(!1),L=n("未知"),T=n(0),H=n(""),x=n(""),X=n(!1),Y=n(!1),S=n([]),he=[{title:"文件路径",key:"path"},{title:"冲突类型",key:"type",width:120}];async function Z(){q.value=!0,j.value="";try{const{output:t}=await g.execute("sync status --json",15e3),e=M(t);e?(I.value=e.online||e.synced||e.status==="online"||!1,L.value=I.value?"已同步":"未同步",T.value=e.pending??e.pendingChanges??0,H.value=e.lastSync||e.lastSyncTime||""):we(t)}catch(t){j.value=`加载同步状态失败: ${t.message}`}finally{q.value=!1}}function we(t){if(!t){L.value="未知";return}I.value=/synced|online|up.to.date/i.test(t),L.value=I.value?"已同步":"未同步";const e=t.match(/pending[:\s]+(\d+)/i);T.value=e?parseInt(e[1]):0;const c=t.match(/last[:\s]+(.+)/i);c&&(H.value=c[1].trim())}async function ze(){X.value=!0,x.value="";try{const{output:t}=await g.execute("sync push",3e4);x.value=t||"推送完成",await Z()}catch(t){x.value=`推送失败: ${t.message}`}finally{X.value=!1}}async function Se(){Y.value=!0,x.value="";try{const{output:t}=await g.execute("sync pull",3e4);x.value=t||"拉取完成",await Z()}catch(t){x.value=`拉取失败: ${t.message}`}finally{Y.value=!1}}async function Ce(){try{const{output:t}=await g.execute("sync conflicts --json",15e3),e=M(t);Array.isArray(e)?S.value=e:e&&Array.isArray(e.conflicts)?S.value=e.conflicts:S.value=[]}catch{S.value=[]}}const Q=n(!1),R=n(""),C=n(!1),ee=n(""),te=n(!1),O=n(""),A=n([]),Ae=[{title:"CID",key:"cid"},{title:"名称",key:"name"},{title:"大小",key:"size",width:120},{title:"固定时间",key:"pinnedAt"},{title:"操作",key:"action",width:120}];async function Pe(){Q.value=!0,R.value="";try{const{output:t}=await g.execute("ipfs status --json",15e3),e=M(t);if(e)C.value=e.online||e.status==="online"||e.connected||!1,ee.value=e.peerId||e.id||"";else{C.value=t?/online|connected|running/i.test(t):!1;const c=t?t.match(/(?:peer\s*id|id)[:\s]+(\S+)/i):null;ee.value=c?c[1]:""}}catch(t){R.value=`加载 IPFS 状态失败: ${t.message}`}finally{Q.value=!1}}async function ae(){te.value=!0,O.value="";try{const{output:t}=await g.execute("ipfs pins --json",15e3),e=M(t);Array.isArray(e)?A.value=e:e&&Array.isArray(e.pins)?A.value=e.pins:A.value=[]}catch(t){O.value=`加载固定列表失败: ${t.message}`}finally{te.value=!1}}const oe=n(!1),le=n(!1),D=n(""),F=n("");async function ce(){if(D.value.trim()){le.value=!0,F.value="";try{const{output:t}=await g.execute(`ipfs pin "${D.value.trim()}"`,3e4);F.value=t||"固定成功",await ae()}catch(t){F.value=`固定失败: ${t.message}`}finally{le.value=!1}}}async function $e(t){try{await g.execute(`ipfs unpin ${t.cid}`,15e3),await ae()}catch(e){O.value=`取消固定失败: ${e.message}`}}function M(t){if(!t||!t.trim())return null;try{return JSON.parse(t.trim())}catch{const c=t.match(/\{[\s\S]*\}|\[[\s\S]*\]/);if(c)try{return JSON.parse(c[0])}catch{}return null}}function de(t){if(t==null||isNaN(t))return"-";const e=Number(t);if(e===0)return"0 B";const c=["B","KB","MB","GB","TB"],h=Math.floor(Math.log(e)/Math.log(1024));return(e/Math.pow(1024,h)).toFixed(h>0?1:0)+" "+c[h]}async function pe(){K.value=!0;try{await Promise.all([ue(),Z(),Ce(),Pe(),ae()])}finally{K.value=!1}}return Te(pe),(t,e)=>{const c=y("a-button"),h=y("a-space"),E=y("a-spin"),ve=y("a-empty"),ne=y("a-table"),m=y("a-card"),ye=y("a-modal"),se=y("a-tab-pane"),P=y("a-statistic"),$=y("a-col"),fe=y("a-row"),ge=y("a-tag"),Be=y("a-popconfirm"),Ie=y("a-input"),Oe=y("a-tabs");return l(),s("div",null,[p("div",De,[e[6]||(e[6]=p("div",null,[p("h2",{class:"page-title"},"备份与同步"),p("p",{class:"page-sub"},"备份管理 / 数据同步 / IPFS")],-1)),a(c,{type:"primary",ghost:"",loading:K.value,onClick:pe},{icon:o(()=>[a(v(je))]),default:o(()=>[e[5]||(e[5]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),a(Oe,{activeKey:ie.value,"onUpdate:activeKey":e[4]||(e[4]=i=>ie.value=i),type:"card"},{default:o(()=>[a(se,{key:"backup"},{tab:o(()=>[a(v(re)),e[7]||(e[7]=f(" 备份管理",-1))]),default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{title:o(()=>[a(h,null,{default:o(()=>[a(v(re)),e[8]||(e[8]=p("span",null,"备份操作",-1))]),_:1})]),extra:o(()=>[a(c,{type:"primary",loading:J.value,onClick:xe},{icon:o(()=>[a(v(me))]),default:o(()=>[e[9]||(e[9]=f(" 创建备份 ",-1))]),_:1},8,["loading"])]),default:o(()=>[V.value?(l(),s("div",Ee,[a(E)])):w.value.length===0&&!_.value?(l(),b(ve,{key:1,description:"暂无备份记录"})):r("",!0),w.value.length>0?(l(),b(ne,{key:2,columns:be,"data-source":w.value,pagination:!1,size:"small","row-key":"id"},{bodyCell:o(({column:i,record:d})=>[i.key==="id"?(l(),s("span",Ue,u(d.id.length>20?d.id.slice(0,20)+"...":d.id),1)):r("",!0),i.key==="size"?(l(),s("span",Ke,u(de(d.size)),1)):r("",!0),i.key==="createdAt"?(l(),s("span",Ve,u(d.createdAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(c,{key:3,size:"small",type:"link",onClick:Fe=>_e(d)},{default:o(()=>[...e[10]||(e[10]=[f(" 恢复 ",-1)])]),_:1},8,["onClick"])):r("",!0)]),_:1},8,["data-source"])):r("",!0),_.value?(l(),s("div",Je,[e[11]||(e[11]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"最近操作结果",-1)),p("pre",Ge,u(_.value),1)])):r("",!0),B.value?(l(),s("div",We,u(B.value),1)):r("",!0)]),_:1}),a(ye,{open:G.value,"onUpdate:open":e[0]||(e[0]=i=>G.value=i),title:"确认恢复备份","ok-text":"确认恢复","cancel-text":"取消","confirm-loading":W.value,onOk:ke,"ok-type":"danger"},{default:o(()=>[e[15]||(e[15]=p("p",{style:{color:"var(--text-secondary)"}}," 确定要恢复以下备份吗?此操作将覆盖当前数据。 ",-1)),k.value?(l(),s("div",qe,[p("div",null,[e[12]||(e[12]=p("strong",null,"备份 ID:",-1)),e[13]||(e[13]=f()),p("span",He,u(k.value.id),1)]),k.value.createdAt?(l(),s("div",Xe,[e[14]||(e[14]=p("strong",null,"创建时间:",-1)),f(" "+u(k.value.createdAt),1)])):r("",!0)])):r("",!0),z.value?(l(),s("div",Ye,[p("pre",Ze,u(z.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1}),a(se,{key:"sync"},{tab:o(()=>[a(v(N)),e[16]||(e[16]=f(" 数据同步",-1))]),default:o(()=>[q.value?(l(),s("div",Qe,[a(E)])):(l(),s(Re,{key:1},[a(fe,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"同步状态",value:L.value,"value-style":{color:I.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"待同步变更",value:T.value,"value-style":{color:T.value>0?"#faad14":"#52c41a",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"最近同步",value:H.value||"无","value-style":{color:"var(--text-secondary)",fontSize:"16px"}},{prefix:o(()=>[a(v(N))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1}),a(h,{style:{"margin-bottom":"16px"}},{default:o(()=>[a(c,{loading:X.value,onClick:ze,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(re))]),default:o(()=>[e[17]||(e[17]=f(" 推送 ",-1))]),_:1},8,["loading"]),a(c,{loading:Y.value,onClick:Se,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(N))]),default:o(()=>[e[18]||(e[18]=f(" 拉取 ",-1))]),_:1},8,["loading"])]),_:1}),x.value?(l(),s("div",et,[e[19]||(e[19]=p("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-bottom":"6px"}},"操作结果",-1)),p("pre",tt,u(x.value),1)])):r("",!0),S.value.length>0?(l(),b(m,{key:1,title:"冲突列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(ne,{columns:he,"data-source":S.value,pagination:!1,size:"small","row-key":"path"},{bodyCell:o(({column:i,record:d})=>[i.key==="path"?(l(),s("span",at,u(d.path),1)):r("",!0),i.key==="type"?(l(),b(ge,{key:1,color:"red"},{default:o(()=>[f(u(d.type||"冲突"),1)]),_:2},1024)):r("",!0)]),_:1},8,["data-source"])]),_:1})):r("",!0)],64)),j.value?(l(),s("div",ot,u(j.value),1)):r("",!0)]),_:1}),a(se,{key:"ipfs"},{tab:o(()=>[a(v(U)),e[20]||(e[20]=f(" IPFS 存储",-1))]),default:o(()=>[a(m,{title:"IPFS 状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"20px"}},{extra:o(()=>[a(ge,{color:C.value?"green":"default"},{default:o(()=>[f(u(C.value?"在线":"离线"),1)]),_:1},8,["color"])]),default:o(()=>[Q.value?(l(),s("div",lt,[a(E)])):(l(),b(fe,{key:1,gutter:[16,16]},{default:o(()=>[a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"节点状态",value:C.value?"已连接":"未连接","value-style":{color:C.value?"#52c41a":"#888",fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value","value-style"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"已固定文件",value:A.value.length,"value-style":{fontSize:"16px"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1}),a($,{xs:24,sm:8},{default:o(()=>[a(m,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:o(()=>[a(P,{title:"Peer ID",value:ee.value||"-","value-style":{color:"var(--text-muted)",fontSize:"12px",fontFamily:"monospace"}},{prefix:o(()=>[a(v(U))]),_:1},8,["value"])]),_:1})]),_:1})]),_:1})),R.value?(l(),s("div",nt,u(R.value),1)):r("",!0)]),_:1}),a(m,{title:"固定文件列表",style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{extra:o(()=>[a(c,{size:"small",onClick:e[1]||(e[1]=i=>oe.value=!0),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:o(()=>[a(v(me))]),default:o(()=>[e[21]||(e[21]=f(" 固定文件 ",-1))]),_:1})]),default:o(()=>[te.value?(l(),s("div",st,[a(E)])):A.value.length===0?(l(),b(ve,{key:1,description:"暂无固定文件"})):(l(),b(ne,{key:2,columns:Ae,"data-source":A.value,pagination:{pageSize:10},size:"small","row-key":"cid"},{bodyCell:o(({column:i,record:d})=>[i.key==="cid"?(l(),s("span",rt,u(d.cid.length>24?d.cid.slice(0,24)+"...":d.cid),1)):r("",!0),i.key==="name"?(l(),s("span",it,u(d.name||"-"),1)):r("",!0),i.key==="size"?(l(),s("span",ut,u(de(d.size)),1)):r("",!0),i.key==="pinnedAt"?(l(),s("span",ct,u(d.pinnedAt||"-"),1)):r("",!0),i.key==="action"?(l(),b(Be,{key:4,title:"确定取消固定?","ok-text":"确定","cancel-text":"取消",onConfirm:Fe=>$e(d)},{default:o(()=>[a(c,{size:"small",type:"link",danger:""},{default:o(()=>[a(v(Le)),e[22]||(e[22]=f(" 取消固定 ",-1))]),_:1})]),_:1},8,["onConfirm"])):r("",!0)]),_:1},8,["data-source"])),O.value?(l(),s("div",dt,u(O.value),1)):r("",!0)]),_:1}),a(ye,{open:oe.value,"onUpdate:open":e[3]||(e[3]=i=>oe.value=i),title:"固定文件到 IPFS","confirm-loading":le.value,onOk:ce,"ok-text":"固定","cancel-text":"取消"},{default:o(()=>[e[23]||(e[23]=p("div",{style:{"margin-bottom":"12px",color:"var(--text-secondary)"}},"请输入要固定的文件路径",-1)),a(Ie,{value:D.value,"onUpdate:value":e[2]||(e[2]=i=>D.value=i),placeholder:"文件路径,例如: /path/to/file.txt",onPressEnter:ce},null,8,["value"]),F.value?(l(),s("div",pt,[p("pre",vt,u(F.value),1)])):r("",!0)]),_:1},8,["open","confirm-loading"])]),_:1})]),_:1},8,["activeKey"])])}}},_t=Ne(yt,[["__scopeId","data-v-3d5d81e6"]]);export{_t as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{w as
|
|
1
|
+
import{w as Q,o as R,a3 as n,a1 as s,k as i,u as r,a5 as u,Z as d,F as S,a7 as z,G as c,a4 as y,W as T,a9 as V,A as q,c as x,X as f,f as $,Y as o,a2 as A,n as J}from"./vendor-CN0Iv_qZ.js";import{m as H,H as M}from"./markdown-CusdXFxb.js";/* empty css */import{u as K}from"./chat-BYmuDvol.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as P,G as U,M as W,r as X,v as Y}from"./antd-DEjZPGMj.js";import"./ws-Dma34ig_.js";const Z={style:{display:"flex",height:"calc(100vh - 56px - 48px)",gap:"16px"}},ee={style:{width:"240px","flex-shrink":"0",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},te={key:0,style:{padding:"6px 12px 4px","font-size":"11px",color:"#1677ff",background:"rgba(22,119,255,.07)","border-bottom":"1px solid rgba(22,119,255,.15)",display:"flex","align-items":"center",gap:"4px"}},se=["title"],oe={key:1,style:{padding:"6px 12px 4px","font-size":"11px",color:"#722ed1",background:"rgba(114,46,209,.07)","border-bottom":"1px solid rgba(114,46,209,.15)",display:"flex","align-items":"center",gap:"4px"}},ne={style:{padding:"10px 12px","border-bottom":"1px solid var(--border-color)",display:"flex",gap:"8px"}},ae={style:{flex:"1","overflow-y":"auto",padding:"8px"}},le=["onClick"],ie={class:"session-icon"},re={class:"session-info"},de={class:"session-title"},pe={class:"session-meta"},ue={key:0,style:{"text-align":"center",color:"var(--text-muted)",padding:"24px 0","font-size":"13px"}},ce={style:{flex:"1",background:"var(--bg-card)","border-radius":"8px",border:"1px solid var(--border-color)",display:"flex","flex-direction":"column",overflow:"hidden"}},ve={key:0,style:{flex:"1",display:"flex","flex-direction":"column","align-items":"center","justify-content":"center",color:"var(--text-muted)"}},xe={style:{"margin-top":"24px",display:"flex",gap:"12px"}},ge={key:0,class:"tool-msg"},ye={style:{margin:"0","font-size":"11px",color:"#aaa","white-space":"pre-wrap"}},fe={key:0,style:{"margin-top":"8px","padding-top":"8px","border-top":"1px solid var(--border-color)"}},_e={style:{margin:"0","font-size":"11px",color:"#52c41a","white-space":"pre-wrap"}},me={key:1,class:"user-msg"},be={class:"bubble user"},he={key:2,class:"assistant-msg"},ke=["innerHTML"],we={key:0,class:"assistant-msg"},Ce=["innerHTML"],Se={key:1,class:"question-card"},ze={class:"question-text"},Me={key:0,style:{display:"flex","flex-wrap":"wrap",gap:"8px","margin-top":"10px"}},Oe={key:2,style:{padding:"16px","border-top":"1px solid var(--border-color)"}},Ie={style:{display:"flex",gap:"8px","align-items":"flex-end"}},Le={__name:"Chat",setup(Ne){const k=window.__CC_CONFIG__||{},j=x(()=>k.mode==="project");H.setOptions({highlight:(a,e)=>e&&M.getLanguage(e)?M.highlight(a,{language:e}).value:M.highlightAuto(a).value,breaks:!0});const l=K(),_=$(null),g=$(""),p=x(()=>l.currentSessionId),O=x(()=>p.value?l.getMessages(p.value):[]),w=x(()=>{const a=l.streaming[p.value];return a?.active?a.content:null}),m=x(()=>l.pendingQuestion[p.value]),b=x(()=>l.isLoading);function I(a){try{return H(a||"")}catch{return a||""}}async function h(a){await l.createSession(a)}async function L(){if(!g.value.trim()||b.value||!p.value)return;const a=g.value;g.value="",await l.sendMessage(p.value,a)}function N(a){l.answerQuestion(p.value,a)}return Q([O,w],()=>{J(()=>{_.value&&(_.value.scrollTop=_.value.scrollHeight)})},{deep:!0}),R(()=>{l.loadSessions()}),(a,e)=>{const v=f("a-button"),E=f("a-collapse-panel"),F=f("a-collapse"),B=f("a-input-search"),G=f("a-textarea");return o(),n("div",Z,[s("div",ee,[j.value?(o(),n("div",te,[i(r(P)),s("span",{style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"},title:r(k).projectRoot},u(r(k).projectName||"项目"),9,se)])):(o(),n("div",oe,[i(r(U)),e[5]||(e[5]=s("span",null,"全局会话",-1))])),s("div",ne,[i(v,{type:"primary",size:"small",style:{flex:"1"},onClick:e[0]||(e[0]=t=>h("chat"))},{icon:d(()=>[i(r(W))]),default:d(()=>[e[6]||(e[6]=c(" Chat ",-1))]),_:1}),i(v,{size:"small",style:{flex:"1"},onClick:e[1]||(e[1]=t=>h("agent"))},{icon:d(()=>[i(r(X))]),default:d(()=>[e[7]||(e[7]=c(" Agent ",-1))]),_:1})]),s("div",ae,[(o(!0),n(S,null,z(r(l).sessions,t=>(o(),n("div",{key:t.id,class:A(["session-item",{active:t.id===r(l).currentSessionId}]),onClick:C=>r(l).switchSession(t.id)},[s("span",ie,u(t.type==="agent"?"🤖":"💬"),1),s("div",re,[s("div",de,u(t.title||"新对话"),1),s("div",pe,u(t.messageCount||0)+" 条消息",1)])],10,le))),128)),r(l).sessions.length?y("",!0):(o(),n("div",ue,[...e[8]||(e[8]=[c(" 点击上方按钮",-1),s("br",null,null,-1),c("开始新对话 ",-1)])]))])]),s("div",ce,[p.value?(o(),n("div",{key:1,style:{flex:"1","overflow-y":"auto",padding:"20px"},ref_key:"messagesEl",ref:_},[(o(!0),n(S,null,z(O.value,(t,C)=>(o(),n("div",{key:C,class:A(["message-row",t.role])},[t.role==="tool"?(o(),n("div",ge,[i(F,{ghost:"",size:"small"},{default:d(()=>[i(E,{header:`🔧 ${t.tool} ${t.status==="running"?"(执行中...)":"✓"}`,style:{border:"1px solid var(--border-color)","border-radius":"6px",background:"var(--bg-card)"}},{default:d(()=>[s("pre",ye,u(JSON.stringify(t.input,null,2)),1),t.result?(o(),n("div",fe,[s("pre",_e,u(typeof t.result=="string"?t.result:JSON.stringify(t.result,null,2)),1)])):y("",!0)]),_:2},1032,["header"])]),_:2},1024)])):t.role==="user"?(o(),n("div",me,[s("div",be,u(t.content),1)])):(o(),n("div",he,[e[14]||(e[14]=s("div",{class:"avatar"},"AI",-1)),s("div",{class:"bubble assistant",innerHTML:I(t.content)},null,8,ke)]))],2))),128)),w.value?(o(),n("div",we,[e[15]||(e[15]=s("div",{class:"avatar"},"AI",-1)),s("div",{class:"bubble assistant streaming",innerHTML:I(w.value)},null,8,Ce)])):y("",!0),m.value?(o(),n("div",Se,[s("div",ze,u(m.value.question),1),m.value.choices?.length?(o(),n("div",Me,[(o(!0),n(S,null,z(m.value.choices,t=>(o(),T(v,{key:t,size:"small",onClick:C=>N(t)},{default:d(()=>[c(u(t),1)]),_:2},1032,["onClick"]))),128))])):(o(),T(B,{key:1,placeholder:"输入回答...","enter-button":"发送",style:{"margin-top":"10px"},onSearch:N}))])):y("",!0)],512)):(o(),n("div",ve,[e[11]||(e[11]=s("div",{style:{"font-size":"48px","margin-bottom":"16px"}},"💬",-1)),e[12]||(e[12]=s("div",{style:{"font-size":"16px","margin-bottom":"8px",color:"#777"}},"开始 AI 对话",-1)),e[13]||(e[13]=s("div",{style:{"font-size":"13px",color:"var(--text-muted)"}},"选择左侧会话或创建新对话",-1)),s("div",xe,[i(v,{type:"primary",onClick:e[2]||(e[2]=t=>h("chat"))},{default:d(()=>[...e[9]||(e[9]=[c("新建 Chat",-1)])]),_:1}),i(v,{style:{},onClick:e[3]||(e[3]=t=>h("agent"))},{default:d(()=>[...e[10]||(e[10]=[c("新建 Agent",-1)])]),_:1})])])),p.value?(o(),n("div",Oe,[s("div",Ie,[i(G,{value:g.value,"onUpdate:value":e[4]||(e[4]=t=>g.value=t),placeholder:b.value?"等待响应中...":"输入消息,Shift+Enter 换行,Enter 发送","auto-size":{minRows:1,maxRows:6},disabled:b.value,style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)",color:"var(--text-primary)",resize:"none",flex:"1"},onKeydown:V(q(L,["exact","prevent"]),["enter"])},null,8,["value","placeholder","disabled","onKeydown"]),i(v,{type:"primary",loading:b.value,onClick:L,style:{height:"40px"}},{icon:d(()=>[i(r(Y))]),_:1},8,["loading"])])])):y("",!0)])])}}},Be=D(Le,[["__scopeId","data-v-8392b2d7"]]);export{Be as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{V as Tn,w as an,f as w,c as We,o as En,a3 as h,a1 as d,k as D,u as a,F as oe,a7 as ie,a2 as Ne,A as dt,a5 as A,a4 as N,G as U,W as $,a6 as pt,Z as k,a9 as An,X as le,Y as u,n as Vt}from"./vendor-CN0Iv_qZ.js";import{m as Xt,H as ft}from"./markdown-BZsB-Dsv.js";/* empty css */import{u as mt}from"./ws-Dma34ig_.js";import{u as _e}from"./chat-BYmuDvol.js";import{_ as vn}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as Pe,T as yn,v as jt,H as Sn,S as bn,o as On,G as Rn,r as wn,j as Cn,w as Dn,x as kn,m as Ln,y as Mn,b as In,s as xn,u as Nn}from"./antd-D6h4fDFf.js";const{entries:on,setPrototypeOf:qt,isFrozen:Pn,getPrototypeOf:Fn,getOwnPropertyDescriptor:Un}=Object;let{freeze:z,seal:q,create:Be}=Object,{apply:vt,construct:yt}=typeof Reflect<"u"&&Reflect;z||(z=function(t){return t});q||(q=function(t){return t});vt||(vt=function(t,c){for(var r=arguments.length,T=new Array(r>2?r-2:0),E=2;E<r;E++)T[E-2]=arguments[E];return t.apply(c,T)});yt||(yt=function(t){for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return new t(...r)});const Fe=G(Array.prototype.forEach),Hn=G(Array.prototype.lastIndexOf),Kt=G(Array.prototype.pop),Ue=G(Array.prototype.push),zn=G(Array.prototype.splice),Ze=G(String.prototype.toLowerCase),_t=G(String.prototype.toString),gt=G(String.prototype.match),Oe=G(String.prototype.replace),Gn=G(String.prototype.indexOf),Bn=G(String.prototype.trim),Q=G(Object.prototype.hasOwnProperty),H=G(RegExp.prototype.test),He=Wn(TypeError);function G(f){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return vt(f,t,r)}}function Wn(f){return function(){for(var t=arguments.length,c=new Array(t),r=0;r<t;r++)c[r]=arguments[r];return yt(f,c)}}function _(f,t){let c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ze;qt&&qt(f,null);let r=t.length;for(;r--;){let T=t[r];if(typeof T=="string"){const E=c(T);E!==T&&(Pn(t)||(t[r]=E),T=E)}f[T]=!0}return f}function Yn(f){for(let t=0;t<f.length;t++)Q(f,t)||(f[t]=null);return f}function ne(f){const t=Be(null);for(const[c,r]of on(f))Q(f,c)&&(Array.isArray(r)?t[c]=Yn(r):r&&typeof r=="object"&&r.constructor===Object?t[c]=ne(r):t[c]=r);return t}function ze(f,t){for(;f!==null;){const r=Un(f,t);if(r){if(r.get)return G(r.get);if(typeof r.value=="function")return G(r.value)}f=Fn(f)}function c(){return null}return c}const Qt=z(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ht=z(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Tt=z(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$n=z(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Et=z(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Vn=z(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Zt=z(["#text"]),Jt=z(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),At=z(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),en=z(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Qe=z(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Xn=q(/\{\{[\w\W]*|[\w\W]*\}\}/gm),jn=q(/<%[\w\W]*|[\w\W]*%>/gm),qn=q(/\$\{[\w\W]*/gm),Kn=q(/^data-[\-\w.\u00B7-\uFFFF]+$/),Qn=q(/^aria-[\-\w]+$/),ln=q(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zn=q(/^(?:\w+script|data):/i),Jn=q(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),rn=q(/^html$/i),es=q(/^[a-z][.\w]*(-[.\w]+)+$/i);var tn=Object.freeze({__proto__:null,ARIA_ATTR:Qn,ATTR_WHITESPACE:Jn,CUSTOM_ELEMENT:es,DATA_ATTR:Kn,DOCTYPE_NAME:rn,ERB_EXPR:jn,IS_ALLOWED_URI:ln,IS_SCRIPT_OR_DATA:Zn,MUSTACHE_EXPR:Xn,TMPLIT_EXPR:qn});const Ge={element:1,text:3,progressingInstruction:7,comment:8,document:9},ts=function(){return typeof window>"u"?null:window},ns=function(t,c){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null;const T="data-tt-policy-suffix";c&&c.hasAttribute(T)&&(r=c.getAttribute(T));const E="dompurify"+(r?"#"+r:"");try{return t.createPolicy(E,{createHTML(F){return F},createScriptURL(F){return F}})}catch{return console.warn("TrustedTypes policy "+E+" could not be created."),null}},nn=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function cn(){let f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ts();const t=l=>cn(l);if(t.version="3.4.0",t.removed=[],!f||!f.document||f.document.nodeType!==Ge.document||!f.Element)return t.isSupported=!1,t;let{document:c}=f;const r=c,T=r.currentScript,{DocumentFragment:E,HTMLTemplateElement:F,Node:y,Element:W,NodeFilter:V,NamedNodeMap:ge=f.NamedNodeMap||f.MozNamedAttrMap,HTMLFormElement:he,DOMParser:ue,trustedTypes:X}=f,j=W.prototype,Te=ze(j,"cloneNode"),Ee=ze(j,"remove"),Re=ze(j,"nextSibling"),de=ze(j,"childNodes"),se=ze(j,"parentNode");if(typeof F=="function"){const l=c.createElement("template");l.content&&l.content.ownerDocument&&(c=l.content.ownerDocument)}let p,i="";const{implementation:b,createNodeIterator:we,createDocumentFragment:Ce,getElementsByTagName:De}=c,{importNode:Ae}=r;let O=nn();t.isSupported=typeof on=="function"&&typeof se=="function"&&b&&b.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Z,ERB_EXPR:m,TMPLIT_EXPR:g,DATA_ATTR:s,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:J,ATTR_WHITESPACE:ke,CUSTOM_ELEMENT:un}=tn;let{IS_ALLOWED_URI:St}=tn,L=null;const bt=_({},[...Qt,...ht,...Tt,...Et,...Zt]);let I=null;const Ot=_({},[...Jt,...At,...en,...Qe]);let S=Object.seal(Be(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Le=null,Ye=null;const re=Object.seal(Be(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Rt=!0,Je=!0,wt=!1,Ct=!0,pe=!1,Me=!0,fe=!1,et=!1,tt=!1,ve=!1,$e=!1,Ve=!1,Dt=!0,kt=!1;const dn="user-content-";let nt=!0,Ie=!1,ye={},ee=null;const st=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Lt=null;const Mt=_({},["audio","video","img","source","image","track"]);let at=null;const It=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xe="http://www.w3.org/1998/Math/MathML",je="http://www.w3.org/2000/svg",te="http://www.w3.org/1999/xhtml";let Se=te,ot=!1,it=null;const pn=_({},[Xe,je,te],_t);let qe=_({},["mi","mo","mn","ms","mtext"]),Ke=_({},["annotation-xml"]);const fn=_({},["title","style","font","a","script"]);let xe=null;const mn=["application/xhtml+xml","text/html"],_n="text/html";let C=null,be=null;const gn=c.createElement("form"),xt=function(e){return e instanceof RegExp||e instanceof Function},lt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(be&&be===e)){if((!e||typeof e!="object")&&(e={}),e=ne(e),xe=mn.indexOf(e.PARSER_MEDIA_TYPE)===-1?_n:e.PARSER_MEDIA_TYPE,C=xe==="application/xhtml+xml"?_t:Ze,L=Q(e,"ALLOWED_TAGS")?_({},e.ALLOWED_TAGS,C):bt,I=Q(e,"ALLOWED_ATTR")?_({},e.ALLOWED_ATTR,C):Ot,it=Q(e,"ALLOWED_NAMESPACES")?_({},e.ALLOWED_NAMESPACES,_t):pn,at=Q(e,"ADD_URI_SAFE_ATTR")?_(ne(It),e.ADD_URI_SAFE_ATTR,C):It,Lt=Q(e,"ADD_DATA_URI_TAGS")?_(ne(Mt),e.ADD_DATA_URI_TAGS,C):Mt,ee=Q(e,"FORBID_CONTENTS")?_({},e.FORBID_CONTENTS,C):st,Le=Q(e,"FORBID_TAGS")?_({},e.FORBID_TAGS,C):ne({}),Ye=Q(e,"FORBID_ATTR")?_({},e.FORBID_ATTR,C):ne({}),ye=Q(e,"USE_PROFILES")?e.USE_PROFILES:!1,Rt=e.ALLOW_ARIA_ATTR!==!1,Je=e.ALLOW_DATA_ATTR!==!1,wt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ct=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,pe=e.SAFE_FOR_TEMPLATES||!1,Me=e.SAFE_FOR_XML!==!1,fe=e.WHOLE_DOCUMENT||!1,ve=e.RETURN_DOM||!1,$e=e.RETURN_DOM_FRAGMENT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,tt=e.FORCE_BODY||!1,Dt=e.SANITIZE_DOM!==!1,kt=e.SANITIZE_NAMED_PROPS||!1,nt=e.KEEP_CONTENT!==!1,Ie=e.IN_PLACE||!1,St=e.ALLOWED_URI_REGEXP||ln,Se=e.NAMESPACE||te,qe=e.MATHML_TEXT_INTEGRATION_POINTS||qe,Ke=e.HTML_INTEGRATION_POINTS||Ke,S=e.CUSTOM_ELEMENT_HANDLING||Be(null),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(S.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(S.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(S.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),pe&&(Je=!1),$e&&(ve=!0),ye&&(L=_({},Zt),I=Be(null),ye.html===!0&&(_(L,Qt),_(I,Jt)),ye.svg===!0&&(_(L,ht),_(I,At),_(I,Qe)),ye.svgFilters===!0&&(_(L,Tt),_(I,At),_(I,Qe)),ye.mathMl===!0&&(_(L,Et),_(I,en),_(I,Qe))),re.tagCheck=null,re.attributeCheck=null,e.ADD_TAGS&&(typeof e.ADD_TAGS=="function"?re.tagCheck=e.ADD_TAGS:(L===bt&&(L=ne(L)),_(L,e.ADD_TAGS,C))),e.ADD_ATTR&&(typeof e.ADD_ATTR=="function"?re.attributeCheck=e.ADD_ATTR:(I===Ot&&(I=ne(I)),_(I,e.ADD_ATTR,C))),e.ADD_URI_SAFE_ATTR&&_(at,e.ADD_URI_SAFE_ATTR,C),e.FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.FORBID_CONTENTS,C)),e.ADD_FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.ADD_FORBID_CONTENTS,C)),nt&&(L["#text"]=!0),fe&&_(L,["html","head","body"]),L.table&&(_(L,["tbody"]),delete Le.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');p=e.TRUSTED_TYPES_POLICY,i=p.createHTML("")}else p===void 0&&(p=ns(X,T)),p!==null&&typeof i=="string"&&(i=p.createHTML(""));z&&z(e),be=e}},Nt=_({},[...ht,...Tt,...$n]),Pt=_({},[...Et,...Vn]),hn=function(e){let n=se(e);(!n||!n.tagName)&&(n={namespaceURI:Se,tagName:"template"});const o=Ze(e.tagName),v=Ze(n.tagName);return it[e.namespaceURI]?e.namespaceURI===je?n.namespaceURI===te?o==="svg":n.namespaceURI===Xe?o==="svg"&&(v==="annotation-xml"||qe[v]):!!Nt[o]:e.namespaceURI===Xe?n.namespaceURI===te?o==="math":n.namespaceURI===je?o==="math"&&Ke[v]:!!Pt[o]:e.namespaceURI===te?n.namespaceURI===je&&!Ke[v]||n.namespaceURI===Xe&&!qe[v]?!1:!Pt[o]&&(fn[o]||!Nt[o]):!!(xe==="application/xhtml+xml"&&it[e.namespaceURI]):!1},K=function(e){Ue(t.removed,{element:e});try{se(e).removeChild(e)}catch{Ee(e)}},me=function(e,n){try{Ue(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Ue(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e==="is")if(ve||$e)try{K(n)}catch{}else try{n.setAttribute(e,"")}catch{}},Ft=function(e){let n=null,o=null;if(tt)e="<remove></remove>"+e;else{const R=gt(e,/^[\r\n\t ]+/);o=R&&R[0]}xe==="application/xhtml+xml"&&Se===te&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const v=p?p.createHTML(e):e;if(Se===te)try{n=new ue().parseFromString(v,xe)}catch{}if(!n||!n.documentElement){n=b.createDocument(Se,"template",null);try{n.documentElement.innerHTML=ot?i:v}catch{}}const P=n.body||n.documentElement;return e&&o&&P.insertBefore(c.createTextNode(o),P.childNodes[0]||null),Se===te?De.call(n,fe?"html":"body")[0]:fe?n.documentElement:P},Ut=function(e){return we.call(e.ownerDocument||e,e,V.SHOW_ELEMENT|V.SHOW_COMMENT|V.SHOW_TEXT|V.SHOW_PROCESSING_INSTRUCTION|V.SHOW_CDATA_SECTION,null)},rt=function(e){return e instanceof he&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof ge)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},ct=function(e){return typeof y=="function"&&e instanceof y};function ae(l,e,n){Fe(l,o=>{o.call(t,e,n,be)})}const Ht=function(e){let n=null;if(ae(O.beforeSanitizeElements,e,null),rt(e))return K(e),!0;const o=C(e.nodeName);if(ae(O.uponSanitizeElement,e,{tagName:o,allowedTags:L}),Me&&e.hasChildNodes()&&!ct(e.firstElementChild)&&H(/<[/\w!]/g,e.innerHTML)&&H(/<[/\w!]/g,e.textContent)||Me&&e.namespaceURI===te&&o==="style"&&ct(e.firstElementChild)||e.nodeType===Ge.progressingInstruction||Me&&e.nodeType===Ge.comment&&H(/<[/\w]/g,e.data))return K(e),!0;if(Le[o]||!(re.tagCheck instanceof Function&&re.tagCheck(o))&&!L[o]){if(!Le[o]&&Gt(o)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o)))return!1;if(nt&&!ee[o]){const v=se(e)||e.parentNode,P=de(e)||e.childNodes;if(P&&v){const R=P.length;for(let B=R-1;B>=0;--B){const Y=Te(P[B],!0);Y.__removalCount=(e.__removalCount||0)+1,v.insertBefore(Y,Re(e))}}}return K(e),!0}return e instanceof W&&!hn(e)||(o==="noscript"||o==="noembed"||o==="noframes")&&H(/<\/no(script|embed|frames)/i,e.innerHTML)?(K(e),!0):(pe&&e.nodeType===Ge.text&&(n=e.textContent,Fe([Z,m,g],v=>{n=Oe(n,v," ")}),e.textContent!==n&&(Ue(t.removed,{element:e.cloneNode()}),e.textContent=n)),ae(O.afterSanitizeElements,e,null),!1)},zt=function(e,n,o){if(Ye[n]||Dt&&(n==="id"||n==="name")&&(o in c||o in gn))return!1;if(!(Je&&!Ye[n]&&H(s,n))){if(!(Rt&&H(M,n))){if(!(re.attributeCheck instanceof Function&&re.attributeCheck(n,e))){if(!I[n]||Ye[n]){if(!(Gt(e)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,e)||S.tagNameCheck instanceof Function&&S.tagNameCheck(e))&&(S.attributeNameCheck instanceof RegExp&&H(S.attributeNameCheck,n)||S.attributeNameCheck instanceof Function&&S.attributeNameCheck(n,e))||n==="is"&&S.allowCustomizedBuiltInElements&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o))))return!1}else if(!at[n]){if(!H(St,Oe(o,ke,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&e!=="script"&&Gn(o,"data:")===0&&Lt[e])){if(!(wt&&!H(J,Oe(o,ke,"")))){if(o)return!1}}}}}}}return!0},Gt=function(e){return e!=="annotation-xml"&>(e,un)},Bt=function(e){ae(O.beforeSanitizeAttributes,e,null);const{attributes:n}=e;if(!n||rt(e))return;const o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I,forceKeepAttr:void 0};let v=n.length;for(;v--;){const P=n[v],{name:R,namespaceURI:B,value:Y}=P,ce=C(R),ut=Y;let x=R==="value"?ut:Bn(ut);if(o.attrName=ce,o.attrValue=x,o.keepAttr=!0,o.forceKeepAttr=void 0,ae(O.uponSanitizeAttribute,e,o),x=o.attrValue,kt&&(ce==="id"||ce==="name")&&(me(R,e),x=dn+x),Me&&H(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,x)){me(R,e);continue}if(ce==="attributename"&>(x,"href")){me(R,e);continue}if(o.forceKeepAttr)continue;if(!o.keepAttr){me(R,e);continue}if(!Ct&&H(/\/>/i,x)){me(R,e);continue}pe&&Fe([Z,m,g],$t=>{x=Oe(x,$t," ")});const Yt=C(e.nodeName);if(!zt(Yt,ce,x)){me(R,e);continue}if(p&&typeof X=="object"&&typeof X.getAttributeType=="function"&&!B)switch(X.getAttributeType(Yt,ce)){case"TrustedHTML":{x=p.createHTML(x);break}case"TrustedScriptURL":{x=p.createScriptURL(x);break}}if(x!==ut)try{B?e.setAttributeNS(B,R,x):e.setAttribute(R,x),rt(e)?K(e):Kt(t.removed)}catch{me(R,e)}}ae(O.afterSanitizeAttributes,e,null)},Wt=function(e){let n=null;const o=Ut(e);for(ae(O.beforeSanitizeShadowDOM,e,null);n=o.nextNode();)ae(O.uponSanitizeShadowNode,n,null),Ht(n),Bt(n),n.content instanceof E&&Wt(n.content);ae(O.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,o=null,v=null,P=null;if(ot=!l,ot&&(l="<!-->"),typeof l!="string"&&!ct(l))if(typeof l.toString=="function"){if(l=l.toString(),typeof l!="string")throw He("dirty is not a string, aborting")}else throw He("toString is not a function");if(!t.isSupported)return l;if(et||lt(e),t.removed=[],typeof l=="string"&&(Ie=!1),Ie){if(l.nodeName){const Y=C(l.nodeName);if(!L[Y]||Le[Y])throw He("root node is forbidden and cannot be sanitized in-place")}}else if(l instanceof y)n=Ft("<!---->"),o=n.ownerDocument.importNode(l,!0),o.nodeType===Ge.element&&o.nodeName==="BODY"||o.nodeName==="HTML"?n=o:n.appendChild(o);else{if(!ve&&!pe&&!fe&&l.indexOf("<")===-1)return p&&Ve?p.createHTML(l):l;if(n=Ft(l),!n)return ve?null:Ve?i:""}n&&tt&&K(n.firstChild);const R=Ut(Ie?l:n);for(;v=R.nextNode();)Ht(v),Bt(v),v.content instanceof E&&Wt(v.content);if(Ie)return l;if(ve){if(pe){n.normalize();let Y=n.innerHTML;Fe([Z,m,g],ce=>{Y=Oe(Y,ce," ")}),n.innerHTML=Y}if($e)for(P=Ce.call(n.ownerDocument);n.firstChild;)P.appendChild(n.firstChild);else P=n;return(I.shadowroot||I.shadowrootmode)&&(P=Ae.call(r,P,!0)),P}let B=fe?n.outerHTML:n.innerHTML;return fe&&L["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&H(rn,n.ownerDocument.doctype.name)&&(B="<!DOCTYPE "+n.ownerDocument.doctype.name+`>
|
|
1
|
+
import{V as Tn,w as an,f as w,c as We,o as En,a3 as h,a1 as d,k as D,u as a,F as oe,a7 as ie,a2 as Ne,A as dt,a5 as A,a4 as N,G as U,W as $,a6 as pt,Z as k,a9 as An,X as le,Y as u,n as Vt}from"./vendor-CN0Iv_qZ.js";import{m as Xt,H as ft}from"./markdown-CusdXFxb.js";/* empty css */import{u as mt}from"./ws-Dma34ig_.js";import{u as _e}from"./chat-BYmuDvol.js";import{_ as vn}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{R as Pe,T as yn,w as jt,H as Sn,S as bn,p as On,G as Rn,s as wn,k as Cn,x as Dn,y as kn,n as Ln,z as Mn,b as In,t as xn,v as Nn}from"./antd-DEjZPGMj.js";const{entries:on,setPrototypeOf:qt,isFrozen:Pn,getPrototypeOf:Fn,getOwnPropertyDescriptor:Un}=Object;let{freeze:z,seal:q,create:Be}=Object,{apply:vt,construct:yt}=typeof Reflect<"u"&&Reflect;z||(z=function(t){return t});q||(q=function(t){return t});vt||(vt=function(t,c){for(var r=arguments.length,T=new Array(r>2?r-2:0),E=2;E<r;E++)T[E-2]=arguments[E];return t.apply(c,T)});yt||(yt=function(t){for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return new t(...r)});const Fe=G(Array.prototype.forEach),Hn=G(Array.prototype.lastIndexOf),Kt=G(Array.prototype.pop),Ue=G(Array.prototype.push),zn=G(Array.prototype.splice),Ze=G(String.prototype.toLowerCase),_t=G(String.prototype.toString),gt=G(String.prototype.match),Oe=G(String.prototype.replace),Gn=G(String.prototype.indexOf),Bn=G(String.prototype.trim),Q=G(Object.prototype.hasOwnProperty),H=G(RegExp.prototype.test),He=Wn(TypeError);function G(f){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var c=arguments.length,r=new Array(c>1?c-1:0),T=1;T<c;T++)r[T-1]=arguments[T];return vt(f,t,r)}}function Wn(f){return function(){for(var t=arguments.length,c=new Array(t),r=0;r<t;r++)c[r]=arguments[r];return yt(f,c)}}function _(f,t){let c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:Ze;qt&&qt(f,null);let r=t.length;for(;r--;){let T=t[r];if(typeof T=="string"){const E=c(T);E!==T&&(Pn(t)||(t[r]=E),T=E)}f[T]=!0}return f}function Yn(f){for(let t=0;t<f.length;t++)Q(f,t)||(f[t]=null);return f}function ne(f){const t=Be(null);for(const[c,r]of on(f))Q(f,c)&&(Array.isArray(r)?t[c]=Yn(r):r&&typeof r=="object"&&r.constructor===Object?t[c]=ne(r):t[c]=r);return t}function ze(f,t){for(;f!==null;){const r=Un(f,t);if(r){if(r.get)return G(r.get);if(typeof r.value=="function")return G(r.value)}f=Fn(f)}function c(){return null}return c}const Qt=z(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),ht=z(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),Tt=z(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$n=z(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),Et=z(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),Vn=z(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Zt=z(["#text"]),Jt=z(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns","slot"]),At=z(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),en=z(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Qe=z(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),Xn=q(/\{\{[\w\W]*|[\w\W]*\}\}/gm),jn=q(/<%[\w\W]*|[\w\W]*%>/gm),qn=q(/\$\{[\w\W]*/gm),Kn=q(/^data-[\-\w.\u00B7-\uFFFF]+$/),Qn=q(/^aria-[\-\w]+$/),ln=q(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Zn=q(/^(?:\w+script|data):/i),Jn=q(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),rn=q(/^html$/i),es=q(/^[a-z][.\w]*(-[.\w]+)+$/i);var tn=Object.freeze({__proto__:null,ARIA_ATTR:Qn,ATTR_WHITESPACE:Jn,CUSTOM_ELEMENT:es,DATA_ATTR:Kn,DOCTYPE_NAME:rn,ERB_EXPR:jn,IS_ALLOWED_URI:ln,IS_SCRIPT_OR_DATA:Zn,MUSTACHE_EXPR:Xn,TMPLIT_EXPR:qn});const Ge={element:1,text:3,progressingInstruction:7,comment:8,document:9},ts=function(){return typeof window>"u"?null:window},ns=function(t,c){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let r=null;const T="data-tt-policy-suffix";c&&c.hasAttribute(T)&&(r=c.getAttribute(T));const E="dompurify"+(r?"#"+r:"");try{return t.createPolicy(E,{createHTML(F){return F},createScriptURL(F){return F}})}catch{return console.warn("TrustedTypes policy "+E+" could not be created."),null}},nn=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function cn(){let f=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ts();const t=l=>cn(l);if(t.version="3.4.0",t.removed=[],!f||!f.document||f.document.nodeType!==Ge.document||!f.Element)return t.isSupported=!1,t;let{document:c}=f;const r=c,T=r.currentScript,{DocumentFragment:E,HTMLTemplateElement:F,Node:y,Element:W,NodeFilter:V,NamedNodeMap:ge=f.NamedNodeMap||f.MozNamedAttrMap,HTMLFormElement:he,DOMParser:ue,trustedTypes:X}=f,j=W.prototype,Te=ze(j,"cloneNode"),Ee=ze(j,"remove"),Re=ze(j,"nextSibling"),de=ze(j,"childNodes"),se=ze(j,"parentNode");if(typeof F=="function"){const l=c.createElement("template");l.content&&l.content.ownerDocument&&(c=l.content.ownerDocument)}let p,i="";const{implementation:b,createNodeIterator:we,createDocumentFragment:Ce,getElementsByTagName:De}=c,{importNode:Ae}=r;let O=nn();t.isSupported=typeof on=="function"&&typeof se=="function"&&b&&b.createHTMLDocument!==void 0;const{MUSTACHE_EXPR:Z,ERB_EXPR:m,TMPLIT_EXPR:g,DATA_ATTR:s,ARIA_ATTR:M,IS_SCRIPT_OR_DATA:J,ATTR_WHITESPACE:ke,CUSTOM_ELEMENT:un}=tn;let{IS_ALLOWED_URI:St}=tn,L=null;const bt=_({},[...Qt,...ht,...Tt,...Et,...Zt]);let I=null;const Ot=_({},[...Jt,...At,...en,...Qe]);let S=Object.seal(Be(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Le=null,Ye=null;const re=Object.seal(Be(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let Rt=!0,Je=!0,wt=!1,Ct=!0,pe=!1,Me=!0,fe=!1,et=!1,tt=!1,ve=!1,$e=!1,Ve=!1,Dt=!0,kt=!1;const dn="user-content-";let nt=!0,Ie=!1,ye={},ee=null;const st=_({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Lt=null;const Mt=_({},["audio","video","img","source","image","track"]);let at=null;const It=_({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),Xe="http://www.w3.org/1998/Math/MathML",je="http://www.w3.org/2000/svg",te="http://www.w3.org/1999/xhtml";let Se=te,ot=!1,it=null;const pn=_({},[Xe,je,te],_t);let qe=_({},["mi","mo","mn","ms","mtext"]),Ke=_({},["annotation-xml"]);const fn=_({},["title","style","font","a","script"]);let xe=null;const mn=["application/xhtml+xml","text/html"],_n="text/html";let C=null,be=null;const gn=c.createElement("form"),xt=function(e){return e instanceof RegExp||e instanceof Function},lt=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(!(be&&be===e)){if((!e||typeof e!="object")&&(e={}),e=ne(e),xe=mn.indexOf(e.PARSER_MEDIA_TYPE)===-1?_n:e.PARSER_MEDIA_TYPE,C=xe==="application/xhtml+xml"?_t:Ze,L=Q(e,"ALLOWED_TAGS")?_({},e.ALLOWED_TAGS,C):bt,I=Q(e,"ALLOWED_ATTR")?_({},e.ALLOWED_ATTR,C):Ot,it=Q(e,"ALLOWED_NAMESPACES")?_({},e.ALLOWED_NAMESPACES,_t):pn,at=Q(e,"ADD_URI_SAFE_ATTR")?_(ne(It),e.ADD_URI_SAFE_ATTR,C):It,Lt=Q(e,"ADD_DATA_URI_TAGS")?_(ne(Mt),e.ADD_DATA_URI_TAGS,C):Mt,ee=Q(e,"FORBID_CONTENTS")?_({},e.FORBID_CONTENTS,C):st,Le=Q(e,"FORBID_TAGS")?_({},e.FORBID_TAGS,C):ne({}),Ye=Q(e,"FORBID_ATTR")?_({},e.FORBID_ATTR,C):ne({}),ye=Q(e,"USE_PROFILES")?e.USE_PROFILES:!1,Rt=e.ALLOW_ARIA_ATTR!==!1,Je=e.ALLOW_DATA_ATTR!==!1,wt=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Ct=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,pe=e.SAFE_FOR_TEMPLATES||!1,Me=e.SAFE_FOR_XML!==!1,fe=e.WHOLE_DOCUMENT||!1,ve=e.RETURN_DOM||!1,$e=e.RETURN_DOM_FRAGMENT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,tt=e.FORCE_BODY||!1,Dt=e.SANITIZE_DOM!==!1,kt=e.SANITIZE_NAMED_PROPS||!1,nt=e.KEEP_CONTENT!==!1,Ie=e.IN_PLACE||!1,St=e.ALLOWED_URI_REGEXP||ln,Se=e.NAMESPACE||te,qe=e.MATHML_TEXT_INTEGRATION_POINTS||qe,Ke=e.HTML_INTEGRATION_POINTS||Ke,S=e.CUSTOM_ELEMENT_HANDLING||Be(null),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(S.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&xt(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(S.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(S.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),pe&&(Je=!1),$e&&(ve=!0),ye&&(L=_({},Zt),I=Be(null),ye.html===!0&&(_(L,Qt),_(I,Jt)),ye.svg===!0&&(_(L,ht),_(I,At),_(I,Qe)),ye.svgFilters===!0&&(_(L,Tt),_(I,At),_(I,Qe)),ye.mathMl===!0&&(_(L,Et),_(I,en),_(I,Qe))),re.tagCheck=null,re.attributeCheck=null,e.ADD_TAGS&&(typeof e.ADD_TAGS=="function"?re.tagCheck=e.ADD_TAGS:(L===bt&&(L=ne(L)),_(L,e.ADD_TAGS,C))),e.ADD_ATTR&&(typeof e.ADD_ATTR=="function"?re.attributeCheck=e.ADD_ATTR:(I===Ot&&(I=ne(I)),_(I,e.ADD_ATTR,C))),e.ADD_URI_SAFE_ATTR&&_(at,e.ADD_URI_SAFE_ATTR,C),e.FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.FORBID_CONTENTS,C)),e.ADD_FORBID_CONTENTS&&(ee===st&&(ee=ne(ee)),_(ee,e.ADD_FORBID_CONTENTS,C)),nt&&(L["#text"]=!0),fe&&_(L,["html","head","body"]),L.table&&(_(L,["tbody"]),delete Le.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw He('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');p=e.TRUSTED_TYPES_POLICY,i=p.createHTML("")}else p===void 0&&(p=ns(X,T)),p!==null&&typeof i=="string"&&(i=p.createHTML(""));z&&z(e),be=e}},Nt=_({},[...ht,...Tt,...$n]),Pt=_({},[...Et,...Vn]),hn=function(e){let n=se(e);(!n||!n.tagName)&&(n={namespaceURI:Se,tagName:"template"});const o=Ze(e.tagName),v=Ze(n.tagName);return it[e.namespaceURI]?e.namespaceURI===je?n.namespaceURI===te?o==="svg":n.namespaceURI===Xe?o==="svg"&&(v==="annotation-xml"||qe[v]):!!Nt[o]:e.namespaceURI===Xe?n.namespaceURI===te?o==="math":n.namespaceURI===je?o==="math"&&Ke[v]:!!Pt[o]:e.namespaceURI===te?n.namespaceURI===je&&!Ke[v]||n.namespaceURI===Xe&&!qe[v]?!1:!Pt[o]&&(fn[o]||!Nt[o]):!!(xe==="application/xhtml+xml"&&it[e.namespaceURI]):!1},K=function(e){Ue(t.removed,{element:e});try{se(e).removeChild(e)}catch{Ee(e)}},me=function(e,n){try{Ue(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{Ue(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e==="is")if(ve||$e)try{K(n)}catch{}else try{n.setAttribute(e,"")}catch{}},Ft=function(e){let n=null,o=null;if(tt)e="<remove></remove>"+e;else{const R=gt(e,/^[\r\n\t ]+/);o=R&&R[0]}xe==="application/xhtml+xml"&&Se===te&&(e='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+e+"</body></html>");const v=p?p.createHTML(e):e;if(Se===te)try{n=new ue().parseFromString(v,xe)}catch{}if(!n||!n.documentElement){n=b.createDocument(Se,"template",null);try{n.documentElement.innerHTML=ot?i:v}catch{}}const P=n.body||n.documentElement;return e&&o&&P.insertBefore(c.createTextNode(o),P.childNodes[0]||null),Se===te?De.call(n,fe?"html":"body")[0]:fe?n.documentElement:P},Ut=function(e){return we.call(e.ownerDocument||e,e,V.SHOW_ELEMENT|V.SHOW_COMMENT|V.SHOW_TEXT|V.SHOW_PROCESSING_INSTRUCTION|V.SHOW_CDATA_SECTION,null)},rt=function(e){return e instanceof he&&(typeof e.nodeName!="string"||typeof e.textContent!="string"||typeof e.removeChild!="function"||!(e.attributes instanceof ge)||typeof e.removeAttribute!="function"||typeof e.setAttribute!="function"||typeof e.namespaceURI!="string"||typeof e.insertBefore!="function"||typeof e.hasChildNodes!="function")},ct=function(e){return typeof y=="function"&&e instanceof y};function ae(l,e,n){Fe(l,o=>{o.call(t,e,n,be)})}const Ht=function(e){let n=null;if(ae(O.beforeSanitizeElements,e,null),rt(e))return K(e),!0;const o=C(e.nodeName);if(ae(O.uponSanitizeElement,e,{tagName:o,allowedTags:L}),Me&&e.hasChildNodes()&&!ct(e.firstElementChild)&&H(/<[/\w!]/g,e.innerHTML)&&H(/<[/\w!]/g,e.textContent)||Me&&e.namespaceURI===te&&o==="style"&&ct(e.firstElementChild)||e.nodeType===Ge.progressingInstruction||Me&&e.nodeType===Ge.comment&&H(/<[/\w]/g,e.data))return K(e),!0;if(Le[o]||!(re.tagCheck instanceof Function&&re.tagCheck(o))&&!L[o]){if(!Le[o]&&Gt(o)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o)))return!1;if(nt&&!ee[o]){const v=se(e)||e.parentNode,P=de(e)||e.childNodes;if(P&&v){const R=P.length;for(let B=R-1;B>=0;--B){const Y=Te(P[B],!0);Y.__removalCount=(e.__removalCount||0)+1,v.insertBefore(Y,Re(e))}}}return K(e),!0}return e instanceof W&&!hn(e)||(o==="noscript"||o==="noembed"||o==="noframes")&&H(/<\/no(script|embed|frames)/i,e.innerHTML)?(K(e),!0):(pe&&e.nodeType===Ge.text&&(n=e.textContent,Fe([Z,m,g],v=>{n=Oe(n,v," ")}),e.textContent!==n&&(Ue(t.removed,{element:e.cloneNode()}),e.textContent=n)),ae(O.afterSanitizeElements,e,null),!1)},zt=function(e,n,o){if(Ye[n]||Dt&&(n==="id"||n==="name")&&(o in c||o in gn))return!1;if(!(Je&&!Ye[n]&&H(s,n))){if(!(Rt&&H(M,n))){if(!(re.attributeCheck instanceof Function&&re.attributeCheck(n,e))){if(!I[n]||Ye[n]){if(!(Gt(e)&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,e)||S.tagNameCheck instanceof Function&&S.tagNameCheck(e))&&(S.attributeNameCheck instanceof RegExp&&H(S.attributeNameCheck,n)||S.attributeNameCheck instanceof Function&&S.attributeNameCheck(n,e))||n==="is"&&S.allowCustomizedBuiltInElements&&(S.tagNameCheck instanceof RegExp&&H(S.tagNameCheck,o)||S.tagNameCheck instanceof Function&&S.tagNameCheck(o))))return!1}else if(!at[n]){if(!H(St,Oe(o,ke,""))){if(!((n==="src"||n==="xlink:href"||n==="href")&&e!=="script"&&Gn(o,"data:")===0&&Lt[e])){if(!(wt&&!H(J,Oe(o,ke,"")))){if(o)return!1}}}}}}}return!0},Gt=function(e){return e!=="annotation-xml"&>(e,un)},Bt=function(e){ae(O.beforeSanitizeAttributes,e,null);const{attributes:n}=e;if(!n||rt(e))return;const o={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:I,forceKeepAttr:void 0};let v=n.length;for(;v--;){const P=n[v],{name:R,namespaceURI:B,value:Y}=P,ce=C(R),ut=Y;let x=R==="value"?ut:Bn(ut);if(o.attrName=ce,o.attrValue=x,o.keepAttr=!0,o.forceKeepAttr=void 0,ae(O.uponSanitizeAttribute,e,o),x=o.attrValue,kt&&(ce==="id"||ce==="name")&&(me(R,e),x=dn+x),Me&&H(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,x)){me(R,e);continue}if(ce==="attributename"&>(x,"href")){me(R,e);continue}if(o.forceKeepAttr)continue;if(!o.keepAttr){me(R,e);continue}if(!Ct&&H(/\/>/i,x)){me(R,e);continue}pe&&Fe([Z,m,g],$t=>{x=Oe(x,$t," ")});const Yt=C(e.nodeName);if(!zt(Yt,ce,x)){me(R,e);continue}if(p&&typeof X=="object"&&typeof X.getAttributeType=="function"&&!B)switch(X.getAttributeType(Yt,ce)){case"TrustedHTML":{x=p.createHTML(x);break}case"TrustedScriptURL":{x=p.createScriptURL(x);break}}if(x!==ut)try{B?e.setAttributeNS(B,R,x):e.setAttribute(R,x),rt(e)?K(e):Kt(t.removed)}catch{me(R,e)}}ae(O.afterSanitizeAttributes,e,null)},Wt=function(e){let n=null;const o=Ut(e);for(ae(O.beforeSanitizeShadowDOM,e,null);n=o.nextNode();)ae(O.uponSanitizeShadowNode,n,null),Ht(n),Bt(n),n.content instanceof E&&Wt(n.content);ae(O.afterSanitizeShadowDOM,e,null)};return t.sanitize=function(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null,o=null,v=null,P=null;if(ot=!l,ot&&(l="<!-->"),typeof l!="string"&&!ct(l))if(typeof l.toString=="function"){if(l=l.toString(),typeof l!="string")throw He("dirty is not a string, aborting")}else throw He("toString is not a function");if(!t.isSupported)return l;if(et||lt(e),t.removed=[],typeof l=="string"&&(Ie=!1),Ie){if(l.nodeName){const Y=C(l.nodeName);if(!L[Y]||Le[Y])throw He("root node is forbidden and cannot be sanitized in-place")}}else if(l instanceof y)n=Ft("<!---->"),o=n.ownerDocument.importNode(l,!0),o.nodeType===Ge.element&&o.nodeName==="BODY"||o.nodeName==="HTML"?n=o:n.appendChild(o);else{if(!ve&&!pe&&!fe&&l.indexOf("<")===-1)return p&&Ve?p.createHTML(l):l;if(n=Ft(l),!n)return ve?null:Ve?i:""}n&&tt&&K(n.firstChild);const R=Ut(Ie?l:n);for(;v=R.nextNode();)Ht(v),Bt(v),v.content instanceof E&&Wt(v.content);if(Ie)return l;if(ve){if(pe){n.normalize();let Y=n.innerHTML;Fe([Z,m,g],ce=>{Y=Oe(Y,ce," ")}),n.innerHTML=Y}if($e)for(P=Ce.call(n.ownerDocument);n.firstChild;)P.appendChild(n.firstChild);else P=n;return(I.shadowroot||I.shadowrootmode)&&(P=Ae.call(r,P,!0)),P}let B=fe?n.outerHTML:n.innerHTML;return fe&&L["!doctype"]&&n.ownerDocument&&n.ownerDocument.doctype&&n.ownerDocument.doctype.name&&H(rn,n.ownerDocument.doctype.name)&&(B="<!DOCTYPE "+n.ownerDocument.doctype.name+`>
|
|
2
2
|
`+B),pe&&Fe([Z,m,g],Y=>{B=Oe(B,Y," ")}),p&&Ve?p.createHTML(B):B},t.setConfig=function(){let l=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};lt(l),et=!0},t.clearConfig=function(){be=null,et=!1},t.isValidAttribute=function(l,e,n){be||lt({});const o=C(l),v=C(e);return zt(o,v,n)},t.addHook=function(l,e){typeof e=="function"&&Ue(O[l],e)},t.removeHook=function(l,e){if(e!==void 0){const n=Hn(O[l],e);return n===-1?void 0:zn(O[l],n,1)[0]}return Kt(O[l])},t.removeHooks=function(l){O[l]=[]},t.removeAllHooks=function(){O=nn()},t}var sn=cn();const ss=[{id:"doc-convert",name:"文档格式转换",icon:"FileTextOutlined",category:"document",description:"Word、Markdown、HTML、PDF 之间的格式互转",examples:["把 report.docx 转成 PDF","合并多个 Markdown 为一个文档"],acceptsFiles:!0},{id:"media-process",name:"音视频处理",icon:"PlayCircleOutlined",category:"media",description:"视频压缩、音频提取、格式转换、剪辑",examples:["提取 MP4 的音频","压缩视频到 50MB 以内"],acceptsFiles:!0},{id:"data-analysis",name:"数据分析",icon:"BarChartOutlined",category:"data",description:"CSV/Excel 分析、统计、可视化图表",examples:["分析 sales.csv 的月度趋势"],acceptsFiles:!0},{id:"web-research",name:"信息检索与调研",icon:"SearchOutlined",category:"research",description:"网页抓取、API 调用、多源信息汇总",examples:["调研 AI Agent 框架对比"],acceptsFiles:!1},{id:"image-process",name:"图片处理",icon:"PictureOutlined",category:"media",description:"批量压缩、格式转换、加水印、OCR",examples:["批量压缩到 500KB"],acceptsFiles:!0},{id:"code-helper",name:"代码辅助",icon:"CodeOutlined",category:"development",description:"生成脚本、调试代码、自动化任务",examples:["写一个批量重命名脚本"],acceptsFiles:!0},{id:"system-admin",name:"系统运维",icon:"DesktopOutlined",category:"system",description:"磁盘分析、进程管理、日志分析",examples:["查看磁盘使用情况"],acceptsFiles:!1},{id:"file-organize",name:"文件整理",icon:"FolderOpenOutlined",category:"file",description:"批量重命名、分类整理、查找重复",examples:["按文件类型分类整理"],acceptsFiles:!1},{id:"network-tools",name:"网络工具",icon:"GlobalOutlined",category:"network",description:"API 调试、网页抓取、网络诊断",examples:["测试 API 接口"],acceptsFiles:!1},{id:"learning-assist",name:"学习辅助",icon:"ReadOutlined",category:"learning",description:"文档翻译、内容总结、论文分析",examples:["翻译 PDF 摘要"],acceptsFiles:!0}],as=Tn("cowork",()=>{const f=w(ss),t=w(null),c=w([]),r=w(!1),T=w([]),E=w([]),F=w(null),y=w(null),W=w(null),V=w([]),ge=w(!1),he=w(3),ue=w(!1),X=w([]),j=_e();an(()=>j.isLoading,m=>{!m&&y.value&&(r.value=!1)});function Te(m){t.value=m,Ee()}function Ee(){T.value=[],E.value=[],F.value=null,r.value=!1,y.value=null,W.value=null}function Re(m){c.value.includes(m)||c.value.push(m)}function de(m){c.value=c.value.filter(g=>g!==m)}async function se(){const m=mt();try{await m.waitConnected(5e3);const g=await m.sendRaw({type:"cowork-templates"},1e4);g?.templates?.length&&(f.value=g.templates)}catch{}}async function p(){const m=mt();try{await m.waitConnected(5e3);const g=await m.sendRaw({type:"cowork-history",limit:50},1e4);g?.entries&&(V.value=g.entries)}catch{}}async function i(m){W.value={mode:"session",message:m},r.value=!0;const g=t.value;let s="";g&&(s=`## 当前任务类型: ${g.name}
|
|
3
3
|
${g.description||""}`);let M=m;c.value.length&&(M+=`
|
|
4
4
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as Q}from"./ws-Dma34ig_.js";import{
|
|
2
|
-
`);for(const k of c){const u=k.trim();if(!u||u.startsWith("─"))continue;const i=u.match(/^([^\t|]+?)[\t|]+([*\d/,\-?LW#\s]+)[\t|]+/);i&&e.push({key:e.length,name:i[1].trim(),cron:i[2].trim(),enabled:!u.toLowerCase().includes("pause")&&!u.toLowerCase().includes("disabled"),description:"",running:!1})}return e}function P(l){o.value.cron=l.cron,_.value=!0}async function j(){if(!o.value.name||!o.value.cron){d.warning("请填写任务名称和 Cron 表达式");return}$.value=!0;try{const l=`skill run cron-scheduler "add task: ${o.value.name}, schedule: ${o.value.cron}, payload: ${o.value.payload||"ping"}"`,{output:e}=await y.execute(l,2e4);d.success("任务已创建"),_.value=!1,o.value={name:"",cron:"",payload:"",description:"",enabled:!0},await T()}catch(l){d.error("创建失败: "+l.message)}finally{$.value=!1}}async function D(l){l.running=!0;try{const{output:e}=await y.execute(`skill run cron-scheduler "run task: ${l.name}"`,3e4);d.success(`任务 ${l.name} 已触发`)}catch(e){d.error("触发失败: "+e.message)}finally{l.running=!1}}async function E(l){const e=l.enabled?"pause":"enable";try{await y.execute(`skill run cron-scheduler "${e} task: ${l.name}"`,1e4),l.enabled=!l.enabled,d.success(`任务已${l.enabled?"启用":"暂停"}`)}catch{d.error("操作失败")}}async function G(l){try{await y.execute(`skill run cron-scheduler "delete task: ${l.name}"`,1e4),v.value=v.value.filter(e=>e.key!==l.key),d.success("任务已删除")}catch{d.error("删除失败")}}return le(T),(l,e)=>{const c=s("a-button"),k=s("a-space"),u=s("a-statistic"),i=s("a-card"),h=s("a-col"),I=s("a-row"),
|
|
1
|
+
import{u as Q}from"./ws-Dma34ig_.js";import{O as ee,q as ae,h as te,N as d}from"./antd-DEjZPGMj.js";import{o as le,a3 as b,a1 as m,k as a,Z as t,X as s,f as x,Y as p,G as f,u as N,F as L,a7 as ne,a5 as w,W as O,a4 as z,c as V}from"./vendor-CN0Iv_qZ.js";const oe={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},se={key:0,style:{"text-align":"center",padding:"40px"}},re={style:{color:"#e0e0e0","font-weight":"500"}},ue={key:0,style:{color:"var(--text-secondary)","font-size":"11px"}},ie={key:1,style:{background:"var(--bg-card-hover)",padding:"2px 6px","border-radius":"3px",color:"#91caff","font-size":"11px"}},ce={style:{padding:"40px",color:"var(--text-muted)","text-align":"center"}},fe={__name:"Cron",setup(de){const y=Q(),C=x(!1),$=x(!1),_=x(!1),v=x([]),W=V(()=>v.value.filter(l=>l.enabled).length),S=V(()=>v.value.filter(l=>!l.enabled).length),q=[{label:"每5分钟",cron:"*/5 * * * *"},{label:"每15分钟",cron:"*/15 * * * *"},{label:"每小时",cron:"0 * * * *"},{label:"每天9点",cron:"0 9 * * *"},{label:"每天18点",cron:"0 18 * * *"},{label:"每周一9点",cron:"0 9 * * 1"},{label:"每月1号",cron:"0 9 1 * *"}],o=x({name:"",cron:"",payload:"",description:"",enabled:!0}),A=[{title:"任务名称",key:"name",width:"25%"},{title:"Cron",key:"cron",width:"20%"},{title:"状态",key:"status",width:"15%"},{title:"操作",key:"actions",width:"20%"}];async function T(){C.value=!0;try{const{output:l}=await y.execute('skill run cron-scheduler "list all scheduled tasks"',2e4);v.value=F(l)}catch{v.value=[]}finally{C.value=!1}}function F(l){const e=[],c=l.split(`
|
|
2
|
+
`);for(const k of c){const u=k.trim();if(!u||u.startsWith("─"))continue;const i=u.match(/^([^\t|]+?)[\t|]+([*\d/,\-?LW#\s]+)[\t|]+/);i&&e.push({key:e.length,name:i[1].trim(),cron:i[2].trim(),enabled:!u.toLowerCase().includes("pause")&&!u.toLowerCase().includes("disabled"),description:"",running:!1})}return e}function P(l){o.value.cron=l.cron,_.value=!0}async function j(){if(!o.value.name||!o.value.cron){d.warning("请填写任务名称和 Cron 表达式");return}$.value=!0;try{const l=`skill run cron-scheduler "add task: ${o.value.name}, schedule: ${o.value.cron}, payload: ${o.value.payload||"ping"}"`,{output:e}=await y.execute(l,2e4);d.success("任务已创建"),_.value=!1,o.value={name:"",cron:"",payload:"",description:"",enabled:!0},await T()}catch(l){d.error("创建失败: "+l.message)}finally{$.value=!1}}async function D(l){l.running=!0;try{const{output:e}=await y.execute(`skill run cron-scheduler "run task: ${l.name}"`,3e4);d.success(`任务 ${l.name} 已触发`)}catch(e){d.error("触发失败: "+e.message)}finally{l.running=!1}}async function E(l){const e=l.enabled?"pause":"enable";try{await y.execute(`skill run cron-scheduler "${e} task: ${l.name}"`,1e4),l.enabled=!l.enabled,d.success(`任务已${l.enabled?"启用":"暂停"}`)}catch{d.error("操作失败")}}async function G(l){try{await y.execute(`skill run cron-scheduler "delete task: ${l.name}"`,1e4),v.value=v.value.filter(e=>e.key!==l.key),d.success("任务已删除")}catch{d.error("删除失败")}}return le(T),(l,e)=>{const c=s("a-button"),k=s("a-space"),u=s("a-statistic"),i=s("a-card"),h=s("a-col"),I=s("a-row"),M=s("a-spin"),R=s("a-badge"),X=s("a-popconfirm"),Y=s("a-table"),U=s("a-input"),g=s("a-form-item"),Z=s("a-textarea"),H=s("a-switch"),J=s("a-form"),K=s("a-modal");return p(),b("div",null,[m("div",oe,[e[9]||(e[9]=m("div",null,[m("h2",{class:"page-title"},"定时任务"),m("p",{class:"page-sub"},"定时任务调度管理")],-1)),a(k,null,{default:t(()=>[a(c,{onClick:e[0]||(e[0]=n=>_.value=!0),type:"primary"},{icon:t(()=>[a(N(ee))]),default:t(()=>[e[7]||(e[7]=f(" 新建任务 ",-1))]),_:1}),a(c,{ghost:"",loading:C.value,onClick:T},{icon:t(()=>[a(N(ae))]),default:t(()=>[e[8]||(e[8]=f(" 刷新 ",-1))]),_:1},8,["loading"])]),_:1})]),a(I,{gutter:[16,16],style:{"margin-bottom":"20px"}},{default:t(()=>[a(h,{xs:12,sm:6},{default:t(()=>[a(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:t(()=>[a(u,{title:"全部任务",value:v.value.length,"value-style":"color: #ccc; font-size: 18px;"},null,8,["value"])]),_:1})]),_:1}),a(h,{xs:12,sm:6},{default:t(()=>[a(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:t(()=>[a(u,{title:"启用中",value:W.value,"value-style":"color: #52c41a; font-size: 18px;"},null,8,["value"])]),_:1})]),_:1}),a(h,{xs:12,sm:6},{default:t(()=>[a(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:t(()=>[a(u,{title:"已暂停",value:S.value,"value-style":"color: #faad14; font-size: 18px;"},null,8,["value"])]),_:1})]),_:1}),a(h,{xs:12,sm:6},{default:t(()=>[a(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"},size:"small"},{default:t(()=>[a(u,{title:"预设方案",value:q.length,"value-style":"color: #1677ff; font-size: 18px;"},null,8,["value"])]),_:1})]),_:1})]),_:1}),a(i,{title:"快速添加预设",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-bottom":"16px"},size:"small"},{default:t(()=>[a(k,{wrap:""},{default:t(()=>[(p(),b(L,null,ne(q,n=>a(c,{key:n.label,size:"small",style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)","font-size":"12px"},onClick:r=>P(n)},{default:t(()=>[f(w(n.label),1)]),_:2},1032,["onClick"])),64))]),_:1})]),_:1}),a(i,{style:{background:"var(--bg-card)","border-color":"var(--border-color)"}},{default:t(()=>[C.value?(p(),b("div",se,[a(M,{size:"large"})])):(p(),O(Y,{key:1,columns:A,"data-source":v.value,pagination:{pageSize:15},size:"small"},{bodyCell:t(({column:n,record:r})=>[n.key==="name"?(p(),b(L,{key:0},[m("div",re,w(r.name),1),r.description?(p(),b("div",ue,w(r.description),1)):z("",!0)],64)):z("",!0),n.key==="cron"?(p(),b("code",ie,w(r.cron),1)):z("",!0),n.key==="status"?(p(),O(R,{key:2,status:r.enabled?"success":"warning",text:r.enabled?"运行中":"已暂停"},null,8,["status","text"])):z("",!0),n.key==="actions"?(p(),O(k,{key:3,size:"small"},{default:t(()=>[a(c,{size:"small",type:"link",loading:r.running,onClick:B=>D(r)},{default:t(()=>[...e[10]||(e[10]=[f("运行",-1)])]),_:1},8,["loading","onClick"]),a(c,{size:"small",type:"link",onClick:B=>E(r)},{default:t(()=>[f(w(r.enabled?"暂停":"启用"),1)]),_:2},1032,["onClick"]),a(X,{title:"确认删除此任务?",onConfirm:B=>G(r)},{default:t(()=>[a(c,{size:"small",type:"link",danger:""},{default:t(()=>[...e[11]||(e[11]=[f("删除",-1)])]),_:1})]),_:1},8,["onConfirm"])]),_:2},1024)):z("",!0)]),emptyText:t(()=>[m("div",ce,[a(N(te),{style:{"font-size":"36px","margin-bottom":"12px",display:"block"}}),e[12]||(e[12]=f(" 暂无定时任务 ",-1))])]),_:1},8,["data-source"]))]),_:1}),a(K,{open:_.value,"onUpdate:open":e[6]||(e[6]=n=>_.value=n),title:"新建定时任务","confirm-loading":$.value,onOk:j,width:"520px"},{default:t(()=>[a(J,{"label-col":{span:5},"wrapper-col":{span:19},style:{"margin-top":"16px"}},{default:t(()=>[a(g,{label:"任务名称",required:""},{default:t(()=>[a(U,{value:o.value.name,"onUpdate:value":e[1]||(e[1]=n=>o.value.name=n),placeholder:"任务名称"},null,8,["value"])]),_:1}),a(g,{label:"Cron 表达式",required:""},{default:t(()=>[a(U,{value:o.value.cron,"onUpdate:value":e[2]||(e[2]=n=>o.value.cron=n),placeholder:"如: 0 9 * * * (每天9点)"},null,8,["value"]),e[13]||(e[13]=m("div",{style:{color:"var(--text-secondary)","font-size":"11px","margin-top":"4px"}},"格式: 分 时 日 月 周",-1))]),_:1}),a(g,{label:"任务内容",required:""},{default:t(()=>[a(Z,{value:o.value.payload,"onUpdate:value":e[3]||(e[3]=n=>o.value.payload=n),rows:3,placeholder:"要执行的 AI 任务描述..."},null,8,["value"])]),_:1}),a(g,{label:"描述"},{default:t(()=>[a(U,{value:o.value.description,"onUpdate:value":e[4]||(e[4]=n=>o.value.description=n),placeholder:"可选描述"},null,8,["value"])]),_:1}),a(g,{label:"立即启用"},{default:t(()=>[a(H,{checked:o.value.enabled,"onUpdate:checked":e[5]||(e[5]=n=>o.value.enabled=n)},null,8,["checked"])]),_:1})]),_:1})]),_:1},8,["open","confirm-loading"])])}}};export{fe as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.stat-card[data-v-39c5aabc]{background:var(--bg-card)!important;border-color:var(--border-color)!important;transition:border-color .2s}.stat-card[data-v-39c5aabc]:hover{border-color:var(--text-muted)!important}.stat-header[data-v-39c5aabc]{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.stat-label[data-v-39c5aabc]{color:var(--text-secondary);font-size:12px}.stat-value[data-v-39c5aabc]{font-size:22px;font-weight:600;line-height:1.2;margin-bottom:4px}.stat-sub[data-v-39c5aabc]{color:var(--text-muted);font-size:11px}.gateway-card[data-v-39c5aabc]{border-left:3px solid #1677ff!important}.status-log[data-v-39c5aabc]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:6px;padding:10px 14px;color:var(--text-secondary);font-size:11px;font-family:Consolas,monospace;max-height:200px;overflow-y:auto;white-space:pre-wrap;margin:0;line-height:1.6}.telemetry-card[data-v-39c5aabc]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;padding:14px;height:100%}.telemetry-filter[data-v-39c5aabc]{display:flex;flex-direction:column;gap:6px}.telemetry-filter-label[data-v-39c5aabc]{color:var(--text-muted);font-size:12px}.telemetry-label[data-v-39c5aabc]{color:var(--text-muted);font-size:12px;margin-bottom:6px}.telemetry-value[data-v-39c5aabc]{color:#91caff;font-size:24px;font-weight:600;line-height:1.2}.telemetry-sub[data-v-39c5aabc]{color:var(--text-secondary);font-size:11px;margin-top:4px}.telemetry-section[data-v-39c5aabc]{background:var(--bg-base);border:1px solid var(--border-color);border-radius:8px;padding:14px;min-height:140px}.telemetry-section-title[data-v-39c5aabc]{color:var(--text-secondary);font-size:12px;margin-bottom:10px}.telemetry-list[data-v-39c5aabc]{display:flex;flex-direction:column;gap:8px}.telemetry-row[data-v-39c5aabc]{display:flex;justify-content:space-between;gap:12px;color:var(--text-secondary);font-size:12px}.telemetry-empty[data-v-39c5aabc]{color:var(--text-muted);font-size:12px}
|