hermes-web-ui 0.1.5 → 0.1.7

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 (85) hide show
  1. package/README.md +75 -12
  2. package/dist/assets/ChannelsView-BWEvTQwM.css +1 -0
  3. package/dist/assets/ChannelsView-sOGWQqBR.js +1 -0
  4. package/dist/assets/ChatView-BYMsYkQ1.css +1 -0
  5. package/dist/assets/ChatView-Ck4IHVIc.js +142 -0
  6. package/dist/assets/Close-B7KfM3jl.js +45 -0
  7. package/dist/assets/FormItem-BdZ_3RxK.js +110 -0
  8. package/dist/assets/Input-C6bxvAIj.js +234 -0
  9. package/dist/assets/InputNumber-eI175yNc.js +13 -0
  10. package/dist/assets/JobsView-DkwaDky6.css +1 -0
  11. package/dist/assets/JobsView-wXKPSc8W.js +2 -0
  12. package/dist/assets/LogsView-B2TeFIUX.css +1 -0
  13. package/dist/assets/LogsView-Ck9HLcnc.js +1 -0
  14. package/dist/assets/MarkdownRenderer-B_Fo6783.js +23 -0
  15. package/dist/assets/MemoryView-BUR_XL9x.js +5 -0
  16. package/dist/assets/MemoryView-CHeaa1-C.css +1 -0
  17. package/dist/assets/Modal-DYN0wyo2.js +232 -0
  18. package/dist/assets/ModelsView-CLdtVeiJ.css +1 -0
  19. package/dist/assets/ModelsView-CkEpCpW4.js +1 -0
  20. package/dist/assets/Popover-BgNi3Q2J.js +117 -0
  21. package/dist/assets/Select-DevZ62i5.js +340 -0
  22. package/dist/assets/SettingRow-HrI0c-1s.css +1 -0
  23. package/dist/assets/SettingRow-bBgfSbZT.js +102 -0
  24. package/dist/assets/SettingsView-Cl1ts-YY.css +1 -0
  25. package/dist/assets/SettingsView-D_qQMAqN.js +352 -0
  26. package/dist/assets/SkillsView-BvNhRbMq.css +1 -0
  27. package/dist/assets/SkillsView-C68Fr3t5.js +1 -0
  28. package/dist/assets/Spin-C1dDkPv8.js +43 -0
  29. package/dist/assets/Suffix-B6bqA1w3.js +101 -0
  30. package/dist/assets/Tag-BBWtv463.js +71 -0
  31. package/dist/assets/Tooltip-D-FlJlcu.js +1 -0
  32. package/dist/assets/_plugin-vue_export-helper-AI_aJZ2_.js +49 -0
  33. package/dist/assets/app-DYgUa8EE.js +1 -0
  34. package/dist/assets/app-DZPFLxKB.js +1 -0
  35. package/dist/assets/chat-C87W9H3D.js +6 -0
  36. package/dist/assets/{context-DW8F1iIn.js → context-aD0DoQuE.js} +14 -14
  37. package/dist/assets/{index-DwVgwUIX.css → index-B7NziQ6I.css} +1 -1
  38. package/dist/assets/index-BxFv1xVi.js +307 -0
  39. package/dist/assets/jobs-D_98yklp.js +1 -0
  40. package/dist/assets/pinia-B7LrvQDh.js +1 -0
  41. package/dist/assets/preload-helper-D4M6sveU.js +1 -0
  42. package/dist/assets/{skills-CkDtgKB5.js → skills-nROrsAxi.js} +1 -1
  43. package/dist/assets/use-message-rwmUYd8q.js +1 -0
  44. package/dist/assets/vue.runtime.esm-bundler-LsUadeZi.js +3 -0
  45. package/dist/index.html +16 -16
  46. package/dist/server/index.js +4 -0
  47. package/dist/server/routes/config.d.ts +2 -0
  48. package/dist/server/routes/config.js +314 -0
  49. package/dist/server/routes/filesystem.js +121 -22
  50. package/dist/server/routes/weixin.d.ts +2 -0
  51. package/dist/server/routes/weixin.js +131 -0
  52. package/dist/server/shared/providers.d.ts +13 -0
  53. package/dist/server/shared/providers.js +210 -0
  54. package/package.json +6 -1
  55. package/dist/assets/ChatView-Cwa-sap0.js +0 -18
  56. package/dist/assets/ChatView-Dio4HD6Y.css +0 -1
  57. package/dist/assets/Dropdown-8pId5Qsj.js +0 -125
  58. package/dist/assets/Input-BZKSQ403.js +0 -234
  59. package/dist/assets/JobsView-BhwwXuLt.css +0 -1
  60. package/dist/assets/JobsView-CQf4Y7Mw.js +0 -123
  61. package/dist/assets/LogsView-BN_TkDPi.css +0 -1
  62. package/dist/assets/LogsView-CKyL3UT5.js +0 -1
  63. package/dist/assets/MarkdownRenderer-DNP-kPA8.js +0 -23
  64. package/dist/assets/MemoryView-BBwqM3vf.js +0 -5
  65. package/dist/assets/MemoryView-CK0PemlP.css +0 -1
  66. package/dist/assets/Modal-BtRuxNI4.js +0 -232
  67. package/dist/assets/Popover-C2CJscsj.js +0 -161
  68. package/dist/assets/Select-CithN5ti.js +0 -410
  69. package/dist/assets/SettingsView-BzBMKaLz.css +0 -1
  70. package/dist/assets/SettingsView-D1hOGA0Z.js +0 -1005
  71. package/dist/assets/SkillsView-86Z-HE_X.css +0 -1
  72. package/dist/assets/SkillsView-BfnrX5TQ.js +0 -1
  73. package/dist/assets/Spin-7g8GCzi5.js +0 -43
  74. package/dist/assets/Suffix-DI9irQ4f.js +0 -101
  75. package/dist/assets/Tooltip-BdrvORgU.js +0 -1
  76. package/dist/assets/_plugin-vue_export-helper-BrYOyDjU.js +0 -47
  77. package/dist/assets/app-JRkV5-Ft.js +0 -1
  78. package/dist/assets/chat-Cgdof9SF.js +0 -6
  79. package/dist/assets/index-JHg9WTzt.js +0 -307
  80. package/dist/assets/jobs-DJ8ETzok.js +0 -1
  81. package/dist/assets/keysOf-Dvq9k1rv.js +0 -1
  82. package/dist/assets/pinia-tE0RcsDr.js +0 -1
  83. package/dist/assets/runtime-core.esm-bundler-yNW65ghW.js +0 -1
  84. package/dist/assets/use-message-Btr-O4Ih.js +0 -1
  85. /package/dist/assets/{client-kwQ0ijpp.js → client-Df_SqoZl.js} +0 -0
package/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Hermes Web UI
2
2
 
3
- Web dashboard for [Hermes Agent](https://github.com/EKKOLearnAI/hermes-agent) — chat interaction, session management, scheduled jobs, and log viewing.
3
+ Web dashboard for [Hermes Agent](https://github.com/NousResearch/hermes-agent) — chat interaction, session management, scheduled jobs, platform channel configuration, and log viewing.
4
+
5
+ ![Hermes Web UI Demo](https://github.com/EKKOLearnAI/hermes-web-ui/blob/main/src/assets/output.gif)
4
6
 
5
7
  ## Tech Stack
6
8
 
@@ -10,6 +12,7 @@ Web dashboard for [Hermes Agent](https://github.com/EKKOLearnAI/hermes-agent)
10
12
  - **Naive UI** — Component library
11
13
  - **Pinia** — State management
12
14
  - **Vue Router** — Routing (Hash mode)
15
+ - **vue-i18n** — Internationalization (Chinese / English)
13
16
  - **Koa 2** — BFF server (API proxy, file upload, session management)
14
17
  - **SCSS** — Style preprocessor
15
18
  - **markdown-it** + **highlight.js** — Markdown rendering and code highlighting
@@ -25,14 +28,14 @@ Open http://localhost:8648
25
28
 
26
29
  ### CLI Commands
27
30
 
28
- | Command | Description |
29
- |---------|-------------|
30
- | `hermes-web-ui start` | Start in background (daemon mode) |
31
- | `hermes-web-ui start --port 9000` | Start on custom port |
32
- | `hermes-web-ui stop` | Stop background process |
33
- | `hermes-web-ui restart` | Restart background process |
34
- | `hermes-web-ui status` | Check if running |
35
- | `hermes-web-ui` | Run in foreground (for debugging) |
31
+ | Command | Description |
32
+ | --------------------------------- | --------------------------------- |
33
+ | `hermes-web-ui start` | Start in background (daemon mode) |
34
+ | `hermes-web-ui start --port 9000` | Start on custom port |
35
+ | `hermes-web-ui stop` | Stop background process |
36
+ | `hermes-web-ui restart` | Restart background process |
37
+ | `hermes-web-ui status` | Check if running |
38
+ | `hermes-web-ui` | Run in foreground (for debugging) |
36
39
 
37
40
  ### Auto Configuration
38
41
 
@@ -48,6 +51,7 @@ npm run dev
48
51
  ```
49
52
 
50
53
  This starts:
54
+
51
55
  - Frontend: http://localhost:5173
52
56
  - BFF Server: http://localhost:8648 (proxies to Hermes on 8642)
53
57
 
@@ -70,6 +74,8 @@ hermes-web-ui/
70
74
  │ ├── config.ts # Configuration (port, upstream, etc.)
71
75
  │ ├── routes/
72
76
  │ │ ├── proxy.ts # API proxy to Hermes (/api/*, /v1/*)
77
+ │ │ ├── config.ts # Config & credentials management
78
+ │ │ ├── weixin.ts # WeChat QR code login proxy
73
79
  │ │ ├── upload.ts # File upload (POST /upload)
74
80
  │ │ ├── sessions.ts # Session management via Hermes CLI
75
81
  │ │ ├── filesystem.ts # Skills, memory, config model management
@@ -78,19 +84,34 @@ hermes-web-ui/
78
84
  │ └── services/
79
85
  │ └── hermes-cli.ts # Hermes CLI wrapper (sessions, logs, version)
80
86
  ├── src/
87
+ │ ├── i18n/ # Internationalization (en / zh)
88
+ │ │ ├── index.ts # i18n instance setup
89
+ │ │ └── locales/
90
+ │ │ ├── en.ts # English translations
91
+ │ │ └── zh.ts # Chinese translations
81
92
  │ ├── api/ # Frontend API layer
82
93
  │ ├── stores/ # Pinia state management
83
94
  │ ├── components/
84
95
  │ │ ├── layout/
85
96
  │ │ │ ├── AppSidebar.vue # Sidebar navigation
97
+ │ │ │ ├── LanguageSwitch.vue # Language toggle (EN / 中文)
86
98
  │ │ │ └── ModelSelector.vue # Global model selector
87
99
  │ │ ├── chat/ # Chat components
88
- │ │ └── jobs/ # Job components
100
+ │ │ ├── jobs/ # Job components
101
+ │ │ ├── models/ # Model/provider components
102
+ │ │ ├── settings/ # Settings components
103
+ │ │ │ ├── PlatformCard.vue # Platform card with config status
104
+ │ │ │ └── PlatformSettings.vue # Platform channel configuration
105
+ │ │ └── skills/ # Skill components
89
106
  │ ├── views/
90
107
  │ │ ├── ChatView.vue # Chat page
91
108
  │ │ ├── JobsView.vue # Jobs page
92
109
  │ │ ├── LogsView.vue # Logs page
93
- │ │ └── SettingsView.vue # Settings (model management)
110
+ │ │ ├── ModelsView.vue # Model management page
111
+ │ │ ├── ChannelsView.vue # Platform channels page
112
+ │ │ ├── SkillsView.vue # Skills page
113
+ │ │ ├── MemoryView.vue # Memory page
114
+ │ │ └── SettingsView.vue # Settings page
94
115
  │ └── router/index.ts # Router configuration
95
116
  └── dist/ # Build output (published to npm)
96
117
  ├── server/index.js # Compiled BFF
@@ -101,38 +122,73 @@ hermes-web-ui/
101
122
  ## Features
102
123
 
103
124
  ### Chat
125
+
104
126
  - Async Run + SSE event streaming via BFF proxy
105
127
  - Session management via Hermes CLI
106
128
  - Multi-session switching with message history
129
+ - Session grouping by source (Telegram, Discord, Slack, etc.) with collapsible accordion
130
+ - Session rename and deletion
107
131
  - Markdown rendering with syntax highlighting and code copy
132
+ - Tool call detail expansion (arguments / result)
108
133
  - File upload support (saved to temp, path passed to API)
109
134
  - Model selector — automatically discovers available models from `~/.hermes/auth.json` credential pool
110
135
  - Global model switching (updates `~/.hermes/config.yaml`)
111
136
  - Per-session model display (badge in chat header and session list)
112
137
 
138
+ ### Platform Channels
139
+
140
+ - Unified channel configuration page (Telegram, Discord, Slack, WhatsApp, Matrix, Feishu, WeChat, WeCom)
141
+ - Credential management — writes to `~/.hermes/.env` (matching `hermes gateway setup` behavior)
142
+ - Channel behavior settings — writes to `~/.hermes/config.yaml`
143
+ - WeChat QR code login — opens QR in browser, polls scan status, auto-saves credentials
144
+ - Auto gateway restart after any channel config change
145
+ - Per-platform configured/unconfigured status detection
146
+
113
147
  ### Model Management
148
+
114
149
  - Automatically reads credential pool from `~/.hermes/auth.json`
115
150
  - Fetches available models from each provider endpoint (`/v1/models`)
116
151
  - Groups models by provider (e.g. zai, subrouter.ai)
152
+ - Add custom OpenAI-compatible providers
117
153
  - Switching model updates `model.provider` in config.yaml to bypass env auto-detection
118
154
  - Error handling: parallel fetching, per-provider timeout, fallback to config.yaml parsing
119
155
 
156
+ ### Settings
157
+
158
+ - Display settings (streaming, compact mode, reasoning, cost, etc.)
159
+ - Agent settings (max turns, timeout, tool enforcement)
160
+ - Memory settings (enable/disable, char limits)
161
+ - Session reset settings (idle timeout, scheduled reset)
162
+ - Privacy settings (PII redaction)
163
+ - API server settings
164
+
120
165
  ### Scheduled Jobs
166
+
121
167
  - Job list view (including paused/disabled jobs)
122
168
  - Create, edit, pause, resume, and delete jobs
123
169
  - Trigger immediate job execution
124
170
  - Cron expression quick presets
125
171
 
172
+ ### Skills & Memory
173
+
174
+ - Browse and search installed skills
175
+ - View skill details and attached files
176
+ - User notes and profile management
177
+
126
178
  ### Logs
179
+
127
180
  - View Hermes agent/gateway/error logs
128
181
  - Filter by log level, log file, and search keyword
129
182
  - Structured log parsing with HTTP access log highlighting
130
183
 
131
184
  ### Other
185
+
186
+ - Internationalization — auto-detect browser language, manual toggle between Chinese and English
132
187
  - Real-time connection status monitoring
133
188
  - Hermes version display in sidebar
134
189
  - Auto config check on startup
135
190
  - Minimalist dark theme
191
+ - Session group collapse state persisted across navigation
136
192
 
137
193
  ## Architecture
138
194
 
@@ -140,15 +196,22 @@ hermes-web-ui/
140
196
  Browser → BFF (Koa, :8648) → Hermes API (:8642)
141
197
 
142
198
  Hermes CLI (sessions, logs, version)
199
+
200
+ ~/.hermes/config.yaml (channel behavior)
201
+ ~/.hermes/.env (platform credentials)
202
+ Tencent iLink API (WeChat QR login)
143
203
  ```
144
204
 
145
205
  The BFF layer handles:
206
+
146
207
  - API proxy to Hermes (with header forwarding)
147
208
  - SSE streaming passthrough
148
209
  - File upload to temp directory
149
210
  - Session CRUD via Hermes CLI
211
+ - Config & credential management (config.yaml + .env)
212
+ - WeChat QR code login flow (fetch QR, poll status, save credentials)
213
+ - Auto gateway restart on platform config changes
150
214
  - Model discovery from `~/.hermes/auth.json` credential pool
151
- - Config.yaml model switching (reads/writes `~/.hermes/config.yaml`)
152
215
  - Skills, memory, and custom provider management
153
216
  - Log file reading and parsing
154
217
  - Static file serving (SPA fallback)
@@ -0,0 +1 @@
1
+ .platform-card[data-v-ee5f4168]{background-color:#fff;border:1px solid #e0e0e0;border-radius:10px;margin-bottom:12px;overflow:hidden}.platform-card.configured[data-v-ee5f4168]{border-color:#2e7d3233}.platform-card-header[data-v-ee5f4168]{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.platform-card-header[data-v-ee5f4168]:hover{background-color:#1a1a1a08}.platform-info[data-v-ee5f4168]{align-items:center;gap:10px;display:flex}.platform-icon[data-v-ee5f4168]{color:#666;flex-shrink:0;width:18px;height:18px}.platform-name[data-v-ee5f4168]{color:#1a1a1a;font-size:14px;font-weight:500}.expand-icon[data-v-ee5f4168]{color:#999;font-size:12px;transition:transform .2s}.expand-icon.expanded[data-v-ee5f4168]{transform:rotate(0)}.expand-icon[data-v-ee5f4168]:not(.expanded){transform:rotate(-90deg)}.platform-card-body[data-v-ee5f4168]{border-top:1px solid #ebebeb;padding:0 16px 12px}.settings-section[data-v-afd5f277]{margin-top:16px}.weixin-qr-section[data-v-afd5f277]{margin-top:12px;margin-bottom:12px}.weixin-qr-loading[data-v-afd5f277]{color:#999;align-items:center;gap:8px;font-size:13px;display:flex}.weixin-qr-hint[data-v-afd5f277]{color:#666;font-size:13px}.channels-view[data-v-ceb983fe]{flex-direction:column;height:100vh;display:flex}.channels-header[data-v-ceb983fe]{border-bottom:1px solid #e0e0e0;flex-shrink:0;align-items:center;padding:12px 20px;display:flex}.header-title[data-v-ceb983fe]{color:#1a1a1a;font-size:16px;font-weight:600}.channels-content[data-v-ceb983fe]{flex:1;padding:20px;overflow-y:auto}
@@ -0,0 +1 @@
1
+ import{$ as e,F as t,I as n,P as r,R as i,S as a,U as o,_ as s,at as c,b as l,g as u,h as d,m as f,ot as p,st as m,u as h,v as g,x as _,z as v}from"./vue.runtime.esm-bundler-LsUadeZi.js";import{t as y,vt as b}from"./_plugin-vue_export-helper-AI_aJZ2_.js";import{r as x}from"./context-aD0DoQuE.js";import{t as S}from"./Input-C6bxvAIj.js";import{t as C}from"./Tag-BBWtv463.js";import{t as w}from"./use-message-rwmUYd8q.js";import{t as T}from"./Spin-C1dDkPv8.js";import{a as E,i as D,n as O,o as k,r as A,s as j,t as M}from"./SettingRow-bBgfSbZT.js";var N={class:`platform-info`},P=[`innerHTML`],F={class:`platform-name`},I={key:0,class:`platform-card-body`},L=y(a({__name:`PlatformCard`,props:{name:{},icon:{},config:{},credentials:{}},setup(t){let r=t,i=e(!0),{t:a}=b(),u=f(()=>{let e=r.credentials;if(!e)return!1;let t=[`token`,`api_key`,`app_id`,`client_id`,`secret`,`app_secret`,`client_secret`,`access_token`,`bot_id`,`account_id`,`enabled`];return[e,e.extra].filter(Boolean).some(e=>t.some(t=>{let n=e[t];return n!=null&&n!==``&&n!==!1}))});return(e,r)=>(n(),g(`div`,{class:p([`platform-card`,{configured:u.value}])},[d(`div`,{class:`platform-card-header`,onClick:r[0]||=e=>i.value=!i.value},[d(`div`,N,[d(`span`,{class:`platform-icon`,innerHTML:t.icon},null,8,P),d(`span`,F,m(t.name),1),_(c(C),{type:u.value?`success`:`default`,size:`small`,round:``},{default:o(()=>[l(m(u.value?c(a)(`common.configured`):c(a)(`common.notConfigured`)),1)]),_:1},8,[`type`])]),d(`span`,{class:p([`expand-icon`,{expanded:i.value}])},`▾`,2)]),i.value?(n(),g(`div`,I,[v(e.$slots,`default`,{},void 0,!0)])):s(``,!0)],2))}}),[[`__scopeId`,`data-v-ee5f4168`]]),R={class:`settings-section`},z={class:`weixin-qr-section`},B={key:1,class:`weixin-qr-loading`},V={key:2,class:`weixin-qr-hint`},H=y(a({__name:`PlatformSettings`,setup(r){let a=O(),f=w(),{t:p}=b();async function v(e,t){try{await a.saveSection(e,t),f.success(p(`settings.saved`))}catch{f.error(p(`settings.saveFailed`))}}async function y(e,t){try{await E(e,t),await a.fetchSettings(),f.success(p(`settings.saved`))}catch{f.error(p(`settings.saveFailed`))}}function C(e){return a.platforms[e]||{}}let N=e(``),P=e(``),F=e(`idle`),I=null;async function H(){F.value=`loading`,N.value=``,P.value=``,W();try{let e=await A();P.value=e.qrcode,N.value=e.qrcode_url,window.open(e.qrcode_url,`_blank`),F.value=`waiting`,U()}catch(e){F.value=`error`,f.error(e.message||`Failed to get QR code`)}}function U(){P.value&&(I=setTimeout(async()=>{try{let e=await D(P.value);e.status===`wait`?U():e.status===`scaned`?(F.value=`scaned`,U()):e.status===`expired`?F.value=`expired`:e.status===`confirmed`&&(F.value=`confirmed`,await k({account_id:e.account_id,token:e.token,base_url:e.base_url}),await a.fetchSettings(),f.success(p(`settings.saved`)))}catch{U()}},3e3))}function W(){I&&=(clearTimeout(I),null)}t(()=>{W()});let G=[{key:`telegram`,name:`Telegram`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.479.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`},{key:`discord`,name:`Discord`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M20.317 4.3698a19.7913 19.7913 0 00-4.8851-1.5152.0741.0741 0 00-.0785.0371c-.211.3753-.4447.8648-.6083 1.2495-1.8447-.2762-3.68-.2762-5.4868 0-.1636-.3933-.4058-.8742-.6177-1.2495a.077.077 0 00-.0785-.037 19.7363 19.7363 0 00-4.8852 1.515.0699.0699 0 00-.0321.0277C.5334 9.0458-.319 13.5799.0992 18.0578a.0824.0824 0 00.0312.0561c2.0528 1.5076 4.0413 2.4228 5.9929 3.0294a.0777.0777 0 00.0842-.0276c.4616-.6304.8731-1.2952 1.226-1.9942a.076.076 0 00-.0416-.1057c-.6528-.2476-1.2743-.5495-1.8722-.8923a.077.077 0 01-.0076-.1277c.1258-.0943.2517-.1923.3718-.2914a.0743.0743 0 01.0776-.0105c3.9278 1.7933 8.18 1.7933 12.0614 0a.0739.0739 0 01.0785.0095c.1202.099.246.1981.3728.2924a.077.077 0 01-.0066.1276 12.2986 12.2986 0 01-1.873.8914.0766.0766 0 00-.0407.1067c.3604.698.7719 1.3628 1.225 1.9932a.076.076 0 00.0842.0286c1.961-.6067 3.9495-1.5219 6.0023-3.0294a.077.077 0 00.0313-.0552c.5004-5.177-.8382-9.6739-3.5485-13.6604a.061.061 0 00-.0312-.0286zM8.02 15.3312c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9555-2.4189 2.157-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.9555 2.4189-2.1569 2.4189zm7.9748 0c-1.1825 0-2.1569-1.0857-2.1569-2.419 0-1.3332.9554-2.4189 2.1569-2.4189 1.2108 0 2.1757 1.0952 2.1568 2.419 0 1.3332-.946 2.4189-2.1568 2.4189z"/></svg>`},{key:`slack`,name:`Slack`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 0a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V5.042zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zM15.165 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1 2.523-2.52h6.313A2.528 2.528 0 0 1 24 18.956a2.528 2.528 0 0 1-2.522 2.523h-6.313z"/></svg>`},{key:`whatsapp`,name:`WhatsApp`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 01-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 01-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 012.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0012.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 005.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 00-3.48-8.413z"/></svg>`},{key:`matrix`,name:`Matrix`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M.632.55v22.9H2.28V24H0V0h2.28v.55zm7.043 7.26v1.157h.033c.309-.443.683-.784 1.117-1.024.433-.245.936-.365 1.5-.365.54 0 1.033.107 1.48.324.448.217.786.619 1.017 1.205.24-.376.558-.702.956-.98.398-.277.872-.414 1.424-.414.41 0 .784.065 1.122.194.34.13.629.325.87.588.241.263.428.59.56.984.132.393.198.85.198 1.368v5.89h-2.49v-4.893c0-.268-.016-.525-.048-.77a1.627 1.627 0 00-.2-.63 1.028 1.028 0 00-.392-.426 1.294 1.294 0 00-.616-.134c-.277 0-.508.05-.693.15a1.043 1.043 0 00-.43.41 1.768 1.768 0 00-.214.616 4.15 4.15 0 00-.06.74v4.937H9.29v-4.937c0-.25-.01-.498-.032-.742a1.84 1.84 0 00-.166-.638.998.998 0 00-.363-.448 1.206 1.206 0 00-.624-.154c-.26 0-.483.048-.67.144a1.055 1.055 0 00-.436.402 1.744 1.744 0 00-.227.616 4.108 4.108 0 00-.063.74v4.937H5.21V7.81zm15.693 15.64V.55H21.72V0H24v24h-2.28v-.55z"/></svg>`},{key:`feishu`,name:`Feishu`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M6.59 3.41a2.25 2.25 0 0 1 3.182 0L13.5 7.14l-3.182 3.182L6.59 7.59a2.25 2.25 0 0 1 0-3.182zm5.303 5.303L15.075 5.53a2.25 2.25 0 0 1 3.182 3.182L15.075 11.894 11.893 8.713zM3.41 6.59a2.25 2.25 0 0 1 3.182 0l3.182 3.182-3.182 3.182a2.25 2.25 0 0 1-3.182-3.182L3.41 6.59zm5.303 5.303L11.894 15.075a2.25 2.25 0 0 1-3.182 3.182L5.53 15.075 8.713 11.893zm5.303-5.303L17.478 9.778a2.25 2.25 0 0 1-3.182 3.182L10.53 10.075l3.182-3.182 0 .023z"/></svg>`},{key:`weixin`,name:`Weixin`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 01.213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 00.167-.054l1.903-1.114a.864.864 0 01.717-.098 10.16 10.16 0 002.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 01-1.162 1.178A1.17 1.17 0 014.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 01-1.162 1.178 1.17 1.17 0 01-1.162-1.178c0-.651.52-1.18 1.162-1.18zm3.68 4.025c-3.694 0-6.69 2.462-6.69 5.496 0 3.034 2.996 5.496 6.69 5.496.753 0 1.477-.1 2.158-.28a.66.66 0 01.548.074l1.46.854a.25.25 0 00.127.041.224.224 0 00.221-.225c0-.055-.022-.109-.037-.162l-.298-1.131a.453.453 0 01.163-.509C21.81 18.613 22.77 16.973 22.77 15.512c0-3.034-2.996-5.496-6.69-5.496h.198zm-2.454 3.347c.491 0 .889.404.889.902a.896.896 0 01-.889.903.896.896 0 01-.889-.903c0-.498.398-.902.889-.902zm4.912 0c.491 0 .889.404.889.902a.896.896 0 01-.889.903.896.896 0 01-.889-.903c0-.498.398-.902.889-.902z"/></svg>`},{key:`wecom`,name:`WeCom`,icon:`<svg viewBox="0 0 24 24" fill="currentColor"><path d="M8.691 2.188C3.891 2.188 0 5.476 0 9.53c0 2.212 1.17 4.203 3.002 5.55a.59.59 0 01.213.665l-.39 1.48c-.019.07-.048.141-.048.213 0 .163.13.295.29.295a.326.326 0 00.167-.054l1.903-1.114a.864.864 0 01.717-.098 10.16 10.16 0 002.837.403c.276 0 .543-.027.811-.05-.857-2.578.157-4.972 1.932-6.446 1.703-1.415 3.882-1.98 5.853-1.838-.576-3.583-4.196-6.348-8.596-6.348zM5.785 5.991c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 01-1.162 1.178A1.17 1.17 0 014.623 7.17c0-.651.52-1.18 1.162-1.18zm5.813 0c.642 0 1.162.529 1.162 1.18a1.17 1.17 0 01-1.162 1.178 1.17 1.17 0 01-1.162-1.178c0-.651.52-1.18 1.162-1.18zm3.68 4.025c-3.694 0-6.69 2.462-6.69 5.496 0 3.034 2.996 5.496 6.69 5.496.753 0 1.477-.1 2.158-.28a.66.66 0 01.548.074l1.46.854a.25.25 0 00.127.041.224.224 0 00.221-.225c0-.055-.022-.109-.037-.162l-.298-1.131a.453.453 0 01.163-.509C21.81 18.613 22.77 16.973 22.77 15.512c0-3.034-2.996-5.496-6.69-5.496h.198zm-2.454 3.347c.491 0 .889.404.889.902a.896.896 0 01-.889.903.896.896 0 01-.889-.903c0-.498.398-.902.889-.902zm4.912 0c.491 0 .889.404.889.902a.896.896 0 01-.889.903.896.896 0 01-.889-.903c0-.498.398-.902.889-.902z"/></svg>`}];return(e,t)=>(n(),g(`section`,R,[(n(),g(h,null,i(G,e=>_(L,{key:e.key,name:e.name,icon:e.icon,config:c(a)[e.key],credentials:C(e.key)},{default:o(()=>[e.key===`telegram`?(n(),g(h,{key:0},[_(M,{label:c(p)(`platform.botToken`),hint:c(p)(`platform.botTokenHint`)},{default:o(()=>[_(c(S),{value:C(`telegram`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`123456:ABC-DEF...`,"onUpdate:value":t[0]||=e=>y(`telegram`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionGroup`)},{default:o(()=>[_(c(j),{value:c(a).telegram.require_mention,"onUpdate:value":t[1]||=e=>v(`telegram`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.reactions`),hint:c(p)(`platform.reactionsHint`)},{default:o(()=>[_(c(j),{value:c(a).telegram.reactions,"onUpdate:value":t[2]||=e=>v(`telegram`,{reactions:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChats`),hint:c(p)(`platform.freeResponseChatsHint`)},{default:o(()=>[_(c(S),{value:c(a).telegram.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":t[3]||=e=>v(`telegram`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.mentionPatterns`),hint:c(p)(`platform.mentionPatternsHint`)},{default:o(()=>[_(c(S),{value:(c(a).telegram.mention_patterns||[]).join(`, `),size:`small`,placeholder:`pattern1, pattern2`,"onUpdate:value":t[4]||=e=>v(`telegram`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`discord`?(n(),g(h,{key:1},[_(M,{label:c(p)(`platform.botToken`),hint:c(p)(`platform.botTokenHint`)},{default:o(()=>[_(c(S),{value:C(`discord`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Bot token...`,"onUpdate:value":t[5]||=e=>y(`discord`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionChannel`)},{default:o(()=>[_(c(j),{value:c(a).discord.require_mention,"onUpdate:value":t[6]||=e=>v(`discord`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.autoThread`),hint:c(p)(`platform.autoThreadHint`)},{default:o(()=>[_(c(j),{value:c(a).discord.auto_thread,"onUpdate:value":t[7]||=e=>v(`discord`,{auto_thread:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.reactions`),hint:c(p)(`platform.reactionsHint`)},{default:o(()=>[_(c(j),{value:c(a).discord.reactions,"onUpdate:value":t[8]||=e=>v(`discord`,{reactions:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChannels`),hint:c(p)(`platform.freeResponseChannelsHint`)},{default:o(()=>[_(c(S),{value:c(a).discord.free_response_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":t[9]||=e=>v(`discord`,{free_response_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.allowedChannels`),hint:c(p)(`platform.allowedChannelsHint`)},{default:o(()=>[_(c(S),{value:c(a).discord.allowed_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":t[10]||=e=>v(`discord`,{allowed_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.ignoredChannels`),hint:c(p)(`platform.ignoredChannelsHint`)},{default:o(()=>[_(c(S),{value:c(a).discord.ignored_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":t[11]||=e=>v(`discord`,{ignored_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.noThreadChannels`),hint:c(p)(`platform.noThreadChannelsHint`)},{default:o(()=>[_(c(S),{value:c(a).discord.no_thread_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":t[12]||=e=>v(`discord`,{no_thread_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`slack`?(n(),g(h,{key:2},[_(M,{label:c(p)(`platform.botToken`),hint:c(p)(`platform.botTokenHint`)},{default:o(()=>[_(c(S),{value:C(`slack`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`xoxb-...`,"onUpdate:value":t[13]||=e=>y(`slack`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionChannel`)},{default:o(()=>[_(c(j),{value:c(a).slack.require_mention,"onUpdate:value":t[14]||=e=>v(`slack`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.allowBots`),hint:c(p)(`platform.allowBotsHint`)},{default:o(()=>[_(c(j),{value:c(a).slack.allow_bots,"onUpdate:value":t[15]||=e=>v(`slack`,{allow_bots:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChannels`),hint:c(p)(`platform.freeResponseChannelsHint`)},{default:o(()=>[_(c(S),{value:c(a).slack.free_response_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":t[16]||=e=>v(`slack`,{free_response_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`whatsapp`?(n(),g(h,{key:3},[_(M,{label:c(p)(`platform.waEnabled`),hint:c(p)(`platform.waEnabledHint`)},{default:o(()=>[_(c(j),{value:C(`whatsapp`).enabled,"onUpdate:value":t[17]||=e=>y(`whatsapp`,{enabled:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionGroup`)},{default:o(()=>[_(c(j),{value:c(a).whatsapp.require_mention,"onUpdate:value":t[18]||=e=>v(`whatsapp`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChats`),hint:c(p)(`platform.freeResponseChatsHint`)},{default:o(()=>[_(c(S),{value:c(a).whatsapp.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":t[19]||=e=>v(`whatsapp`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.mentionPatterns`),hint:c(p)(`platform.mentionPatternsHint`)},{default:o(()=>[_(c(S),{value:(c(a).whatsapp.mention_patterns||[]).join(`, `),size:`small`,placeholder:`pattern1, pattern2`,"onUpdate:value":t[20]||=e=>v(`whatsapp`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`matrix`?(n(),g(h,{key:4},[_(M,{label:c(p)(`platform.accessToken`),hint:c(p)(`platform.accessTokenHint`)},{default:o(()=>[_(c(S),{value:C(`matrix`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`syt_...`,"onUpdate:value":t[21]||=e=>y(`matrix`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.homeserver`),hint:c(p)(`platform.homeserverHint`)},{default:o(()=>[_(c(S),{value:C(`matrix`).extra?.homeserver||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`https://matrix.org`,"onUpdate:value":t[22]||=e=>y(`matrix`,{extra:{...C(`matrix`).extra,homeserver:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionRoom`)},{default:o(()=>[_(c(j),{value:c(a).matrix.require_mention,"onUpdate:value":t[23]||=e=>v(`matrix`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.autoThread`),hint:c(p)(`platform.autoThreadHintRoom`)},{default:o(()=>[_(c(j),{value:c(a).matrix.auto_thread,"onUpdate:value":t[24]||=e=>v(`matrix`,{auto_thread:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.dmMentionThreads`),hint:c(p)(`platform.dmMentionThreadsHint`)},{default:o(()=>[_(c(j),{value:c(a).matrix.dm_mention_threads,"onUpdate:value":t[25]||=e=>v(`matrix`,{dm_mention_threads:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseRooms`),hint:c(p)(`platform.freeResponseRoomsHint`)},{default:o(()=>[_(c(S),{value:c(a).matrix.free_response_rooms||``,size:`small`,placeholder:`room_id1,room_id2`,"onUpdate:value":t[26]||=e=>v(`matrix`,{free_response_rooms:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`feishu`?(n(),g(h,{key:5},[_(M,{label:c(p)(`platform.appId`),hint:c(p)(`platform.appIdHint`)},{default:o(()=>[_(c(S),{value:C(`feishu`).extra?.app_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`cli_...`,"onUpdate:value":t[27]||=e=>y(`feishu`,{extra:{...C(`feishu`).extra,app_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.appSecret`),hint:c(p)(`platform.appSecretHint`)},{default:o(()=>[_(c(S),{value:C(`feishu`).extra?.app_secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`App Secret`,"onUpdate:value":t[28]||=e=>y(`feishu`,{extra:{...C(`feishu`).extra,app_secret:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionGroup`)},{default:o(()=>[_(c(j),{value:c(a).feishu.require_mention,"onUpdate:value":t[29]||=e=>v(`feishu`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChats`),hint:c(p)(`platform.freeResponseChatsHint`)},{default:o(()=>[_(c(S),{value:c(a).feishu.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":t[30]||=e=>v(`feishu`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`dingtalk`?(n(),g(h,{key:6},[_(M,{label:c(p)(`platform.clientId`),hint:c(p)(`platform.clientIdHint`)},{default:o(()=>[_(c(S),{value:C(`dingtalk`).extra?.client_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Client ID`,"onUpdate:value":t[31]||=e=>y(`dingtalk`,{extra:{...C(`dingtalk`).extra,client_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.clientSecret`),hint:c(p)(`platform.clientSecretHint`)},{default:o(()=>[_(c(S),{value:C(`dingtalk`).extra?.client_secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Client Secret`,"onUpdate:value":t[32]||=e=>y(`dingtalk`,{extra:{...C(`dingtalk`).extra,client_secret:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.requireMention`),hint:c(p)(`platform.requireMentionGroup`)},{default:o(()=>[_(c(j),{value:c(a).dingtalk.require_mention,"onUpdate:value":t[33]||=e=>v(`dingtalk`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.freeResponseChats`),hint:c(p)(`platform.freeResponseChatsHint`)},{default:o(()=>[_(c(S),{value:c(a).dingtalk.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":t[34]||=e=>v(`dingtalk`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`weixin`?(n(),g(h,{key:7},[d(`div`,z,[F.value===`idle`||F.value===`error`||F.value===`expired`||F.value===`confirmed`?(n(),u(c(x),{key:0,type:`primary`,size:`small`,onClick:H},{default:o(()=>[l(m(F.value===`confirmed`?c(p)(`platform.qrRelogin`):c(p)(`platform.qrLogin`)),1)]),_:1})):s(``,!0),F.value===`loading`?(n(),g(`div`,B,[_(c(T),{size:`small`}),d(`span`,null,m(c(p)(`platform.qrFetching`)),1)])):s(``,!0),F.value===`waiting`||F.value===`scaned`?(n(),g(`div`,V,m(F.value===`scaned`?c(p)(`platform.qrScanedHint`):c(p)(`platform.qrScanHint`)),1)):s(``,!0)]),_(M,{label:c(p)(`platform.weixinToken`),hint:c(p)(`platform.weixinTokenHint`)},{default:o(()=>[_(c(S),{value:C(`weixin`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Token`,"onUpdate:value":t[35]||=e=>y(`weixin`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.accountId`),hint:c(p)(`platform.accountIdHint`)},{default:o(()=>[_(c(S),{value:C(`weixin`).extra?.account_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Account ID`,"onUpdate:value":t[36]||=e=>y(`weixin`,{extra:{...C(`weixin`).extra,account_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`wecom`?(n(),g(h,{key:8},[_(M,{label:c(p)(`platform.botId`),hint:c(p)(`platform.botIdHint`)},{default:o(()=>[_(c(S),{value:C(`wecom`).extra?.bot_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Bot ID`,"onUpdate:value":t[37]||=e=>y(`wecom`,{extra:{...C(`wecom`).extra,bot_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),_(M,{label:c(p)(`platform.appSecret`),hint:c(p)(`platform.wecomSecretHint`)},{default:o(()=>[_(c(S),{value:C(`wecom`).extra?.secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Secret`,"onUpdate:value":t[38]||=e=>y(`wecom`,{extra:{...C(`wecom`).extra,secret:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0)]),_:2},1032,[`name`,`icon`,`config`,`credentials`])),64))]))}}),[[`__scopeId`,`data-v-afd5f277`]]),U={class:`channels-view`},W={class:`channels-header`},G={class:`header-title`},K={class:`channels-content`},q=y(a({__name:`ChannelsView`,setup(e){let t=O(),{t:i}=b();return r(()=>{t.fetchSettings()}),(e,r)=>(n(),g(`div`,U,[d(`header`,W,[d(`h2`,G,m(c(i)(`sidebar.channels`)),1)]),d(`div`,K,[_(c(T),{show:c(t).loading},{default:o(()=>[_(H)]),_:1},8,[`show`])])]))}}),[[`__scopeId`,`data-v-ceb983fe`]]);export{q as default};
@@ -0,0 +1 @@
1
+ .chat-input-area[data-v-b97ae5d5]{border-top:1px solid #e0e0e0;flex-shrink:0;padding:12px 20px 16px}.attachment-previews[data-v-b97ae5d5]{flex-wrap:wrap;gap:8px;padding:0 0 10px;display:flex}.attachment-preview[data-v-b97ae5d5]{background-color:#f0f0f0;border:1px solid #e0e0e0;border-radius:6px;position:relative;overflow:hidden}.attachment-preview.image[data-v-b97ae5d5]{width:64px;height:64px}.attachment-thumb[data-v-b97ae5d5]{object-fit:cover;width:100%;height:100%}.attachment-file[data-v-b97ae5d5]{color:#666;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:80px;max-width:140px;padding:8px 12px;display:flex}.attachment-file .file-name[data-v-b97ae5d5]{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;overflow:hidden}.attachment-file .file-size[data-v-b97ae5d5]{color:#999;font-size:10px}.attachment-remove[data-v-b97ae5d5]{color:#fff;cursor:pointer;opacity:0;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;transition:opacity .15s;display:flex;position:absolute;top:2px;right:2px}.attachment-preview:hover .attachment-remove[data-v-b97ae5d5]{opacity:1}.file-input-hidden[data-v-b97ae5d5]{display:none}.input-wrapper[data-v-b97ae5d5]{background-color:#fff;border:1px solid #e0e0e0;border-radius:10px;align-items:center;gap:10px;padding:10px 12px;transition:border-color .15s;display:flex}.input-wrapper[data-v-b97ae5d5]:focus-within{border-color:#333}.input-textarea[data-v-b97ae5d5]{color:#1a1a1a;resize:none;background:0 0;border:none;outline:none;flex:1;min-height:20px;max-height:100px;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;overflow-y:auto}.input-textarea[data-v-b97ae5d5]::placeholder{color:#999}.input-actions[data-v-b97ae5d5]{flex-shrink:0;align-items:center;gap:6px;display:flex}.input-wrapper.drag-over[data-v-b97ae5d5]{background-color:#4a90d90a;border-style:dashed;border-color:#4a90d9}.message[data-v-3e7011a5]{flex-direction:column;display:flex}.message.user[data-v-3e7011a5]{align-items:flex-end}.message.user .msg-body[data-v-3e7011a5]{max-width:75%}.message.user .msg-content.user[data-v-3e7011a5]{align-items:flex-end}.message.user .message-bubble[data-v-3e7011a5]{background-color:#e8e8e8;border-radius:10px 10px 4px}.message.assistant[data-v-3e7011a5]{flex-direction:row;align-items:flex-start;gap:8px}.message.assistant .msg-body[data-v-3e7011a5]{max-width:80%}.message.assistant .msg-avatar[data-v-3e7011a5]{border-radius:4px;flex-shrink:0;width:28px;height:28px;margin-top:2px}.message.assistant .message-bubble[data-v-3e7011a5]{background-color:#f5f5f5;border-radius:10px 10px 10px 4px}.message.tool[data-v-3e7011a5],.message.system[data-v-3e7011a5]{align-items:flex-start}.message.system .message-bubble.system[data-v-3e7011a5]{background-color:#f57f170f;border-left:3px solid #f57f17;border-radius:6px;max-width:80%}.msg-body[data-v-3e7011a5]{align-items:flex-start;gap:8px;max-width:85%;display:flex}.msg-content[data-v-3e7011a5]{flex-direction:column;min-width:0;display:flex}.message-bubble[data-v-3e7011a5]{word-break:break-word;padding:10px 14px;font-size:14px;line-height:1.65}.msg-attachments[data-v-3e7011a5]{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.msg-attachment[data-v-3e7011a5]{background-color:#0000000a;border:1px solid #ebebeb;border-radius:6px;overflow:hidden}.msg-attachment.image[data-v-3e7011a5]{max-width:200px}.msg-attachment-thumb[data-v-3e7011a5]{object-fit:contain;max-width:200px;max-height:160px;display:block}.msg-attachment-file[data-v-3e7011a5]{color:#666;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.msg-attachment-file .att-name[data-v-3e7011a5]{white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}.msg-attachment-file .att-size[data-v-3e7011a5]{color:#999;flex-shrink:0;font-size:11px}.message-time[data-v-3e7011a5]{color:#999;margin-top:4px;padding:0 4px;font-size:11px}.tool-line[data-v-3e7011a5]{color:#999;border-radius:6px;align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.tool-line.expandable[data-v-3e7011a5]{cursor:pointer}.tool-line.expandable[data-v-3e7011a5]:hover{background:#00000008}.tool-line .tool-name[data-v-3e7011a5]{flex-shrink:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.tool-line .tool-preview[data-v-3e7011a5]{text-overflow:ellipsis;white-space:nowrap;max-width:400px;overflow:hidden}.tool-chevron[data-v-3e7011a5]{flex-shrink:0;transition:transform .15s}.tool-chevron.rotated[data-v-3e7011a5]{transform:rotate(90deg)}.tool-spinner[data-v-3e7011a5]{border:1.5px solid #999;border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite spin-3e7011a5}.tool-error-badge[data-v-3e7011a5]{color:#c62828;background:#c6282814;border-radius:3px;padding:0 4px;font-size:9px;line-height:14px}.tool-details[data-v-3e7011a5]{border-left:2px solid #ebebeb;margin-top:2px;margin-left:16px;padding-left:10px}.tool-detail-section[data-v-3e7011a5]{margin-bottom:6px}.tool-detail-label[data-v-3e7011a5]{color:#999;text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:10px;font-weight:600}.tool-detail-code[data-v-3e7011a5]{color:#666;white-space:pre-wrap;word-break:break-all;background:#f4f4f4;border-radius:6px;max-height:300px;margin:0;padding:6px 8px;font-family:JetBrains Mono,Fira Code,Consolas,monospace;font-size:11px;line-height:1.5;overflow:auto}@keyframes spin-3e7011a5{to{transform:rotate(360deg)}}.streaming-cursor[data-v-3e7011a5]{vertical-align:text-bottom;background-color:#999;width:2px;height:1em;margin-left:2px;animation:.8s infinite blink-3e7011a5;display:inline-block}.streaming-dots[data-v-3e7011a5]{gap:4px;padding:4px 0;display:flex}.streaming-dots span[data-v-3e7011a5]{background-color:#999;border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite pulse-3e7011a5}.streaming-dots span[data-v-3e7011a5]:nth-child(2){animation-delay:.2s}.streaming-dots span[data-v-3e7011a5]:nth-child(3){animation-delay:.4s}@keyframes blink-3e7011a5{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes pulse-3e7011a5{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.message-list[data-v-c51c12f8]{flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.empty-state[data-v-c51c12f8]{color:#999;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.empty-state .empty-logo[data-v-c51c12f8]{opacity:.25;width:48px;height:48px}.empty-state p[data-v-c51c12f8]{font-size:14px}.streaming-indicator[data-v-c51c12f8]{color:#999;align-items:center;gap:4px;padding:4px;display:flex}.streaming-indicator span[data-v-c51c12f8]{background-color:#999;border-radius:50%;width:5px;height:5px;animation:1.4s ease-in-out infinite stream-pulse-c51c12f8}.streaming-indicator span[data-v-c51c12f8]:nth-child(2){animation-delay:.2s}.streaming-indicator span[data-v-c51c12f8]:nth-child(3){animation-delay:.4s}@keyframes stream-pulse-c51c12f8{0%,80%,to{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.chat-panel[data-v-e8f92880]{height:100%;display:flex}.session-list[data-v-e8f92880]{border-right:1px solid #e0e0e0;flex-direction:column;flex-shrink:0;width:220px;transition:width .25s,opacity .25s;display:flex;overflow:hidden}.session-list.collapsed[data-v-e8f92880]{opacity:0;pointer-events:none;border-right:none;width:0}.session-list-header[data-v-e8f92880]{flex-shrink:0;justify-content:space-between;align-items:center;padding:12px;display:flex}.session-list-title[data-v-e8f92880]{color:#999;text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.session-group-header[data-v-e8f92880]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:6px 10px 4px;display:flex}.group-chevron[data-v-e8f92880]{flex-shrink:0;transition:transform .15s;transform:rotate(90deg)}.group-chevron.collapsed[data-v-e8f92880]{transform:rotate(0)}.session-group-label[data-v-e8f92880]{color:#999;text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:600}.session-group-count[data-v-e8f92880]{color:#999;font-size:10px;font-weight:400}.session-items[data-v-e8f92880]{flex:1;padding:0 6px 12px;overflow-y:auto}.session-loading[data-v-e8f92880],.session-empty[data-v-e8f92880]{color:#999;text-align:center;padding:16px 10px;font-size:12px}.session-item[data-v-e8f92880]{cursor:pointer;text-align:left;color:#666;background:0 0;border:none;border-radius:6px;justify-content:space-between;align-items:center;width:100%;margin-bottom:2px;padding:8px 10px;transition:all .15s;display:flex}.session-item[data-v-e8f92880]:hover{color:#1a1a1a;background:#3333330f}.session-item:hover .session-item-delete[data-v-e8f92880]{opacity:1}.session-item.active[data-v-e8f92880]{color:#1a1a1a;background:#3333331a;font-weight:500}.session-item-content[data-v-e8f92880]{flex:1;overflow:hidden}.session-item-title[data-v-e8f92880]{white-space:nowrap;text-overflow:ellipsis;font-size:13px;display:block;overflow:hidden}.session-item-time[data-v-e8f92880]{color:#999;font-size:11px}.session-item-meta[data-v-e8f92880]{align-items:center;gap:6px;margin-top:2px;display:flex}.session-item-model[data-v-e8f92880]{color:#333;text-overflow:ellipsis;white-space:nowrap;background:#33333314;border-radius:3px;flex-shrink:0;max-width:100px;padding:0 5px;font-size:10px;line-height:16px;overflow:hidden}.session-item-delete[data-v-e8f92880]{opacity:0;color:#999;cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:2px;transition:all .15s}.session-item-delete[data-v-e8f92880]:hover{color:#c62828;background:#c628281a}.chat-main[data-v-e8f92880]{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.chat-header[data-v-e8f92880]{border-bottom:1px solid #e0e0e0;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.header-left[data-v-e8f92880]{flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.header-session-title[data-v-e8f92880]{color:#1a1a1a;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:500;overflow:hidden}.source-badge[data-v-e8f92880]{color:#999;white-space:nowrap;background:#9999991f;border-radius:8px;flex-shrink:0;padding:1px 7px;font-size:10px;line-height:16px}.header-actions[data-v-e8f92880]{flex-shrink:0;align-items:center;gap:4px;display:flex}.chat-view[data-v-d35d4d9c]{flex-direction:column;height:100vh;display:flex}
@@ -0,0 +1,142 @@
1
+ import{$ as e,E as t,I as n,L as r,M as i,O as a,P as o,Q as s,R as c,S as l,U as u,V as d,W as f,Z as p,_ as m,a as h,at as g,b as _,c as v,g as y,h as b,j as x,k as S,m as C,n as w,ot as T,rt as E,s as D,st as O,u as k,v as A,w as j,x as M}from"./vue.runtime.esm-bundler-LsUadeZi.js";import{$ as N,B as P,G as F,J as I,V as L,X as R,c as z,dt as B,ft as V,l as H,lt as U,nt as ee,ot as W,q as te,r as G,st as K,t as q,tt as J,ut as Y,vt as X}from"./_plugin-vue_export-helper-AI_aJZ2_.js";import{A as ne,C as re,D as ie,E as ae,L as oe,P as se,_ as ce,a as le,h as ue,i as de,l as Z,n as fe,o as pe,r as me,t as he,u as ge,w as _e}from"./Popover-BgNi3Q2J.js";import{_ as Q,c as ve,g as ye,l as be,r as xe,v as Se}from"./Suffix-B6bqA1w3.js";import{c as Ce,f as we,t as Te}from"./Modal-DYN0wyo2.js";import{a as Ee,r as $}from"./context-aD0DoQuE.js";import{t as De}from"./omit-QZj0aLfU.js";import{t as Oe}from"./Input-C6bxvAIj.js";import{t as ke}from"./Tooltip-D-FlJlcu.js";import{t as Ae}from"./use-message-rwmUYd8q.js";import{n as je,r as Me,t as Ne}from"./chat-C87W9H3D.js";import{t as Pe}from"./app-DZPFLxKB.js";import{t as Fe}from"./MarkdownRenderer-B_Fo6783.js";function Ie(e={},t){let n=p({ctrl:!1,command:!1,win:!1,shift:!1,tab:!1}),{keydown:r,keyup:a}=e,o=e=>{switch(e.key){case`Control`:n.ctrl=!0;break;case`Meta`:n.command=!0,n.win=!0;break;case`Shift`:n.shift=!0;break;case`Tab`:n.tab=!0;break}r!==void 0&&Object.keys(r).forEach(t=>{if(t!==e.key)return;let n=r[t];if(typeof n==`function`)n(e);else{let{stop:t=!1,prevent:r=!1}=n;t&&e.stopPropagation(),r&&e.preventDefault(),n.handler(e)}})},c=e=>{switch(e.key){case`Control`:n.ctrl=!1;break;case`Meta`:n.command=!1,n.win=!1;break;case`Shift`:n.shift=!1;break;case`Tab`:n.tab=!1;break}a!==void 0&&Object.keys(a).forEach(t=>{if(t!==e.key)return;let n=a[t];if(typeof n==`function`)n(e);else{let{stop:t=!1,prevent:r=!1}=n;t&&e.stopPropagation(),r&&e.preventDefault(),n.handler(e)}})},l=()=>{(t===void 0||t.value)&&(Se(`keydown`,document,o),Se(`keyup`,document,c)),t!==void 0&&d(t,e=>{e?(Se(`keydown`,document,o),Se(`keyup`,document,c)):(Q(`keydown`,document,o),Q(`keyup`,document,c))})};return se()?(x(l),i(()=>{(t===void 0||t.value)&&(Q(`keydown`,document,o),Q(`keyup`,document,c))})):l(),s(n)}function Le(t,n,r){if(!n)return t;let i=e(t.value),a=null;return d(t,e=>{a!==null&&window.clearTimeout(a),e===!0?r&&!r.value?i.value=!0:a=window.setTimeout(()=>{i.value=!0},n):i.value=!1}),i}function Re(e){return t=>{t?e.value=t.$el:e.value=null}}var ze=l({name:`ChevronRight`,render(){return j(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},j(`path`,{d:`M5.64645 3.14645C5.45118 3.34171 5.45118 3.65829 5.64645 3.85355L9.79289 8L5.64645 12.1464C5.45118 12.3417 5.45118 12.6583 5.64645 12.8536C5.84171 13.0488 6.15829 13.0488 6.35355 12.8536L10.8536 8.35355C11.0488 8.15829 11.0488 7.84171 10.8536 7.64645L6.35355 3.14645C6.15829 2.95118 5.84171 2.95118 5.64645 3.14645Z`,fill:`currentColor`}))}}),Be={padding:`4px 0`,optionIconSizeSmall:`14px`,optionIconSizeMedium:`16px`,optionIconSizeLarge:`16px`,optionIconSizeHuge:`18px`,optionSuffixWidthSmall:`14px`,optionSuffixWidthMedium:`14px`,optionSuffixWidthLarge:`16px`,optionSuffixWidthHuge:`16px`,optionIconSuffixWidthSmall:`32px`,optionIconSuffixWidthMedium:`32px`,optionIconSuffixWidthLarge:`36px`,optionIconSuffixWidthHuge:`36px`,optionPrefixWidthSmall:`14px`,optionPrefixWidthMedium:`14px`,optionPrefixWidthLarge:`16px`,optionPrefixWidthHuge:`16px`,optionIconPrefixWidthSmall:`36px`,optionIconPrefixWidthMedium:`36px`,optionIconPrefixWidthLarge:`40px`,optionIconPrefixWidthHuge:`40px`};function Ve(e){let{primaryColor:t,textColor2:n,dividerColor:r,hoverColor:i,popoverColor:a,invertedColor:o,borderRadius:s,fontSizeSmall:c,fontSizeMedium:l,fontSizeLarge:u,fontSizeHuge:d,heightSmall:f,heightMedium:p,heightLarge:m,heightHuge:h,textColor3:g,opacityDisabled:_}=e;return Object.assign(Object.assign({},Be),{optionHeightSmall:f,optionHeightMedium:p,optionHeightLarge:m,optionHeightHuge:h,borderRadius:s,fontSizeSmall:c,fontSizeMedium:l,fontSizeLarge:u,fontSizeHuge:d,optionTextColor:n,optionTextColorHover:n,optionTextColorActive:t,optionTextColorChildActive:t,color:a,dividerColor:r,suffixColor:n,prefixColor:n,optionColorHover:i,optionColorActive:ee(t,{alpha:.1}),groupHeaderTextColor:g,optionTextColorInverted:`#BBB`,optionTextColorHoverInverted:`#FFF`,optionTextColorActiveInverted:`#FFF`,optionTextColorChildActiveInverted:`#FFF`,colorInverted:o,dividerColorInverted:`#BBB`,suffixColorInverted:`#BBB`,prefixColorInverted:`#BBB`,optionColorHoverInverted:t,optionColorActiveInverted:t,groupHeaderTextColorInverted:`#AAA`,optionOpacityDisabled:_})}var He=z({name:`Dropdown`,common:G,peers:{Popover:de},self:Ve}),Ue=N(`n-dropdown-menu`),We=N(`n-dropdown`),Ge=N(`n-dropdown-option`),Ke=l({name:`DropdownDivider`,props:{clsPrefix:{type:String,required:!0}},render(){return j(`div`,{class:`${this.clsPrefix}-dropdown-divider`})}}),qe=l({name:`DropdownGroupHeader`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){let{showIconRef:e,hasSubmenuRef:n}=t(Ue),{renderLabelRef:r,labelFieldRef:i,nodePropsRef:a,renderOptionRef:o}=t(We);return{labelField:i,showIcon:e,hasSubmenu:n,renderLabel:r,nodeProps:a,renderOption:o}},render(){let{clsPrefix:e,hasSubmenu:t,showIcon:n,nodeProps:r,renderLabel:i,renderOption:a}=this,{rawNode:o}=this.tmNode,s=j(`div`,Object.assign({class:`${e}-dropdown-option`},r?.(o)),j(`div`,{class:`${e}-dropdown-option-body ${e}-dropdown-option-body--group`},j(`div`,{"data-dropdown-option":!0,class:[`${e}-dropdown-option-body__prefix`,n&&`${e}-dropdown-option-body__prefix--show-icon`]},Z(o.icon)),j(`div`,{class:`${e}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(o):Z(o.title??o[this.labelField])),j(`div`,{class:[`${e}-dropdown-option-body__suffix`,t&&`${e}-dropdown-option-body__suffix--has-submenu`],"data-dropdown-option":!0})));return a?a({node:s,option:o}):s}});function Je(e){let{textColorBase:t,opacity1:n,opacity2:r,opacity3:i,opacity4:a,opacity5:o}=e;return{color:t,opacity1Depth:n,opacity2Depth:r,opacity3Depth:i,opacity4Depth:a,opacity5Depth:o}}var Ye={name:`Icon`,common:G,self:Je},Xe=K(`icon`,`
2
+ height: 1em;
3
+ width: 1em;
4
+ line-height: 1em;
5
+ text-align: center;
6
+ display: inline-block;
7
+ position: relative;
8
+ fill: currentColor;
9
+ `,[Y(`color-transition`,{transition:`color .3s var(--n-bezier)`}),Y(`depth`,{color:`var(--n-color)`},[W(`svg`,{opacity:`var(--n-opacity)`,transition:`opacity .3s var(--n-bezier)`})]),W(`svg`,{height:`1em`,width:`1em`})]),Ze=l({_n_icon__:!0,name:`Icon`,inheritAttrs:!1,props:Object.assign(Object.assign({},H.props),{depth:[String,Number],size:[Number,String],color:String,component:[Object,Function]}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n}=L(e),r=H(`Icon`,`-icon`,Xe,Ye,e,t),i=C(()=>{let{depth:t}=e,{common:{cubicBezierEaseInOut:n},self:i}=r.value;if(t!==void 0){let{color:e,[`opacity${t}Depth`]:r}=i;return{"--n-bezier":n,"--n-color":e,"--n-opacity":r}}return{"--n-bezier":n,"--n-color":``,"--n-opacity":``}}),a=n?P(`icon`,C(()=>`${e.depth||`d`}`),i,e):void 0;return{mergedClsPrefix:t,mergedStyle:C(()=>{let{size:t,color:n}=e;return{fontSize:ue(t),color:n}}),cssVars:n?void 0:i,themeClass:a?.themeClass,onRender:a?.onRender}},render(){let{$parent:e,depth:t,mergedClsPrefix:n,component:r,onRender:i,themeClass:o}=this;return e?.$options?._n_icon__&&R(`icon`,"don't wrap `n-icon` inside `n-icon`"),i?.(),j(`i`,a(this.$attrs,{role:`img`,class:[`${n}-icon`,o,{[`${n}-icon--depth`]:t,[`${n}-icon--color-transition`]:t!==void 0}],style:[this.cssVars,this.mergedStyle]}),r?j(r):this.$slots)}});function Qe(e,t){return e.type===`submenu`||e.type===void 0&&e[t]!==void 0}function $e(e){return e.type===`group`}function et(e){return e.type===`divider`}function tt(e){return e.type===`render`}var nt=l({name:`DropdownOption`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null},placement:{type:String,default:`right-start`},props:Object,scrollable:Boolean},setup(n){let i=t(We),{hoverKeyRef:a,keyboardKeyRef:o,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:l,animatedRef:u,mergedShowRef:d,renderLabelRef:f,renderIconRef:p,labelFieldRef:m,childrenFieldRef:h,renderOptionRef:g,nodePropsRef:_,menuPropsRef:v}=i,y=t(Ge,null),b=t(Ue),x=t(ae),S=C(()=>n.tmNode.rawNode),w=C(()=>{let{value:e}=h;return Qe(n.tmNode.rawNode,e)}),T=C(()=>{let{disabled:e}=n.tmNode;return e}),E=Le(C(()=>{if(!w.value)return!1;let{key:e,disabled:t}=n.tmNode;if(t)return!1;let{value:r}=a,{value:i}=o,{value:l}=s,{value:u}=c;return r===null?i===null?l===null?!1:u.includes(e):u.includes(e)&&u[u.length-1]!==e:u.includes(e)}),300,C(()=>o.value===null&&!u.value)),D=C(()=>!!y?.enteringSubmenuRef.value),O=e(!1);r(Ge,{enteringSubmenuRef:O});function k(){O.value=!0}function A(){O.value=!1}function j(){let{parentKey:e,tmNode:t}=n;t.disabled||d.value&&(s.value=e,o.value=null,a.value=t.key)}function M(){let{tmNode:e}=n;e.disabled||d.value&&a.value!==e.key&&j()}function N(e){if(n.tmNode.disabled||!d.value)return;let{relatedTarget:t}=e;t&&!oe({target:t},`dropdownOption`)&&!oe({target:t},`scrollbarRail`)&&(a.value=null)}function P(){let{value:e}=w,{tmNode:t}=n;d.value&&!e&&!t.disabled&&(i.doSelect(t.key,t.rawNode),i.doUpdateShow(!1))}return{labelField:m,renderLabel:f,renderIcon:p,siblingHasIcon:b.showIconRef,siblingHasSubmenu:b.hasSubmenuRef,menuProps:v,popoverBody:x,animated:u,mergedShowSubmenu:C(()=>E.value&&!D.value),rawNode:S,hasSubmenu:w,pending:J(()=>{let{value:e}=c,{key:t}=n.tmNode;return e.includes(t)}),childActive:J(()=>{let{value:e}=l,{key:t}=n.tmNode,r=e.findIndex(e=>t===e);return r===-1?!1:r<e.length-1}),active:J(()=>{let{value:e}=l,{key:t}=n.tmNode,r=e.findIndex(e=>t===e);return r===-1?!1:r===e.length-1}),mergedDisabled:T,renderOption:g,nodeProps:_,handleClick:P,handleMouseMove:M,handleMouseEnter:j,handleMouseLeave:N,handleSubmenuBeforeEnter:k,handleSubmenuAfterEnter:A}},render(){let{animated:e,rawNode:t,mergedShowSubmenu:n,clsPrefix:r,siblingHasIcon:i,siblingHasSubmenu:o,renderLabel:s,renderIcon:c,renderOption:l,nodeProps:u,props:d,scrollable:f}=this,p=null;if(n){let e=this.menuProps?.call(this,t,t.children);p=j(at,Object.assign({},e,{clsPrefix:r,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}let m={class:[`${r}-dropdown-option-body`,this.pending&&`${r}-dropdown-option-body--pending`,this.active&&`${r}-dropdown-option-body--active`,this.childActive&&`${r}-dropdown-option-body--child-active`,this.mergedDisabled&&`${r}-dropdown-option-body--disabled`],onMousemove:this.handleMouseMove,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onClick:this.handleClick},h=u?.(t),g=j(`div`,Object.assign({class:[`${r}-dropdown-option`,h?.class],"data-dropdown-option":!0},h),j(`div`,a(m,d),[j(`div`,{class:[`${r}-dropdown-option-body__prefix`,i&&`${r}-dropdown-option-body__prefix--show-icon`]},[c?c(t):Z(t.icon)]),j(`div`,{"data-dropdown-option":!0,class:`${r}-dropdown-option-body__label`},s?s(t):Z(t[this.labelField]??t.title)),j(`div`,{"data-dropdown-option":!0,class:[`${r}-dropdown-option-body__suffix`,o&&`${r}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?j(Ze,null,{default:()=>j(ze,null)}):null)]),this.hasSubmenu?j(_e,null,{default:()=>[j(re,null,{default:()=>j(`div`,{class:`${r}-dropdown-offset-container`},j(ce,{show:this.mergedShowSubmenu,placement:this.placement,to:f&&this.popoverBody||void 0,teleportDisabled:!f},{default:()=>j(`div`,{class:`${r}-dropdown-menu-wrapper`},e?j(w,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:`fade-in-scale-up-transition`,appear:!0},{default:()=>p}):p)}))})]}):null);return l?l({node:g,option:t}):g}}),rt=l({name:`NDropdownGroup`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0},parentKey:{type:[String,Number],default:null}},render(){let{tmNode:e,parentKey:t,clsPrefix:n}=this,{children:r}=e;return j(k,null,j(qe,{clsPrefix:n,tmNode:e,key:e.key}),r?.map(e=>{let{rawNode:r}=e;return r.show===!1?null:et(r)?j(Ke,{clsPrefix:n,key:e.key}):e.isGroup?(R(`dropdown`,"`group` node is not allowed to be put in `group` node."),null):j(nt,{clsPrefix:n,tmNode:e,parentKey:t,key:e.key})}))}}),it=l({name:`DropdownRenderOption`,props:{tmNode:{type:Object,required:!0}},render(){let{rawNode:{render:e,props:t}}=this.tmNode;return j(`div`,t,[e?.()])}}),at=l({name:`DropdownMenu`,props:{scrollable:Boolean,showArrow:Boolean,arrowStyle:[String,Object],clsPrefix:{type:String,required:!0},tmNodes:{type:Array,default:()=>[]},parentKey:{type:[String,Number],default:null}},setup(n){let{renderIconRef:i,childrenFieldRef:a}=t(We);r(Ue,{showIconRef:C(()=>{let e=i.value;return n.tmNodes.some(t=>{if(t.isGroup)return t.children?.some(({rawNode:t})=>e?e(t):t.icon);let{rawNode:n}=t;return e?e(n):n.icon})}),hasSubmenuRef:C(()=>{let{value:e}=a;return n.tmNodes.some(t=>{if(t.isGroup)return t.children?.some(({rawNode:t})=>Qe(t,e));let{rawNode:n}=t;return Qe(n,e)})})});let o=e(null);return r(ie,null),r(ne,null),r(ae,o),{bodyRef:o}},render(){let{parentKey:e,clsPrefix:t,scrollable:n}=this,r=this.tmNodes.map(r=>{let{rawNode:i}=r;return i.show===!1?null:tt(i)?j(it,{tmNode:r,key:r.key}):et(i)?j(Ke,{clsPrefix:t,key:r.key}):$e(i)?j(rt,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):j(nt,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return j(`div`,{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:`bodyRef`},n?j(xe,{contentClass:`${t}-dropdown-menu__content`},{default:()=>r}):r,this.showArrow?me({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),ot=K(`dropdown-menu`,`
10
+ transform-origin: var(--v-transform-origin);
11
+ background-color: var(--n-color);
12
+ border-radius: var(--n-border-radius);
13
+ box-shadow: var(--n-box-shadow);
14
+ position: relative;
15
+ transition:
16
+ background-color .3s var(--n-bezier),
17
+ box-shadow .3s var(--n-bezier);
18
+ `,[le(),K(`dropdown-option`,`
19
+ position: relative;
20
+ `,[W(`a`,`
21
+ text-decoration: none;
22
+ color: inherit;
23
+ outline: none;
24
+ `,[W(`&::before`,`
25
+ content: "";
26
+ position: absolute;
27
+ left: 0;
28
+ right: 0;
29
+ top: 0;
30
+ bottom: 0;
31
+ `)]),K(`dropdown-option-body`,`
32
+ display: flex;
33
+ cursor: pointer;
34
+ position: relative;
35
+ height: var(--n-option-height);
36
+ line-height: var(--n-option-height);
37
+ font-size: var(--n-font-size);
38
+ color: var(--n-option-text-color);
39
+ transition: color .3s var(--n-bezier);
40
+ `,[W(`&::before`,`
41
+ content: "";
42
+ position: absolute;
43
+ top: 0;
44
+ bottom: 0;
45
+ left: 4px;
46
+ right: 4px;
47
+ transition: background-color .3s var(--n-bezier);
48
+ border-radius: var(--n-border-radius);
49
+ `),B(`disabled`,[Y(`pending`,`
50
+ color: var(--n-option-text-color-hover);
51
+ `,[U(`prefix, suffix`,`
52
+ color: var(--n-option-text-color-hover);
53
+ `),W(`&::before`,`background-color: var(--n-option-color-hover);`)]),Y(`active`,`
54
+ color: var(--n-option-text-color-active);
55
+ `,[U(`prefix, suffix`,`
56
+ color: var(--n-option-text-color-active);
57
+ `),W(`&::before`,`background-color: var(--n-option-color-active);`)]),Y(`child-active`,`
58
+ color: var(--n-option-text-color-child-active);
59
+ `,[U(`prefix, suffix`,`
60
+ color: var(--n-option-text-color-child-active);
61
+ `)])]),Y(`disabled`,`
62
+ cursor: not-allowed;
63
+ opacity: var(--n-option-opacity-disabled);
64
+ `),Y(`group`,`
65
+ font-size: calc(var(--n-font-size) - 1px);
66
+ color: var(--n-group-header-text-color);
67
+ `,[U(`prefix`,`
68
+ width: calc(var(--n-option-prefix-width) / 2);
69
+ `,[Y(`show-icon`,`
70
+ width: calc(var(--n-option-icon-prefix-width) / 2);
71
+ `)])]),U(`prefix`,`
72
+ width: var(--n-option-prefix-width);
73
+ display: flex;
74
+ justify-content: center;
75
+ align-items: center;
76
+ color: var(--n-prefix-color);
77
+ transition: color .3s var(--n-bezier);
78
+ z-index: 1;
79
+ `,[Y(`show-icon`,`
80
+ width: var(--n-option-icon-prefix-width);
81
+ `),K(`icon`,`
82
+ font-size: var(--n-option-icon-size);
83
+ `)]),U(`label`,`
84
+ white-space: nowrap;
85
+ flex: 1;
86
+ z-index: 1;
87
+ `),U(`suffix`,`
88
+ box-sizing: border-box;
89
+ flex-grow: 0;
90
+ flex-shrink: 0;
91
+ display: flex;
92
+ justify-content: flex-end;
93
+ align-items: center;
94
+ min-width: var(--n-option-suffix-width);
95
+ padding: 0 8px;
96
+ transition: color .3s var(--n-bezier);
97
+ color: var(--n-suffix-color);
98
+ z-index: 1;
99
+ `,[Y(`has-submenu`,`
100
+ width: var(--n-option-icon-suffix-width);
101
+ `),K(`icon`,`
102
+ font-size: var(--n-option-icon-size);
103
+ `)]),K(`dropdown-menu`,`pointer-events: all;`)]),K(`dropdown-offset-container`,`
104
+ pointer-events: none;
105
+ position: absolute;
106
+ left: 0;
107
+ right: 0;
108
+ top: -4px;
109
+ bottom: -4px;
110
+ `)]),K(`dropdown-divider`,`
111
+ transition: background-color .3s var(--n-bezier);
112
+ background-color: var(--n-divider-color);
113
+ height: 1px;
114
+ margin: 4px 0;
115
+ `),K(`dropdown-menu-wrapper`,`
116
+ transform-origin: var(--v-transform-origin);
117
+ width: fit-content;
118
+ `),W(`>`,[K(`scrollbar`,`
119
+ height: inherit;
120
+ max-height: inherit;
121
+ `)]),B(`scrollable`,`
122
+ padding: var(--n-padding);
123
+ `),Y(`scrollable`,[U(`content`,`
124
+ padding: var(--n-padding);
125
+ `)])]),st={animated:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},size:String,inverted:Boolean,placement:{type:String,default:`bottom`},onSelect:[Function,Array],options:{type:Array,default:()=>[]},menuProps:Function,showArrow:Boolean,renderLabel:Function,renderIcon:Function,renderOption:Function,nodeProps:Function,labelField:{type:String,default:`label`},keyField:{type:String,default:`key`},childrenField:{type:String,default:`children`},value:[String,Number]},ct=Object.keys(fe),lt=l({name:`Dropdown`,inheritAttrs:!1,props:Object.assign(Object.assign(Object.assign({},fe),st),H.props),setup(t){let n=e(!1),i=ye(E(t,`show`),n),a=C(()=>{let{keyField:e,childrenField:n}=t;return pe(t.options,{getKey(t){return t[e]},getDisabled(e){return e.disabled===!0},getIgnored(e){return e.type===`divider`||e.type===`render`},getChildren(e){return e[n]}})}),o=C(()=>a.value.treeNodes),s=e(null),c=e(null),l=e(null),u=C(()=>s.value??c.value??l.value??null),f=C(()=>a.value.getPath(u.value).keyPath),p=C(()=>a.value.getPath(t.value).keyPath),m=J(()=>t.keyboard&&i.value);Ie({keydown:{ArrowUp:{prevent:!0,handler:O},ArrowRight:{prevent:!0,handler:D},ArrowDown:{prevent:!0,handler:k},ArrowLeft:{prevent:!0,handler:T},Enter:{prevent:!0,handler:A},Escape:w}},m);let{mergedClsPrefixRef:h,inlineThemeDisabled:g,mergedComponentPropsRef:_}=L(t),v=C(()=>t.size||_?.value?.Dropdown?.size||`medium`),y=H(`Dropdown`,`-dropdown`,ot,He,t,h);r(We,{labelFieldRef:E(t,`labelField`),childrenFieldRef:E(t,`childrenField`),renderLabelRef:E(t,`renderLabel`),renderIconRef:E(t,`renderIcon`),hoverKeyRef:s,keyboardKeyRef:c,lastToggledSubmenuKeyRef:l,pendingKeyPathRef:f,activeKeyPathRef:p,animatedRef:E(t,`animated`),mergedShowRef:i,nodePropsRef:E(t,`nodeProps`),renderOptionRef:E(t,`renderOption`),menuPropsRef:E(t,`menuProps`),doSelect:b,doUpdateShow:x}),d(i,e=>{!t.animated&&!e&&S()});function b(e,n){let{onSelect:r}=t;r&&I(r,e,n)}function x(e){let{"onUpdate:show":r,onUpdateShow:i}=t;r&&I(r,e),i&&I(i,e),n.value=e}function S(){s.value=null,c.value=null,l.value=null}function w(){x(!1)}function T(){M(`left`)}function D(){M(`right`)}function O(){M(`up`)}function k(){M(`down`)}function A(){let e=j();e?.isLeaf&&i.value&&(b(e.key,e.rawNode),x(!1))}function j(){let{value:e}=a,{value:t}=u;return!e||t===null?null:e.getNode(t)??null}function M(e){let{value:t}=u,{value:{getFirstAvailableNode:n}}=a,r=null;if(t===null){let e=n();e!==null&&(r=e.key)}else{let t=j();if(t){let n;switch(e){case`down`:n=t.getNext();break;case`up`:n=t.getPrev();break;case`right`:n=t.getChild();break;case`left`:n=t.getParent();break}n&&(r=n.key)}}r!==null&&(s.value=null,c.value=r)}let N=C(()=>{let{inverted:e}=t,n=v.value,{common:{cubicBezierEaseInOut:r},self:i}=y.value,{padding:a,dividerColor:o,borderRadius:s,optionOpacityDisabled:c,[V(`optionIconSuffixWidth`,n)]:l,[V(`optionSuffixWidth`,n)]:u,[V(`optionIconPrefixWidth`,n)]:d,[V(`optionPrefixWidth`,n)]:f,[V(`fontSize`,n)]:p,[V(`optionHeight`,n)]:m,[V(`optionIconSize`,n)]:h}=i,g={"--n-bezier":r,"--n-font-size":p,"--n-padding":a,"--n-border-radius":s,"--n-option-height":m,"--n-option-prefix-width":f,"--n-option-icon-prefix-width":d,"--n-option-suffix-width":u,"--n-option-icon-suffix-width":l,"--n-option-icon-size":h,"--n-divider-color":o,"--n-option-opacity-disabled":c};return e?(g[`--n-color`]=i.colorInverted,g[`--n-option-color-hover`]=i.optionColorHoverInverted,g[`--n-option-color-active`]=i.optionColorActiveInverted,g[`--n-option-text-color`]=i.optionTextColorInverted,g[`--n-option-text-color-hover`]=i.optionTextColorHoverInverted,g[`--n-option-text-color-active`]=i.optionTextColorActiveInverted,g[`--n-option-text-color-child-active`]=i.optionTextColorChildActiveInverted,g[`--n-prefix-color`]=i.prefixColorInverted,g[`--n-suffix-color`]=i.suffixColorInverted,g[`--n-group-header-text-color`]=i.groupHeaderTextColorInverted):(g[`--n-color`]=i.color,g[`--n-option-color-hover`]=i.optionColorHover,g[`--n-option-color-active`]=i.optionColorActive,g[`--n-option-text-color`]=i.optionTextColor,g[`--n-option-text-color-hover`]=i.optionTextColorHover,g[`--n-option-text-color-active`]=i.optionTextColorActive,g[`--n-option-text-color-child-active`]=i.optionTextColorChildActive,g[`--n-prefix-color`]=i.prefixColor,g[`--n-suffix-color`]=i.suffixColor,g[`--n-group-header-text-color`]=i.groupHeaderTextColor),g}),F=g?P(`dropdown`,C(()=>`${v.value[0]}${t.inverted?`i`:``}`),N,t):void 0;return{mergedClsPrefix:h,mergedTheme:y,mergedSize:v,tmNodes:o,mergedShow:i,handleAfterLeave:()=>{t.animated&&S()},doUpdateShow:x,cssVars:g?void 0:N,themeClass:F?.themeClass,onRender:F?.onRender}},render(){let e=(e,t,n,r,i)=>{var o;let{mergedClsPrefix:s,menuProps:c}=this;(o=this.onRender)==null||o.call(this);let l=c?.(void 0,this.tmNodes.map(e=>e.rawNode))||{},u={ref:Re(t),class:[e,`${s}-dropdown`,`${s}-dropdown--${this.mergedSize}-size`,this.themeClass],clsPrefix:s,tmNodes:this.tmNodes,style:[...n,this.cssVars],showArrow:this.showArrow,arrowStyle:this.arrowStyle,scrollable:this.scrollable,onMouseenter:r,onMouseleave:i};return j(at,a(this.$attrs,u,l))},{mergedTheme:t}=this,n={show:this.mergedShow,theme:t.peers.Popover,themeOverrides:t.peerOverrides.Popover,internalOnAfterLeave:this.handleAfterLeave,internalRenderBody:e,onUpdateShow:this.doUpdateShow,"onUpdate:show":void 0};return j(he,Object.assign({},ge(this.$props,ct),n),{trigger:()=>{var e;return(e=this.$slots).default?.call(e)}})}}),ut={iconSize:`22px`};function dt(e){let{fontSize:t,warningColor:n}=e;return Object.assign(Object.assign({},ut),{fontSize:t,iconColor:n})}var ft=z({name:`Popconfirm`,common:G,peers:{Button:Ee,Popover:de},self:dt}),pt=N(`n-popconfirm`),mt={positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0}},ht=we(mt),gt=l({name:`NPopconfirmPanel`,props:mt,setup(e){let{localeRef:n}=be(`Popconfirm`),{inlineThemeDisabled:r}=L(),{mergedClsPrefixRef:i,mergedThemeRef:a,props:o}=t(pt),s=C(()=>{let{common:{cubicBezierEaseInOut:e},self:{fontSize:t,iconSize:n,iconColor:r}}=a.value;return{"--n-bezier":e,"--n-font-size":t,"--n-icon-size":n,"--n-icon-color":r}}),c=r?P(`popconfirm-panel`,void 0,s,o):void 0;return Object.assign(Object.assign({},be(`Popconfirm`)),{mergedClsPrefix:i,cssVars:r?void 0:s,localizedPositiveText:C(()=>e.positiveText||n.value.positiveText),localizedNegativeText:C(()=>e.negativeText||n.value.negativeText),positiveButtonProps:E(o,`positiveButtonProps`),negativeButtonProps:E(o,`negativeButtonProps`),handlePositiveClick(t){e.onPositiveClick(t)},handleNegativeClick(t){e.onNegativeClick(t)},themeClass:c?.themeClass,onRender:c?.onRender})},render(){var e;let{mergedClsPrefix:t,showIcon:n,$slots:r}=this,i=F(r.action,()=>this.negativeText===null&&this.positiveText===null?[]:[this.negativeText!==null&&j($,Object.assign({size:`small`,onClick:this.handleNegativeClick},this.negativeButtonProps),{default:()=>this.localizedNegativeText}),this.positiveText!==null&&j($,Object.assign({size:`small`,type:`primary`,onClick:this.handlePositiveClick},this.positiveButtonProps),{default:()=>this.localizedPositiveText})]);return(e=this.onRender)==null||e.call(this),j(`div`,{class:[`${t}-popconfirm__panel`,this.themeClass],style:this.cssVars},te(r.default,e=>n||e?j(`div`,{class:`${t}-popconfirm__body`},n?j(`div`,{class:`${t}-popconfirm__icon`},F(r.icon,()=>[j(ve,{clsPrefix:t},{default:()=>j(Ce,null)})])):null,e):null),i?j(`div`,{class:[`${t}-popconfirm__action`]},i):null)}}),_t=K(`popconfirm`,[U(`body`,`
126
+ font-size: var(--n-font-size);
127
+ display: flex;
128
+ align-items: center;
129
+ flex-wrap: nowrap;
130
+ position: relative;
131
+ `,[U(`icon`,`
132
+ display: flex;
133
+ font-size: var(--n-icon-size);
134
+ color: var(--n-icon-color);
135
+ transition: color .3s var(--n-bezier);
136
+ margin: 0 8px 0 0;
137
+ `)]),U(`action`,`
138
+ display: flex;
139
+ justify-content: flex-end;
140
+ `,[W(`&:not(:first-child)`,`margin-top: 8px`),K(`button`,[W(`&:not(:last-child)`,`margin-right: 8px;`)])])]),vt=l({name:`Popconfirm`,props:Object.assign(Object.assign(Object.assign({},H.props),fe),{positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},trigger:{type:String,default:`click`},positiveButtonProps:Object,negativeButtonProps:Object,onPositiveClick:Function,onNegativeClick:Function}),slots:Object,__popover__:!0,setup(t){let{mergedClsPrefixRef:n}=L(),i=H(`Popconfirm`,`-popconfirm`,_t,ft,t,n),a=e(null);function o(e){if(!a.value?.getMergedShow())return;let{onPositiveClick:n,"onUpdate:show":r}=t;Promise.resolve(n?n(e):!0).then(e=>{var t;e!==!1&&((t=a.value)==null||t.setShow(!1),r&&I(r,!1))})}function s(e){if(!a.value?.getMergedShow())return;let{onNegativeClick:n,"onUpdate:show":r}=t;Promise.resolve(n?n(e):!0).then(e=>{var t;e!==!1&&((t=a.value)==null||t.setShow(!1),r&&I(r,!1))})}return r(pt,{mergedThemeRef:i,mergedClsPrefixRef:n,props:t}),{setShow(e){var t;(t=a.value)==null||t.setShow(e)},syncPosition(){var e;(e=a.value)==null||e.syncPosition()},mergedTheme:i,popoverInstRef:a,handlePositiveClick:o,handleNegativeClick:s}},render(){let{$slots:e,$props:t,mergedTheme:n}=this;return j(he,Object.assign({},De(t,ht),{theme:n.peers.Popover,themeOverrides:n.peerOverrides.Popover,internalExtraClass:[`popconfirm`],ref:`popoverInstRef`}),{trigger:e.trigger,default:()=>{let n=ge(t,ht);return j(gt,Object.assign({},n,{onPositiveClick:this.handlePositiveClick,onNegativeClick:this.handleNegativeClick}),e)}})}}),yt={class:`chat-input-area`},bt={key:0,class:`attachment-previews`},xt=[`src`,`alt`],St={key:1,class:`attachment-file`},Ct={class:`file-name`},wt={class:`file-size`},Tt=[`onClick`],Et=[`placeholder`],Dt={class:`input-actions`},Ot=q(l({__name:`ChatInput`,setup(t){let r=Ne(),{t:i}=X(),a=e(``),o=e(),s=e(),l=e([]),d=e(!1),p=e(0),v=C(()=>a.value.trim()||l.value.length>0);function x(e){if(l.value.find(t=>t.name===e.name))return;let t=Date.now().toString(36)+Math.random().toString(36).slice(2,8),n=URL.createObjectURL(e);l.value.push({id:t,name:e.name,type:e.type,size:e.size,url:n,file:e})}function S(){s.value?.click()}function w(e){let t=e.target;if(t.files){for(let e of t.files)x(e);t.value=``}}function E(e){let t=Array.from(e.clipboardData?.items||[]).filter(e=>e.type.startsWith(`image/`));if(t.length){e.preventDefault();for(let e of t){let t=e.getAsFile();if(!t)continue;let n=e.type.split(`/`)[1]||`png`;x(new File([t],`pasted-${Date.now()}.${n}`,{type:e.type}))}}}function D(e){e.preventDefault()}function j(e){e.preventDefault(),e.dataTransfer?.types.includes(`Files`)&&(p.value++,d.value=!0)}function N(){p.value--,p.value<=0&&(p.value=0,d.value=!1)}function P(e){e.preventDefault(),p.value=0,d.value=!1;let t=Array.from(e.dataTransfer?.files||[]);if(t.length){for(let e of t)x(e);o.value?.focus()}}function F(){let e=a.value.trim();!e&&l.value.length===0||(r.sendMessage(e,l.value.length>0?l.value:void 0),a.value=``,l.value=[],o.value&&(o.value.style.height=`auto`))}function I(e){e.key===`Enter`&&!e.shiftKey&&(e.preventDefault(),F())}function L(e){let t=e.target;t.style.height=`auto`,t.style.height=Math.min(t.scrollHeight,100)+`px`}function R(e){let t=l.value.findIndex(t=>t.id===e);t!==-1&&(URL.revokeObjectURL(l.value[t].url),l.value.splice(t,1))}function z(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function B(e){return e.startsWith(`image/`)}return(e,t)=>(n(),A(`div`,yt,[l.value.length>0?(n(),A(`div`,bt,[(n(!0),A(k,null,c(l.value,e=>(n(),A(`div`,{key:e.id,class:T([`attachment-preview`,{image:B(e.type)}])},[B(e.type)?(n(),A(`img`,{key:0,src:e.url,alt:e.name,class:`attachment-thumb`},null,8,xt)):(n(),A(`div`,St,[t[2]||=b(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[b(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),b(`polyline`,{points:`14 2 14 8 20 8`})],-1),b(`span`,Ct,O(e.name),1),b(`span`,wt,O(z(e.size)),1)])),b(`button`,{class:`attachment-remove`,onClick:t=>R(e.id)},[...t[3]||=[b(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[b(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),b(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Tt)],2))),128))])):m(``,!0),b(`div`,{class:T([`input-wrapper`,{"drag-over":d.value}]),onDragover:D,onDragenter:j,onDragleave:N,onDrop:P},[b(`input`,{ref_key:`fileInputRef`,ref:s,type:`file`,multiple:``,class:`file-input-hidden`,onChange:w},null,544),f(b(`textarea`,{ref_key:`textareaRef`,ref:o,"onUpdate:modelValue":t[0]||=e=>a.value=e,class:`input-textarea`,placeholder:g(i)(`chat.inputPlaceholder`),rows:`1`,onKeydown:I,onInput:L,onPaste:E},null,40,Et),[[h,a.value]]),b(`div`,Dt,[M(g(ke),{trigger:`hover`},{trigger:u(()=>[M(g($),{quaternary:``,size:`small`,onClick:S,circle:``},{icon:u(()=>[...t[4]||=[b(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[b(`path`,{d:`M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48`})],-1)]]),_:1})]),default:u(()=>[_(` `+O(g(i)(`chat.attachFiles`)),1)]),_:1}),g(r).isStreaming?(n(),y(g($),{key:0,size:`small`,type:`error`,onClick:t[1]||=e=>g(r).stopStreaming()},{default:u(()=>[_(O(g(i)(`chat.stop`)),1)]),_:1})):m(``,!0),M(g($),{size:`small`,type:`primary`,disabled:!v.value||g(r).isStreaming,onClick:F},{icon:u(()=>[...t[5]||=[b(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[b(`line`,{x1:`22`,y1:`2`,x2:`11`,y2:`13`}),b(`polygon`,{points:`22 2 15 22 11 13 2 9 22 2`})],-1)]]),default:u(()=>[_(` `+O(g(i)(`chat.send`)),1)]),_:1},8,[`disabled`])])],34)]))}}),[[`__scopeId`,`data-v-b97ae5d5`]]),kt={key:1,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-icon`},At={class:`tool-name`},jt={key:2,class:`tool-preview`},Mt={key:3,class:`tool-spinner`},Nt={key:4,class:`tool-error-badge`},Pt={key:0,class:`tool-details`},Ft={key:0,class:`tool-detail-section`},It={class:`tool-detail-label`},Lt={class:`tool-detail-code`},Rt={key:1,class:`tool-detail-section`},zt={class:`tool-detail-label`},Bt={class:`tool-detail-code`},Vt={key:1,class:`msg-body`},Ht={key:0,src:Me,alt:`Hermes`,class:`msg-avatar`},Ut={key:0,class:`msg-attachments`},Wt=[`src`,`alt`],Gt={key:1,class:`msg-attachment-file`},Kt={class:`att-name`},qt={class:`att-size`},Jt={key:2,class:`streaming-cursor`},Yt={key:3,class:`streaming-dots`},Xt={class:`message-time`},Zt=q(l({__name:`MessageItem`,props:{message:{}},setup(t){let r=t,{t:i}=X(),a=C(()=>r.message.role===`system`),o=e(!1),s=C(()=>new Date(r.message.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}));function l(e){return e.startsWith(`image/`)}function u(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}let d=C(()=>(r.message.attachments?.length??0)>0),f=C(()=>!!(r.message.toolArgs||r.message.toolResult)),p=C(()=>{if(!r.message.toolArgs)return``;try{return JSON.stringify(JSON.parse(r.message.toolArgs),null,2)}catch{return r.message.toolArgs}}),h=C(()=>{if(!r.message.toolResult)return``;try{let e=JSON.parse(r.message.toolResult),t=JSON.stringify(e,null,2);return t.length>2e3?t.slice(0,2e3)+`
141
+ `+i(`chat.truncated`):t}catch{let e=r.message.toolResult;return e.length>2e3?e.slice(0,2e3)+`
142
+ `+i(`chat.truncated`):e}});return(e,r)=>(n(),A(`div`,{class:T([`message`,[t.message.role]])},[t.message.role===`tool`?(n(),A(k,{key:0},[b(`div`,{class:T([`tool-line`,{expandable:f.value}]),onClick:r[0]||=e=>f.value&&(o.value=!o.value)},[f.value?(n(),A(`svg`,{key:0,width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:T([`tool-chevron`,{rotated:o.value}])},[...r[1]||=[b(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)):(n(),A(`svg`,kt,[...r[2]||=[b(`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z`},null,-1)]])),b(`span`,At,O(t.message.toolName),1),t.message.toolPreview&&!o.value?(n(),A(`span`,jt,O(t.message.toolPreview),1)):m(``,!0),t.message.toolStatus===`running`?(n(),A(`span`,Mt)):m(``,!0),t.message.toolStatus===`error`?(n(),A(`span`,Nt,O(g(i)(`chat.error`)),1)):m(``,!0)],2),o.value&&f.value?(n(),A(`div`,Pt,[p.value?(n(),A(`div`,Ft,[b(`div`,It,O(g(i)(`chat.arguments`)),1),b(`pre`,Lt,O(p.value),1)])):m(``,!0),h.value?(n(),A(`div`,Rt,[b(`div`,zt,O(g(i)(`chat.result`)),1),b(`pre`,Bt,O(h.value),1)])):m(``,!0)])):m(``,!0)],64)):(n(),A(`div`,Vt,[t.message.role===`assistant`?(n(),A(`img`,Ht)):m(``,!0),b(`div`,{class:T([`msg-content`,t.message.role])},[b(`div`,{class:T([`message-bubble`,{system:a.value}])},[d.value?(n(),A(`div`,Ut,[(n(!0),A(k,null,c(t.message.attachments,e=>(n(),A(`div`,{key:e.id,class:T([`msg-attachment`,{image:l(e.type)}])},[l(e.type)&&e.url?(n(),A(`img`,{key:0,src:e.url,alt:e.name,class:`msg-attachment-thumb`},null,8,Wt)):(n(),A(`div`,Gt,[r[3]||=b(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[b(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),b(`polyline`,{points:`14 2 14 8 20 8`})],-1),b(`span`,Kt,O(e.name),1),b(`span`,qt,O(u(e.size)),1)]))],2))),128))])):m(``,!0),t.message.content?(n(),y(Fe,{key:1,content:t.message.content},null,8,[`content`])):m(``,!0),t.message.isStreaming?(n(),A(`span`,Jt)):m(``,!0),t.message.isStreaming&&!t.message.content?(n(),A(`div`,Yt,[...r[4]||=[b(`span`,null,null,-1),b(`span`,null,null,-1),b(`span`,null,null,-1)]])):m(``,!0)],2),b(`div`,Xt,O(s.value),1)],2)]))],2))}}),[[`__scopeId`,`data-v-3e7011a5`]]),Qt={key:0,class:`empty-state`},$t={key:1,class:`streaming-indicator`},en=q(l({__name:`MessageList`,setup(t){let r=Ne(),{t:i}=X(),a=e();function o(){S(()=>{a.value&&(a.value.scrollTop=a.value.scrollHeight)})}return d(()=>r.messages.length,o),d(()=>r.messages[r.messages.length-1]?.content,o),d(()=>r.isStreaming,e=>{e&&o()}),(e,t)=>(n(),A(`div`,{ref_key:`listRef`,ref:a,class:`message-list`},[g(r).messages.length===0?(n(),A(`div`,Qt,[t[0]||=b(`img`,{src:`/assets/logo-BAarh-tH.png`,alt:`Hermes`,class:`empty-logo`},null,-1),b(`p`,null,O(g(i)(`chat.emptyState`)),1)])):m(``,!0),(n(!0),A(k,null,c(g(r).messages,e=>(n(),y(Zt,{key:e.id,message:e},null,8,[`message`]))),128)),g(r).isStreaming?(n(),A(`div`,$t,[...t[1]||=[b(`span`,null,null,-1),b(`span`,null,null,-1),b(`span`,null,null,-1)]])):m(``,!0)],512))}}),[[`__scopeId`,`data-v-c51c12f8`]]),tn={class:`chat-panel`},nn={class:`session-list-header`},rn={key:0,class:`session-list-title`},an={key:0,class:`session-items`},on={key:0,class:`session-loading`},sn={key:1,class:`session-empty`},cn=[`onClick`],ln={class:`session-group-label`},un={class:`session-group-count`},dn=[`onClick`,`onContextmenu`],fn={class:`session-item-content`},pn={class:`session-item-title`},mn={class:`session-item-meta`},hn={key:0,class:`session-item-model`},gn={class:`session-item-time`},_n={class:`chat-main`},vn={class:`chat-header`},yn={class:`header-left`},bn={class:`header-session-title`},xn={key:0,class:`source-badge`},Sn={class:`header-actions`},Cn=q(l({__name:`ChatPanel`,setup(t){let r=Ne(),i=Ae(),{t:a}=X(),o=e(!0),s=e(!1),l=e(``),f=e(null),p=e(null),h=e(new Set(JSON.parse(localStorage.getItem(`hermes_collapsed_groups`)||`[]`))),x={telegram:`Telegram`,api_server:`API Server`,cli:`CLI`,discord:`Discord`,slack:`Slack`,matrix:`Matrix`,whatsapp:`WhatsApp`,signal:`Signal`,email:`Email`,sms:`SMS`,dingtalk:`DingTalk`,feishu:`Feishu`,wecom:`WeCom`,weixin:`WeChat`,bluebubbles:`iMessage`,mattermost:`Mattermost`,cron:`Cron`};function w(e){return e?x[e]||e:``}function E(e){return e===`api_server`?-1:e===`cron`?999:0}let j=C(()=>{let e=[...r.sessions].sort((e,t)=>t.createdAt-e.createdAt),t=new Map;for(let n of e){let e=n.source||``;t.has(e)||t.set(e,[]),t.get(e).push(n)}return[...t.keys()].sort((e,t)=>{let n=E(e),r=E(t);return n===r?e.localeCompare(t):n-r}).map(e=>({source:e,label:e?w(e):a(`chat.other`),sessions:t.get(e)}))});function N(e){if(!h.value.has(e))h.value=new Set([...h.value,e]);else{h.value=new Set(j.value.map(e=>e.source).filter(t=>t!==e));let t=j.value.find(t=>t.source===e);t?.sessions.length&&r.switchSession(t.sessions[0].id)}localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...h.value]))}d(j,e=>{localStorage.getItem(`hermes_collapsed_groups`)===null&&(h.value=new Set(e.slice(1).map(e=>e.source)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...h.value])))},{once:!0});let P=C(()=>r.activeSession?.title||a(`chat.newChat`)),F=C(()=>r.activeSession?.source||``);function I(){r.newChat()}function L(e){let t=e||r.activeSessionId;t&&(navigator.clipboard.writeText(t),i.success(a(`common.copied`)))}function R(e){r.deleteSession(e),i.success(a(`chat.sessionDeleted`))}function z(e){let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?t.toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}):t.toLocaleDateString([],{month:`short`,day:`numeric`})}let B=C(()=>[{label:a(`chat.rename`),key:`rename`},{label:a(`chat.copySessionId`),key:`copy-id`}]),V=e(null);function H(e,t){e.preventDefault(),V.value=t,U.value=!0,ee.value=e.clientX,W.value=e.clientY}let U=e(!1),ee=e(0),W=e(0);function te(e){if(U.value=!1,V.value){if(e===`copy-id`)L(V.value);else if(e===`rename`){let e=r.sessions.find(e=>e.id===V.value);f.value=V.value,l.value=e?.title||``,s.value=!0,S(()=>{p.value?.focus()})}}}function G(){U.value=!1}async function K(){if(!(!f.value||!l.value.trim())){if(await je(f.value,l.value.trim())){let e=r.sessions.find(e=>e.id===f.value);e&&(e.title=l.value.trim()),r.activeSession?.id===f.value&&(r.activeSession.title=l.value.trim()),i.success(a(`chat.renamed`))}else i.error(a(`chat.renameFailed`));s.value=!1}}return(e,t)=>(n(),A(`div`,tn,[b(`aside`,{class:T([`session-list`,{collapsed:!o.value}])},[b(`div`,nn,[o.value?(n(),A(`span`,rn,O(g(a)(`chat.sessions`)),1)):m(``,!0),M(g($),{quaternary:``,size:`tiny`,onClick:I,circle:``},{icon:u(()=>[...t[5]||=[b(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[b(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),b(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),_:1})]),o.value?(n(),A(`div`,an,[g(r).isLoadingSessions&&g(r).sessions.length===0?(n(),A(`div`,on,O(g(a)(`common.loading`)),1)):g(r).sessions.length===0?(n(),A(`div`,sn,O(g(a)(`chat.noSessions`)),1)):m(``,!0),(n(!0),A(k,null,c(j.value,e=>(n(),A(k,{key:e.source},[b(`div`,{class:`session-group-header`,onClick:t=>N(e.source)},[(n(),A(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:T([`group-chevron`,{collapsed:h.value.has(e.source)}])},[...t[6]||=[b(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),b(`span`,ln,O(e.label),1),b(`span`,un,O(e.sessions.length),1)],8,cn),h.value.has(e.source)?m(``,!0):(n(!0),A(k,{key:0},c(e.sessions,e=>(n(),A(`button`,{key:e.id,class:T([`session-item`,{active:e.id===g(r).activeSessionId}]),onClick:t=>g(r).switchSession(e.id),onContextmenu:t=>H(t,e.id)},[b(`div`,fn,[b(`span`,pn,O(e.title),1),b(`span`,mn,[e.model?(n(),A(`span`,hn,O(e.model),1)):m(``,!0),b(`span`,gn,O(z(e.createdAt)),1)])]),e.id!==g(r).activeSessionId||g(r).sessions.length>1?(n(),y(g(vt),{key:0,onPositiveClick:t=>R(e.id)},{trigger:u(()=>[b(`button`,{class:`session-item-delete`,onClick:t[0]||=v(()=>{},[`stop`])},[...t[7]||=[b(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[b(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),b(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])]),default:u(()=>[_(` `+O(g(a)(`chat.deleteSession`)),1)]),_:1},8,[`onPositiveClick`])):m(``,!0)],42,dn))),128))],64))),128))])):m(``,!0)],2),M(g(lt),{placement:`bottom-start`,trigger:`manual`,x:ee.value,y:W.value,options:B.value,show:U.value,onSelect:te,onClickoutside:G},null,8,[`x`,`y`,`options`,`show`]),M(g(Te),{show:s.value,"onUpdate:show":t[2]||=e=>s.value=e,preset:`dialog`,title:g(a)(`chat.renameSession`),"positive-text":g(a)(`common.ok`),"negative-text":g(a)(`common.cancel`),onPositiveClick:K},{default:u(()=>[M(g(Oe),{ref_key:`renameInputRef`,ref:p,value:l.value,"onUpdate:value":t[1]||=e=>l.value=e,placeholder:g(a)(`chat.enterNewTitle`),onKeydown:D(K,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`show`,`title`,`positive-text`,`negative-text`]),b(`div`,_n,[b(`header`,vn,[b(`div`,yn,[M(g($),{quaternary:``,size:`small`,onClick:t[3]||=e=>o.value=!o.value,circle:``},{icon:u(()=>[...t[8]||=[b(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[b(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`}),b(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`}),b(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`}),b(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`})],-1)]]),_:1}),b(`span`,bn,O(P.value),1),F.value?(n(),A(`span`,xn,O(w(F.value)),1)):m(``,!0)]),b(`div`,Sn,[M(g(ke),{trigger:`hover`},{trigger:u(()=>[M(g($),{quaternary:``,size:`small`,onClick:t[4]||=e=>L(),circle:``},{icon:u(()=>[...t[9]||=[b(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[b(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),b(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1)]]),_:1})]),default:u(()=>[_(` `+O(g(a)(`chat.copySessionId`)),1)]),_:1}),M(g($),{size:`small`,onClick:I},{icon:u(()=>[...t[10]||=[b(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[b(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),b(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),default:u(()=>[_(` `+O(g(a)(`chat.newChat`)),1)]),_:1})])]),M(en),M(Ot)])]))}}),[[`__scopeId`,`data-v-e8f92880`]]),wn={class:`chat-view`},Tn=q(l({__name:`ChatView`,setup(e){let t=Pe(),r=Ne();return o(()=>{t.loadModels(),r.loadSessions()}),(e,t)=>(n(),A(`div`,wn,[M(Cn)]))}}),[[`__scopeId`,`data-v-d35d4d9c`]]);export{Tn as default};
@@ -0,0 +1,45 @@
1
+ import{S as e,m as t,rt as n,w as r}from"./vue.runtime.esm-bundler-LsUadeZi.js";import{dt as i,ot as a,st as o,u as s,ut as c}from"./_plugin-vue_export-helper-AI_aJZ2_.js";import{c as l,s as u}from"./Suffix-B6bqA1w3.js";function d(e,n){return t(()=>{for(let t of n)if(e[t]!==void 0)return e[t];return e[n[n.length-1]]})}var f=u(`close`,()=>r(`svg`,{viewBox:`0 0 12 12`,version:`1.1`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":!0},r(`g`,{stroke:`none`,"stroke-width":`1`,fill:`none`,"fill-rule":`evenodd`},r(`g`,{fill:`currentColor`,"fill-rule":`nonzero`},r(`path`,{d:`M2.08859116,2.2156945 L2.14644661,2.14644661 C2.32001296,1.97288026 2.58943736,1.95359511 2.7843055,2.08859116 L2.85355339,2.14644661 L6,5.293 L9.14644661,2.14644661 C9.34170876,1.95118446 9.65829124,1.95118446 9.85355339,2.14644661 C10.0488155,2.34170876 10.0488155,2.65829124 9.85355339,2.85355339 L6.707,6 L9.85355339,9.14644661 C10.0271197,9.32001296 10.0464049,9.58943736 9.91140884,9.7843055 L9.85355339,9.85355339 C9.67998704,10.0271197 9.41056264,10.0464049 9.2156945,9.91140884 L9.14644661,9.85355339 L6,6.707 L2.85355339,9.85355339 C2.65829124,10.0488155 2.34170876,10.0488155 2.14644661,9.85355339 C1.95118446,9.65829124 1.95118446,9.34170876 2.14644661,9.14644661 L5.293,6 L2.14644661,2.85355339 C1.97288026,2.67998704 1.95359511,2.41056264 2.08859116,2.2156945 L2.14644661,2.14644661 L2.08859116,2.2156945 Z`}))))),p=o(`base-close`,`
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: center;
5
+ cursor: pointer;
6
+ background-color: transparent;
7
+ color: var(--n-close-icon-color);
8
+ border-radius: var(--n-close-border-radius);
9
+ height: var(--n-close-size);
10
+ width: var(--n-close-size);
11
+ font-size: var(--n-close-icon-size);
12
+ outline: none;
13
+ border: none;
14
+ position: relative;
15
+ padding: 0;
16
+ `,[c(`absolute`,`
17
+ height: var(--n-close-icon-size);
18
+ width: var(--n-close-icon-size);
19
+ `),a(`&::before`,`
20
+ content: "";
21
+ position: absolute;
22
+ width: var(--n-close-size);
23
+ height: var(--n-close-size);
24
+ left: 50%;
25
+ top: 50%;
26
+ transform: translateY(-50%) translateX(-50%);
27
+ transition: inherit;
28
+ border-radius: inherit;
29
+ `),i(`disabled`,[a(`&:hover`,`
30
+ color: var(--n-close-icon-color-hover);
31
+ `),a(`&:hover::before`,`
32
+ background-color: var(--n-close-color-hover);
33
+ `),a(`&:focus::before`,`
34
+ background-color: var(--n-close-color-hover);
35
+ `),a(`&:active`,`
36
+ color: var(--n-close-icon-color-pressed);
37
+ `),a(`&:active::before`,`
38
+ background-color: var(--n-close-color-pressed);
39
+ `)]),c(`disabled`,`
40
+ cursor: not-allowed;
41
+ color: var(--n-close-icon-color-disabled);
42
+ background-color: transparent;
43
+ `),c(`round`,[a(`&::before`,`
44
+ border-radius: 50%;
45
+ `)])]),m=e({name:`BaseClose`,props:{isButtonTag:{type:Boolean,default:!0},clsPrefix:{type:String,required:!0},disabled:{type:Boolean,default:void 0},focusable:{type:Boolean,default:!0},round:Boolean,onClick:Function,absolute:Boolean},setup(e){return s(`-base-close`,p,n(e,`clsPrefix`)),()=>{let{clsPrefix:t,disabled:n,absolute:i,round:a,isButtonTag:o}=e;return r(o?`button`:`div`,{type:o?`button`:void 0,tabindex:n||!e.focusable?-1:0,"aria-disabled":n,"aria-label":`close`,role:o?void 0:`button`,disabled:n,class:[`${t}-base-close`,i&&`${t}-base-close--absolute`,n&&`${t}-base-close--disabled`,a&&`${t}-base-close--round`],onMousedown:t=>{e.focusable||t.preventDefault()},onClick:e.onClick},r(l,{clsPrefix:t},{default:()=>r(f,null)}))}}});export{d as n,m as t};