hermes-web-ui 0.2.2 → 0.2.3

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 (89) hide show
  1. package/README.md +30 -6
  2. package/bin/hermes-web-ui.mjs +34 -4
  3. package/dist/assets/Button-CQLKwjHl.js +109 -0
  4. package/dist/assets/ChannelsView-Bdv3P2Rv.js +1 -0
  5. package/dist/assets/ChatView-BGSDL0hI.js +142 -0
  6. package/dist/assets/{ChatView-BVHQ6KhU.css → ChatView-CGsFaSiv.css} +1 -1
  7. package/dist/assets/Close-inn9RP7R.js +45 -0
  8. package/dist/assets/FormItem-BvJieJmq.js +110 -0
  9. package/dist/assets/Input-edKmVCeM.js +234 -0
  10. package/dist/assets/InputNumber-BpYEJnKY.js +13 -0
  11. package/dist/assets/JobsView-Dx4HmGC6.js +2 -0
  12. package/dist/assets/LoginView-BHThbj0n.css +1 -0
  13. package/dist/assets/LoginView-CIQSZ6bh.js +1 -0
  14. package/dist/assets/LogsView-nn7t6RGX.js +1 -0
  15. package/dist/assets/{MarkdownRenderer-C2pkccH2.js → MarkdownRenderer-Yw5JS7CE.js} +9 -9
  16. package/dist/assets/MemoryView-CE9P7mef.js +5 -0
  17. package/dist/assets/Modal-CDRYujZp.js +232 -0
  18. package/dist/assets/ModelsView-B72PAvvd.js +1 -0
  19. package/dist/assets/Popover-CRhyj79I.js +117 -0
  20. package/dist/assets/Select-CXQmv_5e.js +340 -0
  21. package/dist/assets/SettingRow-B3O4TYKh.js +1 -0
  22. package/dist/assets/SettingsView-BF2Uh-Eo.js +352 -0
  23. package/dist/assets/SkillsView-Abm6Dt2r.css +1 -0
  24. package/dist/assets/SkillsView-CeUPV9g8.js +1 -0
  25. package/dist/assets/Spin-COypV4Iq.js +43 -0
  26. package/dist/assets/Suffix-Bs0SC_yA.js +101 -0
  27. package/dist/assets/Switch-BcUqwhfi.js +102 -0
  28. package/dist/assets/Tag-CVO-_zgr.js +71 -0
  29. package/dist/assets/Tooltip-BljrRE17.js +1 -0
  30. package/dist/assets/UsageView-CFH6hwxE.js +1 -0
  31. package/dist/assets/_plugin-vue_export-helper-DJRCopG_.js +3 -0
  32. package/dist/assets/app-BcCNNvPk.js +1 -0
  33. package/dist/assets/app-CMJknO_z.js +1 -0
  34. package/dist/assets/browser-BuJOvks2.js +47 -0
  35. package/dist/assets/chat-DIeO-6BT.js +6 -0
  36. package/dist/assets/context-C8Jv60vX.js +1 -0
  37. package/dist/assets/index-BZ3NfTDJ.css +1 -0
  38. package/dist/assets/index-Bj9YOu02.js +306 -0
  39. package/dist/assets/jobs-CnB9OiiZ.js +1 -0
  40. package/dist/assets/logo-CiQBpLPw.js +1 -0
  41. package/dist/assets/pinia-YU9i-6Bb.js +1 -0
  42. package/dist/assets/router--r9mOZY5.js +4 -0
  43. package/dist/assets/{sessions-DYkP_X2v.js → sessions-COjIc6fz.js} +1 -1
  44. package/dist/assets/{skills-C6QBmS9j.js → skills-C4yD0aCK.js} +1 -1
  45. package/dist/assets/use-message-D8bO1GLN.js +1 -0
  46. package/dist/index.html +18 -18
  47. package/dist/server/index.js +104 -61
  48. package/dist/server/routes/filesystem.js +38 -0
  49. package/dist/server/services/auth.d.ts +9 -0
  50. package/dist/server/services/auth.js +65 -0
  51. package/dist/server/services/hermes-cli.js +13 -1
  52. package/package.json +2 -2
  53. package/dist/assets/Button-CpNld4Mc.js +0 -109
  54. package/dist/assets/ChannelsView-BGXB46ZU.js +0 -1
  55. package/dist/assets/ChatView-CaO-j1NR.js +0 -142
  56. package/dist/assets/Close-BAvirVyH.js +0 -45
  57. package/dist/assets/FormItem-DUC1YCrh.js +0 -110
  58. package/dist/assets/Input-CCmp4iGM.js +0 -234
  59. package/dist/assets/InputNumber-DpIdrMEW.js +0 -13
  60. package/dist/assets/JobsView-t5o1pB0r.js +0 -2
  61. package/dist/assets/LogsView-QqOV3ZEf.js +0 -1
  62. package/dist/assets/MemoryView-oeAn8ZfB.js +0 -5
  63. package/dist/assets/Modal-BljFqAJF.js +0 -232
  64. package/dist/assets/ModelsView-DvK44HBy.js +0 -1
  65. package/dist/assets/Popover-BQMR8Xxo.js +0 -117
  66. package/dist/assets/Select-D33SMWcz.js +0 -340
  67. package/dist/assets/SettingRow-BxCsRfGG.js +0 -102
  68. package/dist/assets/SettingsView-CK9ArFcg.js +0 -352
  69. package/dist/assets/SkillsView-BvNhRbMq.css +0 -1
  70. package/dist/assets/SkillsView-_z2SQ9kJ.js +0 -1
  71. package/dist/assets/Spin-CwbBDHwW.js +0 -43
  72. package/dist/assets/Suffix-CKUJBJSi.js +0 -101
  73. package/dist/assets/Tag-87KswiOb.js +0 -71
  74. package/dist/assets/Tooltip-CuLVJgy8.js +0 -1
  75. package/dist/assets/UsageView-COiUupLe.js +0 -1
  76. package/dist/assets/_plugin-vue_export-helper-C7dadZ10.js +0 -49
  77. package/dist/assets/app-DX-WvBe8.js +0 -1
  78. package/dist/assets/app-DwI_Lyfm.js +0 -1
  79. package/dist/assets/chat-De2jGIM6.js +0 -6
  80. package/dist/assets/client-D-w1KhaU.js +0 -1
  81. package/dist/assets/context-vjXbZCu8.js +0 -1
  82. package/dist/assets/index-D3MGnlpF.js +0 -307
  83. package/dist/assets/index-DCNlSGk-.css +0 -1
  84. package/dist/assets/jobs-B2WdYQNb.js +0 -1
  85. package/dist/assets/pinia-B4dETPKk.js +0 -1
  86. package/dist/assets/preload-helper-D4M6sveU.js +0 -1
  87. package/dist/assets/use-message-BeTKmVAO.js +0 -1
  88. package/dist/assets/vue.runtime.esm-bundler-BoqZ7fRe.js +0 -3
  89. /package/dist/{assets/logo-BAarh-tH.png → logo.png} +0 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Hermes Web UI
2
2
 
3
- Web dashboard for [Hermes Agent](https://github.com/NousResearch/hermes-agent) — chat interaction, session management, scheduled jobs, platform channel configuration, and log viewing.
3
+ Web dashboard for [Hermes Agent](https://github.com/NousResearch/hermes-agent) — chat interaction, session management, scheduled jobs, usage statistics, platform channel configuration, and log viewing.
4
4
 
5
5
  ![Hermes Web UI Demo](https://github.com/EKKOLearnAI/hermes-web-ui/blob/main/src/assets/output.gif)
6
6
 
@@ -57,11 +57,20 @@ Automatically installs Node.js (if missing) and hermes-web-ui on Debian/Ubuntu/m
57
57
  | `hermes-web-ui stop` | Stop background process |
58
58
  | `hermes-web-ui restart` | Restart background process |
59
59
  | `hermes-web-ui status` | Check if running |
60
+ | `hermes-web-ui update` | Update to latest version & restart|
61
+ | `hermes-web-ui -v` | Show version number |
62
+ | `hermes-web-ui -h` | Show help message |
60
63
  | `hermes-web-ui` | Run in foreground (for debugging) |
61
64
 
62
65
  ### Auto Configuration
63
66
 
64
- On startup, the BFF server automatically checks `~/.hermes/config.yaml` and ensures `platforms.api_server.enabled` is set to `true`. If modified, it backs up the original to `config.yaml.bak` and restarts the gateway.
67
+ On startup, the BFF server automatically:
68
+
69
+ - Checks `~/.hermes/config.yaml` and ensures `platforms.api_server` has all required fields (`enabled`, `host`, `port`, `key`, `cors_origins`)
70
+ - If any field is missing, backs up the original to `config.yaml.bak`, fills in defaults, and restarts the gateway
71
+ - Detects if the gateway is running and starts it if needed
72
+ - Kills any process occupying the target port before starting
73
+ - Opens the browser automatically after successful startup
65
74
 
66
75
  ## Development
67
76
 
@@ -90,7 +99,7 @@ Outputs to `dist/` (frontend + compiled BFF server).
90
99
  ```
91
100
  hermes-web-ui/
92
101
  ├── bin/
93
- │ └── hermes-web-ui.mjs # CLI entry (start/stop/restart/status)
102
+ │ └── hermes-web-ui.mjs # CLI entry (start/stop/restart/status/update/version/help)
94
103
  ├── server/src/
95
104
  │ ├── index.ts # BFF entry (Koa app bootstrap)
96
105
  │ ├── config.ts # Configuration (port, upstream, etc.)
@@ -124,6 +133,7 @@ hermes-web-ui/
124
133
  │ │ ├── settings/ # Settings components
125
134
  │ │ │ ├── PlatformCard.vue # Platform card with config status
126
135
  │ │ │ └── PlatformSettings.vue # Platform channel configuration
136
+ │ │ ├── usage/ # Usage statistics components
127
137
  │ │ └── skills/ # Skill components
128
138
  │ ├── views/
129
139
  │ │ ├── ChatView.vue # Chat page
@@ -133,6 +143,7 @@ hermes-web-ui/
133
143
  │ │ ├── ChannelsView.vue # Platform channels page
134
144
  │ │ ├── SkillsView.vue # Skills page
135
145
  │ │ ├── MemoryView.vue # Memory page
146
+ │ │ ├── UsageView.vue # Usage statistics page
136
147
  │ │ └── SettingsView.vue # Settings page
137
148
  │ └── router/index.ts # Router configuration
138
149
  └── dist/ # Build output (published to npm)
@@ -156,6 +167,17 @@ hermes-web-ui/
156
167
  - Model selector — automatically discovers available models from `~/.hermes/auth.json` credential pool
157
168
  - Global model switching (updates `~/.hermes/config.yaml`)
158
169
  - Per-session model display (badge in chat header and session list)
170
+ - Context token usage display (used / total)
171
+
172
+ ### Usage Statistics
173
+
174
+ - Total token usage breakdown (input / output)
175
+ - Session count with daily average
176
+ - Estimated cost tracking
177
+ - Cache hit rate
178
+ - Model usage distribution (horizontal bar chart)
179
+ - 30-day daily trend (bar chart + data table)
180
+ - Hover tooltips on chart bars
159
181
 
160
182
  ### Platform Channels
161
183
 
@@ -208,8 +230,10 @@ hermes-web-ui/
208
230
  - Internationalization — auto-detect browser language, manual toggle between Chinese and English
209
231
  - Real-time connection status monitoring
210
232
  - Hermes version display in sidebar
211
- - Auto config check on startup
212
- - Minimalist dark theme
233
+ - Auto config check on startup with field-level validation
234
+ - Port conflict auto-resolution (kills stale processes)
235
+ - Auto browser open on startup
236
+ - Minimalist "Pure Ink" theme
213
237
  - Session group collapse state persisted across navigation
214
238
 
215
239
  ## Architecture
@@ -229,7 +253,7 @@ The BFF layer handles:
229
253
  - API proxy to Hermes (with header forwarding)
230
254
  - SSE streaming passthrough
231
255
  - File upload to temp directory
232
- - Session CRUD via Hermes CLI
256
+ - Session CRUD via Hermes CLI (with cache/cost token passthrough)
233
257
  - Config & credential management (config.yaml + .env)
234
258
  - WeChat QR code login flow (fetch QR, poll status, save credentials)
235
259
  - Auto gateway restart on platform config changes
@@ -3,6 +3,7 @@ import { spawn, execSync } from 'child_process'
3
3
  import { resolve, dirname, join } from 'path'
4
4
  import { fileURLToPath } from 'url'
5
5
  import { readFileSync, writeFileSync, unlinkSync, mkdirSync, openSync } from 'fs'
6
+ import { randomBytes } from 'crypto'
6
7
  import { homedir } from 'os'
7
8
 
8
9
  const __dirname = dirname(fileURLToPath(import.meta.url))
@@ -12,8 +13,31 @@ const VERSION = pkg.version
12
13
  const PID_DIR = resolve(homedir(), '.hermes-web-ui')
13
14
  const PID_FILE = join(PID_DIR, 'server.pid')
14
15
  const LOG_FILE = join(PID_DIR, 'server.log')
16
+ const TOKEN_FILE = resolve(__dirname, '..', 'dist', 'server', 'data', '.token')
15
17
  const DEFAULT_PORT = 8648
16
18
 
19
+ function getToken() {
20
+ try {
21
+ return readFileSync(TOKEN_FILE, 'utf-8').trim()
22
+ } catch {
23
+ return null
24
+ }
25
+ }
26
+
27
+ function ensureToken() {
28
+ // If AUTH_DISABLED or AUTH_TOKEN is set, let server handle it
29
+ if (process.env.AUTH_DISABLED === '1' || process.env.AUTH_DISABLED === 'true') return null
30
+ if (process.env.AUTH_TOKEN) return process.env.AUTH_TOKEN
31
+
32
+ let token = getToken()
33
+ if (!token) {
34
+ mkdirSync(dirname(TOKEN_FILE), { recursive: true })
35
+ token = randomBytes(32).toString('hex')
36
+ writeFileSync(TOKEN_FILE, token + '\n', { mode: 0o600 })
37
+ }
38
+ return token
39
+ }
40
+
17
41
  function getPort() {
18
42
  if (process.argv[3] && !isNaN(process.argv[3])) return parseInt(process.argv[3])
19
43
  if (process.argv.includes('--port')) return parseInt(process.argv[process.argv.indexOf('--port') + 1])
@@ -81,11 +105,14 @@ function startDaemon(port) {
81
105
 
82
106
  mkdirSync(PID_DIR, { recursive: true })
83
107
 
108
+ const token = ensureToken()
109
+
84
110
  const logStream = openSync(LOG_FILE, 'a')
85
111
  const child = spawn(process.execPath, [serverEntry], {
86
112
  detached: true,
87
113
  stdio: ['ignore', logStream, logStream],
88
- env: { ...process.env, PORT: String(port) },
114
+ env: { ...process.env, PORT: String(port), AUTH_TOKEN: token },
115
+ windowsHide: true,
89
116
  })
90
117
 
91
118
  child.on('error', (err) => {
@@ -100,10 +127,11 @@ function startDaemon(port) {
100
127
  setTimeout(() => {
101
128
  if (isRunning(child.pid)) {
102
129
  console.log(` ✓ hermes-web-ui started (PID: ${child.pid}, port: ${port})`)
103
- console.log(` http://localhost:${port}`)
130
+ const url = token
131
+ ? `http://localhost:${port}/#/?token=${token}`
132
+ : `http://localhost:${port}`
133
+ console.log(` ${url}`)
104
134
  console.log(` Log: ${LOG_FILE}`)
105
- // Open browser
106
- const url = `http://localhost:${port}`
107
135
  const isWin = process.platform === 'win32'
108
136
  const cmd = isWin ? `start ${url}` : process.platform === 'darwin' ? `open ${url}` : `xdg-open ${url}`
109
137
  try { execSync(cmd, { stdio: 'ignore' }) } catch {}
@@ -199,6 +227,7 @@ function doUpdate() {
199
227
 
200
228
  const child = spawn(isWin ? 'cmd' : 'sh', isWin ? ['/c', ...cmd.split(' ')] : ['-c', cmd], {
201
229
  stdio: 'inherit',
230
+ windowsHide: true,
202
231
  })
203
232
 
204
233
  child.on('exit', (code) => {
@@ -235,6 +264,7 @@ switch (command) {
235
264
  const child = spawn(process.execPath, [serverEntry], {
236
265
  stdio: 'inherit',
237
266
  env: { ...process.env, PORT: String(port) },
267
+ windowsHide: true,
238
268
  })
239
269
  child.on('exit', (code) => process.exit(code ?? 1))
240
270
  process.on('SIGTERM', () => child.kill('SIGTERM'))
@@ -0,0 +1,109 @@
1
+ import{A as e,B as t,L as n,M as r,P as i,S as a,d as o,st as s,u as c,ut as l}from"./router--r9mOZY5.js";import{B as u,K as d,Q as f,R as p,U as m,Z as h,a as g,at as _,c as v,ct as y,d as b,dt as x,et as S,l as C,lt as w,n as T,nt as E,o as D,ot as O,q as k,r as A,t as j,tt as M,u as N,ut as P,z as F}from"./browser-BuJOvks2.js";function I(e){return e.replace(/#|\(|\)|,|\s|\./g,`_`)}var L=e({name:`FadeInExpandTransition`,props:{appear:Boolean,group:Boolean,mode:String,onLeave:Function,onAfterLeave:Function,onAfterEnter:Function,width:Boolean,reverse:Boolean},setup(e,{slots:t}){function n(t){e.width?t.style.maxWidth=`${t.offsetWidth}px`:t.style.maxHeight=`${t.offsetHeight}px`,t.offsetWidth}function i(t){e.width?t.style.maxWidth=`0`:t.style.maxHeight=`0`,t.offsetWidth;let{onLeave:n}=e;n&&n()}function a(t){e.width?t.style.maxWidth=``:t.style.maxHeight=``;let{onAfterLeave:n}=e;n&&n()}function s(t){if(t.style.transition=`none`,e.width){let e=t.offsetWidth;t.style.maxWidth=`0`,t.offsetWidth,t.style.transition=``,t.style.maxWidth=`${e}px`}else if(e.reverse)t.style.maxHeight=`${t.offsetHeight}px`,t.offsetHeight,t.style.transition=``,t.style.maxHeight=`0`;else{let e=t.offsetHeight;t.style.maxHeight=`0`,t.offsetWidth,t.style.transition=``,t.style.maxHeight=`${e}px`}t.offsetWidth}function l(t){var n;e.width?t.style.maxWidth=``:e.reverse||(t.style.maxHeight=``),(n=e.onAfterEnter)==null||n.call(e)}return()=>{let{group:u,width:d,appear:f,mode:p}=e,m=u?o:c,h={name:d?`fade-in-width-expand-transition`:`fade-in-height-expand-transition`,appear:f,onEnter:s,onAfterEnter:l,onBeforeLeave:n,onLeave:i,onAfterLeave:a};return u||(h.mode=p),r(m,h,t)}}}),{cubicBezierEaseInOut:R}=N;function z({duration:e=`.2s`,delay:t=`.1s`}={}){return[_(`&.fade-in-width-expand-transition-leave-from, &.fade-in-width-expand-transition-enter-to`,{opacity:1}),_(`&.fade-in-width-expand-transition-leave-to, &.fade-in-width-expand-transition-enter-from`,`
2
+ opacity: 0!important;
3
+ margin-left: 0!important;
4
+ margin-right: 0!important;
5
+ `),_(`&.fade-in-width-expand-transition-leave-active`,`
6
+ overflow: hidden;
7
+ transition:
8
+ opacity ${e} ${R},
9
+ max-width ${e} ${R} ${t},
10
+ margin-left ${e} ${R} ${t},
11
+ margin-right ${e} ${R} ${t};
12
+ `),_(`&.fade-in-width-expand-transition-enter-active`,`
13
+ overflow: hidden;
14
+ transition:
15
+ opacity ${e} ${R} ${t},
16
+ max-width ${e} ${R},
17
+ margin-left ${e} ${R},
18
+ margin-right ${e} ${R};
19
+ `)]}var B=O(`base-wave`,`
20
+ position: absolute;
21
+ left: 0;
22
+ right: 0;
23
+ top: 0;
24
+ bottom: 0;
25
+ border-radius: inherit;
26
+ `),V=e({name:`BaseWave`,props:{clsPrefix:{type:String,required:!0}},setup(e){C(`-base-wave`,B,l(e,`clsPrefix`));let r=s(null),i=s(!1),a=null;return t(()=>{a!==null&&window.clearTimeout(a)}),{active:i,selfRef:r,play(){a!==null&&(window.clearTimeout(a),i.value=!1,a=null),n(()=>{var e;(e=r.value)==null||e.offsetHeight,i.value=!0,a=window.setTimeout(()=>{i.value=!1,a=null},1e3)})}}},render(){let{clsPrefix:e}=this;return r(`div`,{ref:`selfRef`,"aria-hidden":!0,class:[`${e}-base-wave`,this.active&&`${e}-base-wave--active`]})}});function H(e){return E(e,[255,255,255,.16])}function U(e){return E(e,[0,0,0,.12])}var W=f(`n-button-group`),G={paddingTiny:`0 6px`,paddingSmall:`0 10px`,paddingMedium:`0 14px`,paddingLarge:`0 18px`,paddingRoundTiny:`0 10px`,paddingRoundSmall:`0 14px`,paddingRoundMedium:`0 18px`,paddingRoundLarge:`0 22px`,iconMarginTiny:`6px`,iconMarginSmall:`6px`,iconMarginMedium:`6px`,iconMarginLarge:`6px`,iconSizeTiny:`14px`,iconSizeSmall:`18px`,iconSizeMedium:`18px`,iconSizeLarge:`20px`,rippleDuration:`.6s`};function K(e){let{heightTiny:t,heightSmall:n,heightMedium:r,heightLarge:i,borderRadius:a,fontSizeTiny:o,fontSizeSmall:s,fontSizeMedium:c,fontSizeLarge:l,opacityDisabled:u,textColor2:d,textColor3:f,primaryColorHover:p,primaryColorPressed:m,borderColor:h,primaryColor:g,baseColor:_,infoColor:v,infoColorHover:y,infoColorPressed:b,successColor:x,successColorHover:S,successColorPressed:C,warningColor:w,warningColorHover:T,warningColorPressed:E,errorColor:D,errorColorHover:O,errorColorPressed:k,fontWeight:A,buttonColor2:j,buttonColor2Hover:M,buttonColor2Pressed:N,fontWeightStrong:P}=e;return Object.assign(Object.assign({},G),{heightTiny:t,heightSmall:n,heightMedium:r,heightLarge:i,borderRadiusTiny:a,borderRadiusSmall:a,borderRadiusMedium:a,borderRadiusLarge:a,fontSizeTiny:o,fontSizeSmall:s,fontSizeMedium:c,fontSizeLarge:l,opacityDisabled:u,colorOpacitySecondary:`0.16`,colorOpacitySecondaryHover:`0.22`,colorOpacitySecondaryPressed:`0.28`,colorSecondary:j,colorSecondaryHover:M,colorSecondaryPressed:N,colorTertiary:j,colorTertiaryHover:M,colorTertiaryPressed:N,colorQuaternary:`#0000`,colorQuaternaryHover:M,colorQuaternaryPressed:N,color:`#0000`,colorHover:`#0000`,colorPressed:`#0000`,colorFocus:`#0000`,colorDisabled:`#0000`,textColor:d,textColorTertiary:f,textColorHover:p,textColorPressed:m,textColorFocus:p,textColorDisabled:d,textColorText:d,textColorTextHover:p,textColorTextPressed:m,textColorTextFocus:p,textColorTextDisabled:d,textColorGhost:d,textColorGhostHover:p,textColorGhostPressed:m,textColorGhostFocus:p,textColorGhostDisabled:d,border:`1px solid ${h}`,borderHover:`1px solid ${p}`,borderPressed:`1px solid ${m}`,borderFocus:`1px solid ${p}`,borderDisabled:`1px solid ${h}`,rippleColor:g,colorPrimary:g,colorHoverPrimary:p,colorPressedPrimary:m,colorFocusPrimary:p,colorDisabledPrimary:g,textColorPrimary:_,textColorHoverPrimary:_,textColorPressedPrimary:_,textColorFocusPrimary:_,textColorDisabledPrimary:_,textColorTextPrimary:g,textColorTextHoverPrimary:p,textColorTextPressedPrimary:m,textColorTextFocusPrimary:p,textColorTextDisabledPrimary:d,textColorGhostPrimary:g,textColorGhostHoverPrimary:p,textColorGhostPressedPrimary:m,textColorGhostFocusPrimary:p,textColorGhostDisabledPrimary:g,borderPrimary:`1px solid ${g}`,borderHoverPrimary:`1px solid ${p}`,borderPressedPrimary:`1px solid ${m}`,borderFocusPrimary:`1px solid ${p}`,borderDisabledPrimary:`1px solid ${g}`,rippleColorPrimary:g,colorInfo:v,colorHoverInfo:y,colorPressedInfo:b,colorFocusInfo:y,colorDisabledInfo:v,textColorInfo:_,textColorHoverInfo:_,textColorPressedInfo:_,textColorFocusInfo:_,textColorDisabledInfo:_,textColorTextInfo:v,textColorTextHoverInfo:y,textColorTextPressedInfo:b,textColorTextFocusInfo:y,textColorTextDisabledInfo:d,textColorGhostInfo:v,textColorGhostHoverInfo:y,textColorGhostPressedInfo:b,textColorGhostFocusInfo:y,textColorGhostDisabledInfo:v,borderInfo:`1px solid ${v}`,borderHoverInfo:`1px solid ${y}`,borderPressedInfo:`1px solid ${b}`,borderFocusInfo:`1px solid ${y}`,borderDisabledInfo:`1px solid ${v}`,rippleColorInfo:v,colorSuccess:x,colorHoverSuccess:S,colorPressedSuccess:C,colorFocusSuccess:S,colorDisabledSuccess:x,textColorSuccess:_,textColorHoverSuccess:_,textColorPressedSuccess:_,textColorFocusSuccess:_,textColorDisabledSuccess:_,textColorTextSuccess:x,textColorTextHoverSuccess:S,textColorTextPressedSuccess:C,textColorTextFocusSuccess:S,textColorTextDisabledSuccess:d,textColorGhostSuccess:x,textColorGhostHoverSuccess:S,textColorGhostPressedSuccess:C,textColorGhostFocusSuccess:S,textColorGhostDisabledSuccess:x,borderSuccess:`1px solid ${x}`,borderHoverSuccess:`1px solid ${S}`,borderPressedSuccess:`1px solid ${C}`,borderFocusSuccess:`1px solid ${S}`,borderDisabledSuccess:`1px solid ${x}`,rippleColorSuccess:x,colorWarning:w,colorHoverWarning:T,colorPressedWarning:E,colorFocusWarning:T,colorDisabledWarning:w,textColorWarning:_,textColorHoverWarning:_,textColorPressedWarning:_,textColorFocusWarning:_,textColorDisabledWarning:_,textColorTextWarning:w,textColorTextHoverWarning:T,textColorTextPressedWarning:E,textColorTextFocusWarning:T,textColorTextDisabledWarning:d,textColorGhostWarning:w,textColorGhostHoverWarning:T,textColorGhostPressedWarning:E,textColorGhostFocusWarning:T,textColorGhostDisabledWarning:w,borderWarning:`1px solid ${w}`,borderHoverWarning:`1px solid ${T}`,borderPressedWarning:`1px solid ${E}`,borderFocusWarning:`1px solid ${T}`,borderDisabledWarning:`1px solid ${w}`,rippleColorWarning:w,colorError:D,colorHoverError:O,colorPressedError:k,colorFocusError:O,colorDisabledError:D,textColorError:_,textColorHoverError:_,textColorPressedError:_,textColorFocusError:_,textColorDisabledError:_,textColorTextError:D,textColorTextHoverError:O,textColorTextPressedError:k,textColorTextFocusError:O,textColorTextDisabledError:d,textColorGhostError:D,textColorGhostHoverError:O,textColorGhostPressedError:k,textColorGhostFocusError:O,textColorGhostDisabledError:D,borderError:`1px solid ${D}`,borderHoverError:`1px solid ${O}`,borderPressedError:`1px solid ${k}`,borderFocusError:`1px solid ${O}`,borderDisabledError:`1px solid ${D}`,rippleColorError:D,waveOpacity:`0.6`,fontWeight:A,fontWeightStrong:P})}var q={name:`Button`,common:T,self:K},J=_([O(`button`,`
27
+ margin: 0;
28
+ font-weight: var(--n-font-weight);
29
+ line-height: 1;
30
+ font-family: inherit;
31
+ padding: var(--n-padding);
32
+ height: var(--n-height);
33
+ font-size: var(--n-font-size);
34
+ border-radius: var(--n-border-radius);
35
+ color: var(--n-text-color);
36
+ background-color: var(--n-color);
37
+ width: var(--n-width);
38
+ white-space: nowrap;
39
+ outline: none;
40
+ position: relative;
41
+ z-index: auto;
42
+ border: none;
43
+ display: inline-flex;
44
+ flex-wrap: nowrap;
45
+ flex-shrink: 0;
46
+ align-items: center;
47
+ justify-content: center;
48
+ user-select: none;
49
+ -webkit-user-select: none;
50
+ text-align: center;
51
+ cursor: pointer;
52
+ text-decoration: none;
53
+ transition:
54
+ color .3s var(--n-bezier),
55
+ background-color .3s var(--n-bezier),
56
+ opacity .3s var(--n-bezier),
57
+ border-color .3s var(--n-bezier);
58
+ `,[w(`color`,[y(`border`,{borderColor:`var(--n-border-color)`}),w(`disabled`,[y(`border`,{borderColor:`var(--n-border-color-disabled)`})]),P(`disabled`,[_(`&:focus`,[y(`state-border`,{borderColor:`var(--n-border-color-focus)`})]),_(`&:hover`,[y(`state-border`,{borderColor:`var(--n-border-color-hover)`})]),_(`&:active`,[y(`state-border`,{borderColor:`var(--n-border-color-pressed)`})]),w(`pressed`,[y(`state-border`,{borderColor:`var(--n-border-color-pressed)`})])])]),w(`disabled`,{backgroundColor:`var(--n-color-disabled)`,color:`var(--n-text-color-disabled)`},[y(`border`,{border:`var(--n-border-disabled)`})]),P(`disabled`,[_(`&:focus`,{backgroundColor:`var(--n-color-focus)`,color:`var(--n-text-color-focus)`},[y(`state-border`,{border:`var(--n-border-focus)`})]),_(`&:hover`,{backgroundColor:`var(--n-color-hover)`,color:`var(--n-text-color-hover)`},[y(`state-border`,{border:`var(--n-border-hover)`})]),_(`&:active`,{backgroundColor:`var(--n-color-pressed)`,color:`var(--n-text-color-pressed)`},[y(`state-border`,{border:`var(--n-border-pressed)`})]),w(`pressed`,{backgroundColor:`var(--n-color-pressed)`,color:`var(--n-text-color-pressed)`},[y(`state-border`,{border:`var(--n-border-pressed)`})])]),w(`loading`,`cursor: wait;`),O(`base-wave`,`
59
+ pointer-events: none;
60
+ top: 0;
61
+ right: 0;
62
+ bottom: 0;
63
+ left: 0;
64
+ animation-iteration-count: 1;
65
+ animation-duration: var(--n-ripple-duration);
66
+ animation-timing-function: var(--n-bezier-ease-out), var(--n-bezier-ease-out);
67
+ `,[w(`active`,{zIndex:1,animationName:`button-wave-spread, button-wave-opacity`})]),h&&`MozBoxSizing`in document.createElement(`div`).style?_(`&::moz-focus-inner`,{border:0}):null,y(`border, state-border`,`
68
+ position: absolute;
69
+ left: 0;
70
+ top: 0;
71
+ right: 0;
72
+ bottom: 0;
73
+ border-radius: inherit;
74
+ transition: border-color .3s var(--n-bezier);
75
+ pointer-events: none;
76
+ `),y(`border`,`
77
+ border: var(--n-border);
78
+ `),y(`state-border`,`
79
+ border: var(--n-border);
80
+ border-color: #0000;
81
+ z-index: 1;
82
+ `),y(`icon`,`
83
+ margin: var(--n-icon-margin);
84
+ margin-left: 0;
85
+ height: var(--n-icon-size);
86
+ width: var(--n-icon-size);
87
+ max-width: var(--n-icon-size);
88
+ font-size: var(--n-icon-size);
89
+ position: relative;
90
+ flex-shrink: 0;
91
+ `,[O(`icon-slot`,`
92
+ height: var(--n-icon-size);
93
+ width: var(--n-icon-size);
94
+ position: absolute;
95
+ left: 0;
96
+ top: 50%;
97
+ transform: translateY(-50%);
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ `,[g({top:`50%`,originalTransform:`translateY(-50%)`})]),z()]),y(`content`,`
102
+ display: flex;
103
+ align-items: center;
104
+ flex-wrap: nowrap;
105
+ min-width: 0;
106
+ `,[_(`~`,[y(`icon`,{margin:`var(--n-icon-margin)`,marginRight:0})])]),w(`block`,`
107
+ display: flex;
108
+ width: 100%;
109
+ `),w(`dashed`,[y(`border, state-border`,{borderStyle:`dashed !important`})]),w(`disabled`,{cursor:`not-allowed`,opacity:`var(--n-opacity-disabled)`})]),_(`@keyframes button-wave-spread`,{from:{boxShadow:`0 0 0.5px 0 var(--n-ripple-color)`},to:{boxShadow:`0 0 0.5px 4.5px var(--n-ripple-color)`}}),_(`@keyframes button-wave-opacity`,{from:{opacity:`var(--n-wave-opacity)`},to:{opacity:0}})]),Y=e({name:`Button`,props:Object.assign(Object.assign({},v.props),{color:String,textColor:String,text:Boolean,block:Boolean,loading:Boolean,disabled:Boolean,circle:Boolean,size:String,ghost:Boolean,round:Boolean,secondary:Boolean,tertiary:Boolean,quaternary:Boolean,strong:Boolean,focusable:{type:Boolean,default:!0},keyboard:{type:Boolean,default:!0},tag:{type:String,default:`button`},type:{type:String,default:`default`},dashed:Boolean,renderIcon:Function,iconPlacement:{type:String,default:`left`},attrType:{type:String,default:`button`},bordered:{type:Boolean,default:!0},onClick:[Function,Array],nativeFocusBehavior:{type:Boolean,default:!j},spinProps:Object}),slots:Object,setup(e){let t=s(null),n=s(null),r=s(!1),o=S(()=>!e.quaternary&&!e.tertiary&&!e.secondary&&!e.text&&(!e.color||e.ghost||e.dashed)&&e.bordered),c=i(W,{}),{inlineThemeDisabled:l,mergedClsPrefixRef:d,mergedRtlRef:f,mergedComponentPropsRef:m}=u(e),{mergedSizeRef:h}=p({},{defaultSize:`medium`,mergedSize:t=>{let{size:n}=e;if(n)return n;let{size:r}=c;if(r)return r;let{mergedSize:i}=t||{};return i?i.value:m?.value?.Button?.size||`medium`}}),g=a(()=>e.focusable&&!e.disabled),_=n=>{var r;g.value||n.preventDefault(),!e.nativeFocusBehavior&&(n.preventDefault(),!e.disabled&&g.value&&((r=t.value)==null||r.focus({preventScroll:!0})))},y=t=>{var r;if(!e.disabled&&!e.loading){let{onClick:i}=e;i&&k(i,t),e.text||(r=n.value)==null||r.play()}},C=t=>{switch(t.key){case`Enter`:if(!e.keyboard)return;r.value=!1}},w=t=>{switch(t.key){case`Enter`:if(!e.keyboard||e.loading){t.preventDefault();return}r.value=!0}},T=()=>{r.value=!1},E=v(`Button`,`-button`,J,q,e,d),D=b(`Button`,f,d),O=a(()=>{let{common:{cubicBezierEaseInOut:t,cubicBezierEaseOut:n},self:r}=E.value,{rippleDuration:i,opacityDisabled:a,fontWeight:o,fontWeightStrong:s}=r,c=h.value,{dashed:l,type:u,ghost:d,text:f,color:p,round:m,circle:g,textColor:_,secondary:v,tertiary:y,quaternary:b,strong:S}=e,C={"--n-font-weight":S?s:o},w={"--n-color":`initial`,"--n-color-hover":`initial`,"--n-color-pressed":`initial`,"--n-color-focus":`initial`,"--n-color-disabled":`initial`,"--n-ripple-color":`initial`,"--n-text-color":`initial`,"--n-text-color-hover":`initial`,"--n-text-color-pressed":`initial`,"--n-text-color-focus":`initial`,"--n-text-color-disabled":`initial`},T=u===`tertiary`,D=u===`default`,O=T?`default`:u;if(f){let e=_||p;w={"--n-color":`#0000`,"--n-color-hover":`#0000`,"--n-color-pressed":`#0000`,"--n-color-focus":`#0000`,"--n-color-disabled":`#0000`,"--n-ripple-color":`#0000`,"--n-text-color":e||r[x(`textColorText`,O)],"--n-text-color-hover":e?H(e):r[x(`textColorTextHover`,O)],"--n-text-color-pressed":e?U(e):r[x(`textColorTextPressed`,O)],"--n-text-color-focus":e?H(e):r[x(`textColorTextHover`,O)],"--n-text-color-disabled":e||r[x(`textColorTextDisabled`,O)]}}else if(d||l){let e=_||p;w={"--n-color":`#0000`,"--n-color-hover":`#0000`,"--n-color-pressed":`#0000`,"--n-color-focus":`#0000`,"--n-color-disabled":`#0000`,"--n-ripple-color":p||r[x(`rippleColor`,O)],"--n-text-color":e||r[x(`textColorGhost`,O)],"--n-text-color-hover":e?H(e):r[x(`textColorGhostHover`,O)],"--n-text-color-pressed":e?U(e):r[x(`textColorGhostPressed`,O)],"--n-text-color-focus":e?H(e):r[x(`textColorGhostHover`,O)],"--n-text-color-disabled":e||r[x(`textColorGhostDisabled`,O)]}}else if(v){let e=D?r.textColor:T?r.textColorTertiary:r[x(`color`,O)],t=p||e,n=u!==`default`&&u!==`tertiary`;w={"--n-color":n?M(t,{alpha:Number(r.colorOpacitySecondary)}):r.colorSecondary,"--n-color-hover":n?M(t,{alpha:Number(r.colorOpacitySecondaryHover)}):r.colorSecondaryHover,"--n-color-pressed":n?M(t,{alpha:Number(r.colorOpacitySecondaryPressed)}):r.colorSecondaryPressed,"--n-color-focus":n?M(t,{alpha:Number(r.colorOpacitySecondaryHover)}):r.colorSecondaryHover,"--n-color-disabled":r.colorSecondary,"--n-ripple-color":`#0000`,"--n-text-color":t,"--n-text-color-hover":t,"--n-text-color-pressed":t,"--n-text-color-focus":t,"--n-text-color-disabled":t}}else if(y||b){let e=D?r.textColor:T?r.textColorTertiary:r[x(`color`,O)],t=p||e;y?(w[`--n-color`]=r.colorTertiary,w[`--n-color-hover`]=r.colorTertiaryHover,w[`--n-color-pressed`]=r.colorTertiaryPressed,w[`--n-color-focus`]=r.colorSecondaryHover,w[`--n-color-disabled`]=r.colorTertiary):(w[`--n-color`]=r.colorQuaternary,w[`--n-color-hover`]=r.colorQuaternaryHover,w[`--n-color-pressed`]=r.colorQuaternaryPressed,w[`--n-color-focus`]=r.colorQuaternaryHover,w[`--n-color-disabled`]=r.colorQuaternary),w[`--n-ripple-color`]=`#0000`,w[`--n-text-color`]=t,w[`--n-text-color-hover`]=t,w[`--n-text-color-pressed`]=t,w[`--n-text-color-focus`]=t,w[`--n-text-color-disabled`]=t}else w={"--n-color":p||r[x(`color`,O)],"--n-color-hover":p?H(p):r[x(`colorHover`,O)],"--n-color-pressed":p?U(p):r[x(`colorPressed`,O)],"--n-color-focus":p?H(p):r[x(`colorFocus`,O)],"--n-color-disabled":p||r[x(`colorDisabled`,O)],"--n-ripple-color":p||r[x(`rippleColor`,O)],"--n-text-color":_||(p?r.textColorPrimary:T?r.textColorTertiary:r[x(`textColor`,O)]),"--n-text-color-hover":_||(p?r.textColorHoverPrimary:r[x(`textColorHover`,O)]),"--n-text-color-pressed":_||(p?r.textColorPressedPrimary:r[x(`textColorPressed`,O)]),"--n-text-color-focus":_||(p?r.textColorFocusPrimary:r[x(`textColorFocus`,O)]),"--n-text-color-disabled":_||(p?r.textColorDisabledPrimary:r[x(`textColorDisabled`,O)])};let k={"--n-border":`initial`,"--n-border-hover":`initial`,"--n-border-pressed":`initial`,"--n-border-focus":`initial`,"--n-border-disabled":`initial`};k=f?{"--n-border":`none`,"--n-border-hover":`none`,"--n-border-pressed":`none`,"--n-border-focus":`none`,"--n-border-disabled":`none`}:{"--n-border":r[x(`border`,O)],"--n-border-hover":r[x(`borderHover`,O)],"--n-border-pressed":r[x(`borderPressed`,O)],"--n-border-focus":r[x(`borderFocus`,O)],"--n-border-disabled":r[x(`borderDisabled`,O)]};let{[x(`height`,c)]:A,[x(`fontSize`,c)]:j,[x(`padding`,c)]:N,[x(`paddingRound`,c)]:P,[x(`iconSize`,c)]:F,[x(`borderRadius`,c)]:I,[x(`iconMargin`,c)]:L,waveOpacity:R}=r,z={"--n-width":g&&!f?A:`initial`,"--n-height":f?`initial`:A,"--n-font-size":j,"--n-padding":g||f?`initial`:m?P:N,"--n-icon-size":F,"--n-icon-margin":L,"--n-border-radius":f?`initial`:g||m?A:I};return Object.assign(Object.assign(Object.assign(Object.assign({"--n-bezier":t,"--n-bezier-ease-out":n,"--n-ripple-duration":i,"--n-opacity-disabled":a,"--n-wave-opacity":R},C),w),k),z)}),A=l?F(`button`,a(()=>{let t=``,{dashed:n,type:r,ghost:i,text:a,color:o,round:s,circle:c,textColor:l,secondary:u,tertiary:d,quaternary:f,strong:p}=e;n&&(t+=`a`),i&&(t+=`b`),a&&(t+=`c`),s&&(t+=`d`),c&&(t+=`e`),u&&(t+=`f`),d&&(t+=`g`),f&&(t+=`h`),p&&(t+=`i`),o&&(t+=`j${I(o)}`),l&&(t+=`k${I(l)}`);let{value:m}=h;return t+=`l${m[0]}`,t+=`m${r[0]}`,t}),O,e):void 0;return{selfElRef:t,waveElRef:n,mergedClsPrefix:d,mergedFocusable:g,mergedSize:h,showBorder:o,enterPressed:r,rtlEnabled:D,handleMousedown:_,handleKeydown:w,handleBlur:T,handleKeyup:C,handleClick:y,customColorCssVars:a(()=>{let{color:t}=e;if(!t)return null;let n=H(t);return{"--n-border-color":t,"--n-border-color-hover":n,"--n-border-color-pressed":U(t),"--n-border-color-focus":n,"--n-border-color-disabled":t}}),cssVars:l?void 0:O,themeClass:A?.themeClass,onRender:A?.onRender}},render(){let{mergedClsPrefix:e,tag:t,onRender:n}=this;n?.();let i=d(this.$slots.default,t=>t&&r(`span`,{class:`${e}-button__content`},t));return r(t,{ref:`selfElRef`,class:[this.themeClass,`${e}-button`,`${e}-button--${this.type}-type`,`${e}-button--${this.mergedSize}-type`,this.rtlEnabled&&`${e}-button--rtl`,this.disabled&&`${e}-button--disabled`,this.block&&`${e}-button--block`,this.enterPressed&&`${e}-button--pressed`,!this.text&&this.dashed&&`${e}-button--dashed`,this.color&&`${e}-button--color`,this.secondary&&`${e}-button--secondary`,this.loading&&`${e}-button--loading`,this.ghost&&`${e}-button--ghost`],tabindex:this.mergedFocusable?0:-1,type:this.attrType,style:this.cssVars,disabled:this.disabled,onClick:this.handleClick,onBlur:this.handleBlur,onMousedown:this.handleMousedown,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},this.iconPlacement===`right`&&i,r(L,{width:!0},{default:()=>d(this.$slots.icon,t=>(this.loading||this.renderIcon||t)&&r(`span`,{class:`${e}-button__icon`,style:{margin:m(this.$slots.default)?`0`:``}},r(D,null,{default:()=>this.loading?r(A,Object.assign({clsPrefix:e,key:`loading`,class:`${e}-icon-slot`,strokeWidth:20},this.spinProps)):r(`div`,{key:`icon`,class:`${e}-icon-slot`,role:`none`},this.renderIcon?this.renderIcon():t)})))}),this.iconPlacement===`left`&&i,this.text?null:r(V,{ref:`waveElRef`,clsPrefix:e}),this.showBorder?r(`div`,{"aria-hidden":!0,class:`${e}-button__border`,style:this.customColorCssVars}):null,this.showBorder?r(`div`,{"aria-hidden":!0,class:`${e}-button__state-border`,style:this.customColorCssVars}):null)}}),X=Y;export{I as a,L as i,X as n,q as r,Y as t};
@@ -0,0 +1 @@
1
+ import{A as e,C as t,E as n,H as r,K as i,O as a,S as o,T as s,U as c,W as l,Z as u,ft as d,ht as f,k as p,pt as m,q as h,st as g,v as _,w as v}from"./router--r9mOZY5.js";import{r as y,t as b}from"./_plugin-vue_export-helper-DJRCopG_.js";import{t as x}from"./Button-CQLKwjHl.js";import{t as S}from"./Input-edKmVCeM.js";import{t as C}from"./Tag-CVO-_zgr.js";import{t as w}from"./use-message-D8bO1GLN.js";import{t as T}from"./Spin-COypV4Iq.js";import{t as E}from"./Switch-BcUqwhfi.js";import{a as D,i as O,n as k,o as A,r as j,t as M}from"./SettingRow-B3O4TYKh.js";var N={class:`platform-info`},P=[`innerHTML`],F={class:`platform-name`},I={key:0,class:`platform-card-body`},L=b(e({__name:`PlatformCard`,props:{name:{},icon:{},config:{},credentials:{}},setup(e){let r=e,i=g(!0),{t:c}=y(),_=o(()=>{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(r,o)=>(l(),n(`div`,{class:m([`platform-card`,{configured:_.value}])},[t(`div`,{class:`platform-card-header`,onClick:o[0]||=e=>i.value=!i.value},[t(`div`,N,[t(`span`,{class:`platform-icon`,innerHTML:e.icon},null,8,P),t(`span`,F,f(e.name),1),p(d(C),{type:_.value?`success`:`default`,size:`small`,round:``},{default:u(()=>[a(f(_.value?d(c)(`common.configured`):d(c)(`common.notConfigured`)),1)]),_:1},8,[`type`])]),t(`span`,{class:m([`expand-icon`,{expanded:i.value}])},`▾`,2)]),i.value?(l(),n(`div`,I,[h(r.$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=b(e({__name:`PlatformSettings`,setup(e){let r=k(),o=w(),{t:m}=y();async function h(e,t){try{await r.saveSection(e,t),o.success(m(`settings.saved`))}catch{o.error(m(`settings.saveFailed`))}}async function b(e,t){try{await D(e,t),await r.fetchSettings(),o.success(m(`settings.saved`))}catch{o.error(m(`settings.saveFailed`))}}function C(e){return r.platforms[e]||{}}let N=g(``),P=g(``),F=g(`idle`),I=null;async function H(){F.value=`loading`,N.value=``,P.value=``,W();try{let e=await j();P.value=e.qrcode,N.value=e.qrcode_url,window.open(e.qrcode_url,`_blank`),F.value=`waiting`,U()}catch(e){F.value=`error`,o.error(e.message||`Failed to get QR code`)}}function U(){P.value&&(I=setTimeout(async()=>{try{let e=await O(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 A({account_id:e.account_id,token:e.token,base_url:e.base_url}),await r.fetchSettings(),o.success(m(`settings.saved`)))}catch{U()}},3e3))}function W(){I&&=(clearTimeout(I),null)}c(()=>{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,o)=>(l(),n(`section`,R,[(l(),n(_,null,i(G,e=>p(L,{key:e.key,name:e.name,icon:e.icon,config:d(r)[e.key],credentials:C(e.key)},{default:u(()=>[e.key===`telegram`?(l(),n(_,{key:0},[p(M,{label:d(m)(`platform.botToken`),hint:d(m)(`platform.botTokenHint`)},{default:u(()=>[p(d(S),{value:C(`telegram`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`123456:ABC-DEF...`,"onUpdate:value":o[0]||=e=>b(`telegram`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionGroup`)},{default:u(()=>[p(d(E),{value:d(r).telegram.require_mention,"onUpdate:value":o[1]||=e=>h(`telegram`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.reactions`),hint:d(m)(`platform.reactionsHint`)},{default:u(()=>[p(d(E),{value:d(r).telegram.reactions,"onUpdate:value":o[2]||=e=>h(`telegram`,{reactions:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChats`),hint:d(m)(`platform.freeResponseChatsHint`)},{default:u(()=>[p(d(S),{value:d(r).telegram.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":o[3]||=e=>h(`telegram`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.mentionPatterns`),hint:d(m)(`platform.mentionPatternsHint`)},{default:u(()=>[p(d(S),{value:(d(r).telegram.mention_patterns||[]).join(`, `),size:`small`,placeholder:`pattern1, pattern2`,"onUpdate:value":o[4]||=e=>h(`telegram`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`discord`?(l(),n(_,{key:1},[p(M,{label:d(m)(`platform.botToken`),hint:d(m)(`platform.botTokenHint`)},{default:u(()=>[p(d(S),{value:C(`discord`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Bot token...`,"onUpdate:value":o[5]||=e=>b(`discord`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionChannel`)},{default:u(()=>[p(d(E),{value:d(r).discord.require_mention,"onUpdate:value":o[6]||=e=>h(`discord`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.autoThread`),hint:d(m)(`platform.autoThreadHint`)},{default:u(()=>[p(d(E),{value:d(r).discord.auto_thread,"onUpdate:value":o[7]||=e=>h(`discord`,{auto_thread:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.reactions`),hint:d(m)(`platform.reactionsHint`)},{default:u(()=>[p(d(E),{value:d(r).discord.reactions,"onUpdate:value":o[8]||=e=>h(`discord`,{reactions:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChannels`),hint:d(m)(`platform.freeResponseChannelsHint`)},{default:u(()=>[p(d(S),{value:d(r).discord.free_response_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":o[9]||=e=>h(`discord`,{free_response_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.allowedChannels`),hint:d(m)(`platform.allowedChannelsHint`)},{default:u(()=>[p(d(S),{value:d(r).discord.allowed_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":o[10]||=e=>h(`discord`,{allowed_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.ignoredChannels`),hint:d(m)(`platform.ignoredChannelsHint`)},{default:u(()=>[p(d(S),{value:d(r).discord.ignored_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":o[11]||=e=>h(`discord`,{ignored_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.noThreadChannels`),hint:d(m)(`platform.noThreadChannelsHint`)},{default:u(()=>[p(d(S),{value:d(r).discord.no_thread_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":o[12]||=e=>h(`discord`,{no_thread_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`slack`?(l(),n(_,{key:2},[p(M,{label:d(m)(`platform.botToken`),hint:d(m)(`platform.botTokenHint`)},{default:u(()=>[p(d(S),{value:C(`slack`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`xoxb-...`,"onUpdate:value":o[13]||=e=>b(`slack`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionChannel`)},{default:u(()=>[p(d(E),{value:d(r).slack.require_mention,"onUpdate:value":o[14]||=e=>h(`slack`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.allowBots`),hint:d(m)(`platform.allowBotsHint`)},{default:u(()=>[p(d(E),{value:d(r).slack.allow_bots,"onUpdate:value":o[15]||=e=>h(`slack`,{allow_bots:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChannels`),hint:d(m)(`platform.freeResponseChannelsHint`)},{default:u(()=>[p(d(S),{value:d(r).slack.free_response_channels||``,size:`small`,placeholder:`channel_id1,channel_id2`,"onUpdate:value":o[16]||=e=>h(`slack`,{free_response_channels:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`whatsapp`?(l(),n(_,{key:3},[p(M,{label:d(m)(`platform.waEnabled`),hint:d(m)(`platform.waEnabledHint`)},{default:u(()=>[p(d(E),{value:C(`whatsapp`).enabled,"onUpdate:value":o[17]||=e=>b(`whatsapp`,{enabled:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionGroup`)},{default:u(()=>[p(d(E),{value:d(r).whatsapp.require_mention,"onUpdate:value":o[18]||=e=>h(`whatsapp`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChats`),hint:d(m)(`platform.freeResponseChatsHint`)},{default:u(()=>[p(d(S),{value:d(r).whatsapp.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":o[19]||=e=>h(`whatsapp`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.mentionPatterns`),hint:d(m)(`platform.mentionPatternsHint`)},{default:u(()=>[p(d(S),{value:(d(r).whatsapp.mention_patterns||[]).join(`, `),size:`small`,placeholder:`pattern1, pattern2`,"onUpdate:value":o[20]||=e=>h(`whatsapp`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`matrix`?(l(),n(_,{key:4},[p(M,{label:d(m)(`platform.accessToken`),hint:d(m)(`platform.accessTokenHint`)},{default:u(()=>[p(d(S),{value:C(`matrix`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`syt_...`,"onUpdate:value":o[21]||=e=>b(`matrix`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.homeserver`),hint:d(m)(`platform.homeserverHint`)},{default:u(()=>[p(d(S),{value:C(`matrix`).extra?.homeserver||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`https://matrix.org`,"onUpdate:value":o[22]||=e=>b(`matrix`,{extra:{...C(`matrix`).extra,homeserver:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionRoom`)},{default:u(()=>[p(d(E),{value:d(r).matrix.require_mention,"onUpdate:value":o[23]||=e=>h(`matrix`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.autoThread`),hint:d(m)(`platform.autoThreadHintRoom`)},{default:u(()=>[p(d(E),{value:d(r).matrix.auto_thread,"onUpdate:value":o[24]||=e=>h(`matrix`,{auto_thread:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.dmMentionThreads`),hint:d(m)(`platform.dmMentionThreadsHint`)},{default:u(()=>[p(d(E),{value:d(r).matrix.dm_mention_threads,"onUpdate:value":o[25]||=e=>h(`matrix`,{dm_mention_threads:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseRooms`),hint:d(m)(`platform.freeResponseRoomsHint`)},{default:u(()=>[p(d(S),{value:d(r).matrix.free_response_rooms||``,size:`small`,placeholder:`room_id1,room_id2`,"onUpdate:value":o[26]||=e=>h(`matrix`,{free_response_rooms:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`feishu`?(l(),n(_,{key:5},[p(M,{label:d(m)(`platform.appId`),hint:d(m)(`platform.appIdHint`)},{default:u(()=>[p(d(S),{value:C(`feishu`).extra?.app_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`cli_...`,"onUpdate:value":o[27]||=e=>b(`feishu`,{extra:{...C(`feishu`).extra,app_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.appSecret`),hint:d(m)(`platform.appSecretHint`)},{default:u(()=>[p(d(S),{value:C(`feishu`).extra?.app_secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`App Secret`,"onUpdate:value":o[28]||=e=>b(`feishu`,{extra:{...C(`feishu`).extra,app_secret:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionGroup`)},{default:u(()=>[p(d(E),{value:d(r).feishu.require_mention,"onUpdate:value":o[29]||=e=>h(`feishu`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChats`),hint:d(m)(`platform.freeResponseChatsHint`)},{default:u(()=>[p(d(S),{value:d(r).feishu.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":o[30]||=e=>h(`feishu`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`dingtalk`?(l(),n(_,{key:6},[p(M,{label:d(m)(`platform.clientId`),hint:d(m)(`platform.clientIdHint`)},{default:u(()=>[p(d(S),{value:C(`dingtalk`).extra?.client_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Client ID`,"onUpdate:value":o[31]||=e=>b(`dingtalk`,{extra:{...C(`dingtalk`).extra,client_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.clientSecret`),hint:d(m)(`platform.clientSecretHint`)},{default:u(()=>[p(d(S),{value:C(`dingtalk`).extra?.client_secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Client Secret`,"onUpdate:value":o[32]||=e=>b(`dingtalk`,{extra:{...C(`dingtalk`).extra,client_secret:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.requireMention`),hint:d(m)(`platform.requireMentionGroup`)},{default:u(()=>[p(d(E),{value:d(r).dingtalk.require_mention,"onUpdate:value":o[33]||=e=>h(`dingtalk`,{require_mention:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.freeResponseChats`),hint:d(m)(`platform.freeResponseChatsHint`)},{default:u(()=>[p(d(S),{value:d(r).dingtalk.free_response_chats||``,size:`small`,placeholder:`chat_id1,chat_id2`,"onUpdate:value":o[34]||=e=>h(`dingtalk`,{free_response_chats:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`weixin`?(l(),n(_,{key:7},[t(`div`,z,[F.value===`idle`||F.value===`error`||F.value===`expired`||F.value===`confirmed`?(l(),v(d(x),{key:0,type:`primary`,size:`small`,onClick:H},{default:u(()=>[a(f(F.value===`confirmed`?d(m)(`platform.qrRelogin`):d(m)(`platform.qrLogin`)),1)]),_:1})):s(``,!0),F.value===`loading`?(l(),n(`div`,B,[p(d(T),{size:`small`}),t(`span`,null,f(d(m)(`platform.qrFetching`)),1)])):s(``,!0),F.value===`waiting`||F.value===`scaned`?(l(),n(`div`,V,f(F.value===`scaned`?d(m)(`platform.qrScanedHint`):d(m)(`platform.qrScanHint`)),1)):s(``,!0)]),p(M,{label:d(m)(`platform.weixinToken`),hint:d(m)(`platform.weixinTokenHint`)},{default:u(()=>[p(d(S),{value:C(`weixin`).token||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Token`,"onUpdate:value":o[35]||=e=>b(`weixin`,{token:e})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.accountId`),hint:d(m)(`platform.accountIdHint`)},{default:u(()=>[p(d(S),{value:C(`weixin`).extra?.account_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Account ID`,"onUpdate:value":o[36]||=e=>b(`weixin`,{extra:{...C(`weixin`).extra,account_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`])],64)):s(``,!0),e.key===`wecom`?(l(),n(_,{key:8},[p(M,{label:d(m)(`platform.botId`),hint:d(m)(`platform.botIdHint`)},{default:u(()=>[p(d(S),{value:C(`wecom`).extra?.bot_id||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Bot ID`,"onUpdate:value":o[37]||=e=>b(`wecom`,{extra:{...C(`wecom`).extra,bot_id:e}})},null,8,[`value`])]),_:1},8,[`label`,`hint`]),p(M,{label:d(m)(`platform.appSecret`),hint:d(m)(`platform.wecomSecretHint`)},{default:u(()=>[p(d(S),{value:C(`wecom`).extra?.secret||``,clearable:``,size:`small`,style:{width:`300px`},placeholder:`Secret`,"onUpdate:value":o[38]||=e=>b(`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=b(e({__name:`ChannelsView`,setup(e){let i=k(),{t:a}=y();return r(()=>{i.fetchSettings()}),(e,r)=>(l(),n(`div`,U,[t(`header`,W,[t(`h2`,G,f(d(a)(`sidebar.channels`)),1)]),t(`div`,K,[p(d(T),{show:d(i).loading},{default:u(()=>[p(H)]),_:1},8,[`show`])])]))}}),[[`__scopeId`,`data-v-ceb983fe`]]);export{q as default};
@@ -0,0 +1,142 @@
1
+ import{A as e,B as t,C as n,E as r,G as i,H as a,I as o,K as s,L as c,M as l,O as u,P as d,Q as f,S as p,T as m,W as h,Y as g,Z as _,at as v,ft as y,g as b,h as x,ht as S,k as C,ot as w,p as T,pt as E,st as D,u as O,ut as k,v as A,w as j,z as M}from"./router--r9mOZY5.js";import{r as N,t as P}from"./_plugin-vue_export-helper-DJRCopG_.js";import{B as F,K as ee,Q as I,W as L,Y as R,at as z,c as B,ct as V,dt as H,et as U,lt as W,n as G,ot as K,q,s as J,tt as te,ut as ne,z as Y}from"./browser-BuJOvks2.js";import{A as re,C as ie,D as ae,E as oe,L as se,P as ce,_ as le,a as ue,h as de,i as fe,l as X,n as pe,o as me,r as he,t as ge,u as _e,w as ve}from"./Popover-CRhyj79I.js";import{_ as Z,c as ye,g as be,l as xe,r as Se,v as Q}from"./Suffix-Bs0SC_yA.js";import{c as Ce,f as we,t as Te}from"./Modal-CDRYujZp.js";import{r as Ee,t as $}from"./Button-CQLKwjHl.js";import{t as De}from"./omit-QZj0aLfU.js";import{t as Oe}from"./Input-edKmVCeM.js";import{t as ke}from"./Tooltip-BljrRE17.js";import{t as Ae}from"./use-message-D8bO1GLN.js";import{t as je}from"./logo-CiQBpLPw.js";import{t as Me}from"./app-BcCNNvPk.js";import{t as Ne}from"./chat-DIeO-6BT.js";import{i as Pe}from"./sessions-COjIc6fz.js";import{t as Fe}from"./MarkdownRenderer-Yw5JS7CE.js";function Ie(e={},n){let r=v({ctrl:!1,command:!1,win:!1,shift:!1,tab:!1}),{keydown:i,keyup:a}=e,o=e=>{switch(e.key){case`Control`:r.ctrl=!0;break;case`Meta`:r.command=!0,r.win=!0;break;case`Shift`:r.shift=!0;break;case`Tab`:r.tab=!0;break}i!==void 0&&Object.keys(i).forEach(t=>{if(t!==e.key)return;let n=i[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)}})},s=e=>{switch(e.key){case`Control`:r.ctrl=!1;break;case`Meta`:r.command=!1,r.win=!1;break;case`Shift`:r.shift=!1;break;case`Tab`:r.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)}})},c=()=>{(n===void 0||n.value)&&(Q(`keydown`,document,o),Q(`keyup`,document,s)),n!==void 0&&g(n,e=>{e?(Q(`keydown`,document,o),Q(`keyup`,document,s)):(Z(`keydown`,document,o),Z(`keyup`,document,s))})};return ce()?(M(c),t(()=>{(n===void 0||n.value)&&(Z(`keydown`,document,o),Z(`keyup`,document,s))})):c(),w(r)}function Le(e,t,n){if(!t)return e;let r=D(e.value),i=null;return g(e,e=>{i!==null&&window.clearTimeout(i),e===!0?n&&!n.value?r.value=!0:i=window.setTimeout(()=>{r.value=!0},t):r.value=!1}),r}function Re(e){return t=>{t?e.value=t.$el:e.value=null}}var ze=e({name:`ChevronRight`,render(){return l(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},l(`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:te(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=J({name:`Dropdown`,common:G,peers:{Popover:fe},self:Ve}),Ue=I(`n-dropdown-menu`),We=I(`n-dropdown`),Ge=I(`n-dropdown-option`),Ke=e({name:`DropdownDivider`,props:{clsPrefix:{type:String,required:!0}},render(){return l(`div`,{class:`${this.clsPrefix}-dropdown-divider`})}}),qe=e({name:`DropdownGroupHeader`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){let{showIconRef:e,hasSubmenuRef:t}=d(Ue),{renderLabelRef:n,labelFieldRef:r,nodePropsRef:i,renderOptionRef:a}=d(We);return{labelField:r,showIcon:e,hasSubmenu:t,renderLabel:n,nodeProps:i,renderOption:a}},render(){let{clsPrefix:e,hasSubmenu:t,showIcon:n,nodeProps:r,renderLabel:i,renderOption:a}=this,{rawNode:o}=this.tmNode,s=l(`div`,Object.assign({class:`${e}-dropdown-option`},r?.(o)),l(`div`,{class:`${e}-dropdown-option-body ${e}-dropdown-option-body--group`},l(`div`,{"data-dropdown-option":!0,class:[`${e}-dropdown-option-body__prefix`,n&&`${e}-dropdown-option-body__prefix--show-icon`]},X(o.icon)),l(`div`,{class:`${e}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(o):X(o.title??o[this.labelField])),l(`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
+ `,[W(`color-transition`,{transition:`color .3s var(--n-bezier)`}),W(`depth`,{color:`var(--n-color)`},[z(`svg`,{opacity:`var(--n-opacity)`,transition:`opacity .3s var(--n-bezier)`})]),z(`svg`,{height:`1em`,width:`1em`})]),Ze=e({_n_icon__:!0,name:`Icon`,inheritAttrs:!1,props:Object.assign(Object.assign({},B.props),{depth:[String,Number],size:[Number,String],color:String,component:[Object,Function]}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n}=F(e),r=B(`Icon`,`-icon`,Xe,Ye,e,t),i=p(()=>{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?Y(`icon`,p(()=>`${e.depth||`d`}`),i,e):void 0;return{mergedClsPrefix:t,mergedStyle:p(()=>{let{size:t,color:n}=e;return{fontSize:de(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:a}=this;return e?.$options?._n_icon__&&R(`icon`,"don't wrap `n-icon` inside `n-icon`"),i?.(),l(`i`,o(this.$attrs,{role:`img`,class:[`${n}-icon`,a,{[`${n}-icon--depth`]:t,[`${n}-icon--color-transition`]:t!==void 0}],style:[this.cssVars,this.mergedStyle]}),r?l(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=e({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(e){let t=d(We),{hoverKeyRef:n,keyboardKeyRef:r,lastToggledSubmenuKeyRef:a,pendingKeyPathRef:o,activeKeyPathRef:s,animatedRef:c,mergedShowRef:l,renderLabelRef:u,renderIconRef:f,labelFieldRef:m,childrenFieldRef:h,renderOptionRef:g,nodePropsRef:_,menuPropsRef:v}=t,y=d(Ge,null),b=d(Ue),x=d(oe),S=p(()=>e.tmNode.rawNode),C=p(()=>{let{value:t}=h;return Qe(e.tmNode.rawNode,t)}),w=p(()=>{let{disabled:t}=e.tmNode;return t}),T=Le(p(()=>{if(!C.value)return!1;let{key:t,disabled:i}=e.tmNode;if(i)return!1;let{value:s}=n,{value:c}=r,{value:l}=a,{value:u}=o;return s===null?c===null?l===null?!1:u.includes(t):u.includes(t)&&u[u.length-1]!==t:u.includes(t)}),300,p(()=>r.value===null&&!c.value)),E=p(()=>!!y?.enteringSubmenuRef.value),O=D(!1);i(Ge,{enteringSubmenuRef:O});function k(){O.value=!0}function A(){O.value=!1}function j(){let{parentKey:t,tmNode:i}=e;i.disabled||l.value&&(a.value=t,r.value=null,n.value=i.key)}function M(){let{tmNode:t}=e;t.disabled||l.value&&n.value!==t.key&&j()}function N(t){if(e.tmNode.disabled||!l.value)return;let{relatedTarget:r}=t;r&&!se({target:r},`dropdownOption`)&&!se({target:r},`scrollbarRail`)&&(n.value=null)}function P(){let{value:n}=C,{tmNode:r}=e;l.value&&!n&&!r.disabled&&(t.doSelect(r.key,r.rawNode),t.doUpdateShow(!1))}return{labelField:m,renderLabel:u,renderIcon:f,siblingHasIcon:b.showIconRef,siblingHasSubmenu:b.hasSubmenuRef,menuProps:v,popoverBody:x,animated:c,mergedShowSubmenu:p(()=>T.value&&!E.value),rawNode:S,hasSubmenu:C,pending:U(()=>{let{value:t}=o,{key:n}=e.tmNode;return t.includes(n)}),childActive:U(()=>{let{value:t}=s,{key:n}=e.tmNode,r=t.findIndex(e=>n===e);return r===-1?!1:r<t.length-1}),active:U(()=>{let{value:t}=s,{key:n}=e.tmNode,r=t.findIndex(e=>n===e);return r===-1?!1:r===t.length-1}),mergedDisabled:w,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:a,renderLabel:s,renderIcon:c,renderOption:u,nodeProps:d,props:f,scrollable:p}=this,m=null;if(n){let e=this.menuProps?.call(this,t,t.children);m=l(at,Object.assign({},e,{clsPrefix:r,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}let h={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},g=d?.(t),_=l(`div`,Object.assign({class:[`${r}-dropdown-option`,g?.class],"data-dropdown-option":!0},g),l(`div`,o(h,f),[l(`div`,{class:[`${r}-dropdown-option-body__prefix`,i&&`${r}-dropdown-option-body__prefix--show-icon`]},[c?c(t):X(t.icon)]),l(`div`,{"data-dropdown-option":!0,class:`${r}-dropdown-option-body__label`},s?s(t):X(t[this.labelField]??t.title)),l(`div`,{"data-dropdown-option":!0,class:[`${r}-dropdown-option-body__suffix`,a&&`${r}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?l(Ze,null,{default:()=>l(ze,null)}):null)]),this.hasSubmenu?l(ve,null,{default:()=>[l(ie,null,{default:()=>l(`div`,{class:`${r}-dropdown-offset-container`},l(le,{show:this.mergedShowSubmenu,placement:this.placement,to:p&&this.popoverBody||void 0,teleportDisabled:!p},{default:()=>l(`div`,{class:`${r}-dropdown-menu-wrapper`},e?l(O,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:`fade-in-scale-up-transition`,appear:!0},{default:()=>m}):m)}))})]}):null);return u?u({node:_,option:t}):_}}),rt=e({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 l(A,null,l(qe,{clsPrefix:n,tmNode:e,key:e.key}),r?.map(e=>{let{rawNode:r}=e;return r.show===!1?null:et(r)?l(Ke,{clsPrefix:n,key:e.key}):e.isGroup?(R(`dropdown`,"`group` node is not allowed to be put in `group` node."),null):l(nt,{clsPrefix:n,tmNode:e,parentKey:t,key:e.key})}))}}),it=e({name:`DropdownRenderOption`,props:{tmNode:{type:Object,required:!0}},render(){let{rawNode:{render:e,props:t}}=this.tmNode;return l(`div`,t,[e?.()])}}),at=e({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(e){let{renderIconRef:t,childrenFieldRef:n}=d(We);i(Ue,{showIconRef:p(()=>{let n=t.value;return e.tmNodes.some(e=>{if(e.isGroup)return e.children?.some(({rawNode:e})=>n?n(e):e.icon);let{rawNode:t}=e;return n?n(t):t.icon})}),hasSubmenuRef:p(()=>{let{value:t}=n;return e.tmNodes.some(e=>{if(e.isGroup)return e.children?.some(({rawNode:e})=>Qe(e,t));let{rawNode:n}=e;return Qe(n,t)})})});let r=D(null);return i(ae,null),i(re,null),i(oe,r),{bodyRef:r}},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)?l(it,{tmNode:r,key:r.key}):et(i)?l(Ke,{clsPrefix:t,key:r.key}):$e(i)?l(rt,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):l(nt,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return l(`div`,{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:`bodyRef`},n?l(Se,{contentClass:`${t}-dropdown-menu__content`},{default:()=>r}):r,this.showArrow?he({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
+ `,[ue(),K(`dropdown-option`,`
19
+ position: relative;
20
+ `,[z(`a`,`
21
+ text-decoration: none;
22
+ color: inherit;
23
+ outline: none;
24
+ `,[z(`&::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
+ `,[z(`&::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
+ `),ne(`disabled`,[W(`pending`,`
50
+ color: var(--n-option-text-color-hover);
51
+ `,[V(`prefix, suffix`,`
52
+ color: var(--n-option-text-color-hover);
53
+ `),z(`&::before`,`background-color: var(--n-option-color-hover);`)]),W(`active`,`
54
+ color: var(--n-option-text-color-active);
55
+ `,[V(`prefix, suffix`,`
56
+ color: var(--n-option-text-color-active);
57
+ `),z(`&::before`,`background-color: var(--n-option-color-active);`)]),W(`child-active`,`
58
+ color: var(--n-option-text-color-child-active);
59
+ `,[V(`prefix, suffix`,`
60
+ color: var(--n-option-text-color-child-active);
61
+ `)])]),W(`disabled`,`
62
+ cursor: not-allowed;
63
+ opacity: var(--n-option-opacity-disabled);
64
+ `),W(`group`,`
65
+ font-size: calc(var(--n-font-size) - 1px);
66
+ color: var(--n-group-header-text-color);
67
+ `,[V(`prefix`,`
68
+ width: calc(var(--n-option-prefix-width) / 2);
69
+ `,[W(`show-icon`,`
70
+ width: calc(var(--n-option-icon-prefix-width) / 2);
71
+ `)])]),V(`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
+ `,[W(`show-icon`,`
80
+ width: var(--n-option-icon-prefix-width);
81
+ `),K(`icon`,`
82
+ font-size: var(--n-option-icon-size);
83
+ `)]),V(`label`,`
84
+ white-space: nowrap;
85
+ flex: 1;
86
+ z-index: 1;
87
+ `),V(`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
+ `,[W(`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
+ `),z(`>`,[K(`scrollbar`,`
119
+ height: inherit;
120
+ max-height: inherit;
121
+ `)]),ne(`scrollable`,`
122
+ padding: var(--n-padding);
123
+ `),W(`scrollable`,[V(`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(pe),lt=e({name:`Dropdown`,inheritAttrs:!1,props:Object.assign(Object.assign(Object.assign({},pe),st),B.props),setup(e){let t=D(!1),n=be(k(e,`show`),t),r=p(()=>{let{keyField:t,childrenField:n}=e;return me(e.options,{getKey(e){return e[t]},getDisabled(e){return e.disabled===!0},getIgnored(e){return e.type===`divider`||e.type===`render`},getChildren(e){return e[n]}})}),a=p(()=>r.value.treeNodes),o=D(null),s=D(null),c=D(null),l=p(()=>o.value??s.value??c.value??null),u=p(()=>r.value.getPath(l.value).keyPath),d=p(()=>r.value.getPath(e.value).keyPath),f=U(()=>e.keyboard&&n.value);Ie({keydown:{ArrowUp:{prevent:!0,handler:E},ArrowRight:{prevent:!0,handler:T},ArrowDown:{prevent:!0,handler:O},ArrowLeft:{prevent:!0,handler:w},Enter:{prevent:!0,handler:A},Escape:C}},f);let{mergedClsPrefixRef:m,inlineThemeDisabled:h,mergedComponentPropsRef:_}=F(e),v=p(()=>e.size||_?.value?.Dropdown?.size||`medium`),y=B(`Dropdown`,`-dropdown`,ot,He,e,m);i(We,{labelFieldRef:k(e,`labelField`),childrenFieldRef:k(e,`childrenField`),renderLabelRef:k(e,`renderLabel`),renderIconRef:k(e,`renderIcon`),hoverKeyRef:o,keyboardKeyRef:s,lastToggledSubmenuKeyRef:c,pendingKeyPathRef:u,activeKeyPathRef:d,animatedRef:k(e,`animated`),mergedShowRef:n,nodePropsRef:k(e,`nodeProps`),renderOptionRef:k(e,`renderOption`),menuPropsRef:k(e,`menuProps`),doSelect:b,doUpdateShow:x}),g(n,t=>{!e.animated&&!t&&S()});function b(t,n){let{onSelect:r}=e;r&&q(r,t,n)}function x(n){let{"onUpdate:show":r,onUpdateShow:i}=e;r&&q(r,n),i&&q(i,n),t.value=n}function S(){o.value=null,s.value=null,c.value=null}function C(){x(!1)}function w(){M(`left`)}function T(){M(`right`)}function E(){M(`up`)}function O(){M(`down`)}function A(){let e=j();e?.isLeaf&&n.value&&(b(e.key,e.rawNode),x(!1))}function j(){let{value:e}=r,{value:t}=l;return!e||t===null?null:e.getNode(t)??null}function M(e){let{value:t}=l,{value:{getFirstAvailableNode:n}}=r,i=null;if(t===null){let e=n();e!==null&&(i=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&&(i=n.key)}}i!==null&&(o.value=null,s.value=i)}let N=p(()=>{let{inverted:t}=e,n=v.value,{common:{cubicBezierEaseInOut:r},self:i}=y.value,{padding:a,dividerColor:o,borderRadius:s,optionOpacityDisabled:c,[H(`optionIconSuffixWidth`,n)]:l,[H(`optionSuffixWidth`,n)]:u,[H(`optionIconPrefixWidth`,n)]:d,[H(`optionPrefixWidth`,n)]:f,[H(`fontSize`,n)]:p,[H(`optionHeight`,n)]:m,[H(`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 t?(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}),P=h?Y(`dropdown`,p(()=>`${v.value[0]}${e.inverted?`i`:``}`),N,e):void 0;return{mergedClsPrefix:m,mergedTheme:y,mergedSize:v,tmNodes:a,mergedShow:n,handleAfterLeave:()=>{e.animated&&S()},doUpdateShow:x,cssVars:h?void 0:N,themeClass:P?.themeClass,onRender:P?.onRender}},render(){let e=(e,t,n,r,i)=>{var a;let{mergedClsPrefix:s,menuProps:c}=this;(a=this.onRender)==null||a.call(this);let u=c?.(void 0,this.tmNodes.map(e=>e.rawNode))||{},d={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 l(at,o(this.$attrs,d,u))},{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 l(ge,Object.assign({},_e(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=J({name:`Popconfirm`,common:G,peers:{Button:Ee,Popover:fe},self:dt}),pt=I(`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=e({name:`NPopconfirmPanel`,props:mt,setup(e){let{localeRef:t}=xe(`Popconfirm`),{inlineThemeDisabled:n}=F(),{mergedClsPrefixRef:r,mergedThemeRef:i,props:a}=d(pt),o=p(()=>{let{common:{cubicBezierEaseInOut:e},self:{fontSize:t,iconSize:n,iconColor:r}}=i.value;return{"--n-bezier":e,"--n-font-size":t,"--n-icon-size":n,"--n-icon-color":r}}),s=n?Y(`popconfirm-panel`,void 0,o,a):void 0;return Object.assign(Object.assign({},xe(`Popconfirm`)),{mergedClsPrefix:r,cssVars:n?void 0:o,localizedPositiveText:p(()=>e.positiveText||t.value.positiveText),localizedNegativeText:p(()=>e.negativeText||t.value.negativeText),positiveButtonProps:k(a,`positiveButtonProps`),negativeButtonProps:k(a,`negativeButtonProps`),handlePositiveClick(t){e.onPositiveClick(t)},handleNegativeClick(t){e.onNegativeClick(t)},themeClass:s?.themeClass,onRender:s?.onRender})},render(){var e;let{mergedClsPrefix:t,showIcon:n,$slots:r}=this,i=L(r.action,()=>this.negativeText===null&&this.positiveText===null?[]:[this.negativeText!==null&&l($,Object.assign({size:`small`,onClick:this.handleNegativeClick},this.negativeButtonProps),{default:()=>this.localizedNegativeText}),this.positiveText!==null&&l($,Object.assign({size:`small`,type:`primary`,onClick:this.handlePositiveClick},this.positiveButtonProps),{default:()=>this.localizedPositiveText})]);return(e=this.onRender)==null||e.call(this),l(`div`,{class:[`${t}-popconfirm__panel`,this.themeClass],style:this.cssVars},ee(r.default,e=>n||e?l(`div`,{class:`${t}-popconfirm__body`},n?l(`div`,{class:`${t}-popconfirm__icon`},L(r.icon,()=>[l(ye,{clsPrefix:t},{default:()=>l(Ce,null)})])):null,e):null),i?l(`div`,{class:[`${t}-popconfirm__action`]},i):null)}}),_t=K(`popconfirm`,[V(`body`,`
126
+ font-size: var(--n-font-size);
127
+ display: flex;
128
+ align-items: center;
129
+ flex-wrap: nowrap;
130
+ position: relative;
131
+ `,[V(`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
+ `)]),V(`action`,`
138
+ display: flex;
139
+ justify-content: flex-end;
140
+ `,[z(`&:not(:first-child)`,`margin-top: 8px`),K(`button`,[z(`&:not(:last-child)`,`margin-right: 8px;`)])])]),vt=e({name:`Popconfirm`,props:Object.assign(Object.assign(Object.assign({},B.props),pe),{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(e){let{mergedClsPrefixRef:t}=F(),n=B(`Popconfirm`,`-popconfirm`,_t,ft,e,t),r=D(null);function a(t){if(!r.value?.getMergedShow())return;let{onPositiveClick:n,"onUpdate:show":i}=e;Promise.resolve(n?n(t):!0).then(e=>{var t;e!==!1&&((t=r.value)==null||t.setShow(!1),i&&q(i,!1))})}function o(t){if(!r.value?.getMergedShow())return;let{onNegativeClick:n,"onUpdate:show":i}=e;Promise.resolve(n?n(t):!0).then(e=>{var t;e!==!1&&((t=r.value)==null||t.setShow(!1),i&&q(i,!1))})}return i(pt,{mergedThemeRef:n,mergedClsPrefixRef:t,props:e}),{setShow(e){var t;(t=r.value)==null||t.setShow(e)},syncPosition(){var e;(e=r.value)==null||e.syncPosition()},mergedTheme:n,popoverInstRef:r,handlePositiveClick:a,handleNegativeClick:o}},render(){let{$slots:e,$props:t,mergedTheme:n}=this;return l(ge,Object.assign({},De(t,ht),{theme:n.peers.Popover,themeOverrides:n.peerOverrides.Popover,internalExtraClass:[`popconfirm`],ref:`popoverInstRef`}),{trigger:e.trigger,default:()=>{let n=_e(t,ht);return l(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=P(e({__name:`ChatInput`,setup(e){let t=Ne(),{t:i}=N(),a=D(``),o=D(),c=D(),l=D([]),d=D(!1),g=D(0),v=D(!1),b=p(()=>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 w(){c.value?.click()}function O(e){let t=e.target;if(t.files){for(let e of t.files)x(e);t.value=``}}function k(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 M(e){e.preventDefault()}function P(e){e.preventDefault(),e.dataTransfer?.types.includes(`Files`)&&(g.value++,d.value=!0)}function F(){g.value--,g.value<=0&&(g.value=0,d.value=!1)}function ee(e){e.preventDefault(),g.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 I(){let e=a.value.trim();!e&&l.value.length===0||(t.sendMessage(e,l.value.length>0?l.value:void 0),a.value=``,l.value=[],o.value&&(o.value.style.height=`auto`))}function L(){v.value=!0}function R(){requestAnimationFrame(()=>{v.value=!1})}function z(e){return v.value||e.isComposing||e.keyCode===229}function B(e){e.key!==`Enter`||e.shiftKey||z(e)||(e.preventDefault(),I())}function V(e){let t=e.target;t.style.height=`auto`,t.style.height=Math.min(t.scrollHeight,100)+`px`}function H(e){let t=l.value.findIndex(t=>t.id===e);t!==-1&&(URL.revokeObjectURL(l.value[t].url),l.value.splice(t,1))}function U(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function W(e){return e.startsWith(`image/`)}return(e,p)=>(h(),r(`div`,yt,[l.value.length>0?(h(),r(`div`,bt,[(h(!0),r(A,null,s(l.value,e=>(h(),r(`div`,{key:e.id,class:E([`attachment-preview`,{image:W(e.type)}])},[W(e.type)?(h(),r(`img`,{key:0,src:e.url,alt:e.name,class:`attachment-thumb`},null,8,xt)):(h(),r(`div`,St,[p[2]||=n(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[n(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),n(`polyline`,{points:`14 2 14 8 20 8`})],-1),n(`span`,Ct,S(e.name),1),n(`span`,wt,S(U(e.size)),1)])),n(`button`,{class:`attachment-remove`,onClick:t=>H(e.id)},[...p[3]||=[n(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Tt)],2))),128))])):m(``,!0),n(`div`,{class:E([`input-wrapper`,{"drag-over":d.value}]),onDragover:M,onDragenter:P,onDragleave:F,onDrop:ee},[n(`input`,{ref_key:`fileInputRef`,ref:c,type:`file`,multiple:``,class:`file-input-hidden`,onChange:O},null,544),f(n(`textarea`,{ref_key:`textareaRef`,ref:o,"onUpdate:modelValue":p[0]||=e=>a.value=e,class:`input-textarea`,placeholder:y(i)(`chat.inputPlaceholder`),rows:`1`,onKeydown:B,onCompositionstart:L,onCompositionend:R,onInput:V,onPaste:k},null,40,Et),[[T,a.value]]),n(`div`,Dt,[C(y(ke),{trigger:`hover`},{trigger:_(()=>[C(y($),{quaternary:``,size:`small`,onClick:w,circle:``},{icon:_(()=>[...p[4]||=[n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[n(`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(` `+S(y(i)(`chat.attachFiles`)),1)]),_:1}),y(t).isStreaming?(h(),j(y($),{key:0,size:`small`,type:`error`,onClick:p[1]||=e=>y(t).stopStreaming()},{default:_(()=>[u(S(y(i)(`chat.stop`)),1)]),_:1})):m(``,!0),C(y($),{size:`small`,type:`primary`,disabled:!b.value||y(t).isStreaming,onClick:I},{icon:_(()=>[...p[5]||=[n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[n(`line`,{x1:`22`,y1:`2`,x2:`11`,y2:`13`}),n(`polygon`,{points:`22 2 15 22 11 13 2 9 22 2`})],-1)]]),default:_(()=>[u(` `+S(y(i)(`chat.send`)),1)]),_:1},8,[`disabled`])])],34)]))}}),[[`__scopeId`,`data-v-9ceae9e7`]]),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:je,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-dots`},Yt={class:`message-time`},Xt=P(e({__name:`MessageItem`,props:{message:{}},setup(e){let t=e,{t:i}=N(),a=p(()=>t.message.role===`system`),o=D(!1),c=p(()=>new Date(t.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=p(()=>(t.message.attachments?.length??0)>0),f=p(()=>!!(t.message.toolArgs||t.message.toolResult)),g=p(()=>{if(!t.message.toolArgs)return``;try{return JSON.stringify(JSON.parse(t.message.toolArgs),null,2)}catch{return t.message.toolArgs}}),_=p(()=>{if(!t.message.toolResult)return``;try{let e=JSON.parse(t.message.toolResult),n=JSON.stringify(e,null,2);return n.length>2e3?n.slice(0,2e3)+`
141
+ `+i(`chat.truncated`):n}catch{let e=t.message.toolResult;return e.length>2e3?e.slice(0,2e3)+`
142
+ `+i(`chat.truncated`):e}});return(t,p)=>(h(),r(`div`,{class:E([`message`,[e.message.role]])},[e.message.role===`tool`?(h(),r(A,{key:0},[n(`div`,{class:E([`tool-line`,{expandable:f.value}]),onClick:p[0]||=e=>f.value&&(o.value=!o.value)},[f.value?(h(),r(`svg`,{key:0,width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:E([`tool-chevron`,{rotated:o.value}])},[...p[1]||=[n(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)):(h(),r(`svg`,kt,[...p[2]||=[n(`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)]])),n(`span`,At,S(e.message.toolName),1),e.message.toolPreview&&!o.value?(h(),r(`span`,jt,S(e.message.toolPreview),1)):m(``,!0),e.message.toolStatus===`running`?(h(),r(`span`,Mt)):m(``,!0),e.message.toolStatus===`error`?(h(),r(`span`,Nt,S(y(i)(`chat.error`)),1)):m(``,!0)],2),o.value&&f.value?(h(),r(`div`,Pt,[g.value?(h(),r(`div`,Ft,[n(`div`,It,S(y(i)(`chat.arguments`)),1),n(`pre`,Lt,S(g.value),1)])):m(``,!0),_.value?(h(),r(`div`,Rt,[n(`div`,zt,S(y(i)(`chat.result`)),1),n(`pre`,Bt,S(_.value),1)])):m(``,!0)])):m(``,!0)],64)):(h(),r(`div`,Vt,[e.message.role===`assistant`?(h(),r(`img`,Ht)):m(``,!0),n(`div`,{class:E([`msg-content`,e.message.role])},[n(`div`,{class:E([`message-bubble`,{system:a.value}])},[d.value?(h(),r(`div`,Ut,[(h(!0),r(A,null,s(e.message.attachments,e=>(h(),r(`div`,{key:e.id,class:E([`msg-attachment`,{image:l(e.type)}])},[l(e.type)&&e.url?(h(),r(`img`,{key:0,src:e.url,alt:e.name,class:`msg-attachment-thumb`},null,8,Wt)):(h(),r(`div`,Gt,[p[3]||=n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[n(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),n(`polyline`,{points:`14 2 14 8 20 8`})],-1),n(`span`,Kt,S(e.name),1),n(`span`,qt,S(u(e.size)),1)]))],2))),128))])):m(``,!0),e.message.content?(h(),j(Fe,{key:1,content:e.message.content},null,8,[`content`])):m(``,!0),e.message.isStreaming&&!e.message.content?(h(),r(`span`,Jt,[...p[4]||=[n(`span`,null,null,-1),n(`span`,null,null,-1),n(`span`,null,null,-1)]])):m(``,!0)],2),n(`div`,Yt,S(c.value),1)],2)]))],2))}}),[[`__scopeId`,`data-v-e05b15e8`]]),Zt=`/assets/thinking-Cwsva50h.mp4`,Qt={key:0,class:`empty-state`},$t={key:0,class:`streaming-indicator`},en=[`src`],tn={key:0,class:`tool-calls-panel`},nn={class:`tool-call-name`},rn={key:0,class:`tool-call-preview`},an={key:1,class:`tool-call-spinner`},on={key:2,class:`tool-call-error`},sn=P(e({__name:`MessageList`,setup(e){let t=Ne(),{t:i}=N(),a=D(),o=p(()=>t.messages.filter(e=>e.role!==`tool`)),l=p(()=>{let e=t.messages,n=-1;for(let t=e.length-1;t>=0;t--)if(e[t].role===`user`){n=t;break}return[...e.filter((e,t)=>e.role===`tool`&&t>n)].reverse()});function u(){c(()=>{a.value&&(a.value.scrollTop=a.value.scrollHeight)})}return g(()=>t.messages.length,u),g(()=>t.messages[t.messages.length-1]?.content,u),g(()=>t.isStreaming,e=>{e&&u()}),g(l,u),(e,c)=>(h(),r(`div`,{ref_key:`listRef`,ref:a,class:`message-list`},[y(t).messages.length===0?(h(),r(`div`,Qt,[c[0]||=n(`img`,{src:`/logo.png`,alt:`Hermes`,class:`empty-logo`},null,-1),n(`p`,null,S(y(i)(`chat.emptyState`)),1)])):m(``,!0),(h(!0),r(A,null,s(o.value,e=>(h(),j(Xt,{key:e.id,message:e},null,8,[`message`]))),128)),C(O,{name:`fade`},{default:_(()=>[y(t).isStreaming?(h(),r(`div`,$t,[n(`video`,{src:y(Zt),autoplay:``,loop:``,muted:``,playsinline:``,class:`thinking-video`},null,8,en),l.value.length>0?(h(),r(`div`,tn,[(h(!0),r(A,null,s(l.value,e=>(h(),r(`div`,{key:e.id,class:`tool-call-item`},[c[1]||=n(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-call-icon`},[n(`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`})],-1),n(`span`,nn,S(e.toolName),1),e.toolPreview?(h(),r(`span`,rn,S(e.toolPreview),1)):m(``,!0),e.toolStatus===`running`?(h(),r(`span`,an)):m(``,!0),e.toolStatus===`error`?(h(),r(`span`,on,S(y(i)(`chat.error`)),1)):m(``,!0)]))),128))])):m(``,!0)])):m(``,!0)]),_:1})],512))}}),[[`__scopeId`,`data-v-21c7a8d2`]]),cn={class:`chat-panel`},ln={class:`session-list-header`},un={key:0,class:`session-list-title`},dn={key:0,class:`session-items`},fn={key:0,class:`session-loading`},pn={key:1,class:`session-empty`},mn=[`onClick`],hn={class:`session-group-label`},gn={class:`session-group-count`},_n=[`onClick`,`onContextmenu`],vn={class:`session-item-content`},yn={class:`session-item-title`},bn={class:`session-item-meta`},xn={key:0,class:`session-item-model`},Sn={class:`session-item-time`},Cn={class:`chat-main`},wn={class:`chat-header`},Tn={class:`header-left`},En={class:`header-session-title`},Dn={key:0,class:`source-badge`},On={class:`header-actions`},kn={key:0,class:`context-info`},An=P(e({__name:`ChatPanel`,setup(e){let t=Ne(),i=Ae(),{t:a}=N(),o=D(!0),l=D(!1),d=D(``),f=D(null),v=D(null),w=D(new Set(JSON.parse(localStorage.getItem(`hermes_collapsed_groups`)||`[]`))),T={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 O(e){return e?T[e]||e:``}function k(e){return e===`api_server`?-1:e===`cron`?999:0}let M=p(()=>{let e=[...t.sessions].sort((e,t)=>t.createdAt-e.createdAt),n=new Map;for(let t of e){let e=t.source||``;n.has(e)||n.set(e,[]),n.get(e).push(t)}return[...n.keys()].sort((e,t)=>{let n=k(e),r=k(t);return n===r?e.localeCompare(t):n-r}).map(e=>({source:e,label:e?O(e):a(`chat.other`),sessions:n.get(e)}))});function P(e){if(!w.value.has(e))w.value=new Set([...w.value,e]);else{w.value=new Set(M.value.map(e=>e.source).filter(t=>t!==e));let n=M.value.find(t=>t.source===e);n?.sessions.length&&t.switchSession(n.sessions[0].id)}localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...w.value]))}g(M,e=>{localStorage.getItem(`hermes_collapsed_groups`)===null&&(w.value=new Set(e.slice(1).map(e=>e.source)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...w.value])))},{once:!0});let F=p(()=>t.activeSession?.title||a(`chat.newChat`)),ee=p(()=>(t.activeSession?.inputTokens??0)+(t.activeSession?.outputTokens??0)),I={"claude-opus-4":2e5,"claude-sonnet-4":2e5,"claude-haiku-4":2e5,"claude-3.5-sonnet":2e5,"claude-3.5-haiku":2e5,"claude-3-opus":2e5,"claude-3-sonnet":2e5,"claude-3-haiku":2e5,"gpt-4o":128e3,"gpt-4o-mini":128e3,"gpt-4-turbo":128e3,"gpt-4":8192,"gpt-3.5-turbo":16385,o1:2e5,"o1-mini":128e3,o3:2e5,"o3-mini":2e5,"o4-mini":2e5,"deepseek-chat":65536,"deepseek-reasoner":65536,"gemini-2.5-pro":1e6,"gemini-2.5-flash":1e6,"gemini-2.0-flash":1e6,"glm-4-plus":128e3,"glm-4":128e3,"qwen-max":128e3,"qwen-plus":128e3,"qwen-turbo":128e3},L=p(()=>{let e=t.activeSession?.model||``;for(let[t,n]of Object.entries(I))if(e.includes(t))return n;return null});function R(e){return e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`k`:String(e)}let z=p(()=>t.activeSession?.source||``);function B(){t.newChat()}function V(e){let n=e||t.activeSessionId;n&&(navigator.clipboard.writeText(n),i.success(a(`common.copied`)))}function H(e){t.deleteSession(e),i.success(a(`chat.sessionDeleted`))}function U(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 W=p(()=>[{label:a(`chat.rename`),key:`rename`},{label:a(`chat.copySessionId`),key:`copy-id`}]),G=D(null);function K(e,t){e.preventDefault(),G.value=t,q.value=!0,J.value=e.clientX,te.value=e.clientY}let q=D(!1),J=D(0),te=D(0);function ne(e){if(q.value=!1,G.value){if(e===`copy-id`)V(G.value);else if(e===`rename`){let e=t.sessions.find(e=>e.id===G.value);f.value=G.value,d.value=e?.title||``,l.value=!0,c(()=>{v.value?.focus()})}}}function Y(){q.value=!1}async function re(){if(!(!f.value||!d.value.trim())){if(await Pe(f.value,d.value.trim())){let e=t.sessions.find(e=>e.id===f.value);e&&(e.title=d.value.trim()),t.activeSession?.id===f.value&&(t.activeSession.title=d.value.trim()),i.success(a(`chat.renamed`))}else i.error(a(`chat.renameFailed`));l.value=!1}}return(e,i)=>(h(),r(`div`,cn,[n(`aside`,{class:E([`session-list`,{collapsed:!o.value}])},[n(`div`,ln,[o.value?(h(),r(`span`,un,S(y(a)(`chat.sessions`)),1)):m(``,!0),C(y($),{quaternary:``,size:`tiny`,onClick:B,circle:``},{icon:_(()=>[...i[5]||=[n(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[n(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),n(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),_:1})]),o.value?(h(),r(`div`,dn,[y(t).isLoadingSessions&&y(t).sessions.length===0?(h(),r(`div`,fn,S(y(a)(`common.loading`)),1)):y(t).sessions.length===0?(h(),r(`div`,pn,S(y(a)(`chat.noSessions`)),1)):m(``,!0),(h(!0),r(A,null,s(M.value,e=>(h(),r(A,{key:e.source},[n(`div`,{class:`session-group-header`,onClick:t=>P(e.source)},[(h(),r(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:E([`group-chevron`,{collapsed:w.value.has(e.source)}])},[...i[6]||=[n(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),n(`span`,hn,S(e.label),1),n(`span`,gn,S(e.sessions.length),1)],8,mn),w.value.has(e.source)?m(``,!0):(h(!0),r(A,{key:0},s(e.sessions,e=>(h(),r(`button`,{key:e.id,class:E([`session-item`,{active:e.id===y(t).activeSessionId}]),onClick:n=>y(t).switchSession(e.id),onContextmenu:t=>K(t,e.id)},[n(`div`,vn,[n(`span`,yn,S(e.title),1),n(`span`,bn,[e.model?(h(),r(`span`,xn,S(e.model),1)):m(``,!0),n(`span`,Sn,S(U(e.createdAt)),1)])]),e.id!==y(t).activeSessionId||y(t).sessions.length>1?(h(),j(y(vt),{key:0,onPositiveClick:t=>H(e.id)},{trigger:_(()=>[n(`button`,{class:`session-item-delete`,onClick:i[0]||=b(()=>{},[`stop`])},[...i[7]||=[n(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])]),default:_(()=>[u(` `+S(y(a)(`chat.deleteSession`)),1)]),_:1},8,[`onPositiveClick`])):m(``,!0)],42,_n))),128))],64))),128))])):m(``,!0)],2),C(y(lt),{placement:`bottom-start`,trigger:`manual`,x:J.value,y:te.value,options:W.value,show:q.value,onSelect:ne,onClickoutside:Y},null,8,[`x`,`y`,`options`,`show`]),C(y(Te),{show:l.value,"onUpdate:show":i[2]||=e=>l.value=e,preset:`dialog`,title:y(a)(`chat.renameSession`),"positive-text":y(a)(`common.ok`),"negative-text":y(a)(`common.cancel`),onPositiveClick:re},{default:_(()=>[C(y(Oe),{ref_key:`renameInputRef`,ref:v,value:d.value,"onUpdate:value":i[1]||=e=>d.value=e,placeholder:y(a)(`chat.enterNewTitle`),onKeydown:x(re,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`show`,`title`,`positive-text`,`negative-text`]),n(`div`,Cn,[n(`header`,wn,[n(`div`,Tn,[C(y($),{quaternary:``,size:`small`,onClick:i[3]||=e=>o.value=!o.value,circle:``},{icon:_(()=>[...i[8]||=[n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[n(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`}),n(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`}),n(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`}),n(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`})],-1)]]),_:1}),n(`span`,En,S(F.value),1),z.value?(h(),r(`span`,Dn,S(O(z.value)),1)):m(``,!0)]),n(`div`,On,[C(y(ke),{trigger:`hover`},{trigger:_(()=>[C(y($),{quaternary:``,size:`small`,onClick:i[4]||=e=>V(),circle:``},{icon:_(()=>[...i[9]||=[n(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[n(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),n(`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(` `+S(y(a)(`chat.copySessionId`)),1)]),_:1}),C(y($),{size:`small`,onClick:B},{icon:_(()=>[...i[10]||=[n(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[n(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),n(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),default:_(()=>[u(` `+S(y(a)(`chat.newChat`)),1)]),_:1})])]),C(sn),L.value===null?m(``,!0):(h(),r(`div`,kn,[n(`span`,null,S(R(ee.value))+` / `+S(R(L.value)),1)])),C(Ot)])]))}}),[[`__scopeId`,`data-v-3849a23e`]]),jn={class:`chat-view`},Mn=P(e({__name:`ChatView`,setup(e){let t=Me(),n=Ne();return a(()=>{t.loadModels(),n.loadSessions()}),(e,t)=>(h(),r(`div`,jn,[C(An)]))}}),[[`__scopeId`,`data-v-d35d4d9c`]]);export{Mn as default};