chainlesschain 0.45.74 → 0.45.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +52 -15
  2. package/package.json +1 -1
  3. package/src/assets/web-panel/.build-hash +1 -1
  4. package/src/assets/web-panel/assets/{AppLayout-BhJ3YFWt.js → AppLayout-2RCrdXxl.js} +1 -1
  5. package/src/assets/web-panel/assets/AppLayout-D9pBLPC3.css +1 -0
  6. package/src/assets/web-panel/assets/{Chat-DaxTP3x8.js → Chat-B2nB8o_F.js} +1 -1
  7. package/src/assets/web-panel/assets/{Dashboard-CjlX4CrX.js → Dashboard-DanoHPSI.js} +1 -1
  8. package/src/assets/web-panel/assets/{Skills-BCvgBkD3.js → Skills-CLlblJcG.js} +1 -1
  9. package/src/assets/web-panel/assets/chat-DWBA4-cl.js +1 -0
  10. package/src/assets/web-panel/assets/{index-DrmEk9S3.js → index-CyGtHm63.js} +2 -2
  11. package/src/assets/web-panel/index.html +1 -1
  12. package/src/commands/learning.js +273 -0
  13. package/src/commands/lowcode.js +23 -8
  14. package/src/gateways/discord/discord-formatter.js +89 -0
  15. package/src/gateways/gateway-base.js +189 -0
  16. package/src/gateways/telegram/telegram-formatter.js +93 -0
  17. package/src/index.js +2 -0
  18. package/src/lib/app-builder.js +136 -8
  19. package/src/lib/autonomous-agent.js +8 -1
  20. package/src/lib/cli-context-engineering.js +15 -0
  21. package/src/lib/execution-backend.js +239 -0
  22. package/src/lib/hook-manager.js +2 -0
  23. package/src/lib/iteration-budget.js +175 -0
  24. package/src/lib/learning/learning-hooks.js +117 -0
  25. package/src/lib/learning/learning-tables.js +66 -0
  26. package/src/lib/learning/outcome-feedback.js +243 -0
  27. package/src/lib/learning/reflection-engine.js +323 -0
  28. package/src/lib/learning/skill-improver.js +536 -0
  29. package/src/lib/learning/skill-synthesizer.js +315 -0
  30. package/src/lib/learning/trajectory-store.js +409 -0
  31. package/src/lib/plugin-autodiscovery.js +224 -0
  32. package/src/lib/session-search.js +193 -0
  33. package/src/lib/sub-agent-context.js +7 -2
  34. package/src/lib/user-profile.js +172 -0
  35. package/src/lib/web-ui-server.js +1 -1
  36. package/src/repl/agent-repl.js +109 -0
  37. package/src/runtime/agent-core.js +75 -4
  38. package/src/runtime/coding-agent-contract-shared.cjs +35 -0
  39. package/src/runtime/coding-agent-policy.cjs +10 -0
  40. package/src/assets/web-panel/assets/AppLayout-Cr2lWhF-.css +0 -1
  41. package/src/assets/web-panel/assets/chat-BmwHBi9M.js +0 -1
package/README.md CHANGED
@@ -183,7 +183,7 @@ chainlesschain llm models # List installed Ollama models
183
183
  chainlesschain llm models --json # JSON output
184
184
  chainlesschain llm test # Test Ollama connectivity
185
185
  chainlesschain llm test --provider openai --api-key sk-...
186
- chainlesschain llm providers # List 8 built-in LLM providers
186
+ chainlesschain llm providers # List 10 built-in LLM providers
187
187
  chainlesschain llm add-provider <name> # Add custom provider
188
188
  chainlesschain llm switch <name> # Switch active provider
189
189
  ```
@@ -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: `read_file`, `write_file`, `edit_file`, `run_shell`, `search_files`, `list_dir`, `run_skill`, `list_skills`, `run_code`
201
+ Built-in tools (12): `read_file`, `write_file`, `edit_file`, `edit_file_hashed`, `run_shell`, `git`, `search_files`, `list_dir`, `run_skill`, `list_skills`, `run_code`, `spawn_sub_agent`
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
 
@@ -701,6 +701,38 @@ chainlesschain evolution learn --domain nlp # Incremental learning
701
701
  chainlesschain evolution status # Evolution status
702
702
  ```
703
703
 
704
+ ### `chainlesschain learning <action>`
705
+
706
+ Autonomous learning loop — tracks execution trajectories, auto-synthesizes skills from successful patterns, and performs periodic self-reflection.
707
+
708
+ ```bash
709
+ chainlesschain learning stats # Learning loop statistics overview
710
+ chainlesschain learning stats --json # JSON output
711
+ chainlesschain learning trajectories # Recent 20 execution trajectories
712
+ chainlesschain learning trajectories -n 50 # Specify count
713
+ chainlesschain learning trajectories --session <id> # Filter by session
714
+ chainlesschain learning trajectories --json # JSON output
715
+ chainlesschain learning reflect # Manual self-reflection trigger
716
+ chainlesschain learning reflect --json # JSON reflection report
717
+ chainlesschain learning synthesize # Scan and synthesize new skills
718
+ chainlesschain learning synthesize --json # JSON output
719
+ chainlesschain learning cleanup # Clean up trajectories older than 90 days
720
+ chainlesschain learning cleanup --days 30 # Custom retention period
721
+ chainlesschain learning cleanup --json # JSON output
722
+ ```
723
+
724
+ **Core modules** (7 files in `src/lib/learning/`):
725
+
726
+ | Module | Description |
727
+ | -------------------- | ------------------------------------------------------------------------------------ |
728
+ | **TrajectoryStore** | Records complete execution trajectories (intent → tool chain → result → response) |
729
+ | **OutcomeFeedback** | Auto-scoring + user feedback + correction detection (Chinese & English) |
730
+ | **SkillSynthesizer** | Extracts reusable patterns from complex successful trajectories into SKILL.md |
731
+ | **SkillImprover** | Three improvement triggers: error repair, user correction, better trajectory compare |
732
+ | **ReflectionEngine** | Periodic self-review with tool stats, score trends, error-prone tool identification |
733
+ | **LearningHooks** | REPL lifecycle integration — captures prompts, tool calls, responses, session events |
734
+ | **LearningTables** | SQLite schema creation for trajectories, tags, and improvement logs |
735
+
704
736
  ---
705
737
 
706
738
  ## Phase 8: Blockchain & Enterprise Analytics
@@ -1139,17 +1171,19 @@ Configuration is stored at `~/.chainlesschain/config.json`. The CLI creates and
1139
1171
 
1140
1172
  ### Supported LLM Providers
1141
1173
 
1142
- | Provider | Default Model | API Key Required |
1143
- | ---------------------- | ----------------- | ---------------- |
1144
- | Ollama (Local) | qwen2.5:7b | No |
1145
- | OpenAI | gpt-4o | Yes |
1146
- | Anthropic | claude-sonnet-4-6 | Yes |
1147
- | DashScope (Alibaba) | qwen-max | Yes |
1148
- | DeepSeek | deepseek-chat | Yes |
1149
- | Gemini (Google) | gemini-pro | Yes |
1150
- | Mistral | mistral-large | Yes |
1151
- | Volcengine (ByteDance) | doubao-1.5-pro | Yes |
1152
- | Custom | | Yes |
1174
+ | Provider | Default Model | API Key Required |
1175
+ | -------------------------- | ---------------------- | ---------------- |
1176
+ | Ollama (Local) | qwen2.5:7b | No |
1177
+ | OpenAI | gpt-4o | Yes |
1178
+ | Anthropic | claude-opus-4-6 | Yes |
1179
+ | DeepSeek | deepseek-chat | Yes |
1180
+ | DashScope (Alibaba) | qwen-turbo | Yes |
1181
+ | Google Gemini | gemini-2.0-flash | Yes |
1182
+ | Mistral AI | mistral-large-latest | Yes |
1183
+ | Volcengine (火山引擎/豆包) | doubao-seed-1-6-251015 | Yes |
1184
+ | Kimi (月之暗面) | moonshot-v1-auto | Yes |
1185
+ | MiniMax (海螺AI) | MiniMax-Text-01 | Yes |
1186
+ | Custom | — | Yes |
1153
1187
 
1154
1188
  ## File Structure
1155
1189
 
@@ -1168,7 +1202,7 @@ Configuration is stored at `~/.chainlesschain/config.json`. The CLI creates and
1168
1202
  ```bash
1169
1203
  cd packages/cli
1170
1204
  npm install
1171
- npm test # Run all tests (5200+ tests across 133+ files)
1205
+ npm test # Run all tests (5400+ tests across 201+ files)
1172
1206
  npm run test:unit # Unit tests only
1173
1207
  npm run test:integration # Integration tests
1174
1208
  npm run test:e2e # End-to-end tests
@@ -1185,16 +1219,19 @@ npm run test:e2e # End-to-end tests
1185
1219
  | Unit — Skill Packs | 2 | 57+ | All passing |
1186
1220
  | Unit — AI Templates | 2 | 130+ | All passing |
1187
1221
  | Unit — Web UI | 1 | 46 | All passing |
1222
+ | Unit — Learning | 7 | 177 | All passing |
1188
1223
  | Integration | 13 | 230+ | All passing |
1189
1224
  | Integration — WS session | 1 | 12 | All passing |
1190
1225
  | Integration — AI Handlers | 2 | 100+ | All passing |
1191
1226
  | Integration — Web UI | 1 | 29 | All passing |
1227
+ | Integration — Learning | 1 | 12 | All passing |
1192
1228
  | E2E | 15 | 260+ | All passing |
1193
1229
  | E2E — Skill Packs | 1 | 23+ | All passing |
1194
1230
  | E2E — AI Templates | 4 | 65+ | All passing |
1195
1231
  | E2E — Web UI | 1 | 24 | All passing |
1232
+ | E2E — Learning | 1 | 16 | All passing |
1196
1233
  | Core packages (external) | — | 118 | All passing |
1197
- | **CLI Total** | **133** | **3155** | **All passing** |
1234
+ | **CLI Total** | **201** | **3360** | **All passing** |
1198
1235
 
1199
1236
  ## License
1200
1237
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chainlesschain",
3
- "version": "0.45.74",
3
+ "version": "0.45.76",
4
4
  "description": "CLI for ChainlessChain - install, configure, and manage your personal AI management system",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1 +1 @@
1
- d60cb5543fb28c2ade40d248fa91d9ccedb6d0214f174930c12f1514fc71cd27
1
+ 9d15041579d9c07ac04a3c09f261989d6e8989bb9510c4c8d21353e21987cc7e
@@ -1 +1 @@
1
- import{o as _e,W as f,Z as t,X as d,$ as fe,a0 as ve,Y as i,k as e,a1 as a,a2 as w,a3 as r,a4 as S,F as j,u as o,a5 as g,G as l,a6 as ge,a7 as be,f as Oe,c as m}from"./vendor-CN0Iv_qZ.js";import{u as Ce}from"./ws-CU7Gvoom.js";import{u as we,T as je}from"./index-DrmEk9S3.js";import{_ as Te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as B,G as x,D as R,M as F,C as K,b as P,c as A,d as G,e as I,B as W,f as D,h as V,T as z,S as E,L as U,W as $,i as H,j as X,P as Y,k as Z,l as q,m as J,n as Q,R as h,K as ee,I as Se}from"./antd-gZyc63Qr.js";const Be={key:0,class:"logo-text"},xe={key:0,class:"mode-banner project"},Le={class:"banner-info"},Ne={class:"banner-name"},Me={key:1,class:"mode-banner global"},Re=["title"],Fe={key:0,class:"footer-text"},Ke={class:"header-left"},Pe={class:"header-right"},Ae={class:"theme-switcher"},Ge=["data-theme-key","onClick"],Ie={__name:"AppLayout",setup(We){const te=fe(),se=ve(),b=Ce(),T=we(),u=Oe(!1),y=window.__CC_CONFIG__||{},p=m(()=>y.mode==="project"),oe=m(()=>T.current),ne=m(()=>T.config.vars["--menu-mode"]),L=m(()=>{const c=se.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp"}[c]||c]}),O=m(()=>b.status),le=m(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[b.status]||"default"),ae=m(()=>({connected:"已连接",connecting:"连接中...",error:"连接错误",disconnected:"未连接"})[b.status]||"未知");function ie(c){T.setTheme(c)}function de({key:c}){te.push({mcp:"/mcp"}[c]||`/${c}`)}return _e(()=>b.connect()),(c,s)=>{const n=d("a-menu-item"),k=d("a-menu-item-group"),v=d("a-menu-divider"),ue=d("a-menu"),re=d("a-badge"),ce=d("a-layout-sider"),N=d("a-tooltip"),pe=d("a-tag"),me=d("a-layout-header"),ye=d("router-view"),ke=d("a-layout-content"),M=d("a-layout");return i(),f(M,{class:"app-root"},{default:t(()=>[e(ce,{collapsed:u.value,"onUpdate:collapsed":s[1]||(s[1]=_=>u.value=_),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[a("div",{class:w(["logo",{collapsed:u.value}])},[s[2]||(s[2]=a("span",{class:"logo-icon"},"⛓",-1)),u.value?S("",!0):(i(),r("span",Be,"ChainlessChain"))],2),u.value?(i(),r("div",{key:1,class:"mode-icon-sm",title:p.value?o(y).projectName:"全局模式"},[p.value?(i(),f(o(B),{key:0,style:{color:"#1677ff"}})):(i(),f(o(x),{key:1,style:{color:"#722ed1"}}))],8,Re)):(i(),r(j,{key:0},[p.value?(i(),r("div",xe,[e(o(B),{class:"banner-icon"}),a("div",Le,[a("div",Ne,g(o(y).projectName||"项目"),1),s[3]||(s[3]=a("div",{class:"banner-sub"},"项目级面板",-1))])])):(i(),r("div",Me,[e(o(x),{class:"banner-icon"}),s[4]||(s[4]=a("span",{class:"banner-name"},"全局模式",-1))]))],64)),e(ue,{selectedKeys:L.value,"onUpdate:selectedKeys":s[0]||(s[0]=_=>L.value=_),theme:ne.value,mode:"inline","inline-collapsed":u.value,class:"side-menu",onClick:de},{default:t(()=>[u.value?(i(),r(j,{key:1},[e(n,{key:"dashboard"},{icon:t(()=>[e(o(R))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(o(F))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(o(K))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(o(P))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"skills"},{icon:t(()=>[e(o(A))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(o(G))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(o(I))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"notes"},{icon:t(()=>[e(o(W))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(o(D))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(o(V))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(o(z))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"security"},{icon:t(()=>[e(o(E))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(o(U))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(o($))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(o(H))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(o(X))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(o(Y))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"wallet"},{icon:t(()=>[e(o(Z))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(o(q))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(o(J))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(o(Q))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"rssfeed"},{icon:t(()=>[e(o(h))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(o(ee))]),_:1})],64)):(i(),r(j,{key:0},[e(k,null,{title:t(()=>[...s[5]||(s[5]=[a("span",{class:"group-label"},"概 览",-1)])]),default:t(()=>[e(n,{key:"dashboard"},{icon:t(()=>[e(o(R))]),default:t(()=>[s[6]||(s[6]=l("仪表板",-1))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(o(F))]),default:t(()=>[s[7]||(s[7]=l("AI 对话",-1))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(o(K))]),default:t(()=>[s[8]||(s[8]=l("服务管理",-1))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(o(P))]),default:t(()=>[s[9]||(s[9]=l("日志查看",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[10]||(s[10]=[a("span",{class:"group-label"},"配 置",-1)])]),default:t(()=>[e(n,{key:"skills"},{icon:t(()=>[e(o(A))]),default:t(()=>[s[11]||(s[11]=l("技能管理",-1))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(o(G))]),default:t(()=>[s[12]||(s[12]=l("LLM 配置",-1))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(o(I))]),default:t(()=>[s[13]||(s[13]=l("MCP 工具",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[14]||(s[14]=[a("span",{class:"group-label"},"数 据",-1)])]),default:t(()=>[e(n,{key:"notes"},{icon:t(()=>[e(o(W))]),default:t(()=>[s[15]||(s[15]=l("笔记管理",-1))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(o(D))]),default:t(()=>[s[16]||(s[16]=l("记忆文件",-1))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(o(V))]),default:t(()=>[s[17]||(s[17]=l("定时任务",-1))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(o(z))]),default:t(()=>[s[18]||(s[18]=l("后台任务",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[19]||(s[19]=[a("span",{class:"group-label"},"高 级",-1)])]),default:t(()=>[e(n,{key:"security"},{icon:t(()=>[e(o(E))]),default:t(()=>[s[20]||(s[20]=l("安全中心",-1))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(o(U))]),default:t(()=>[s[21]||(s[21]=l("权限管理",-1))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(o($))]),default:t(()=>[s[22]||(s[22]=l("P2P 网络",-1))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(o(H))]),default:t(()=>[s[23]||(s[23]=l("备份同步",-1))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(o(X))]),default:t(()=>[s[24]||(s[24]=l("Git 与数据",-1))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(o(Y))]),default:t(()=>[s[25]||(s[25]=l("项目管理",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[26]||(s[26]=[a("span",{class:"group-label"},"企 业",-1)])]),default:t(()=>[e(n,{key:"wallet"},{icon:t(()=>[e(o(Z))]),default:t(()=>[s[27]||(s[27]=l("钱包管理",-1))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(o(q))]),default:t(()=>[s[28]||(s[28]=l("组织管理",-1))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(o(J))]),default:t(()=>[s[29]||(s[29]=l("使用分析",-1))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(o(Q))]),default:t(()=>[s[30]||(s[30]=l("模板中心",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[31]||(s[31]=[a("span",{class:"group-label"},"扩 展",-1)])]),default:t(()=>[e(n,{key:"rssfeed"},{icon:t(()=>[e(o(h))]),default:t(()=>[s[32]||(s[32]=l("RSS 订阅",-1))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(o(ee))]),default:t(()=>[s[33]||(s[33]=l("身份认证",-1))]),_:1})]),_:1})],64))]),_:1},8,["selectedKeys","theme","inline-collapsed"]),a("div",{class:w(["sidebar-footer",{collapsed:u.value}])},[e(re,{status:le.value},null,8,["status"]),u.value?S("",!0):(i(),r("span",Fe,g(ae.value),1))],2)]),_:1},8,["collapsed"]),e(M,{class:"main-area"},{default:t(()=>[e(me,{class:"app-header"},{default:t(()=>[a("div",Ke,[a("div",{class:w(["scope-tag",p.value?"project":"global"])},[(i(),f(ge(p.value?o(B):o(x)))),a("span",null,g(p.value?o(y).projectName||"项目":"全局模式"),1),p.value&&o(y).projectRoot?(i(),f(N,{key:0,title:o(y).projectRoot},{default:t(()=>[e(o(Se),{class:"info-icon"})]),_:1},8,["title"])):S("",!0)],2)]),a("div",Pe,[a("div",Ae,[(i(!0),r(j,null,be(o(je),(_,C)=>(i(),f(N,{key:C,title:_.label},{default:t(()=>[a("button",{class:w(["theme-btn",{active:oe.value===C}]),"data-theme-key":C,onClick:De=>ie(C)},g(_.icon),11,Ge)]),_:2},1032,["title"]))),128))]),s[34]||(s[34]=a("span",{class:"version-tag"},"v5.0.2.9",-1)),e(pe,{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(ke,{class:"page-content"},{default:t(()=>[e(ye)]),_:1})]),_:1})]),_:1})}}},He=Te(Ie,[["__scopeId","data-v-d166fd5f"]]);export{He as default};
1
+ import{o as _e,W as f,Z as t,X as u,$ as fe,a0 as ve,Y as i,k as e,a1 as a,a2 as w,a3 as r,a4 as S,F as j,u as o,a5 as g,G as l,a6 as ge,a7 as be,f as Oe,c as m}from"./vendor-CN0Iv_qZ.js";import{u as Ce}from"./ws-CU7Gvoom.js";import{u as we,T as je}from"./index-CyGtHm63.js";import{_ as Te}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as B,G as x,D as R,M as F,C as K,b as P,c as A,d as G,e as I,B as W,f as D,h as V,T as z,S as E,L as U,W as $,i as H,j as X,P as Y,k as Z,l as q,m as J,n as Q,R as h,K as ee,I as Se}from"./antd-gZyc63Qr.js";const Be={key:0,class:"logo-text"},xe={key:0,class:"mode-banner project"},Le={class:"banner-info"},Ne={class:"banner-name"},Me={key:1,class:"mode-banner global"},Re=["title"],Fe={key:0,class:"footer-text"},Ke={class:"header-left"},Pe={class:"header-right"},Ae={class:"theme-switcher"},Ge=["data-theme-key","onClick"],Ie={__name:"AppLayout",setup(We){const te=fe(),se=ve(),b=Ce(),T=we(),d=Oe(!1),y=window.__CC_CONFIG__||{},p=m(()=>y.mode==="project"),oe=m(()=>T.current),ne=m(()=>T.config.vars["--menu-mode"]),L=m(()=>{const c=se.name?.toLowerCase()||"dashboard";return[{mcptools:"mcp"}[c]||c]}),O=m(()=>b.status),le=m(()=>({connected:"success",connecting:"processing",error:"error",disconnected:"default"})[b.status]||"default"),ae=m(()=>({connected:"已连接",connecting:"连接中...",error:"连接错误",disconnected:"未连接"})[b.status]||"未知");function ie(c){T.setTheme(c)}function ue({key:c}){te.push({mcp:"/mcp"}[c]||`/${c}`)}return _e(()=>b.connect()),(c,s)=>{const n=u("a-menu-item"),k=u("a-menu-item-group"),v=u("a-menu-divider"),de=u("a-menu"),re=u("a-badge"),ce=u("a-layout-sider"),N=u("a-tooltip"),pe=u("a-tag"),me=u("a-layout-header"),ye=u("router-view"),ke=u("a-layout-content"),M=u("a-layout");return i(),f(M,{class:"app-root"},{default:t(()=>[e(ce,{collapsed:d.value,"onUpdate:collapsed":s[1]||(s[1]=_=>d.value=_),collapsible:"","collapsed-width":56,width:216,class:"sidebar"},{default:t(()=>[a("div",{class:w(["logo",{collapsed:d.value}])},[s[2]||(s[2]=a("span",{class:"logo-icon"},"⛓",-1)),d.value?S("",!0):(i(),r("span",Be,"ChainlessChain"))],2),d.value?(i(),r("div",{key:1,class:"mode-icon-sm",title:p.value?o(y).projectName:"全局模式"},[p.value?(i(),f(o(B),{key:0,style:{color:"#1677ff"}})):(i(),f(o(x),{key:1,style:{color:"#722ed1"}}))],8,Re)):(i(),r(j,{key:0},[p.value?(i(),r("div",xe,[e(o(B),{class:"banner-icon"}),a("div",Le,[a("div",Ne,g(o(y).projectName||"项目"),1),s[3]||(s[3]=a("div",{class:"banner-sub"},"项目级面板",-1))])])):(i(),r("div",Me,[e(o(x),{class:"banner-icon"}),s[4]||(s[4]=a("span",{class:"banner-name"},"全局模式",-1))]))],64)),e(de,{selectedKeys:L.value,"onUpdate:selectedKeys":s[0]||(s[0]=_=>L.value=_),theme:ne.value,mode:"inline","inline-collapsed":d.value,class:"side-menu",onClick:ue},{default:t(()=>[d.value?(i(),r(j,{key:1},[e(n,{key:"dashboard"},{icon:t(()=>[e(o(R))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(o(F))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(o(K))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(o(P))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"skills"},{icon:t(()=>[e(o(A))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(o(G))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(o(I))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"notes"},{icon:t(()=>[e(o(W))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(o(D))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(o(V))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(o(z))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"security"},{icon:t(()=>[e(o(E))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(o(U))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(o($))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(o(H))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(o(X))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(o(Y))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"wallet"},{icon:t(()=>[e(o(Z))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(o(q))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(o(J))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(o(Q))]),_:1}),e(v,{class:"divider-sm"}),e(n,{key:"rssfeed"},{icon:t(()=>[e(o(h))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(o(ee))]),_:1})],64)):(i(),r(j,{key:0},[e(k,null,{title:t(()=>[...s[5]||(s[5]=[a("span",{class:"group-label"},"概 览",-1)])]),default:t(()=>[e(n,{key:"dashboard"},{icon:t(()=>[e(o(R))]),default:t(()=>[s[6]||(s[6]=l("仪表板",-1))]),_:1}),e(n,{key:"chat"},{icon:t(()=>[e(o(F))]),default:t(()=>[s[7]||(s[7]=l("AI 对话",-1))]),_:1}),e(n,{key:"services"},{icon:t(()=>[e(o(K))]),default:t(()=>[s[8]||(s[8]=l("服务管理",-1))]),_:1}),e(n,{key:"logs"},{icon:t(()=>[e(o(P))]),default:t(()=>[s[9]||(s[9]=l("日志查看",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[10]||(s[10]=[a("span",{class:"group-label"},"配 置",-1)])]),default:t(()=>[e(n,{key:"skills"},{icon:t(()=>[e(o(A))]),default:t(()=>[s[11]||(s[11]=l("技能管理",-1))]),_:1}),e(n,{key:"providers"},{icon:t(()=>[e(o(G))]),default:t(()=>[s[12]||(s[12]=l("LLM 配置",-1))]),_:1}),e(n,{key:"mcp"},{icon:t(()=>[e(o(I))]),default:t(()=>[s[13]||(s[13]=l("MCP 工具",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[14]||(s[14]=[a("span",{class:"group-label"},"数 据",-1)])]),default:t(()=>[e(n,{key:"notes"},{icon:t(()=>[e(o(W))]),default:t(()=>[s[15]||(s[15]=l("笔记管理",-1))]),_:1}),e(n,{key:"memory"},{icon:t(()=>[e(o(D))]),default:t(()=>[s[16]||(s[16]=l("记忆文件",-1))]),_:1}),e(n,{key:"cron"},{icon:t(()=>[e(o(V))]),default:t(()=>[s[17]||(s[17]=l("定时任务",-1))]),_:1}),e(n,{key:"tasks"},{icon:t(()=>[e(o(z))]),default:t(()=>[s[18]||(s[18]=l("后台任务",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[19]||(s[19]=[a("span",{class:"group-label"},"高 级",-1)])]),default:t(()=>[e(n,{key:"security"},{icon:t(()=>[e(o(E))]),default:t(()=>[s[20]||(s[20]=l("安全中心",-1))]),_:1}),e(n,{key:"permissions"},{icon:t(()=>[e(o(U))]),default:t(()=>[s[21]||(s[21]=l("权限管理",-1))]),_:1}),e(n,{key:"p2p"},{icon:t(()=>[e(o($))]),default:t(()=>[s[22]||(s[22]=l("P2P 网络",-1))]),_:1}),e(n,{key:"backup"},{icon:t(()=>[e(o(H))]),default:t(()=>[s[23]||(s[23]=l("备份同步",-1))]),_:1}),e(n,{key:"git"},{icon:t(()=>[e(o(X))]),default:t(()=>[s[24]||(s[24]=l("Git 与数据",-1))]),_:1}),e(n,{key:"projects"},{icon:t(()=>[e(o(Y))]),default:t(()=>[s[25]||(s[25]=l("项目管理",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[26]||(s[26]=[a("span",{class:"group-label"},"企 业",-1)])]),default:t(()=>[e(n,{key:"wallet"},{icon:t(()=>[e(o(Z))]),default:t(()=>[s[27]||(s[27]=l("钱包管理",-1))]),_:1}),e(n,{key:"organization"},{icon:t(()=>[e(o(q))]),default:t(()=>[s[28]||(s[28]=l("组织管理",-1))]),_:1}),e(n,{key:"analytics"},{icon:t(()=>[e(o(J))]),default:t(()=>[s[29]||(s[29]=l("使用分析",-1))]),_:1}),e(n,{key:"templates"},{icon:t(()=>[e(o(Q))]),default:t(()=>[s[30]||(s[30]=l("模板中心",-1))]),_:1})]),_:1}),e(k,null,{title:t(()=>[...s[31]||(s[31]=[a("span",{class:"group-label"},"扩 展",-1)])]),default:t(()=>[e(n,{key:"rssfeed"},{icon:t(()=>[e(o(h))]),default:t(()=>[s[32]||(s[32]=l("RSS 订阅",-1))]),_:1}),e(n,{key:"webauthn"},{icon:t(()=>[e(o(ee))]),default:t(()=>[s[33]||(s[33]=l("身份认证",-1))]),_:1})]),_:1})],64))]),_:1},8,["selectedKeys","theme","inline-collapsed"]),a("div",{class:w(["sidebar-footer",{collapsed:d.value}])},[e(re,{status:le.value},null,8,["status"]),d.value?S("",!0):(i(),r("span",Fe,g(ae.value),1))],2)]),_:1},8,["collapsed"]),e(M,{class:"main-area"},{default:t(()=>[e(me,{class:"app-header"},{default:t(()=>[a("div",Ke,[a("div",{class:w(["scope-tag",p.value?"project":"global"])},[(i(),f(ge(p.value?o(B):o(x)))),a("span",null,g(p.value?o(y).projectName||"项目":"全局模式"),1),p.value&&o(y).projectRoot?(i(),f(N,{key:0,title:o(y).projectRoot},{default:t(()=>[e(o(Se),{class:"info-icon"})]),_:1},8,["title"])):S("",!0)],2)]),a("div",Pe,[a("div",Ae,[(i(!0),r(j,null,be(o(je),(_,C)=>(i(),f(N,{key:C,title:_.label},{default:t(()=>[a("button",{class:w(["theme-btn",{active:oe.value===C}]),"data-theme-key":C,onClick:De=>ie(C)},g(_.icon),11,Ge)]),_:2},1032,["title"]))),128))]),s[34]||(s[34]=a("span",{class:"version-tag"},"v5.0.2.9",-1)),e(pe,{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(ke,{class:"page-content"},{default:t(()=>[e(ye)]),_:1})]),_:1})]),_:1})}}},He=Te(Ie,[["__scopeId","data-v-0a18f3af"]]);export{He as default};
@@ -0,0 +1 @@
1
+ .app-root[data-v-0a18f3af]{min-height:100vh;background:var(--bg-base)}.sidebar[data-v-0a18f3af]{background:var(--bg-sidebar)!important;border-right:1px solid var(--border-color);transition:background .25s}[data-v-0a18f3af] .ant-layout-sider-children{display:flex;flex-direction:column;overflow:hidden}.main-area[data-v-0a18f3af]{background:var(--bg-base)}.logo[data-v-0a18f3af]{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-0a18f3af]{padding:0;justify-content:center}.logo-icon[data-v-0a18f3af]{font-size:20px;flex-shrink:0}.logo-text[data-v-0a18f3af]{color:var(--logo-text);font-weight:700;font-size:14px;letter-spacing:.01em}.mode-banner[data-v-0a18f3af]{display:flex;align-items:center;gap:8px;padding:7px 10px;margin:8px 8px 4px;border-radius:7px;overflow:hidden}.mode-banner.project[data-v-0a18f3af]{background:#1677ff1a;border:1px solid rgba(22,119,255,.2)}.mode-banner.global[data-v-0a18f3af]{background:#722ed11a;border:1px solid rgba(114,46,209,.2)}.banner-icon[data-v-0a18f3af]{font-size:13px;flex-shrink:0;color:#1677ff}.mode-banner.global .banner-icon[data-v-0a18f3af]{color:#722ed1}.banner-info[data-v-0a18f3af]{flex:1;min-width:0}.banner-name[data-v-0a18f3af]{font-size:12px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.banner-sub[data-v-0a18f3af]{font-size:10px;color:#1677ff;margin-top:1px}.mode-banner.global .banner-name[data-v-0a18f3af]{color:#c084fc}.mode-icon-sm[data-v-0a18f3af]{display:flex;justify-content:center;padding:8px 0;font-size:14px}.side-menu[data-v-0a18f3af]{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-0a18f3af]{color:var(--group-title);font-size:10px;font-weight:700;letter-spacing:.12em;padding-left:6px}[data-v-0a18f3af] .ant-menu-item-group-title{padding:8px 16px 2px!important}[data-v-0a18f3af] .ant-menu-item{height:38px!important;line-height:38px!important;margin:1px 4px!important;border-radius:6px!important}.divider-sm[data-v-0a18f3af]{margin:4px 0!important}.sidebar-footer[data-v-0a18f3af]{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-0a18f3af]{justify-content:center;padding:8px 0}.footer-text[data-v-0a18f3af]{color:var(--text-secondary);font-size:11px}.app-header[data-v-0a18f3af]{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-0a18f3af],.header-right[data-v-0a18f3af]{display:flex;align-items:center;gap:10px}.scope-tag[data-v-0a18f3af]{display:flex;align-items:center;gap:5px;padding:3px 10px;border-radius:5px;font-size:12px;font-weight:500}.scope-tag.project[data-v-0a18f3af]{background:#1677ff1a;color:#1677ff;border:1px solid rgba(22,119,255,.2)}.scope-tag.global[data-v-0a18f3af]{background:#722ed11a;color:#722ed1;border:1px solid rgba(114,46,209,.2)}.info-icon[data-v-0a18f3af]{opacity:.45;cursor:help;margin-left:2px}.theme-switcher[data-v-0a18f3af]{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-0a18f3af]{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-0a18f3af]:hover{opacity:.9;transform:scale(1.15);background:var(--bg-card-hover)}.theme-btn.active[data-v-0a18f3af]{opacity:1;transform:scale(1.1);background:var(--bg-card-hover);outline:2px solid var(--text-secondary)}.version-tag[data-v-0a18f3af]{color:var(--text-muted);font-size:11px}.ws-tag[data-v-0a18f3af]{margin:0!important;font-size:11px}.page-content[data-v-0a18f3af]{padding:24px;overflow:auto;background:var(--bg-base);min-height:calc(100vh - 50px)}
@@ -1 +1 @@
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-Bv7nG63L.js";import{u as K}from"./chat-BmwHBi9M.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as P,G as U,M as W,p as X,t as Y}from"./antd-gZyc63Qr.js";import"./ws-CU7Gvoom.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)])])}}},Fe=D(Le,[["__scopeId","data-v-8392b2d7"]]);export{Fe as default};
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-Bv7nG63L.js";import{u as K}from"./chat-DWBA4-cl.js";import{_ as D}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{F as P,G as U,M as W,p as X,t as Y}from"./antd-gZyc63Qr.js";import"./ws-CU7Gvoom.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)])])}}},Fe=D(Le,[["__scopeId","data-v-8392b2d7"]]);export{Fe as default};
@@ -1,3 +1,3 @@
1
- import{V as se,f as T,o as le,b as oe,a3 as p,a1 as l,a5 as o,u as r,k as t,Z as s,W as I,a4 as H,c as S,X as x,$ as ae,Y as i,G as m,a8 as q,F as P,a7 as O}from"./vendor-CN0Iv_qZ.js";import{u as B}from"./ws-CU7Gvoom.js";import{u as ne}from"./chat-BmwHBi9M.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as ie,F as ue,p as X,c as Y,M as Z,q as de,r as ve,b as J,s as ce,d as pe}from"./antd-gZyc63Qr.js";function me(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const fe=se("dashboard",()=>{const V=T(!1),j=T(!1),d=T({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),F=T(""),b=T(me()),v=T({windowPreset:"all",provider:"",model:""});let k=null;function D(n=B()){k||(k=n.onRuntimeEvent(c=>{c.type==="compression:summary"?N(c.payload?.summary||{}):c.type==="session:start"?d.value.sessionCount=(d.value.sessionCount||0)+1:c.type==="session:end"&&(d.value.sessionCount=Math.max(0,(d.value.sessionCount||0)-1))}))}function E(){k&&(k(),k=null)}function N(n){b.value={...b.value,...n||{}}}function h(n){return n==="1h"?3600*1e3:n==="24h"?1440*60*1e3:n==="7d"?10080*60*1e3:null}function f(n){d.value.appRunning=n.includes("Desktop app running"),d.value.setupDone=n.includes("Setup completed");const c=n.match(/Edition:\s+(\S+)/i);c&&(d.value.edition=c[1]);const w=n.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(w)d.value.activeLlm=w[1],d.value.activeModel=w[2];else{const _=n.match(/LLM:\s+(\S+)/i);_&&(d.value.activeLlm=_[1])}}async function g(){const n=B();D(n),j.value=!0;const c={type:"compression-stats",windowMs:h(v.value.windowPreset)};v.value.provider&&(c.provider=v.value.provider),v.value.model&&(c.model=v.value.model);try{const w=await n.sendRaw(c,1e4);N(w.summary||{})}catch{}finally{j.value=!1}}async function W(){const n=B();D(n),V.value=!0,d.value.wsStatus=n.status,F.value="";try{const[c,w]=await Promise.allSettled([n.execute("status",15e3),n.listSessions()]);if(c.status==="fulfilled"){const _=c.value.output;F.value=_.split(`
1
+ import{V as se,f as T,o as le,b as oe,a3 as p,a1 as l,a5 as o,u as r,k as t,Z as s,W as I,a4 as H,c as S,X as x,$ as ae,Y as i,G as m,a8 as q,F as P,a7 as O}from"./vendor-CN0Iv_qZ.js";import{u as B}from"./ws-CU7Gvoom.js";import{u as ne}from"./chat-DWBA4-cl.js";import{_ as re}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{o as ie,F as ue,p as X,c as Y,M as Z,q as de,r as ve,b as J,s as ce,d as pe}from"./antd-gZyc63Qr.js";function me(){return{samples:0,compressedSamples:0,hitRate:0,totalSavedTokens:0,averageSavedTokens:0,totalOriginalTokens:0,totalCompressedTokens:0,netSavingsRate:0,variantDistribution:{},strategyDistribution:[],providerDistribution:[],modelDistribution:[]}}const fe=se("dashboard",()=>{const V=T(!1),j=T(!1),d=T({wsStatus:"disconnected",activeLlm:null,activeModel:null,skillCount:0,sessionCount:0,providerCount:0,appRunning:!1,setupDone:!1,edition:"",mcpCount:null,noteCount:null}),F=T(""),b=T(me()),v=T({windowPreset:"all",provider:"",model:""});let k=null;function D(n=B()){k||(k=n.onRuntimeEvent(c=>{c.type==="compression:summary"?N(c.payload?.summary||{}):c.type==="session:start"?d.value.sessionCount=(d.value.sessionCount||0)+1:c.type==="session:end"&&(d.value.sessionCount=Math.max(0,(d.value.sessionCount||0)-1))}))}function E(){k&&(k(),k=null)}function N(n){b.value={...b.value,...n||{}}}function h(n){return n==="1h"?3600*1e3:n==="24h"?1440*60*1e3:n==="7d"?10080*60*1e3:null}function f(n){d.value.appRunning=n.includes("Desktop app running"),d.value.setupDone=n.includes("Setup completed");const c=n.match(/Edition:\s+(\S+)/i);c&&(d.value.edition=c[1]);const w=n.match(/LLM:\s+(\S+)\s+\(([^)]+)\)/i);if(w)d.value.activeLlm=w[1],d.value.activeModel=w[2];else{const _=n.match(/LLM:\s+(\S+)/i);_&&(d.value.activeLlm=_[1])}}async function g(){const n=B();D(n),j.value=!0;const c={type:"compression-stats",windowMs:h(v.value.windowPreset)};v.value.provider&&(c.provider=v.value.provider),v.value.model&&(c.model=v.value.model);try{const w=await n.sendRaw(c,1e4);N(w.summary||{})}catch{}finally{j.value=!1}}async function W(){const n=B();D(n),V.value=!0,d.value.wsStatus=n.status,F.value="";try{const[c,w]=await Promise.allSettled([n.execute("status",15e3),n.listSessions()]);if(c.status==="fulfilled"){const _=c.value.output;F.value=_.split(`
2
2
  `).slice(0,20).join(`
3
3
  `),f(_)}w.status==="fulfilled"&&(d.value.sessionCount=w.value.length),Promise.allSettled([n.execute("skill sources",15e3),n.execute("llm providers",15e3)]).then(([_,$])=>{if(_.status==="fulfilled"){const A=_.value.output.match(/(\d+)\s*(?:skills|技能)/i);A&&(d.value.skillCount=parseInt(A[1],10))}if($.status==="fulfilled"){const y=$.value.output.match(/active[:\s]+(\S+)/i);y&&!d.value.activeLlm&&(d.value.activeLlm=y[1])}}),n.execute("mcp servers",1e4).then(({output:_})=>{const $=(_.match(/^[a-z]/gm)||[]).length;d.value.mcpCount=$}).catch(()=>{d.value.mcpCount=0}),await g()}catch{}finally{V.value=!1}}return{loading:V,compressionLoading:j,stats:d,statusLog:F,compression:b,telemetryFilters:v,ensureRuntimeSubscription:D,stopRuntimeSubscription:E,refresh:W,refreshCompression:g,applyCompressionSummary:N,toWindowMs:h}}),ye={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"20px"}},ge={class:"page-sub"},_e={style:{display:"flex","align-items":"center",gap:"12px","flex-wrap":"wrap"}},be={style:{color:"#91caff","font-weight":"600"}},ke={style:{color:"#4a6fa5","font-size":"11px","font-family":"monospace"}},we={class:"stat-header"},Ce={class:"stat-sub"},xe={class:"stat-header"},Se={class:"stat-value",style:{color:"#91caff","font-size":"15px",overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},he={class:"stat-sub",style:{overflow:"hidden","text-overflow":"ellipsis","white-space":"nowrap"}},$e={class:"stat-header"},Re={class:"stat-value",style:{color:"#1677ff"}},ze={class:"stat-header"},Le={class:"stat-value",style:{color:"#c084fc"}},De={class:"stat-header"},Me={class:"stat-sub"},Te={class:"stat-header"},Pe={class:"stat-value",style:{color:"#13c2c2"}},Oe={class:"stat-header"},je={class:"stat-value",style:{color:"#faad14"}},Fe={class:"status-log"},Ee={class:"telemetry-filter"},Ne={class:"telemetry-filter"},Ae={class:"telemetry-filter"},Ie={class:"telemetry-card"},Ve={class:"telemetry-value"},We={class:"telemetry-sub"},Be={class:"telemetry-card"},Ue={class:"telemetry-value"},Ge={class:"telemetry-sub"},He={class:"telemetry-card"},qe={class:"telemetry-value"},Xe={class:"telemetry-sub"},Ye={class:"telemetry-section"},Ze={key:0,class:"telemetry-empty"},Je={key:1,class:"telemetry-list"},Ke={class:"telemetry-section"},Qe={key:0,class:"telemetry-empty"},et={key:1,class:"telemetry-list"},tt={class:"telemetry-section"},st={key:0,class:"telemetry-empty"},lt={key:1,class:"telemetry-list"},ot={class:"telemetry-section"},at={key:0,class:"telemetry-empty"},nt={key:1,class:"telemetry-list"},rt={style:{color:"#91caff"}},it={style:{color:"var(--text-muted)","font-family":"monospace","font-size":"11px"}},ut={style:{color:"var(--text-secondary)","font-family":"monospace","font-size":"12px"}},dt={__name:"Dashboard",setup(V){const j=ae(),d=B(),F=ne(),b=fe(),v=window.__CC_CONFIG__||{},k=S(()=>v.mode==="project"),D=S(()=>d.status),E=S(()=>b.loading),N=S(()=>b.statusLog),h=S(()=>b.telemetryFilters),f=S(()=>b.compression),g=S(()=>b.stats),W=S(()=>Object.entries(f.value.variantDistribution||{})),n=S(()=>f.value.providerDistribution||[]),c=S(()=>f.value.modelDistribution||[]);async function w(){await b.refresh()}async function _(){await b.refreshCompression()}function $(y){return`${((y||0)*100).toFixed(1)}%`}async function A(){await F.createSession("agent"),j.push("/chat")}return le(()=>{b.ensureRuntimeSubscription(d),setTimeout(w,300)}),oe(()=>{b.stopRuntimeSubscription()}),(y,e)=>{const z=x("a-button"),U=x("a-tag"),C=x("a-card"),K=x("a-badge"),u=x("a-col"),R=x("a-row"),Q=x("a-space"),L=x("a-select-option"),G=x("a-select"),M=x("a-descriptions-item"),ee=x("a-descriptions");return i(),p("div",null,[l("div",ye,[l("div",null,[e[13]||(e[13]=l("h2",{class:"page-title"},"仪表板",-1)),l("p",ge,o(k.value?`项目「${r(v).projectName||"未命名"}」运行概览`:"ChainlessChain 全局运行概览"),1)]),t(z,{type:"primary",ghost:"",loading:E.value,onClick:w},{icon:s(()=>[t(r(ie))]),default:s(()=>[e[14]||(e[14]=m(" 刷新 ",-1))]),_:1},8,["loading"])]),k.value?(i(),I(C,{key:0,style:{background:"rgba(22,119,255,.08)","border-color":"rgba(22,119,255,.25)","margin-bottom":"16px"},size:"small"},{default:s(()=>[l("div",_e,[t(r(ue),{style:{color:"#1677ff","font-size":"18px"}}),l("div",null,[l("div",be,o(r(v).projectName||"项目"),1),l("div",ke,o(r(v).projectRoot),1)]),t(U,{color:"blue",style:{"margin-left":"auto"}},{default:s(()=>[...e[15]||(e[15]=[m("项目面板",-1)])]),_:1})])]),_:1})):H("",!0),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card gateway-card",size:"small"},{default:s(()=>[l("div",we,[e[16]||(e[16]=l("span",{class:"stat-label"},"WebSocket Gateway",-1)),t(K,{status:D.value==="connected"?"success":"error"},null,8,["status"])]),l("div",{class:"stat-value",style:q({color:D.value==="connected"?"#52c41a":"#888"})},o(D.value==="connected"?"运行中":"未连接"),5),l("div",Ce,"端口 "+o(r(v).wsPort||18800)+" · "+o(r(v).wsHost||"127.0.0.1"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",xe,[e[17]||(e[17]=l("span",{class:"stat-label"},"当前 LLM",-1)),t(r(X),{style:{color:"#1677ff"}})]),l("div",Se,o(g.value.activeLlm||"未配置"),1),l("div",he,o(g.value.activeModel||"—"),1)]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[0]||(e[0]=a=>y.$router.push("/skills"))},{default:s(()=>[l("div",$e,[e[18]||(e[18]=l("span",{class:"stat-label"},"可用技能",-1)),t(r(Y),{style:{color:"#1677ff"}})]),l("div",Re,o(g.value.skillCount||"—"),1),e[19]||(e[19]=l("div",{class:"stat-sub"},"点击管理技能",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:12,lg:6},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[1]||(e[1]=a=>y.$router.push("/chat"))},{default:s(()=>[l("div",ze,[e[20]||(e[20]=l("span",{class:"stat-label"},"AI 会话",-1)),t(r(Z),{style:{color:"#722ed1"}})]),l("div",Le,o(g.value.sessionCount),1),e[21]||(e[21]=l("div",{class:"stat-sub"},"点击进入对话",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[12,12],style:{"margin-bottom":"16px"}},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small"},{default:s(()=>[l("div",De,[e[22]||(e[22]=l("span",{class:"stat-label"},"应用状态",-1)),t(r(de),{style:q({color:g.value.appRunning?"#52c41a":"#888"})},null,8,["style"])]),l("div",{class:"stat-value",style:q({color:g.value.appRunning?"#52c41a":"#888",fontSize:"15px"})},o(g.value.appRunning?"运行中":g.value.setupDone?"已初始化":"未启动"),5),l("div",Me,o(g.value.edition||"Community")+" Edition",1)]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[2]||(e[2]=a=>y.$router.push("/mcp"))},{default:s(()=>[l("div",Te,[e[23]||(e[23]=l("span",{class:"stat-label"},"MCP 工具",-1)),t(r(ve),{style:{color:"#13c2c2"}})]),l("div",Pe,o(g.value.mcpCount??"—"),1),e[24]||(e[24]=l("div",{class:"stat-sub"},"已挂载扩展",-1))]),_:1})]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[t(C,{class:"stat-card",size:"small",style:{cursor:"pointer"},onClick:e[3]||(e[3]=a=>y.$router.push("/notes"))},{default:s(()=>[l("div",Oe,[e[25]||(e[25]=l("span",{class:"stat-label"},"知识库笔记",-1)),t(r(J),{style:{color:"#faad14"}})]),l("div",je,o(g.value.noteCount??"—"),1),e[26]||(e[26]=l("div",{class:"stat-sub"},"点击管理笔记",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:[16,16]},{default:s(()=>[t(u,{xs:24,lg:10},{default:s(()=>[t(C,{title:"快速操作",style:{background:"var(--bg-card)","border-color":"var(--border-color)",height:"100%"}},{default:s(()=>[t(Q,{direction:"vertical",style:{width:"100%"},size:"middle"},{default:s(()=>[t(z,{type:"primary",block:"",onClick:e[4]||(e[4]=a=>y.$router.push("/chat"))},{icon:s(()=>[t(r(Z))]),default:s(()=>[m(" "+o(k.value?"进入项目 Chat":"新建 AI 对话"),1)]),_:1}),t(z,{block:"",onClick:A,style:{background:"rgba(114,46,209,.12)","border-color":"#722ed1",color:"#722ed1"}},{icon:s(()=>[t(r(X))]),default:s(()=>[e[27]||(e[27]=m(" 启动 Agent 模式 ",-1))]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[5]||(e[5]=a=>y.$router.push("/services")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(ce))]),default:s(()=>[e[28]||(e[28]=m(" 服务管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[6]||(e[6]=a=>y.$router.push("/logs")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(J))]),default:s(()=>[e[29]||(e[29]=m(" 查看日志 ",-1))]),_:1})]),_:1})]),_:1}),t(R,{gutter:8},{default:s(()=>[t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[7]||(e[7]=a=>y.$router.push("/skills")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(Y))]),default:s(()=>[e[30]||(e[30]=m(" 技能管理 ",-1))]),_:1})]),_:1}),t(u,{span:12},{default:s(()=>[t(z,{block:"",onClick:e[8]||(e[8]=a=>y.$router.push("/providers")),style:{background:"var(--bg-card-hover)","border-color":"var(--border-color)"}},{icon:s(()=>[t(r(pe))]),default:s(()=>[e[31]||(e[31]=m(" LLM 配置 ",-1))]),_:1})]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),t(u,{xs:24,lg:14},{default:s(()=>[t(C,{title:"最近状态",style:{background:"var(--bg-card)","border-color":"var(--border-color)"},loading:E.value},{extra:s(()=>[t(z,{type:"link",size:"small",onClick:e[9]||(e[9]=a=>y.$router.push("/logs"))},{default:s(()=>[...e[32]||(e[32]=[m("查看更多",-1)])]),_:1})]),default:s(()=>[l("pre",Fe,o(N.value||"点击刷新加载系统状态..."),1)]),_:1},8,["loading"])]),_:1})]),_:1}),t(C,{title:"压缩策略观测",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"},loading:E.value},{default:s(()=>[t(R,{gutter:[12,12],style:{"margin-bottom":"12px"}},{default:s(()=>[t(u,{xs:24,md:8},{default:s(()=>[l("div",Ee,[e[37]||(e[37]=l("div",{class:"telemetry-filter-label"},"时间窗口",-1)),t(G,{value:h.value.windowPreset,"onUpdate:value":e[10]||(e[10]=a=>h.value.windowPreset=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:"all"},{default:s(()=>[...e[33]||(e[33]=[m("全部样本",-1)])]),_:1}),t(L,{value:"1h"},{default:s(()=>[...e[34]||(e[34]=[m("近 1 小时",-1)])]),_:1}),t(L,{value:"24h"},{default:s(()=>[...e[35]||(e[35]=[m("近 24 小时",-1)])]),_:1}),t(L,{value:"7d"},{default:s(()=>[...e[36]||(e[36]=[m("近 7 天",-1)])]),_:1})]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ne,[e[39]||(e[39]=l("div",{class:"telemetry-filter-label"},"Provider 切片",-1)),t(G,{value:h.value.provider,"onUpdate:value":e[11]||(e[11]=a=>h.value.provider=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[38]||(e[38]=[m("全部 Provider",-1)])]),_:1}),(i(!0),p(P,null,O(n.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1}),t(u,{xs:24,md:8},{default:s(()=>[l("div",Ae,[e[41]||(e[41]=l("div",{class:"telemetry-filter-label"},"Model 切片",-1)),t(G,{value:h.value.model,"onUpdate:value":e[12]||(e[12]=a=>h.value.model=a),style:{width:"100%"},onChange:_},{default:s(()=>[t(L,{value:""},{default:s(()=>[...e[40]||(e[40]=[m("全部 Model",-1)])]),_:1}),(i(!0),p(P,null,O(c.value,a=>(i(),I(L,{key:a.key,value:a.key},{default:s(()=>[m(o(a.key),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])])]),_:1})]),_:1}),t(R,{gutter:[12,12]},{default:s(()=>[t(u,{xs:24,sm:8},{default:s(()=>[l("div",Ie,[e[42]||(e[42]=l("div",{class:"telemetry-label"},"压缩命中率",-1)),l("div",Ve,o($(f.value.hitRate)),1),l("div",We,o(f.value.compressedSamples)+" / "+o(f.value.samples)+" 次压缩产生了有效节省 ",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",Be,[e[43]||(e[43]=l("div",{class:"telemetry-label"},"累计节省 Token",-1)),l("div",Ue,o(f.value.totalSavedTokens),1),l("div",Ge,"平均每次 "+o(f.value.averageSavedTokens)+" Token",1)])]),_:1}),t(u,{xs:24,sm:8},{default:s(()=>[l("div",He,[e[44]||(e[44]=l("div",{class:"telemetry-label"},"净节省率",-1)),l("div",qe,o($(f.value.netSavingsRate)),1),l("div",Xe," 原始 "+o(f.value.totalOriginalTokens)+" -> 压缩后 "+o(f.value.totalCompressedTokens),1)])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ye,[e[45]||(e[45]=l("div",{class:"telemetry-section-title"},"策略命中分布",-1)),f.value.strategyDistribution.length===0?(i(),p("div",Ze,"暂无压缩样本")):(i(),p("div",Je,[(i(!0),p(P,null,O(f.value.strategyDistribution.slice(0,6),a=>(i(),p("div",{key:a.strategy,class:"telemetry-row"},[l("span",null,o(a.strategy),1),l("span",null,o(a.hits)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",Ke,[e[46]||(e[46]=l("div",{class:"telemetry-section-title"},"变体分布",-1)),W.value.length===0?(i(),p("div",Qe,"暂无变体数据")):(i(),p("div",et,[(i(!0),p(P,null,O(W.value,([a,te])=>(i(),p("div",{key:a,class:"telemetry-row"},[l("span",null,o(a),1),l("span",null,o(te)+" 次",1)]))),128))]))])]),_:1})]),_:1}),t(R,{gutter:[16,16],style:{"margin-top":"12px"}},{default:s(()=>[t(u,{xs:24,lg:12},{default:s(()=>[l("div",tt,[e[47]||(e[47]=l("div",{class:"telemetry-section-title"},"Provider 切片",-1)),n.value.length===0?(i(),p("div",st,"暂无 Provider 数据")):(i(),p("div",lt,[(i(!0),p(P,null,O(n.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o($(a.hitRate)),1)]))),128))]))])]),_:1}),t(u,{xs:24,lg:12},{default:s(()=>[l("div",ot,[e[48]||(e[48]=l("div",{class:"telemetry-section-title"},"Model 切片",-1)),c.value.length===0?(i(),p("div",at,"暂无 Model 数据")):(i(),p("div",nt,[(i(!0),p(P,null,O(c.value.slice(0,6),a=>(i(),p("div",{key:a.key,class:"telemetry-row"},[l("span",null,o(a.key),1),l("span",null,o(a.samples)+" 次 · "+o(a.savedTokens)+" saved",1)]))),128))]))])]),_:1})]),_:1})]),_:1},8,["loading"]),t(C,{title:"运行信息",style:{background:"var(--bg-card)","border-color":"var(--border-color)","margin-top":"16px"}},{default:s(()=>[t(ee,{column:{xs:1,sm:2,lg:3},size:"small"},{default:s(()=>[t(M,{label:"面板模式"},{default:s(()=>[t(U,{color:k.value?"blue":"purple"},{default:s(()=>[m(o(k.value?"项目级":"全局"),1)]),_:1},8,["color"])]),_:1}),k.value?(i(),I(M,{key:0,label:"项目名称"},{default:s(()=>[l("span",rt,o(r(v).projectName||"—"),1)]),_:1})):H("",!0),k.value?(i(),I(M,{key:1,label:"项目路径"},{default:s(()=>[l("span",it,o(r(v).projectRoot),1)]),_:1})):H("",!0),t(M,{label:"WebSocket"},{default:s(()=>[l("span",ut," ws://"+o(r(v).wsHost||"127.0.0.1")+":"+o(r(v).wsPort||18800),1)]),_:1}),t(M,{label:"认证"},{default:s(()=>[t(U,{color:r(v).wsToken?"green":"default",style:{"font-size":"11px"}},{default:s(()=>[m(o(r(v).wsToken?"已启用":"未启用"),1)]),_:1},8,["color"])]),_:1}),t(M,{label:"版本"},{default:s(()=>[...e[49]||(e[49]=[l("span",{style:{color:"var(--text-muted)"}},"v5.0.2.7",-1)])]),_:1})]),_:1})]),_:1})])}}},yt=re(dt,[["__scopeId","data-v-c2d8ed1e"]]);export{yt as default};
@@ -1 +1 @@
1
- import{V,f as v,c as h,o as $,a3 as m,a1 as i,a5 as y,u as s,k as r,Z as d,F as C,a7 as L,X as p,$ as j,Y as u,G as g,W as M}from"./vendor-CN0Iv_qZ.js";import{u as A}from"./ws-CU7Gvoom.js";import{p as F}from"./parsers-DftYMnlk.js";import{u as N}from"./chat-BmwHBi9M.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as E,o as R,w as T}from"./antd-gZyc63Qr.js";const U=V("skills",()=>{const _=v(!1),e=v([]),c=v(""),f=v("all"),x=h(()=>{const n=new Set(["all"]);return e.value.forEach(l=>{l.category&&n.add(l.category),l.executionMode&&n.add(l.executionMode)}),[...n]}),k=h(()=>{let n=e.value;if(f.value!=="all"&&(n=n.filter(l=>l.category===f.value||l.executionMode===f.value)),c.value){const l=c.value.toLowerCase();n=n.filter(o=>o.name?.toLowerCase().includes(l)||o.description?.toLowerCase().includes(l)||o.title?.toLowerCase().includes(l))}return n});async function b(){const n=A();_.value=!0;try{const{output:l}=await n.execute("skill list",2e4),o=F(l);e.value=o}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:e,searchQuery:c,selectedCategory:f,categories:x,filteredSkills:k,loadSkills:b}}),W={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},D={class:"page-sub"},G={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},P={key:0,style:{"text-align":"center",padding:"60px"}},X={key:1,class:"skills-grid"},Y={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},Z={style:{flex:"1","min-width":"0"}},H={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},J={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},K={style:{"margin-left":"12px","flex-shrink":"0"}},ee={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},te={key:2,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},oe={__name:"Skills",setup(_){const e=U(),c=N(),f=j(),x=h(()=>e.categories.filter(o=>o!=="all").slice(0,6));function k(o){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[o]||o}function b(o){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[o]||o||"未知"}function n(o){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[o]||"default"}async function l(o){await c.createSession("agent"),f.push("/chat"),setTimeout(()=>{c.currentSessionId&&c.sendMessage(c.currentSessionId,`/skill run ${o}`)},300)}return $(()=>{e.allSkills.length||e.loadSkills()}),(o,t)=>{const S=p("a-button"),z=p("a-input-search"),w=p("a-radio-button"),I=p("a-radio-group"),q=p("a-spin"),B=p("a-tag"),O=p("a-card");return u(),m("div",null,[i("div",W,[i("div",null,[t[3]||(t[3]=i("h2",{class:"page-title"},"技能管理",-1)),i("p",D,y(s(e).allSkills.length)+" 个可用技能",1)]),r(S,{type:"primary",ghost:"",loading:s(e).loading,onClick:t[0]||(t[0]=a=>s(e).loadSkills())},{icon:d(()=>[r(s(R))]),default:d(()=>[t[4]||(t[4]=g(" 刷新 ",-1))]),_:1},8,["loading"])]),i("div",G,[r(z,{value:s(e).searchQuery,"onUpdate:value":t[1]||(t[1]=a=>s(e).searchQuery=a),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),r(I,{value:s(e).selectedCategory,"onUpdate:value":t[2]||(t[2]=a=>s(e).selectedCategory=a),"button-style":"solid"},{default:d(()=>[r(w,{value:"all"},{default:d(()=>[...t[5]||(t[5]=[g("全部",-1)])]),_:1}),(u(!0),m(C,null,L(x.value,a=>(u(),M(w,{key:a,value:a},{default:d(()=>[g(y(k(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),s(e).loading?(u(),m("div",P,[r(q,{size:"large"}),t[6]||(t[6]=i("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):s(e).filteredSkills.length?(u(),m("div",X,[(u(!0),m(C,null,L(s(e).filteredSkills,a=>(u(),M(O,{key:a.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:d(()=>[i("div",Y,[i("div",Z,[i("div",H,y(a.name),1),i("div",J,y(a.description||"暂无描述"),1)]),i("div",K,[r(B,{color:n(a.executionMode),style:{"font-size":"10px"}},{default:d(()=>[g(y(b(a.executionMode)),1)]),_:2},1032,["color"])])]),i("div",ee,[r(S,{size:"small",type:"primary",ghost:"",onClick:le=>l(a.name)},{icon:d(()=>[r(s(T))]),default:d(()=>[t[7]||(t[7]=g(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])):(u(),m("div",te,[r(s(E),{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),i("div",null,y(s(e).allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)]))])}}},ce=Q(oe,[["__scopeId","data-v-a1cd8dd9"]]);export{ce as default};
1
+ import{V,f as v,c as h,o as $,a3 as m,a1 as i,a5 as y,u as s,k as r,Z as d,F as C,a7 as L,X as p,$ as j,Y as u,G as g,W as M}from"./vendor-CN0Iv_qZ.js";import{u as A}from"./ws-CU7Gvoom.js";import{p as F}from"./parsers-DftYMnlk.js";import{u as N}from"./chat-DWBA4-cl.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{c as E,o as R,w as T}from"./antd-gZyc63Qr.js";const U=V("skills",()=>{const _=v(!1),e=v([]),c=v(""),f=v("all"),x=h(()=>{const n=new Set(["all"]);return e.value.forEach(l=>{l.category&&n.add(l.category),l.executionMode&&n.add(l.executionMode)}),[...n]}),k=h(()=>{let n=e.value;if(f.value!=="all"&&(n=n.filter(l=>l.category===f.value||l.executionMode===f.value)),c.value){const l=c.value.toLowerCase();n=n.filter(o=>o.name?.toLowerCase().includes(l)||o.description?.toLowerCase().includes(l)||o.title?.toLowerCase().includes(l))}return n});async function b(){const n=A();_.value=!0;try{const{output:l}=await n.execute("skill list",2e4),o=F(l);e.value=o}catch(l){console.error("Failed to load skills:",l)}finally{_.value=!1}}return{loading:_,allSkills:e,searchQuery:c,selectedCategory:f,categories:x,filteredSkills:k,loadSkills:b}}),W={style:{display:"flex","align-items":"center","justify-content":"space-between","margin-bottom":"24px"}},D={class:"page-sub"},G={style:{display:"flex",gap:"12px","margin-bottom":"20px","flex-wrap":"wrap"}},P={key:0,style:{"text-align":"center",padding:"60px"}},X={key:1,class:"skills-grid"},Y={style:{display:"flex","justify-content":"space-between","align-items":"flex-start"}},Z={style:{flex:"1","min-width":"0"}},H={style:{"font-weight":"500",color:"#e0e0e0","font-size":"14px","margin-bottom":"4px","font-family":"monospace"}},J={style:{color:"var(--text-secondary)","font-size":"12px","line-height":"1.5"}},K={style:{"margin-left":"12px","flex-shrink":"0"}},ee={style:{"margin-top":"10px",display:"flex","justify-content":"flex-end"}},te={key:2,style:{"text-align":"center",padding:"60px",color:"var(--text-muted)"}},oe={__name:"Skills",setup(_){const e=U(),c=N(),f=j(),x=h(()=>e.categories.filter(o=>o!=="all").slice(0,6));function k(o){return{"built-in":"内置","cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合",workspace:"工作区",marketplace:"市场"}[o]||o}function b(o){return{"cli-direct":"CLI",agent:"Agent","llm-query":"LLM",hybrid:"混合","built-in":"内置"}[o]||o||"未知"}function n(o){return{"cli-direct":"cyan",agent:"purple","llm-query":"blue",hybrid:"orange","built-in":"green"}[o]||"default"}async function l(o){await c.createSession("agent"),f.push("/chat"),setTimeout(()=>{c.currentSessionId&&c.sendMessage(c.currentSessionId,`/skill run ${o}`)},300)}return $(()=>{e.allSkills.length||e.loadSkills()}),(o,t)=>{const S=p("a-button"),z=p("a-input-search"),w=p("a-radio-button"),I=p("a-radio-group"),q=p("a-spin"),B=p("a-tag"),O=p("a-card");return u(),m("div",null,[i("div",W,[i("div",null,[t[3]||(t[3]=i("h2",{class:"page-title"},"技能管理",-1)),i("p",D,y(s(e).allSkills.length)+" 个可用技能",1)]),r(S,{type:"primary",ghost:"",loading:s(e).loading,onClick:t[0]||(t[0]=a=>s(e).loadSkills())},{icon:d(()=>[r(s(R))]),default:d(()=>[t[4]||(t[4]=g(" 刷新 ",-1))]),_:1},8,["loading"])]),i("div",G,[r(z,{value:s(e).searchQuery,"onUpdate:value":t[1]||(t[1]=a=>s(e).searchQuery=a),placeholder:"搜索技能名称或描述...",style:{width:"300px"},"allow-clear":""},null,8,["value"]),r(I,{value:s(e).selectedCategory,"onUpdate:value":t[2]||(t[2]=a=>s(e).selectedCategory=a),"button-style":"solid"},{default:d(()=>[r(w,{value:"all"},{default:d(()=>[...t[5]||(t[5]=[g("全部",-1)])]),_:1}),(u(!0),m(C,null,L(x.value,a=>(u(),M(w,{key:a,value:a},{default:d(()=>[g(y(k(a)),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),s(e).loading?(u(),m("div",P,[r(q,{size:"large"}),t[6]||(t[6]=i("div",{style:{color:"var(--text-muted)","margin-top":"12px"}},"加载技能中...",-1))])):s(e).filteredSkills.length?(u(),m("div",X,[(u(!0),m(C,null,L(s(e).filteredSkills,a=>(u(),M(O,{key:a.name,class:"skill-card",size:"small",hoverable:"",style:{background:"var(--bg-card)","border-color":"var(--border-color)",cursor:"default"}},{default:d(()=>[i("div",Y,[i("div",Z,[i("div",H,y(a.name),1),i("div",J,y(a.description||"暂无描述"),1)]),i("div",K,[r(B,{color:n(a.executionMode),style:{"font-size":"10px"}},{default:d(()=>[g(y(b(a.executionMode)),1)]),_:2},1032,["color"])])]),i("div",ee,[r(S,{size:"small",type:"primary",ghost:"",onClick:le=>l(a.name)},{icon:d(()=>[r(s(T))]),default:d(()=>[t[7]||(t[7]=g(" 运行 ",-1))]),_:1},8,["onClick"])])]),_:2},1024))),128))])):(u(),m("div",te,[r(s(E),{style:{"font-size":"48px","margin-bottom":"16px",display:"block"}}),i("div",null,y(s(e).allSkills.length?"没有匹配的技能":"点击刷新加载技能列表"),1)]))])}}},ce=Q(oe,[["__scopeId","data-v-a1cd8dd9"]]);export{ce as default};
@@ -0,0 +1 @@
1
+ import{V as M,f as g,r as w}from"./vendor-CN0Iv_qZ.js";import{u as f}from"./ws-CU7Gvoom.js";const S="新对话",T="新 Agent",b={"assistant.delta":"response-token","assistant.final":"response-complete","assistant.message":"response-complete","tool.call.started":"tool-executing","tool.call.completed":"tool-result","tool.call.failed":"tool-result","slot.filling":"question","approval.requested":"question",error:"error"},U=M("chat",()=>{const c=g([]),p=g(null),i=w({}),a=w({}),m=w({}),d=g(!1);let q=null;const A=new Set;function h(t){return i[t]||(i[t]=[]),i[t]}function y(t){if(!t?.id)return;const e=c.value.find(o=>o.id===t.id);if(e){Object.assign(e,t);return}c.value.unshift(t)}function C(t,e=f()){i[t]||(i[t]=[]),a[t]||(a[t]={content:"",active:!1}),!A.has(t)&&(A.add(t),e.onSession(t,o=>_(t,o)))}function v(t=f()){q||(q=t.onRuntimeEvent(e=>{const o=e.payload||{},s=o.record||{};if(e.type==="session:start"){const n=o.sessionType||s.type||"chat";y({id:o.sessionId,type:n,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"created",title:n==="chat"?S:T,createdAt:Date.now(),messageCount:s.messageCount??0})}else if(e.type==="session:resume"){const n=o.sessionId;if(!n)return;Array.isArray(o.history)&&(i[n]=o.history.map(r=>({role:r.role,content:r.content,timestamp:r.timestamp||Date.now()}))),a[n]||(a[n]={content:"",active:!1}),y({id:n,type:s.type||null,provider:s.provider||null,model:s.model||null,projectRoot:s.projectRoot||null,status:s.status||"resumed",messageCount:s.messageCount??(Array.isArray(o.history)?o.history.length:0)})}else if(e.type==="session:end"){const n=o.sessionId;c.value=c.value.filter(r=>r.id!==n),p.value===n&&(p.value=c.value[0]?.id||null)}}))}async function D(){const t=f();v(t),c.value=await t.listSessions()}async function E(t="chat"){const e=f();v(e);const o=await e.createSession(t);return y({id:o,type:t,title:t==="chat"?S:T,createdAt:Date.now(),messageCount:0}),C(o,e),p.value=o,o}function _(t,e){const o=h(t),s=b[e.type]||e.type,n=e.payload||{};if(s==="response-token"){a[t]||(a[t]={content:"",active:!0});const r=e.token||n.token||n.delta||n.content||"";a[t].content+=r,a[t].active=!0}else if(s==="response-complete"){const r=e.content||n.content||a[t]?.content||"";o.push({role:"assistant",content:r,timestamp:Date.now()}),a[t]&&(a[t].content="",a[t].active=!1);const l=c.value.find(u=>u.id===t);if(l&&(l.title===S||l.title===T)){const u=o.find(j=>j.role==="user");u&&(l.title=u.content.slice(0,30))}l&&(l.messageCount=o.filter(u=>u.role!=="tool").length),d.value=!1}else if(s==="tool-executing")o.push({role:"tool",tool:e.tool||n.tool||n.toolName||"unknown",input:e.input||n.input||n.args||null,status:"running",timestamp:Date.now()});else if(s==="tool-result"){const r=e.tool||n.tool||n.toolName||"unknown",l=[...o].reverse().find(u=>u.role==="tool"&&u.tool===r);l&&(l.result=e.result||n.result||n.output||null,l.status="done")}else if(s==="question")m[t]={requestId:e.requestId||n.requestId||e.id,question:e.question||n.question||n.message||"",choices:e.choices||n.choices||n.options||[]};else if(s==="error"){const r=e.message||n.message||"Unknown error";o.push({role:"assistant",content:`Error: ${r}`,timestamp:Date.now()}),d.value=!1,a[t]&&(a[t].active=!1)}}async function k(t,e){const o=f();v(o),h(t).push({role:"user",content:e,timestamp:Date.now()}),a[t]||(a[t]={content:"",active:!1}),a[t].active=!0,d.value=!0,o.sendSessionMessage(t,e)}function R(t,e){const o=f(),s=m[t];s&&(o.answerQuestion(t,s.requestId,e),delete m[t])}async function L(t){const e=f();if(v(e),p.value=t,C(t,e),!i[t]||i[t].length===0)try{await e.resumeSession(t)}catch{}}return{sessions:c,currentSessionId:p,messages:i,streaming:a,pendingQuestion:m,isLoading:d,loadSessions:D,createSession:E,sendMessage:k,answerQuestion:R,switchSession:L,getMessages:h}});export{U as u};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AppLayout-BhJ3YFWt.js","./vendor-CN0Iv_qZ.js","./ws-CU7Gvoom.js","./_plugin-vue_export-helper-DlAUqK2U.js","./antd-gZyc63Qr.js","./AppLayout-Cr2lWhF-.css","./Dashboard-CjlX4CrX.js","./chat-BmwHBi9M.js","./Dashboard-CKeMmCoT.css","./Chat-DaxTP3x8.js","./markdown-Bv7nG63L.js","./Chat-DB46afPg.css","./Services-7jQywNbl.js","./Services-C8Qs6KXv.css","./Logs-BY6A0UNG.js","./Logs-Gf_Mv9Nx.css","./Skills-BCvgBkD3.js","./parsers-DftYMnlk.js","./Skills-BdjRyorN.css","./Providers-ivOAQtHM.js","./Providers-BEakqcO5.css","./McpTools-CrBVYlg6.js","./McpTools-CyhSLDwf.css","./Notes-1LcGD49x.js","./Notes-BG69sJKi.css","./Memory-CWx3SpUt.js","./Memory-DRghrGJr.css","./Cron-CNs03iHJ.js","./Tasks-CmJBC1cf.js","./Tasks-BJjN_YEm.css","./Security-DnEvJU5h.js","./Security-Dwxw7rfP.css","./Permissions-BQbC9FzG.js","./Permissions-C9WlkGl-.css","./P2P-B16fjqfJ.js","./P2P-OEzOeMZX.css","./Git-CCMVr3Y8.js","./Git-DGcuBXST.css","./Projects-CjhZbNYm.js","./Projects-DxKelI5h.css","./Wallet-3iYASEx_.js","./Wallet-DnIumafl.css","./Organization-Dx2DhbkM.js","./Organization-DdOOM4ic.css","./Analytics-sBrYoc3A.js","./Analytics-B4OM8S8X.css","./Templates-RXT8-DNk.js","./Templates-DOY_oZnm.css","./Backup-D68fenbD.js","./Backup-fZqtfC1m.css","./RssFeed-BrsErdrU.js","./RssFeed-BlFC20eg.css","./WebAuthn-s3Hzd9db.js","./WebAuthn-CNPl2VQR.css"])))=>i.map(i=>d[i]);
2
- import{S as B,U as L,V as I,f as T,c as E,o as R,W as O,u as k,X as y,Y as x,Z as V,k as D,R as S,_ as w}from"./vendor-CN0Iv_qZ.js";import{a as g,A as M}from"./antd-gZyc63Qr.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))m(t);new MutationObserver(t=>{for(const r of t)if(r.type==="childList")for(const n of r.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&m(n)}).observe(document,{childList:!0,subtree:!0});function c(t){const r={};return t.integrity&&(r.integrity=t.integrity),t.referrerPolicy&&(r.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?r.credentials="include":t.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function m(t){if(t.ep)return;t.ep=!0;const r=c(t);fetch(t.href,r)}})();const C="modulepreload",N=function(s,a){return new URL(s,a).href},P={},e=function(a,c,m){let t=Promise.resolve();if(c&&c.length>0){let b=function(i){return Promise.all(i.map(d=>Promise.resolve(d).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};const n=document.getElementsByTagName("link"),o=document.querySelector("meta[property=csp-nonce]"),u=o?.nonce||o?.getAttribute("nonce");t=b(c.map(i=>{if(i=N(i,m),i in P)return;P[i]=!0;const d=i.endsWith(".css"),p=d?'[rel="stylesheet"]':"";if(m)for(let f=n.length-1;f>=0;f--){const _=n[f];if(_.href===i&&(!d||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${p}`))return;const l=document.createElement("link");if(l.rel=d?"stylesheet":C,d||(l.as="script"),l.crossOrigin="",l.href=i,u&&l.setAttribute("nonce",u),document.head.appendChild(l),d)return new Promise((f,_)=>{l.addEventListener("load",f),l.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})}))}function r(n){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=n,window.dispatchEvent(o),!o.defaultPrevented)throw n}return t.then(n=>{for(const o of n||[])o.status==="rejected"&&r(o.reason);return a().catch(r)})},U=[{path:"/",component:()=>e(()=>import("./AppLayout-BhJ3YFWt.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url),children:[{path:"",redirect:"/dashboard"},{path:"dashboard",name:"Dashboard",component:()=>e(()=>import("./Dashboard-CjlX4CrX.js"),__vite__mapDeps([6,1,2,7,3,4,8]),import.meta.url)},{path:"chat",name:"Chat",component:()=>e(()=>import("./Chat-DaxTP3x8.js"),__vite__mapDeps([9,1,10,4,7,2,3,11]),import.meta.url)},{path:"services",name:"Services",component:()=>e(()=>import("./Services-7jQywNbl.js"),__vite__mapDeps([12,2,1,3,4,13]),import.meta.url)},{path:"logs",name:"Logs",component:()=>e(()=>import("./Logs-BY6A0UNG.js"),__vite__mapDeps([14,2,1,3,4,15]),import.meta.url)},{path:"skills",name:"Skills",component:()=>e(()=>import("./Skills-BCvgBkD3.js"),__vite__mapDeps([16,1,2,17,7,3,4,18]),import.meta.url)},{path:"providers",name:"Providers",component:()=>e(()=>import("./Providers-ivOAQtHM.js"),__vite__mapDeps([19,1,2,17,3,4,20]),import.meta.url)},{path:"mcp",name:"McpTools",component:()=>e(()=>import("./McpTools-CrBVYlg6.js"),__vite__mapDeps([21,2,1,3,4,22]),import.meta.url)},{path:"notes",name:"Notes",component:()=>e(()=>import("./Notes-1LcGD49x.js"),__vite__mapDeps([23,2,1,3,4,24]),import.meta.url)},{path:"memory",name:"Memory",component:()=>e(()=>import("./Memory-CWx3SpUt.js"),__vite__mapDeps([25,2,1,3,4,26]),import.meta.url)},{path:"cron",name:"Cron",component:()=>e(()=>import("./Cron-CNs03iHJ.js"),__vite__mapDeps([27,2,1,4]),import.meta.url)},{path:"tasks",name:"Tasks",component:()=>e(()=>import("./Tasks-CmJBC1cf.js"),__vite__mapDeps([28,1,2,3,4,29]),import.meta.url)},{path:"security",name:"Security",component:()=>e(()=>import("./Security-DnEvJU5h.js"),__vite__mapDeps([30,2,1,3,4,31]),import.meta.url)},{path:"permissions",name:"Permissions",component:()=>e(()=>import("./Permissions-BQbC9FzG.js"),__vite__mapDeps([32,2,1,3,4,33]),import.meta.url)},{path:"p2p",name:"P2P",component:()=>e(()=>import("./P2P-B16fjqfJ.js"),__vite__mapDeps([34,2,1,3,4,35]),import.meta.url)},{path:"git",name:"Git",component:()=>e(()=>import("./Git-CCMVr3Y8.js"),__vite__mapDeps([36,2,1,3,4,37]),import.meta.url)},{path:"projects",name:"Projects",component:()=>e(()=>import("./Projects-CjhZbNYm.js"),__vite__mapDeps([38,2,1,3,4,39]),import.meta.url)},{path:"wallet",name:"Wallet",component:()=>e(()=>import("./Wallet-3iYASEx_.js"),__vite__mapDeps([40,2,1,3,4,41]),import.meta.url)},{path:"organization",name:"Organization",component:()=>e(()=>import("./Organization-Dx2DhbkM.js"),__vite__mapDeps([42,1,2,3,4,43]),import.meta.url)},{path:"analytics",name:"Analytics",component:()=>e(()=>import("./Analytics-sBrYoc3A.js"),__vite__mapDeps([44,2,1,3,4,45]),import.meta.url)},{path:"templates",name:"Templates",component:()=>e(()=>import("./Templates-RXT8-DNk.js"),__vite__mapDeps([46,1,2,3,4,47]),import.meta.url)},{path:"backup",name:"Backup",component:()=>e(()=>import("./Backup-D68fenbD.js"),__vite__mapDeps([48,2,1,3,4,49]),import.meta.url)},{path:"rssfeed",name:"RssFeed",component:()=>e(()=>import("./RssFeed-BrsErdrU.js"),__vite__mapDeps([50,1,2,3,4,51]),import.meta.url)},{path:"webauthn",name:"WebAuthn",component:()=>e(()=>import("./WebAuthn-s3Hzd9db.js"),__vite__mapDeps([52,2,1,3,4,53]),import.meta.url)}]}],F=B({history:L(),routes:U}),A="cc_theme",v={dark:{label:"暗黑",icon:"🌑",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#141414",colorBgContainer:"#1f1f1f",colorBgElevated:"#2a2a2a",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#1c1c1c",headerBg:"#1c1c1c",bodyBg:"#141414"},Menu:{darkItemBg:"#1c1c1c",darkSubMenuItemBg:"#171717"}}},vars:{"--bg-base":"#141414","--bg-sidebar":"#1c1c1c","--bg-header":"#1c1c1c","--bg-card":"#1f1f1f","--bg-card-hover":"#262626","--border-color":"#252525","--border-subtle":"#1e1e1e","--text-primary":"#e0e0e0","--text-secondary":"#888","--text-muted":"#444","--logo-text":"#ffffff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,0,0,.45)","--group-title":"#3a3a3a"}},light:{label:"亮白",icon:"☀️",antd:{algorithm:g.defaultAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#ffffff",colorBgContainer:"#ffffff",colorBgElevated:"#ffffff",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#ffffff",headerBg:"#ffffff",bodyBg:"#f4f6fb"},Menu:{itemBg:"#ffffff"}}},vars:{"--bg-base":"#f4f6fb","--bg-sidebar":"#ffffff","--bg-header":"#ffffff","--bg-card":"#ffffff","--bg-card-hover":"#f0f4ff","--border-color":"#e8edf5","--border-subtle":"#f0f0f0","--text-primary":"#1a1a2e","--text-secondary":"#5a6474","--text-muted":"#b0b8c8","--logo-text":"#1a1a2e","--menu-mode":"light","--shadow-card":"0 2px 12px rgba(0,0,0,.07)","--group-title":"#aab0bc"}},blue:{label:"深蓝",icon:"🌊",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#2f80ed",colorBgBase:"#0d1117",colorBgContainer:"#161b22",colorBgElevated:"#1c2230",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0f1923",headerBg:"#0f1923",bodyBg:"#0d1117"},Menu:{darkItemBg:"#0f1923",darkSubMenuItemBg:"#0b1520"}}},vars:{"--bg-base":"#0d1117","--bg-sidebar":"#0f1923","--bg-header":"#0f1923","--bg-card":"#161b22","--bg-card-hover":"#1c2230","--border-color":"#21303f","--border-subtle":"#182030","--text-primary":"#c9d8ef","--text-secondary":"#6e8caa","--text-muted":"#2d4060","--logo-text":"#e0eeff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,80,.5)","--group-title":"#2d4060"}},green:{label:"翠绿",icon:"🌿",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#29a270",colorBgBase:"#0a1a12",colorBgContainer:"#0f2318",colorBgElevated:"#152e20",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0c1e14",headerBg:"#0c1e14",bodyBg:"#0a1a12"},Menu:{darkItemBg:"#0c1e14",darkSubMenuItemBg:"#091810"}}},vars:{"--bg-base":"#0a1a12","--bg-sidebar":"#0c1e14","--bg-header":"#0c1e14","--bg-card":"#0f2318","--bg-card-hover":"#152e20","--border-color":"#1a3828","--border-subtle":"#122a1c","--text-primary":"#c0e8c8","--text-secondary":"#5a9a6a","--text-muted":"#1e4028","--logo-text":"#d8f0e0","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,20,.5)","--group-title":"#1e4028"}}},j=I("theme",()=>{const s=T(localStorage.getItem(A)||"dark"),a=E(()=>v[s.value]||v.dark),c=E(()=>a.value.antd),m=E(()=>s.value!=="light");function t(){const o=a.value.vars,u=document.documentElement;for(const[b,i]of Object.entries(o))u.style.setProperty(b,i);u.setAttribute("data-theme",s.value)}function r(o){v[o]&&(s.value=o,localStorage.setItem(A,o),t())}function n(){t()}return{current:s,config:a,antdTheme:c,isDark:m,setTheme:r,init:n}}),W={__name:"App",setup(s){const a=j();return R(()=>a.init()),(c,m)=>{const t=y("router-view"),r=y("a-config-provider");return x(),O(r,{theme:k(a).antdTheme},{default:V(()=>[D(t)]),_:1},8,["theme"])}}},h=S(W);h.use(w());h.use(F);h.use(M);h.mount("#app");export{v as T,j as u};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./AppLayout-2RCrdXxl.js","./vendor-CN0Iv_qZ.js","./ws-CU7Gvoom.js","./_plugin-vue_export-helper-DlAUqK2U.js","./antd-gZyc63Qr.js","./AppLayout-D9pBLPC3.css","./Dashboard-DanoHPSI.js","./chat-DWBA4-cl.js","./Dashboard-CKeMmCoT.css","./Chat-B2nB8o_F.js","./markdown-Bv7nG63L.js","./Chat-DB46afPg.css","./Services-7jQywNbl.js","./Services-C8Qs6KXv.css","./Logs-BY6A0UNG.js","./Logs-Gf_Mv9Nx.css","./Skills-CLlblJcG.js","./parsers-DftYMnlk.js","./Skills-BdjRyorN.css","./Providers-ivOAQtHM.js","./Providers-BEakqcO5.css","./McpTools-CrBVYlg6.js","./McpTools-CyhSLDwf.css","./Notes-1LcGD49x.js","./Notes-BG69sJKi.css","./Memory-CWx3SpUt.js","./Memory-DRghrGJr.css","./Cron-CNs03iHJ.js","./Tasks-CmJBC1cf.js","./Tasks-BJjN_YEm.css","./Security-DnEvJU5h.js","./Security-Dwxw7rfP.css","./Permissions-BQbC9FzG.js","./Permissions-C9WlkGl-.css","./P2P-B16fjqfJ.js","./P2P-OEzOeMZX.css","./Git-CCMVr3Y8.js","./Git-DGcuBXST.css","./Projects-CjhZbNYm.js","./Projects-DxKelI5h.css","./Wallet-3iYASEx_.js","./Wallet-DnIumafl.css","./Organization-Dx2DhbkM.js","./Organization-DdOOM4ic.css","./Analytics-sBrYoc3A.js","./Analytics-B4OM8S8X.css","./Templates-RXT8-DNk.js","./Templates-DOY_oZnm.css","./Backup-D68fenbD.js","./Backup-fZqtfC1m.css","./RssFeed-BrsErdrU.js","./RssFeed-BlFC20eg.css","./WebAuthn-s3Hzd9db.js","./WebAuthn-CNPl2VQR.css"])))=>i.map(i=>d[i]);
2
+ import{S as B,U as L,V as I,f as T,c as E,o as R,W as O,u as k,X as y,Y as x,Z as V,k as D,R as S,_ as w}from"./vendor-CN0Iv_qZ.js";import{a as g,A as M}from"./antd-gZyc63Qr.js";(function(){const a=document.createElement("link").relList;if(a&&a.supports&&a.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))m(t);new MutationObserver(t=>{for(const o of t)if(o.type==="childList")for(const n of o.addedNodes)n.tagName==="LINK"&&n.rel==="modulepreload"&&m(n)}).observe(document,{childList:!0,subtree:!0});function c(t){const o={};return t.integrity&&(o.integrity=t.integrity),t.referrerPolicy&&(o.referrerPolicy=t.referrerPolicy),t.crossOrigin==="use-credentials"?o.credentials="include":t.crossOrigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function m(t){if(t.ep)return;t.ep=!0;const o=c(t);fetch(t.href,o)}})();const C="modulepreload",N=function(s,a){return new URL(s,a).href},P={},e=function(a,c,m){let t=Promise.resolve();if(c&&c.length>0){let b=function(i){return Promise.all(i.map(d=>Promise.resolve(d).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};const n=document.getElementsByTagName("link"),r=document.querySelector("meta[property=csp-nonce]"),u=r?.nonce||r?.getAttribute("nonce");t=b(c.map(i=>{if(i=N(i,m),i in P)return;P[i]=!0;const d=i.endsWith(".css"),p=d?'[rel="stylesheet"]':"";if(m)for(let f=n.length-1;f>=0;f--){const _=n[f];if(_.href===i&&(!d||_.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${i}"]${p}`))return;const l=document.createElement("link");if(l.rel=d?"stylesheet":C,d||(l.as="script"),l.crossOrigin="",l.href=i,u&&l.setAttribute("nonce",u),document.head.appendChild(l),d)return new Promise((f,_)=>{l.addEventListener("load",f),l.addEventListener("error",()=>_(new Error(`Unable to preload CSS for ${i}`)))})}))}function o(n){const r=new Event("vite:preloadError",{cancelable:!0});if(r.payload=n,window.dispatchEvent(r),!r.defaultPrevented)throw n}return t.then(n=>{for(const r of n||[])r.status==="rejected"&&o(r.reason);return a().catch(o)})},U=[{path:"/",component:()=>e(()=>import("./AppLayout-2RCrdXxl.js"),__vite__mapDeps([0,1,2,3,4,5]),import.meta.url),children:[{path:"",redirect:"/dashboard"},{path:"dashboard",name:"Dashboard",component:()=>e(()=>import("./Dashboard-DanoHPSI.js"),__vite__mapDeps([6,1,2,7,3,4,8]),import.meta.url)},{path:"chat",name:"Chat",component:()=>e(()=>import("./Chat-B2nB8o_F.js"),__vite__mapDeps([9,1,10,4,7,2,3,11]),import.meta.url)},{path:"services",name:"Services",component:()=>e(()=>import("./Services-7jQywNbl.js"),__vite__mapDeps([12,2,1,3,4,13]),import.meta.url)},{path:"logs",name:"Logs",component:()=>e(()=>import("./Logs-BY6A0UNG.js"),__vite__mapDeps([14,2,1,3,4,15]),import.meta.url)},{path:"skills",name:"Skills",component:()=>e(()=>import("./Skills-CLlblJcG.js"),__vite__mapDeps([16,1,2,17,7,3,4,18]),import.meta.url)},{path:"providers",name:"Providers",component:()=>e(()=>import("./Providers-ivOAQtHM.js"),__vite__mapDeps([19,1,2,17,3,4,20]),import.meta.url)},{path:"mcp",name:"McpTools",component:()=>e(()=>import("./McpTools-CrBVYlg6.js"),__vite__mapDeps([21,2,1,3,4,22]),import.meta.url)},{path:"notes",name:"Notes",component:()=>e(()=>import("./Notes-1LcGD49x.js"),__vite__mapDeps([23,2,1,3,4,24]),import.meta.url)},{path:"memory",name:"Memory",component:()=>e(()=>import("./Memory-CWx3SpUt.js"),__vite__mapDeps([25,2,1,3,4,26]),import.meta.url)},{path:"cron",name:"Cron",component:()=>e(()=>import("./Cron-CNs03iHJ.js"),__vite__mapDeps([27,2,1,4]),import.meta.url)},{path:"tasks",name:"Tasks",component:()=>e(()=>import("./Tasks-CmJBC1cf.js"),__vite__mapDeps([28,1,2,3,4,29]),import.meta.url)},{path:"security",name:"Security",component:()=>e(()=>import("./Security-DnEvJU5h.js"),__vite__mapDeps([30,2,1,3,4,31]),import.meta.url)},{path:"permissions",name:"Permissions",component:()=>e(()=>import("./Permissions-BQbC9FzG.js"),__vite__mapDeps([32,2,1,3,4,33]),import.meta.url)},{path:"p2p",name:"P2P",component:()=>e(()=>import("./P2P-B16fjqfJ.js"),__vite__mapDeps([34,2,1,3,4,35]),import.meta.url)},{path:"git",name:"Git",component:()=>e(()=>import("./Git-CCMVr3Y8.js"),__vite__mapDeps([36,2,1,3,4,37]),import.meta.url)},{path:"projects",name:"Projects",component:()=>e(()=>import("./Projects-CjhZbNYm.js"),__vite__mapDeps([38,2,1,3,4,39]),import.meta.url)},{path:"wallet",name:"Wallet",component:()=>e(()=>import("./Wallet-3iYASEx_.js"),__vite__mapDeps([40,2,1,3,4,41]),import.meta.url)},{path:"organization",name:"Organization",component:()=>e(()=>import("./Organization-Dx2DhbkM.js"),__vite__mapDeps([42,1,2,3,4,43]),import.meta.url)},{path:"analytics",name:"Analytics",component:()=>e(()=>import("./Analytics-sBrYoc3A.js"),__vite__mapDeps([44,2,1,3,4,45]),import.meta.url)},{path:"templates",name:"Templates",component:()=>e(()=>import("./Templates-RXT8-DNk.js"),__vite__mapDeps([46,1,2,3,4,47]),import.meta.url)},{path:"backup",name:"Backup",component:()=>e(()=>import("./Backup-D68fenbD.js"),__vite__mapDeps([48,2,1,3,4,49]),import.meta.url)},{path:"rssfeed",name:"RssFeed",component:()=>e(()=>import("./RssFeed-BrsErdrU.js"),__vite__mapDeps([50,1,2,3,4,51]),import.meta.url)},{path:"webauthn",name:"WebAuthn",component:()=>e(()=>import("./WebAuthn-s3Hzd9db.js"),__vite__mapDeps([52,2,1,3,4,53]),import.meta.url)}]}],F=B({history:L(),routes:U}),A="cc_theme",v={dark:{label:"暗黑",icon:"🌑",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#141414",colorBgContainer:"#1f1f1f",colorBgElevated:"#2a2a2a",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#1c1c1c",headerBg:"#1c1c1c",bodyBg:"#141414"},Menu:{darkItemBg:"#1c1c1c",darkSubMenuItemBg:"#171717"}}},vars:{"--bg-base":"#141414","--bg-sidebar":"#1c1c1c","--bg-header":"#1c1c1c","--bg-card":"#1f1f1f","--bg-card-hover":"#262626","--border-color":"#252525","--border-subtle":"#1e1e1e","--text-primary":"#e0e0e0","--text-secondary":"#888","--text-muted":"#444","--logo-text":"#ffffff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,0,0,.45)","--group-title":"#3a3a3a"}},light:{label:"亮白",icon:"☀️",antd:{algorithm:g.defaultAlgorithm,token:{colorPrimary:"#1677ff",colorBgBase:"#ffffff",colorBgContainer:"#ffffff",colorBgElevated:"#ffffff",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#ffffff",headerBg:"#ffffff",bodyBg:"#f4f6fb"},Menu:{itemBg:"#ffffff"}}},vars:{"--bg-base":"#f4f6fb","--bg-sidebar":"#ffffff","--bg-header":"#ffffff","--bg-card":"#ffffff","--bg-card-hover":"#f0f4ff","--border-color":"#e8edf5","--border-subtle":"#f0f0f0","--text-primary":"#1a1a2e","--text-secondary":"#5a6474","--text-muted":"#b0b8c8","--logo-text":"#1a1a2e","--menu-mode":"light","--shadow-card":"0 2px 12px rgba(0,0,0,.07)","--group-title":"#aab0bc"}},blue:{label:"深蓝",icon:"🌊",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#2f80ed",colorBgBase:"#0d1117",colorBgContainer:"#161b22",colorBgElevated:"#1c2230",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0f1923",headerBg:"#0f1923",bodyBg:"#0d1117"},Menu:{darkItemBg:"#0f1923",darkSubMenuItemBg:"#0b1520"}}},vars:{"--bg-base":"#0d1117","--bg-sidebar":"#0f1923","--bg-header":"#0f1923","--bg-card":"#161b22","--bg-card-hover":"#1c2230","--border-color":"#21303f","--border-subtle":"#182030","--text-primary":"#c9d8ef","--text-secondary":"#6e8caa","--text-muted":"#2d4060","--logo-text":"#e0eeff","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,80,.5)","--group-title":"#2d4060"}},green:{label:"翠绿",icon:"🌿",antd:{algorithm:g.darkAlgorithm,token:{colorPrimary:"#29a270",colorBgBase:"#0a1a12",colorBgContainer:"#0f2318",colorBgElevated:"#152e20",borderRadius:8,fontFamily:'system-ui, -apple-system, "Segoe UI", sans-serif'},components:{Layout:{siderBg:"#0c1e14",headerBg:"#0c1e14",bodyBg:"#0a1a12"},Menu:{darkItemBg:"#0c1e14",darkSubMenuItemBg:"#091810"}}},vars:{"--bg-base":"#0a1a12","--bg-sidebar":"#0c1e14","--bg-header":"#0c1e14","--bg-card":"#0f2318","--bg-card-hover":"#152e20","--border-color":"#1a3828","--border-subtle":"#122a1c","--text-primary":"#c0e8c8","--text-secondary":"#5a9a6a","--text-muted":"#1e4028","--logo-text":"#d8f0e0","--menu-mode":"dark","--shadow-card":"0 2px 8px rgba(0,40,20,.5)","--group-title":"#1e4028"}}},j=I("theme",()=>{const s=T(localStorage.getItem(A)||"light"),a=E(()=>v[s.value]||v.dark),c=E(()=>a.value.antd),m=E(()=>s.value!=="light");function t(){const r=a.value.vars,u=document.documentElement;for(const[b,i]of Object.entries(r))u.style.setProperty(b,i);u.setAttribute("data-theme",s.value)}function o(r){v[r]&&(s.value=r,localStorage.setItem(A,r),t())}function n(){t()}return{current:s,config:a,antdTheme:c,isDark:m,setTheme:o,init:n}}),W={__name:"App",setup(s){const a=j();return R(()=>a.init()),(c,m)=>{const t=y("router-view"),o=y("a-config-provider");return x(),O(o,{theme:k(a).antdTheme},{default:V(()=>[D(t)]),_:1},8,["theme"])}}},h=S(W);h.use(w());h.use(F);h.use(M);h.mount("#app");export{v as T,j as u};
@@ -8,7 +8,7 @@
8
8
  // Injected by web-ui-server.js at serve time
9
9
  window.__CC_CONFIG__ = __CC_CONFIG_PLACEHOLDER__;
10
10
  </script>
11
- <script type="module" crossorigin src="./assets/index-DrmEk9S3.js"></script>
11
+ <script type="module" crossorigin src="./assets/index-CyGtHm63.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="./assets/vendor-CN0Iv_qZ.js">
13
13
  <link rel="modulepreload" crossorigin href="./assets/antd-gZyc63Qr.js">
14
14
  <link rel="stylesheet" crossorigin href="./assets/index-CyGyEIVX.css">