diff --git a/Dockerfile b/Dockerfile
index 19d78235ce34fa886c8b0601ec5752cdd57d63f9..4c0efd17c718819e88de0dc842563b90ea78be66 100755
--- a/Dockerfile
+++ b/Dockerfile
@@ -36,6 +36,7 @@ COPY entry.py /app/entry.py
COPY dashboard.html /app/dashboard.html
COPY plugins/pollinations/ /root/.hermes/plugins/image_gen/pollinations/
COPY scripts/ /app/scripts/
+COPY webui/ /app/webui/
RUN chmod 600 /root/.hermes/.env
diff --git a/entry.py b/entry.py
index b1392014ceb17673e9ec6e888471b2022c401d7f..6f6c7d35200b850e85976734facef6da1dc7262e 100755
--- a/entry.py
+++ b/entry.py
@@ -3,6 +3,7 @@
Serves a real-time monitoring dashboard on port 7860 and runs the
Hermes Gateway (Feishu WebSocket bot) in a background thread.
+Also serves hermes-web-ui (Vue SPA) at /webui
"""
import json
@@ -14,6 +15,7 @@ import threading
import time
import logging
import psutil
+import mimetypes
from datetime import datetime, timezone
from http.server import HTTPServer, BaseHTTPRequestHandler
from socketserver import ThreadingMixIn
@@ -38,6 +40,7 @@ CONFIG_FILE = os.path.join(HERMES_HOME, "config.yaml")
ENV_FILE = os.path.join(HERMES_HOME, ".env")
DASHBOARD_HTML = "/app/dashboard.html"
DEPLOY_HTML = "/app/deploy.html"
+WEBUI_DIR = "/app/webui"
# ---------------------------------------------------------------------------
# Logging
@@ -263,33 +266,70 @@ class DashboardHandler(BaseHTTPRequestHandler):
length = int(self.headers.get("Content-Length", 0))
return self.rfile.read(length) if length > 0 else b""
+ def _send_file(self, filepath: str, content_type: str = None):
+ """Serve a static file (JS, CSS, images, etc.)."""
+ try:
+ with open(filepath, "rb") as f:
+ body = f.read()
+ if content_type is None:
+ content_type = mimetypes.guess_type(filepath)[0] or "application/octet-stream"
+ self.send_response(200)
+ self.send_header("Content-Type", content_type)
+ self.send_header("Content-Length", str(len(body)))
+ self.send_header("Cache-Control", "public, max-age=86400")
+ self.end_headers()
+ self.wfile.write(body)
+ except FileNotFoundError:
+ self.send_error(404)
+
+ def _send_webui_html(self):
+ """Serve WebUI SPA index.html."""
+ index_path = os.path.join(WEBUI_DIR, "index.html")
+ if os.path.isfile(index_path):
+ self._send_html(index_path)
+ else:
+ self.send_error(404, "WebUI not installed")
+
# ── GET routes ──
def do_GET(self):
parsed = urlparse(self.path)
-
- # Dashboard
- if parsed.path in ("/", "/index.html"):
+ path = parsed.path
+
+ # ── WebUI SPA routes ──
+ if path == "/webui" or path == "/webui/":
+ return self._send_webui_html()
+
+ if path.startswith("/webui/"):
+ # Try serving static file first
+ static_path = os.path.join(WEBUI_DIR, path[len("/webui/"):])
+ if os.path.isfile(static_path):
+ return self._send_file(static_path)
+ # SPA fallback: serve index.html for client-side routing
+ return self._send_webui_html()
+
+ # ── Dashboard ──
+ if path in ("/", "/index.html"):
return self._send_html(DASHBOARD_HTML)
# Deploy overview
- if parsed.path == "/deploy":
+ if path == "/deploy":
return self._send_html(DEPLOY_HTML)
# SSE log stream
- if parsed.path == "/api/logs/stream":
+ if path == "/api/logs/stream":
return self._handle_sse()
# Status
- if parsed.path == "/api/status":
+ if path == "/api/status":
return self._send_json(self._get_status())
# Sessions
- if parsed.path == "/api/sessions":
+ if path == "/api/sessions":
return self._send_json(_get_session_list())
# Log history (REST, not SSE)
- if parsed.path == "/api/logs":
+ if path == "/api/logs":
return self._send_json(self._get_log_history(parsed.query))
self.send_error(404)
@@ -485,6 +525,7 @@ class DashboardHandler(BaseHTTPRequestHandler):
def main():
logger.info("=== Hermes Agent — HuggingFace Space Entry ===")
+ logger.info("WebUI at /webui (static preview)")
# Setup persistent storage
_ensure_persistent_storage()
diff --git a/webui/assets/Add-D070kowG.js b/webui/assets/Add-D070kowG.js
new file mode 100644
index 0000000000000000000000000000000000000000..e697b0dc332a9d639a6d72b998c38dd69d979f24
--- /dev/null
+++ b/webui/assets/Add-D070kowG.js
@@ -0,0 +1 @@
+import{Fr as e,Lr as t}from"./index-Cl8-DFW_.js";var n=e({name:`Add`,render(){return t(`svg`,{width:`512`,height:`512`,viewBox:`0 0 512 512`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},t(`path`,{d:`M256 112V400M400 256H112`,stroke:`currentColor`,"stroke-width":`32`,"stroke-linecap":`round`,"stroke-linejoin":`round`}))}});export{n as t};
\ No newline at end of file
diff --git a/webui/assets/ChannelsView-Br2GRhTp.js b/webui/assets/ChannelsView-Br2GRhTp.js
new file mode 100644
index 0000000000000000000000000000000000000000..5c94fd18da8200263d7082017d462c7572074d4b
--- /dev/null
+++ b/webui/assets/ChannelsView-Br2GRhTp.js
@@ -0,0 +1 @@
+import{t as e}from"./Switch-CDXAYhwk.js";import{Ar as t,Dr as n,Fr as r,Gr as i,I as a,Jr as o,N as s,Nr as c,Or as l,Pr as u,Qr as d,Ur as f,Wr as p,Yr as m,ai as h,c as g,ci as _,ei as v,jr as y,k as b,kr as x,lr as S,ni as C,oi as w,qr as T,u as E,wr as D,y as O}from"./index-Cl8-DFW_.js";import{a as k,i as A,n as j,r as M,t as N}from"./settings-Cxn8gJl1.js";import{t as P}from"./SettingRow-BACRFGe8.js";var F={class:`platform-info`},I=[`innerHTML`],L={class:`platform-name`},R={key:0,class:`platform-card-body`},z=g(r({__name:`PlatformCard`,props:{name:{},icon:{},config:{},credentials:{}},setup(e){let r=e,s=C(!0),{t:f}=S(),p=n(()=>{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(n,r)=>(i(),y(`div`,{class:w([`platform-card`,{configured:p.value}])},[l(`div`,{class:`platform-card-header`,onClick:r[0]||=e=>s.value=!s.value},[l(`div`,F,[l(`span`,{class:`platform-icon`,innerHTML:e.icon},null,8,I),l(`span`,L,_(e.name),1),u(h(a),{type:p.value?`success`:`default`,size:`small`,round:``},{default:d(()=>[c(_(p.value?h(f)(`common.configured`):h(f)(`common.notConfigured`)),1)]),_:1},8,[`type`])]),l(`span`,{class:w([`expand-icon`,{expanded:s.value}])},`▾`,2)]),s.value?(i(),y(`div`,R,[o(n.$slots,`default`,{},void 0,!0)])):t(``,!0)],2))}}),[[`__scopeId`,`data-v-cee18614`]]),B={class:`settings-section`},V={class:`weixin-qr-section`},H={key:1,class:`weixin-qr-loading`},U={key:2,class:`weixin-qr-hint`},W=g(r({__name:`PlatformSettings`,setup(n){let r=N(),a=O(),{t:o}=S(),f=v({});function g(e,t){return`${e}.${t}`}function w(e,t){return!!f[g(e,t)]}async function E(e,t,n){let r=g(e,t);f[r]=!0;try{await n(),a.success(o(`settings.saved`))}catch{a.error(o(`settings.saveFailed`))}finally{f[r]=!1}}async function F(e,t,n){E(e,t,()=>r.saveSection(e,n))}async function I(e,t,n){E(e,t,async()=>{await A(e,n),await r.fetchSettings()})}function L(e){return r.platforms[e]||{}}let R=C(``),W=C(``),G=C(`idle`),K=null;async function q(){G.value=`loading`,R.value=``,W.value=``,Y();try{let e=await j();W.value=e.qrcode,R.value=e.qrcode_url,window.open(e.qrcode_url,`_blank`),G.value=`waiting`,J()}catch(e){G.value=`error`,a.error(e.message||o(`platform.qrFetching`))}}function J(){W.value&&(K=setTimeout(async()=>{try{let e=await M(W.value);e.status===`wait`?J():e.status===`scaned`?(G.value=`scaned`,J()):e.status===`expired`?G.value=`expired`:e.status===`confirmed`&&(G.value=`confirmed`,await k({account_id:e.account_id,token:e.token,base_url:e.base_url}),await r.fetchSettings(),a.success(o(`settings.saved`)))}catch{J()}},3e3))}function Y(){K&&=(clearTimeout(K),null)}p(()=>{Y()});let X=[{key:`telegram`,name:`Telegram`,icon:``},{key:`discord`,name:`Discord`,icon:``},{key:`slack`,name:`Slack`,icon:``},{key:`whatsapp`,name:`WhatsApp`,icon:``},{key:`matrix`,name:`Matrix`,icon:``},{key:`feishu`,name:`Feishu`,icon:``},{key:`weixin`,name:`Weixin`,icon:``},{key:`wecom`,name:`WeCom`,icon:``}];return(n,a)=>{let f=m(`NSpin`);return i(),y(`section`,B,[(i(),y(D,null,T(X,n=>u(z,{key:n.key,name:n.name,icon:n.icon,config:h(r)[n.key],credentials:L(n.key)},{default:d(()=>[n.key===`telegram`?(i(),y(D,{key:0},[u(P,{label:h(o)(`platform.botToken`),hint:h(o)(`platform.botTokenHint`)},{default:d(()=>[u(h(s),{"default-value":L(`telegram`).token||``,loading:w(`telegram`,`token`),clearable:``,size:`small`,class:`input-lg`,placeholder:`123456:ABC-DEF...`,onChange:a[0]||=e=>I(`telegram`,`token`,{token:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionGroup`)},{default:d(()=>[u(h(e),{value:h(r).telegram.require_mention,loading:w(`telegram`,`require_mention`),"onUpdate:value":a[1]||=e=>F(`telegram`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.reactions`),hint:h(o)(`platform.reactionsHint`)},{default:d(()=>[u(h(e),{value:h(r).telegram.reactions,loading:w(`telegram`,`reactions`),"onUpdate:value":a[2]||=e=>F(`telegram`,`reactions`,{reactions:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChats`),hint:h(o)(`platform.freeResponseChatsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).telegram.free_response_chats||``,loading:w(`telegram`,`free_response_chats`),size:`small`,placeholder:`chat_id1,chat_id2`,onChange:a[3]||=e=>F(`telegram`,`free_response_chats`,{free_response_chats:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.mentionPatterns`),hint:h(o)(`platform.mentionPatternsHint`)},{default:d(()=>[u(h(s),{"default-value":(h(r).telegram.mention_patterns||[]).join(`, `),loading:w(`telegram`,`mention_patterns`),size:`small`,placeholder:`pattern1, pattern2`,onChange:a[4]||=e=>F(`telegram`,`mention_patterns`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`discord`?(i(),y(D,{key:1},[u(P,{label:h(o)(`platform.botToken`),hint:h(o)(`platform.botTokenHint`)},{default:d(()=>[u(h(s),{"default-value":L(`discord`).token||``,loading:w(`discord`,`token`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Bot token...`,onChange:a[5]||=e=>I(`discord`,`token`,{token:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionChannel`)},{default:d(()=>[u(h(e),{value:h(r).discord.require_mention,loading:w(`discord`,`require_mention`),"onUpdate:value":a[6]||=e=>F(`discord`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.autoThread`),hint:h(o)(`platform.autoThreadHint`)},{default:d(()=>[u(h(e),{value:h(r).discord.auto_thread,loading:w(`discord`,`auto_thread`),"onUpdate:value":a[7]||=e=>F(`discord`,`auto_thread`,{auto_thread:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.reactions`),hint:h(o)(`platform.reactionsHint`)},{default:d(()=>[u(h(e),{value:h(r).discord.reactions,loading:w(`discord`,`reactions`),"onUpdate:value":a[8]||=e=>F(`discord`,`reactions`,{reactions:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChannels`),hint:h(o)(`platform.freeResponseChannelsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).discord.free_response_channels||``,loading:w(`discord`,`free_response_channels`),size:`small`,placeholder:`channel_id1,channel_id2`,onChange:a[9]||=e=>F(`discord`,`free_response_channels`,{free_response_channels:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.allowedChannels`),hint:h(o)(`platform.allowedChannelsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).discord.allowed_channels||``,loading:w(`discord`,`allowed_channels`),size:`small`,placeholder:`channel_id1,channel_id2`,onChange:a[10]||=e=>F(`discord`,`allowed_channels`,{allowed_channels:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.ignoredChannels`),hint:h(o)(`platform.ignoredChannelsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).discord.ignored_channels||``,loading:w(`discord`,`ignored_channels`),size:`small`,placeholder:`channel_id1,channel_id2`,onChange:a[11]||=e=>F(`discord`,`ignored_channels`,{ignored_channels:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.noThreadChannels`),hint:h(o)(`platform.noThreadChannelsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).discord.no_thread_channels||``,loading:w(`discord`,`no_thread_channels`),size:`small`,placeholder:`channel_id1,channel_id2`,onChange:a[12]||=e=>F(`discord`,`no_thread_channels`,{no_thread_channels:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`slack`?(i(),y(D,{key:2},[u(P,{label:h(o)(`platform.botToken`),hint:h(o)(`platform.botTokenHint`)},{default:d(()=>[u(h(s),{"default-value":L(`slack`).token||``,loading:w(`slack`,`token`),clearable:``,size:`small`,class:`input-lg`,placeholder:`xoxb-...`,onChange:a[13]||=e=>I(`slack`,`token`,{token:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionChannel`)},{default:d(()=>[u(h(e),{value:h(r).slack.require_mention,loading:w(`slack`,`require_mention`),"onUpdate:value":a[14]||=e=>F(`slack`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.allowBots`),hint:h(o)(`platform.allowBotsHint`)},{default:d(()=>[u(h(e),{value:h(r).slack.allow_bots,loading:w(`slack`,`allow_bots`),"onUpdate:value":a[15]||=e=>F(`slack`,`allow_bots`,{allow_bots:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChannels`),hint:h(o)(`platform.freeResponseChannelsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).slack.free_response_channels||``,loading:w(`slack`,`free_response_channels`),size:`small`,placeholder:`channel_id1,channel_id2`,onChange:a[16]||=e=>F(`slack`,`free_response_channels`,{free_response_channels:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`whatsapp`?(i(),y(D,{key:3},[u(P,{label:h(o)(`platform.waEnabled`),hint:h(o)(`platform.waEnabledHint`)},{default:d(()=>[u(h(e),{value:L(`whatsapp`).enabled,loading:w(`whatsapp`,`enabled`),"onUpdate:value":a[17]||=e=>I(`whatsapp`,`enabled`,{enabled:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionGroup`)},{default:d(()=>[u(h(e),{value:h(r).whatsapp.require_mention,loading:w(`whatsapp`,`require_mention`),"onUpdate:value":a[18]||=e=>F(`whatsapp`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChats`),hint:h(o)(`platform.freeResponseChatsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).whatsapp.free_response_chats||``,loading:w(`whatsapp`,`free_response_chats`),size:`small`,placeholder:`chat_id1,chat_id2`,onChange:a[19]||=e=>F(`whatsapp`,`free_response_chats`,{free_response_chats:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.mentionPatterns`),hint:h(o)(`platform.mentionPatternsHint`)},{default:d(()=>[u(h(s),{"default-value":(h(r).whatsapp.mention_patterns||[]).join(`, `),loading:w(`whatsapp`,`mention_patterns`),size:`small`,placeholder:`pattern1, pattern2`,onChange:a[20]||=e=>F(`whatsapp`,`mention_patterns`,{mention_patterns:e?e.split(`,`).map(e=>e.trim()):[]})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`matrix`?(i(),y(D,{key:4},[u(P,{label:h(o)(`platform.accessToken`),hint:h(o)(`platform.accessTokenHint`)},{default:d(()=>[u(h(s),{"default-value":L(`matrix`).token||``,loading:w(`matrix`,`token`),clearable:``,size:`small`,class:`input-lg`,placeholder:`syt_...`,onChange:a[21]||=e=>I(`matrix`,`token`,{token:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.homeserver`),hint:h(o)(`platform.homeserverHint`)},{default:d(()=>[u(h(s),{"default-value":L(`matrix`).extra?.homeserver||``,loading:w(`matrix`,`homeserver`),clearable:``,size:`small`,class:`input-lg`,placeholder:`https://matrix.org`,onChange:a[22]||=e=>I(`matrix`,`homeserver`,{extra:{...L(`matrix`).extra,homeserver:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionRoom`)},{default:d(()=>[u(h(e),{value:h(r).matrix.require_mention,loading:w(`matrix`,`require_mention`),"onUpdate:value":a[23]||=e=>F(`matrix`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.autoThread`),hint:h(o)(`platform.autoThreadHintRoom`)},{default:d(()=>[u(h(e),{value:h(r).matrix.auto_thread,loading:w(`matrix`,`auto_thread`),"onUpdate:value":a[24]||=e=>F(`matrix`,`auto_thread`,{auto_thread:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.dmMentionThreads`),hint:h(o)(`platform.dmMentionThreadsHint`)},{default:d(()=>[u(h(e),{value:h(r).matrix.dm_mention_threads,loading:w(`matrix`,`dm_mention_threads`),"onUpdate:value":a[25]||=e=>F(`matrix`,`dm_mention_threads`,{dm_mention_threads:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseRooms`),hint:h(o)(`platform.freeResponseRoomsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).matrix.free_response_rooms||``,loading:w(`matrix`,`free_response_rooms`),size:`small`,placeholder:`room_id1,room_id2`,onChange:a[26]||=e=>F(`matrix`,`free_response_rooms`,{free_response_rooms:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`feishu`?(i(),y(D,{key:5},[u(P,{label:h(o)(`platform.appId`),hint:h(o)(`platform.appIdHint`)},{default:d(()=>[u(h(s),{"default-value":L(`feishu`).extra?.app_id||``,loading:w(`feishu`,`app_id`),clearable:``,size:`small`,class:`input-lg`,placeholder:`cli_...`,onChange:a[27]||=e=>I(`feishu`,`app_id`,{extra:{...L(`feishu`).extra,app_id:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.appSecret`),hint:h(o)(`platform.appSecretHint`)},{default:d(()=>[u(h(s),{"default-value":L(`feishu`).extra?.app_secret||``,loading:w(`feishu`,`app_secret`),clearable:``,size:`small`,class:`input-lg`,placeholder:`App Secret`,onChange:a[28]||=e=>I(`feishu`,`app_secret`,{extra:{...L(`feishu`).extra,app_secret:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionGroup`)},{default:d(()=>[u(h(e),{value:h(r).feishu.require_mention,loading:w(`feishu`,`require_mention`),"onUpdate:value":a[29]||=e=>F(`feishu`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChats`),hint:h(o)(`platform.freeResponseChatsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).feishu.free_response_chats||``,loading:w(`feishu`,`free_response_chats`),size:`small`,placeholder:`chat_id1,chat_id2`,onChange:a[30]||=e=>F(`feishu`,`free_response_chats`,{free_response_chats:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`dingtalk`?(i(),y(D,{key:6},[u(P,{label:h(o)(`platform.clientId`),hint:h(o)(`platform.clientIdHint`)},{default:d(()=>[u(h(s),{"default-value":L(`dingtalk`).extra?.client_id||``,loading:w(`dingtalk`,`client_id`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Client ID`,onChange:a[31]||=e=>I(`dingtalk`,`client_id`,{extra:{...L(`dingtalk`).extra,client_id:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.clientSecret`),hint:h(o)(`platform.clientSecretHint`)},{default:d(()=>[u(h(s),{"default-value":L(`dingtalk`).extra?.client_secret||``,loading:w(`dingtalk`,`client_secret`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Client Secret`,onChange:a[32]||=e=>I(`dingtalk`,`client_secret`,{extra:{...L(`dingtalk`).extra,client_secret:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.requireMention`),hint:h(o)(`platform.requireMentionGroup`)},{default:d(()=>[u(h(e),{value:h(r).dingtalk.require_mention,loading:w(`dingtalk`,`require_mention`),"onUpdate:value":a[33]||=e=>F(`dingtalk`,`require_mention`,{require_mention:e})},null,8,[`value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.freeResponseChats`),hint:h(o)(`platform.freeResponseChatsHint`)},{default:d(()=>[u(h(s),{"default-value":h(r).dingtalk.free_response_chats||``,loading:w(`dingtalk`,`free_response_chats`),size:`small`,placeholder:`chat_id1,chat_id2`,onChange:a[34]||=e=>F(`dingtalk`,`free_response_chats`,{free_response_chats:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`weixin`?(i(),y(D,{key:7},[l(`div`,V,[G.value===`idle`||G.value===`error`||G.value===`expired`||G.value===`confirmed`?(i(),x(h(b),{key:0,type:`primary`,size:`small`,onClick:q},{default:d(()=>[c(_(G.value===`confirmed`?h(o)(`platform.qrRelogin`):h(o)(`platform.qrLogin`)),1)]),_:1})):t(``,!0),G.value===`loading`?(i(),y(`div`,H,[u(f,{size:`small`}),l(`span`,null,_(h(o)(`platform.qrFetching`)),1)])):t(``,!0),G.value===`waiting`||G.value===`scaned`?(i(),y(`div`,U,_(G.value===`scaned`?h(o)(`platform.qrScanedHint`):h(o)(`platform.qrScanHint`)),1)):t(``,!0)]),u(P,{label:h(o)(`platform.weixinToken`),hint:h(o)(`platform.weixinTokenHint`)},{default:d(()=>[u(h(s),{"default-value":L(`weixin`).token||``,loading:w(`weixin`,`token`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Token`,onChange:a[35]||=e=>I(`weixin`,`token`,{token:e})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.accountId`),hint:h(o)(`platform.accountIdHint`)},{default:d(()=>[u(h(s),{"default-value":L(`weixin`).extra?.account_id||``,loading:w(`weixin`,`account_id`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Account ID`,onChange:a[36]||=e=>I(`weixin`,`account_id`,{extra:{...L(`weixin`).extra,account_id:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0),n.key===`wecom`?(i(),y(D,{key:8},[u(P,{label:h(o)(`platform.botId`),hint:h(o)(`platform.botIdHint`)},{default:d(()=>[u(h(s),{"default-value":L(`wecom`).extra?.bot_id||``,loading:w(`wecom`,`bot_id`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Bot ID`,onChange:a[37]||=e=>I(`wecom`,`bot_id`,{extra:{...L(`wecom`).extra,bot_id:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`]),u(P,{label:h(o)(`platform.appSecret`),hint:h(o)(`platform.wecomSecretHint`)},{default:d(()=>[u(h(s),{"default-value":L(`wecom`).extra?.secret||``,loading:w(`wecom`,`secret`),clearable:``,size:`small`,class:`input-lg`,placeholder:`Secret`,onChange:a[38]||=e=>I(`wecom`,`secret`,{extra:{...L(`wecom`).extra,secret:e}})},null,8,[`default-value`,`loading`])]),_:1},8,[`label`,`hint`])],64)):t(``,!0)]),_:2},1032,[`name`,`icon`,`config`,`credentials`])),64))])}}}),[[`__scopeId`,`data-v-c7999829`]]),G={class:`channels-view`},K={class:`page-header`},q={class:`header-title`},J={class:`channels-content`},Y=g(r({__name:`ChannelsView`,setup(e){let n=N(),{t:r}=S();return f(()=>{n.fetchSettings()}),(e,a)=>(i(),y(`div`,G,[l(`header`,K,[l(`h2`,q,_(h(r)(`sidebar.channels`)),1)]),l(`div`,J,[u(h(E),{show:h(n).loading||h(n).saving,size:`large`,description:h(r)(`common.loading`)},{default:d(()=>[h(n).loading?t(``,!0):(i(),x(W,{key:0}))]),_:1},8,[`show`,`description`])])]))}}),[[`__scopeId`,`data-v-e25dbf6c`]]);export{Y as default};
\ No newline at end of file
diff --git a/webui/assets/ChannelsView-DIBfwpcR.css b/webui/assets/ChannelsView-DIBfwpcR.css
new file mode 100644
index 0000000000000000000000000000000000000000..5a737d0043ed7151efc8b111eea72033b657666b
--- /dev/null
+++ b/webui/assets/ChannelsView-DIBfwpcR.css
@@ -0,0 +1 @@
+[data-v-cee18614]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-cee18614]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.platform-card[data-v-cee18614]{background-color:var(--bg-card);border:1px solid var(--border-color);border-radius:10px;margin-bottom:12px;overflow:hidden}.platform-card.configured[data-v-cee18614]{border-color:rgba(var(--success-rgb), .2)}.platform-card-header[data-v-cee18614]{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.platform-card-header[data-v-cee18614]:hover{background-color:rgba(var(--text-primary-rgb), .03)}.platform-info[data-v-cee18614]{align-items:center;gap:10px;display:flex}.platform-icon[data-v-cee18614]{width:18px;height:18px;color:var(--text-secondary);flex-shrink:0}.platform-name[data-v-cee18614]{color:var(--text-primary);font-size:14px;font-weight:500}.expand-icon[data-v-cee18614]{color:var(--text-muted);font-size:12px;transition:transform .2s}.expand-icon.expanded[data-v-cee18614]{transform:rotate(0)}.expand-icon[data-v-cee18614]:not(.expanded){transform:rotate(-90deg)}.platform-card-body[data-v-cee18614]{border-top:1px solid var(--border-light);padding:0 16px 12px}[data-v-c7999829]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-c7999829]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.settings-section[data-v-c7999829]{margin-top:16px}.weixin-qr-section[data-v-c7999829]{margin-top:12px;margin-bottom:12px}.weixin-qr-loading[data-v-c7999829]{color:var(--text-muted);align-items:center;gap:8px;font-size:13px;display:flex}.weixin-qr-hint[data-v-c7999829]{color:var(--text-secondary);font-size:13px}[data-v-e25dbf6c]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-e25dbf6c]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.channels-view[data-v-e25dbf6c]{height:calc(100 * var(--vh));flex-direction:column;display:flex}.channels-content[data-v-e25dbf6c]{flex:1;padding:20px;position:relative;overflow-y:auto}
diff --git a/webui/assets/ChatView-BYd7bMKt.js b/webui/assets/ChatView-BYd7bMKt.js
new file mode 100644
index 0000000000000000000000000000000000000000..c9de7106de30454872554b90502657da5c67cb30
--- /dev/null
+++ b/webui/assets/ChatView-BYd7bMKt.js
@@ -0,0 +1,5 @@
+import{t as e}from"./Dropdown-ReirMLrI.js";import{t}from"./Tooltip-DQzh27d-.js";import{t as n}from"./Popconfirm-ClpYjEYd.js";import{n as r}from"./app-IytcAxLh.js";import{$r as i,Ar as a,Br as o,Dr as s,Fr as c,Gr as l,Hr as u,N as d,Nr as f,Or as p,Pr as m,Qr as h,Sr as g,Tr as _,Ur as ee,Wr as v,Xr as y,Zr as b,_r as x,ai as S,b as C,c as w,ci as T,cr as E,i as D,jr as O,k,kr as A,l as j,lr as M,n as N,ni as P,o as F,oi as I,pr as L,qr as R,r as z,s as B,si as V,t as te,wr as H,xr as ne,y as re,yr as ie}from"./index-Cl8-DFW_.js";import{t as ae}from"./settings-Cxn8gJl1.js";import{t as oe}from"./session-browser-prefs-D7bVorU0.js";import{t as se}from"./clipboard-BulqpJ4r.js";import{a as ce,i as U,n as le,r as ue,t as de}from"./MarkdownRenderer-P3bVUblX.js";var W={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 G(e){return e?W[e]||e:``}function K(e){if(!e)return``;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`})}function q(e){return K(e*1e3)}var fe={class:`chat-input-area`},J={class:`input-top-bar`},Y={key:1,class:`context-bar`},pe={key:0,class:`attachment-previews`},X=[`src`,`alt`],Z={key:1,class:`attachment-file`},Q={class:`file-name`},$={class:`file-size`},me=[`onClick`],he=[`placeholder`],ge={class:`input-actions`},_e=2e5,ve=w(c({__name:`ChatInput`,setup(e){let n=te(),{t:o}=M(),c=P(``),u=P(),d=P(),g=P([]),_=P(!1),v=P(0),b=P(!1),x=s(()=>c.value.trim()||g.value.length>0),C=P(2e5);async function w(){try{C.value=await D(B().activeProfileName||void 0)}catch{C.value=_e}}ee(w),y(()=>B().activeProfileName,w),y(()=>r().selectedModel,w);let E=s(()=>(n.activeSession?.inputTokens??0)+(n.activeSession?.outputTokens??0)),j=s(()=>Math.max(0,C.value-E.value)),N=s(()=>Math.min(E.value/C.value*100,100));function F(e){return e>=1e6?(e/1e6).toFixed(1)+`M`:e>=1e3?(e/1e3).toFixed(1)+`k`:String(e)}function L(e){if(g.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);g.value.push({id:t,name:e.name,type:e.type,size:e.size,url:n,file:e})}function z(){d.value?.click()}function ne(e){let t=e.target;if(t.files){for(let e of t.files)L(e);t.value=``}}function re(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`;L(new File([t],`pasted-${Date.now()}.${n}`,{type:e.type}))}}}function ae(e){e.preventDefault()}function oe(e){e.preventDefault(),e.dataTransfer?.types.includes(`Files`)&&(v.value++,_.value=!0)}function se(){v.value--,v.value<=0&&(v.value=0,_.value=!1)}function ce(e){e.preventDefault(),v.value=0,_.value=!1;let t=Array.from(e.dataTransfer?.files||[]);if(t.length){for(let e of t)L(e);u.value?.focus()}}function U(){let e=c.value.trim();!e&&g.value.length===0||(n.sendMessage(e,g.value.length>0?g.value:void 0),c.value=``,g.value=[],u.value&&(u.value.style.height=`auto`))}function le(){b.value=!0}function ue(){requestAnimationFrame(()=>{b.value=!1})}function de(e){return b.value||e.isComposing||e.keyCode===229}function W(e){e.key!==`Enter`||e.shiftKey||de(e)||(e.preventDefault(),U())}function G(e){let t=e.target;t.style.height=`auto`,t.style.height=Math.min(t.scrollHeight,100)+`px`}function K(e){let t=g.value.findIndex(t=>t.id===e);t!==-1&&(URL.revokeObjectURL(g.value[t].url),g.value.splice(t,1))}function q(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function ve(e){return e.startsWith(`image/`)}return(e,r)=>(l(),O(`div`,fe,[p(`div`,J,[m(S(t),{trigger:`hover`},{trigger:h(()=>[m(S(k),{quaternary:``,size:`tiny`,onClick:z,circle:``},{icon:h(()=>[...r[2]||=[p(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[p(`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:h(()=>[f(` `+T(S(o)(`chat.attachFiles`)),1)]),_:1}),E.value>0?(l(),O(`span`,{key:0,class:I([`context-info`,{"context-warning":N.value>80}])},T(F(E.value))+` / `+T(F(C.value))+` · `+T(S(o)(`chat.contextRemaining`))+` `+T(F(j.value)),3)):a(``,!0),E.value>0?(l(),O(`div`,Y,[p(`div`,{class:I([`context-bar-fill`,{"context-bar-warn":N.value>60&&N.value<=80,"context-bar-danger":N.value>80}]),style:V({width:`${N.value}%`})},null,6)])):a(``,!0)]),g.value.length>0?(l(),O(`div`,pe,[(l(!0),O(H,null,R(g.value,e=>(l(),O(`div`,{key:e.id,class:I([`attachment-preview`,{image:ve(e.type)}])},[ve(e.type)?(l(),O(`img`,{key:0,src:e.url,alt:e.name,class:`attachment-thumb`},null,8,X)):(l(),O(`div`,Z,[r[3]||=p(`svg`,{width:`20`,height:`20`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[p(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),p(`polyline`,{points:`14 2 14 8 20 8`})],-1),p(`span`,Q,T(e.name),1),p(`span`,$,T(q(e.size)),1)])),p(`button`,{class:`attachment-remove`,onClick:t=>K(e.id)},[...r[4]||=[p(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),p(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,me)],2))),128))])):a(``,!0),p(`div`,{class:I([`input-wrapper`,{"drag-over":_.value}]),onDragover:ae,onDragenter:oe,onDragleave:se,onDrop:ce},[p(`input`,{ref_key:`fileInputRef`,ref:d,type:`file`,multiple:``,class:`file-input-hidden`,onChange:ne},null,544),i(p(`textarea`,{ref_key:`textareaRef`,ref:u,"onUpdate:modelValue":r[0]||=e=>c.value=e,class:`input-textarea`,placeholder:S(o)(`chat.inputPlaceholder`),rows:`1`,onKeydown:W,onCompositionstart:le,onCompositionend:ue,onInput:G,onPaste:re},null,40,he),[[ie,c.value]]),p(`div`,ge,[S(n).isStreaming?(l(),A(S(k),{key:0,size:`small`,type:`error`,onClick:r[1]||=e=>S(n).stopStreaming()},{default:h(()=>[f(T(S(o)(`chat.stop`)),1)]),_:1})):a(``,!0),m(S(k),{size:`small`,type:`primary`,disabled:!x.value||S(n).isStreaming,onClick:U},{icon:h(()=>[...r[5]||=[p(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`22`,y1:`2`,x2:`11`,y2:`13`}),p(`polygon`,{points:`22 2 15 22 11 13 2 9 22 2`})],-1)]]),default:h(()=>[f(` `+T(S(o)(`chat.send`)),1)]),_:1},8,[`disabled`])])],34)]))}}),[[`__scopeId`,`data-v-e8019954`]]);async function ye(e={}){let t=new URLSearchParams;return e.humanOnly===!1&&t.set(`humanOnly`,`false`),e.source&&t.set(`source`,e.source),e.limit!=null&&t.set(`limit`,String(e.limit)),(await L(`/api/hermes/sessions/conversations${t.toString()?`?${t.toString()}`:``}`)).sessions}async function be(e,t={}){let n=new URLSearchParams;t.humanOnly===!1&&n.set(`humanOnly`,`false`),t.source&&n.set(`source`,t.source);let r=n.toString()?`?${n.toString()}`:``;return L(`/api/hermes/sessions/conversations/${encodeURIComponent(e)}/messages${r}`)}var xe={class:`conversation-monitor`},Se={class:`conversation-monitor__sidebar`},Ce={key:0,class:`conversation-monitor__empty`},we={key:1,class:`conversation-monitor__empty`},Te=[`aria-pressed`,`onClick`],Ee={class:`conversation-monitor__session-title-row`},De={class:`conversation-monitor__session-title`},Oe={key:0,class:`conversation-monitor__session-live`},ke={class:`conversation-monitor__session-meta`},Ae={key:0,class:`conversation-monitor__session-preview`},je={class:`conversation-monitor__detail`},Me={key:0,class:`conversation-monitor__detail-header`},Ne={class:`conversation-monitor__detail-title`},Pe={class:`conversation-monitor__detail-meta`},Fe={key:1,class:`conversation-monitor__empty conversation-monitor__empty--error`},Ie={key:2,class:`conversation-monitor__empty`},Le={key:3,class:`conversation-monitor__empty`},Re={key:4,class:`conversation-monitor__messages`},ze={class:`conversation-monitor__message-meta`},Be={class:`conversation-monitor__message-content`},Ve=15e3,He=w(c({__name:`ConversationMonitorPane`,props:{humanOnly:{type:Boolean}},setup(e){let t=e,{t:n}=M(),r=P([]),i=P(null),o=P(null),c=P(!1),u=P(!1),d=P(``),f=null,m=0,h=0,g=s(()=>r.value.find(e=>e.id===i.value)||null);function _(e){return n(e===`user`?`chat.monitorRoleUser`:`chat.monitorRoleAssistant`)}function b(e){return n(`chat.linkedSessions`,{count:e})}function x(){m+=1,h+=1}async function C(e=!1){let n=++m;e||(c.value=!0,d.value=``);try{let e=await ye({humanOnly:t.humanOnly});if(n!==m)return;if(r.value=e,!e.length){i.value=null,o.value=null;return}(!i.value||!e.some(e=>e.id===i.value))&&(i.value=e[0].id)}catch(t){if(n!==m||e)return;d.value=t?.message||String(t),r.value=[],i.value=null,o.value=null}finally{!e&&n===m&&(c.value=!1)}}async function w(e,n=!1){let r=++h;if(!e){o.value=null;return}let a=t.humanOnly;n||(u.value=!0,d.value=``);try{let n=await be(e,{humanOnly:a});if(r!==h||e!==i.value||a!==t.humanOnly)return;o.value=n}catch(e){if(r!==h||n)return;d.value=e?.message||String(e),o.value=null}finally{!n&&r===h&&(u.value=!1)}}return y(i,async e=>{await w(e,!1)}),y(()=>t.humanOnly,async()=>{x(),i.value=null,o.value=null,await C(!1)}),ee(async()=>{await C(!1),f=setInterval(async()=>{await C(!0),i.value&&await w(i.value,!0)},Ve)}),v(()=>{x(),f&&clearInterval(f)}),(e,t)=>(l(),O(`div`,xe,[p(`aside`,Se,[c.value&&r.value.length===0?(l(),O(`div`,Ce,T(S(n)(`common.loading`)),1)):r.value.length===0?(l(),O(`div`,we,T(S(n)(`chat.noSessions`)),1)):a(``,!0),(l(!0),O(H,null,R(r.value,e=>(l(),O(`button`,{key:e.id,class:I([`conversation-monitor__session`,{active:e.id===i.value}]),"aria-pressed":e.id===i.value,onClick:t=>i.value=e.id},[p(`div`,Ee,[p(`span`,De,T(e.title||e.preview||e.id),1),e.is_active?(l(),O(`span`,Oe,T(S(n)(`chat.recentBadge`)),1)):a(``,!0)]),p(`div`,ke,T(S(G)(e.source))+` · `+T(S(q)(e.last_active)),1),e.preview?(l(),O(`div`,Ae,T(e.preview),1)):a(``,!0)],10,Te))),128))]),p(`section`,je,[g.value?(l(),O(`header`,Me,[p(`div`,Ne,T(g.value.title||g.value.preview||g.value.id),1),p(`div`,Pe,[p(`span`,null,T(S(G)(g.value.source)),1),t[0]||=p(`span`,null,`·`,-1),p(`span`,null,T(g.value.model),1),t[1]||=p(`span`,null,`·`,-1),p(`span`,null,T(b(g.value.thread_session_count)),1)])])):a(``,!0),d.value?(l(),O(`div`,Fe,T(d.value),1)):u.value&&!o.value?(l(),O(`div`,Ie,T(S(n)(`common.loading`)),1)):!o.value||o.value.messages.length===0?(l(),O(`div`,Le,T(S(n)(`chat.noVisibleMessages`)),1)):(l(),O(`div`,Re,[(l(!0),O(H,null,R(o.value.messages,e=>(l(),O(`article`,{key:`${e.session_id}-${e.id}`,class:I([`conversation-monitor__message`,`role-${e.role}`])},[p(`div`,ze,T(_(e.role))+` · `+T(S(q)(e.timestamp)),1),p(`div`,Be,T(e.content),1)],2))),128))]))])]))}}),[[`__scopeId`,`data-v-be298d0d`]]),Ue=[`id`],We={key:1,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-icon`},Ge={class:`tool-name`},Ke={key:2,class:`tool-preview`},qe={key:3,class:`tool-spinner`},Je={key:4,class:`tool-error-badge`},Ye={key:0,class:`tool-detail-section`,"data-copy-source":`tool-args`},Xe={class:`tool-detail-label`},Ze=[`innerHTML`],Qe={key:1,class:`tool-detail-section`,"data-copy-source":`tool-result`},$e={class:`tool-detail-label`},et=[`innerHTML`],tt={key:1,class:`msg-body`},nt={key:0,src:E,alt:`Hermes`,class:`msg-avatar`},rt={key:0,class:`msg-attachments`},it=[`src`,`alt`,`onClick`],at=[`onClick`,`title`],ot={class:`att-name`},st={class:`att-size`},ct={class:`thinking-label`},lt={key:0,class:`thinking-meta`},ut={class:`thinking-meta`},dt={key:0,class:`thinking-body`},ft={key:3,class:`streaming-dots`},pt={class:`message-meta`},mt=[`title`],ht={class:`message-time`},gt=[`src`],_t=2e3,vt=w(c({__name:`MessageItem`,props:{message:{},highlight:{type:Boolean}},setup(e){let t=e,{t:n}=M(),r=re(),i=s(()=>t.message.role===`system`),o=P(!1),c=P(null),d=te(),f=ae(),h=s(()=>{if(t.message.role===`tool`)return null;let e=t.message.content||``;return e.trim()?e:null});async function ee(){let e=h.value;if(e)try{await navigator.clipboard.writeText(e),r.success(n(`chat.copiedBubble`))}catch{r.error(n(`chat.copyFailed`))}}let v=s(()=>z(t.message.content||``,{streaming:!!t.message.isStreaming})),y=s(()=>!!(t.message.reasoning&&t.message.reasoning.length>0)),x=s(()=>y.value||v.value.hasThinking),C=s(()=>{let e=[];return t.message.reasoning&&e.push(t.message.reasoning),e.push(...v.value.segments),v.value.pending&&e.push(v.value.pending),e.join(`
+
+`)}),w=s(()=>{let e=N(v.value);return t.message.reasoning&&(e+=t.message.reasoning.length),e}),E=s(()=>t.message.isStreaming?!!(v.value.pending!==null||y.value&&!t.message.content):!1),D=P(null),k=s(()=>E.value?!0:D.value===null?!!f.display.show_reasoning:D.value);function j(){D.value=!k.value}let F=P(Date.now()),L=null;function B(){let e=d.getThinkingObservation(t.message.id),n=!!(t.message.isStreaming&&e?.startedAt!==void 0&&e.endedAt===void 0);n&&L===null?L=window.setInterval(()=>{F.value=Date.now()},1e3):!n&&L!==null&&(window.clearInterval(L),L=null)}b(B),u(()=>{L!==null&&window.clearInterval(L)});let V=s(()=>{let e=d.getThinkingObservation(t.message.id);if(!e?.startedAt)return null;let n=e.endedAt??(t.message.isStreaming?F.value:e.startedAt);return Math.max(0,n-e.startedAt)});function ne(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60),r=t%60;return r===0?`${n}m`:`${n}m ${r}s`}let ie=s(()=>new Date(t.message.timestamp).toLocaleTimeString([],{hour:`2-digit`,minute:`2-digit`}));function oe(e){return e.startsWith(`image/`)}function se(e){return e<1024?e+` B`:e<1024*1024?(e/1024).toFixed(1)+` KB`:(e/(1024*1024)).toFixed(1)+` MB`}function W(e){let n=t.message.content||``,r=/\[File:\s*([^\]]+)\]\(([^)]+)\)/g,i;for(;(i=r.exec(n))!==null;)if(i[1].trim()===e.trim())return i[2];return null}function G(e){let t=W(e.name);if(t){r.info(n(`download.downloading`)),ce(t,e.name).catch(e=>{r.error(e.message||n(`download.downloadFailed`))});return}if(e.url&&e.url.startsWith(`blob:`)){let t=document.createElement(`a`);t.href=e.url,t.download=e.name,document.body.appendChild(t),t.click(),document.body.removeChild(t)}}function K(e){if(!e)return{full:``,display:``};try{let t=JSON.stringify(JSON.parse(e),null,2);return{full:t,display:t.length>_t?t.slice(0,_t)+`
+`+n(`chat.truncated`):t,language:`json`}}catch{return{full:e,display:e.length>_t?e.slice(0,_t)+`
+`+n(`chat.truncated`):e}}}function q(e,t){return U(e,t,n(`common.copy`),{maxHighlightLength:_t})}async function fe(e){let t=e.target;if(!(t instanceof HTMLElement))return;let n=t.closest(`[data-copy-code="true"]`);if(!n)return;e.preventDefault();let r=n.closest(`[data-copy-source]`)?.dataset.copySource;if(r===`tool-args`&&Z.value){await le(Z.value);return}if(r===`tool-result`&&$.value){await le($.value);return}await ue(e)}let J=s(()=>(t.message.attachments?.length??0)>0),Y=s(()=>!!(t.message.toolArgs||t.message.toolResult)),pe=s(()=>K(t.message.toolArgs)),X=s(()=>K(t.message.toolResult)),Z=s(()=>pe.value.full),Q=s(()=>pe.value.display),$=s(()=>X.value.full),me=s(()=>X.value.display),he=s(()=>Q.value?q(Q.value,pe.value.language):``),ge=s(()=>me.value?q(me.value,X.value.language):``);return(t,r)=>(l(),O(H,null,[p(`div`,{class:I([`message`,[e.message.role,{highlight:e.highlight}]]),id:`message-${e.message.id}`},[e.message.role===`tool`?(l(),O(H,{key:0},[p(`div`,{class:I([`tool-line`,{expandable:Y.value}]),onClick:r[0]||=e=>Y.value&&(o.value=!o.value)},[Y.value?(l(),O(`svg`,{key:0,width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:I([`tool-chevron`,{rotated:o.value}])},[...r[3]||=[p(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)):(l(),O(`svg`,We,[...r[4]||=[p(`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)]])),p(`span`,Ge,T(e.message.toolName),1),e.message.toolPreview&&!o.value?(l(),O(`span`,Ke,T(e.message.toolPreview),1)):a(``,!0),e.message.toolStatus===`running`?(l(),O(`span`,qe)):a(``,!0),e.message.toolStatus===`error`?(l(),O(`span`,Je,T(S(n)(`chat.error`)),1)):a(``,!0)],2),o.value&&Y.value?(l(),O(`div`,{key:0,class:`tool-details`,onClick:fe},[Q.value?(l(),O(`div`,Ye,[p(`div`,Xe,T(S(n)(`chat.arguments`)),1),p(`div`,{class:`tool-detail-code-block`,innerHTML:he.value},null,8,Ze)])):a(``,!0),me.value?(l(),O(`div`,Qe,[p(`div`,$e,T(S(n)(`chat.result`)),1),p(`div`,{class:`tool-detail-code-block`,innerHTML:ge.value},null,8,et)])):a(``,!0)])):a(``,!0)],64)):(l(),O(`div`,tt,[e.message.role===`assistant`?(l(),O(`img`,nt)):a(``,!0),p(`div`,{class:I([`msg-content`,e.message.role])},[p(`div`,{class:I([`message-bubble`,{system:i.value}])},[J.value?(l(),O(`div`,rt,[(l(!0),O(H,null,R(e.message.attachments,e=>(l(),O(`div`,{key:e.id,class:I([`msg-attachment`,{image:oe(e.type)}])},[oe(e.type)&&e.url?(l(),O(`img`,{key:0,src:e.url,alt:e.name,class:`msg-attachment-thumb`,onClick:t=>c.value=e.url},null,8,it)):(l(),O(`div`,{key:1,class:`msg-attachment-file`,onClick:t=>G(e),style:{cursor:`pointer`},title:S(n)(`download.downloadFile`)},[r[5]||=p(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[p(`path`,{d:`M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z`}),p(`polyline`,{points:`14 2 14 8 20 8`})],-1),p(`span`,ot,T(e.name),1),p(`span`,st,T(se(e.size)),1),r[6]||=p(`svg`,{class:`att-download-icon`,width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`}),p(`polyline`,{points:`7 10 12 15 17 10`}),p(`line`,{x1:`12`,y1:`15`,x2:`12`,y2:`3`})],-1)],8,at))],2))),128))])):a(``,!0),x.value?(l(),O(`div`,{key:1,class:I([`thinking-block`,{expanded:k.value}])},[p(`div`,{class:`thinking-header`,onClick:j},[(l(),O(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:I([`thinking-chevron`,{rotated:k.value}])},[...r[7]||=[p(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),r[8]||=p(`span`,{class:`thinking-icon`},`💭`,-1),p(`span`,ct,T(E.value?S(n)(`chat.thinkingInProgress`):S(n)(`chat.thinkingLabel`)),1),V.value!==null&&V.value>0?(l(),O(`span`,lt,` · `+T(S(n)(`chat.thinkingDuration`,{duration:ne(V.value)})),1)):a(``,!0),p(`span`,ut,` · `+T(S(n)(`chat.thinkingChars`,{count:w.value})),1)]),k.value?(l(),O(`div`,dt,[m(de,{content:C.value},null,8,[`content`])])):a(``,!0)],2)):a(``,!0),v.value.body?(l(),A(de,{key:2,content:v.value.body},null,8,[`content`])):a(``,!0),e.message.isStreaming&&!e.message.content?(l(),O(`span`,ft,[...r[9]||=[p(`span`,null,null,-1),p(`span`,null,null,-1),p(`span`,null,null,-1)]])):a(``,!0)],2),p(`div`,pt,[h.value?(l(),O(`button`,{key:0,class:`copy-bubble-btn`,onClick:ee,title:S(n)(`chat.copyBubble`)},[...r[10]||=[p(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),p(`path`,{d:`M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1`})],-1)]],8,mt)):a(``,!0),p(`span`,ht,T(ie.value),1)])],2)]))],10,Ue),(l(),A(_,{to:`body`},[c.value?(l(),O(`div`,{key:0,class:`image-preview-overlay`,onClick:r[2]||=g(e=>c.value=null,[`self`])},[p(`img`,{src:c.value,class:`image-preview-img`,onClick:r[1]||=e=>c.value=null},null,8,gt)])):a(``,!0)]))],64))}}),[[`__scopeId`,`data-v-c7d0f76f`]]),yt=`/webui/assets/thinking-light-BjeGd2gJ.mp4`,bt=`/webui/assets/thinking-dark-yYkYRZLs.mp4`,xt={key:0,class:`empty-state`},St={key:0,class:`streaming-indicator`},Ct=[`src`],wt={key:0,class:`tool-calls-panel`},Tt={class:`tool-call-name`},Et={key:0,class:`tool-call-preview`},Dt={key:1,class:`tool-call-spinner`},Ot={key:2,class:`tool-call-error`},kt=w(c({__name:`MessageList`,setup(e){let t=te(),{t:n}=M(),{isDark:r}=j(),i=P(),c=s(()=>t.messages.filter(e=>e.role!==`tool`)),u=s(()=>{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 d(e=200){let t=i.value;return t?t.scrollHeight-t.scrollTop-t.clientHeight{i.value&&(i.value.scrollTop=i.value.scrollHeight)})}function g(e){o(()=>{let t=document.getElementById(`message-${e}`);t&&t.scrollIntoView({block:`center`})})}return y(()=>t.activeSessionId,e=>{if(e){if(t.focusMessageId){o(()=>g(t.focusMessageId));return}o(()=>f())}},{immediate:!0}),y(()=>t.focusMessageId,e=>{e&&g(e)}),y(()=>t.isRunActive,e=>{e&&f()}),y(()=>t.messages[t.messages.length-1]?.content,()=>{if(t.focusMessageId){g(t.focusMessageId);return}d()&&f()}),y(u,()=>{if(t.focusMessageId){g(t.focusMessageId);return}d()&&f()}),(e,o)=>(l(),O(`div`,{ref_key:`listRef`,ref:i,class:`message-list`},[S(t).messages.length===0?(l(),O(`div`,xt,[o[0]||=p(`img`,{src:`/webui/logo.png`,alt:`Hermes`,class:`empty-logo`},null,-1),p(`p`,null,T(S(n)(`chat.emptyState`)),1)])):a(``,!0),(l(!0),O(H,null,R(c.value,e=>(l(),A(vt,{key:e.id,message:e,highlight:S(t).focusMessageId===e.id},null,8,[`message`,`highlight`]))),128)),m(x,{name:`fade`},{default:h(()=>[S(t).isRunActive?(l(),O(`div`,St,[p(`video`,{src:S(r)?S(bt):S(yt),autoplay:``,loop:``,muted:``,playsinline:``,class:`thinking-video`},null,8,Ct),u.value.length>0?(l(),O(`div`,wt,[(l(!0),O(H,null,R(u.value,e=>(l(),O(`div`,{key:e.id,class:`tool-call-item`},[o[1]||=p(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,class:`tool-call-icon`},[p(`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),p(`span`,Tt,T(e.toolName),1),e.toolPreview?(l(),O(`span`,Et,T(e.toolPreview),1)):a(``,!0),e.toolStatus===`running`?(l(),O(`span`,Dt)):a(``,!0),e.toolStatus===`error`?(l(),O(`span`,Ot,T(S(n)(`chat.error`)),1)):a(``,!0)]))),128))])):a(``,!0)])):a(``,!0)]),_:1})],512))}}),[[`__scopeId`,`data-v-1bc92f44`]]),At=[`aria-current`],jt={class:`session-item-content`},Mt={class:`session-item-title-row`},Nt={key:0,class:`session-item-active-indicator`,"aria-hidden":`true`},Pt={key:1,class:`session-item-pin`,"aria-hidden":`true`},Ft={class:`session-item-title`},It={key:2,class:`session-item-live-badge`},Lt={class:`session-item-meta`},Rt={key:0,class:`session-item-model`},zt={class:`session-item-time`},Bt=c({__name:`SessionListItem`,props:{session:{},active:{type:Boolean},live:{type:Boolean},pinned:{type:Boolean},canDelete:{type:Boolean}},emits:[`select`,`contextmenu`,`delete`],setup(e,{emit:t}){let r=t,{t:i}=M();return(t,o)=>(l(),O(`button`,{class:I([`session-item`,{active:e.active,live:e.live}]),"aria-current":e.active?`page`:void 0,onClick:o[2]||=e=>r(`select`),onContextmenu:o[3]||=e=>r(`contextmenu`,e)},[p(`div`,jt,[p(`span`,Mt,[e.live?(l(),O(`span`,Nt,[...o[4]||=[p(`svg`,{class:`session-item-active-spinner`,width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`},[p(`circle`,{cx:`12`,cy:`12`,r:`8`,opacity:`0.2`}),p(`path`,{d:`M20 12a8 8 0 0 0-8-8`})],-1)]])):a(``,!0),e.pinned?(l(),O(`span`,Pt,[...o[5]||=[p(`svg`,{width:`11`,height:`11`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[p(`path`,{d:`M12 17v5`}),p(`path`,{d:`M5 8l14 0`}),p(`path`,{d:`M8 3l8 0 0 5 3 5-14 0 3-5z`})],-1)]])):a(``,!0),p(`span`,Ft,T(e.session.title),1),e.live?(l(),O(`span`,It,[o[6]||=p(`span`,{class:`live-dot`},null,-1),p(`span`,null,T(S(i)(`chat.liveMode`)),1)])):a(``,!0)]),p(`span`,Lt,[e.session.model?(l(),O(`span`,Rt,T(e.session.model),1)):a(``,!0),p(`span`,zt,T(S(K)(e.session.createdAt)),1)])]),e.canDelete?(l(),A(S(n),{key:0,onPositiveClick:o[1]||=e=>r(`delete`)},{trigger:h(()=>[p(`button`,{class:`session-item-delete`,onClick:o[0]||=g(()=>{},[`stop`])},[...o[7]||=[p(`svg`,{width:`12`,height:`12`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),p(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]])]),default:h(()=>[f(` `+T(S(i)(`chat.deleteSession`)),1)]),_:1})):a(``,!0)],42,At))}}),Vt={class:`chat-panel`},Ht={class:`session-list-header`},Ut={key:0,class:`session-list-title`},Wt={class:`session-list-actions`},Gt={key:0,class:`session-items`},Kt={key:0,class:`session-loading`},qt={key:1,class:`session-empty`},Jt={class:`session-group-header session-group-header--static`},Yt={class:`session-group-label`},Xt={class:`session-group-count`},Zt=[`onClick`],Qt={class:`session-group-label`},$t={class:`session-group-count`},en={class:`chat-main`},tn={class:`chat-header`},nn={class:`header-left`},rn={class:`header-session-title`},an={key:1,class:`source-badge`},on={class:`header-actions`},sn={class:`chat-mode-toggle`},cn=w(c({__name:`ChatPanel`,setup(n){let r=te(),i=oe(),c=re(),{t:u}=M(),g=P(`chat`),_=P(typeof window>`u`||!window.matchMedia(`(max-width: 768px)`).matches),b=P(_.value),x=null,w=P(!1);function E(e){r.switchSession(e),x?.matches&&(_.value=!1)}function D(e){e!==g.value&&(e===`live`?(b.value=_.value,_.value=!1):_.value=x?.matches?!1:b.value,g.value=e)}function j(e){w.value=e.matches,e.matches&&_.value&&(_.value=!1)}ee(()=>{x=window.matchMedia(`(max-width: 768px)`),j(x),x.addEventListener(`change`,j)}),v(()=>{x?.removeEventListener(`change`,j)});let N=P(!1),L=P(``),z=P(null),B=P(null),V=P(new Set(JSON.parse(localStorage.getItem(`hermes_collapsed_groups`)||`[]`)));function ie(e){return e===`api_server`?-1:e===`cron`?999:0}function ae(e){return[...e].sort((e,t)=>{let n=r.isSessionLive(e.id);return n===r.isSessionLive(t.id)?(t.updatedAt||0)-(e.updatedAt||0):n?-1:1})}let ce=s(()=>ae(r.sessions.filter(e=>i.isPinned(e.id)))),U=s(()=>{let e=new Map;for(let t of r.sessions){if(i.isPinned(t.id))continue;let n=t.source||``;e.has(n)||e.set(n,[]),e.get(n).push(t)}return[...e.keys()].sort((t,n)=>{let i=e.get(t)?.some(e=>r.isSessionLive(e.id))||!1;if(i!==(e.get(n)?.some(e=>r.isSessionLive(e.id))||!1))return i?-1:1;let a=ie(t),o=ie(n);return a===o?t.localeCompare(n):a-o}).map(t=>({source:t,label:t?G(t):u(`chat.other`),sessions:ae(e.get(t))}))});function le(e){if(!V.value.has(e))V.value=new Set([...V.value,e]);else{V.value=new Set(U.value.map(e=>e.source).filter(t=>t!==e));let t=U.value.find(t=>t.source===e);t?.sessions.length&&r.switchSession(t.sessions[0].id)}localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...V.value]))}y(U,e=>{if(localStorage.getItem(`hermes_collapsed_groups`)!==null){let e=r.activeSession?.source;e&&V.value.has(e)&&(V.value=new Set([...V.value].filter(t=>t!==e)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...V.value])));return}V.value=new Set(e.slice(1).map(e=>e.source)),localStorage.setItem(`hermes_collapsed_groups`,JSON.stringify([...V.value]))},{once:!0}),y(()=>[r.sessionsLoaded,...r.sessions.map(e=>e.id)],e=>{let t=e.slice(1);!e[0]||t.length===0||i.pruneMissingSessions(t)},{immediate:!0});let ue=s(()=>r.activeSession?.title||u(`chat.newChat`)),de=s(()=>g.value===`live`?u(`chat.liveSessions`):ue.value),W=s(()=>g.value===`chat`&&r.activeSession?.source||``);function K(){r.newChat()}async function q(e){let t=e||r.activeSessionId;t&&(await se(t)?c.success(u(`common.copied`)):c.error(u(`common.copied`)+` ✗`))}function fe(e){i.removePinned(e),r.deleteSession(e),c.success(u(`chat.sessionDeleted`))}let J=P(null),Y=s(()=>J.value?i.isPinned(J.value):!1),pe=s(()=>[{label:u(Y.value?`chat.unpin`:`chat.pin`),key:`pin`},{label:u(`chat.rename`),key:`rename`},{label:u(`chat.copySessionId`),key:`copy-id`}]);function X(e,t){e.preventDefault(),J.value=t,Z.value=!0,Q.value=e.clientX,$.value=e.clientY}let Z=P(!1),Q=P(0),$=P(0);function me(e){if(Z.value=!1,J.value){if(e===`pin`){i.togglePinned(J.value);return}if(e===`copy-id`)q(J.value);else if(e===`rename`){let e=r.sessions.find(e=>e.id===J.value);z.value=J.value,L.value=e?.title||``,N.value=!0,o(()=>{B.value?.focus()})}}}function he(){Z.value=!1}async function ge(){if(!(!z.value||!L.value.trim())){if(await F(z.value,L.value.trim())){let e=r.sessions.find(e=>e.id===z.value);e&&(e.title=L.value.trim()),r.activeSession?.id===z.value&&(r.activeSession.title=L.value.trim()),c.success(u(`chat.renamed`))}else c.error(u(`chat.renameFailed`));N.value=!1}}return(n,o)=>(l(),O(`div`,Vt,[g.value===`chat`?(l(),O(`div`,{key:0,class:I([`session-backdrop`,{active:_.value}]),onClick:o[0]||=e=>_.value=!1},null,2)):a(``,!0),g.value===`chat`?(l(),O(`aside`,{key:1,class:I([`session-list`,{collapsed:!_.value}])},[p(`div`,Ht,[_.value?(l(),O(`span`,Ut,T(S(u)(`chat.sessions`)),1)):a(``,!0),p(`div`,Wt,[p(`button`,{class:`session-close-btn`,onClick:o[1]||=e=>_.value=!1},[...o[8]||=[p(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),p(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]]),m(S(k),{quaternary:``,size:`tiny`,onClick:K,circle:``},{icon:h(()=>[...o[9]||=[p(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),p(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),_:1})])]),_.value?(l(),O(`div`,Gt,[S(r).isLoadingSessions&&S(r).sessions.length===0?(l(),O(`div`,Kt,T(S(u)(`common.loading`)),1)):S(r).sessions.length===0?(l(),O(`div`,qt,T(S(u)(`chat.noSessions`)),1)):a(``,!0),ce.value.length>0?(l(),O(H,{key:2},[p(`div`,Jt,[p(`span`,Yt,T(S(u)(`chat.pinned`)),1),p(`span`,Xt,T(ce.value.length),1)]),(l(!0),O(H,null,R(ce.value,e=>(l(),A(Bt,{key:`pinned-${e.id}`,session:e,active:e.id===S(r).activeSessionId,live:S(r).isSessionLive(e.id),pinned:!0,"can-delete":e.id!==S(r).activeSessionId||S(r).sessions.length>1,onSelect:t=>E(e.id),onContextmenu:t=>X(t,e.id),onDelete:t=>fe(e.id)},null,8,[`session`,`active`,`live`,`can-delete`,`onSelect`,`onContextmenu`,`onDelete`]))),128))],64)):a(``,!0),(l(!0),O(H,null,R(U.value,e=>(l(),O(H,{key:e.source},[p(`div`,{class:`session-group-header`,onClick:t=>le(e.source)},[(l(),O(`svg`,{width:`10`,height:`10`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,class:I([`group-chevron`,{collapsed:V.value.has(e.source)}])},[...o[10]||=[p(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),p(`span`,Qt,T(e.label),1),p(`span`,$t,T(e.sessions.length),1)],8,Zt),V.value.has(e.source)?a(``,!0):(l(!0),O(H,{key:0},R(e.sessions,e=>(l(),A(Bt,{key:e.id,session:e,active:e.id===S(r).activeSessionId,live:S(r).isSessionLive(e.id),pinned:!1,"can-delete":e.id!==S(r).activeSessionId||S(r).sessions.length>1,onSelect:t=>E(e.id),onContextmenu:t=>X(t,e.id),onDelete:t=>fe(e.id)},null,8,[`session`,`active`,`live`,`can-delete`,`onSelect`,`onContextmenu`,`onDelete`]))),128))],64))),128))])):a(``,!0)],2)):a(``,!0),m(S(e),{placement:`bottom-start`,trigger:`manual`,x:Q.value,y:$.value,options:pe.value,show:Z.value,onSelect:me,onClickoutside:he},null,8,[`x`,`y`,`options`,`show`]),m(S(C),{show:N.value,"onUpdate:show":o[3]||=e=>N.value=e,preset:`dialog`,title:S(u)(`chat.renameSession`),"positive-text":S(u)(`common.ok`),"negative-text":S(u)(`common.cancel`),onPositiveClick:ge},{default:h(()=>[m(S(d),{ref_key:`renameInputRef`,ref:B,value:L.value,"onUpdate:value":o[2]||=e=>L.value=e,placeholder:S(u)(`chat.enterNewTitle`),onKeydown:ne(ge,[`enter`])},null,8,[`value`,`placeholder`])]),_:1},8,[`show`,`title`,`positive-text`,`negative-text`]),p(`div`,en,[p(`header`,tn,[p(`div`,nn,[g.value===`chat`?(l(),A(S(k),{key:0,quaternary:``,size:`small`,onClick:o[4]||=e=>_.value=!_.value,circle:``},{icon:h(()=>[...o[11]||=[p(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[p(`rect`,{x:`3`,y:`3`,width:`7`,height:`7`}),p(`rect`,{x:`14`,y:`3`,width:`7`,height:`7`}),p(`rect`,{x:`3`,y:`14`,width:`7`,height:`7`}),p(`rect`,{x:`14`,y:`14`,width:`7`,height:`7`})],-1)]]),_:1})):a(``,!0),p(`span`,rn,T(de.value),1),W.value?(l(),O(`span`,an,T(S(G)(W.value)),1)):a(``,!0)]),p(`div`,on,[p(`div`,sn,[m(S(k),{size:`small`,type:g.value===`chat`?`primary`:`default`,"aria-pressed":g.value===`chat`,onClick:o[5]||=e=>D(`chat`)},{default:h(()=>[f(T(S(u)(`chat.chatMode`)),1)]),_:1},8,[`type`,`aria-pressed`]),m(S(k),{size:`small`,type:g.value===`live`?`primary`:`default`,"aria-pressed":g.value===`live`,onClick:o[6]||=e=>D(`live`)},{default:h(()=>[f(T(S(u)(`chat.liveMode`)),1)]),_:1},8,[`type`,`aria-pressed`])]),g.value===`chat`?(l(),O(H,{key:0},[m(S(t),{trigger:`hover`},{trigger:h(()=>[m(S(k),{quaternary:``,size:`small`,onClick:o[7]||=e=>q(),circle:``},{icon:h(()=>[...o[12]||=[p(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`},[p(`rect`,{x:`9`,y:`9`,width:`13`,height:`13`,rx:`2`,ry:`2`}),p(`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:h(()=>[f(` `+T(S(u)(`chat.copySessionId`)),1)]),_:1}),m(S(k),{size:`small`,circle:w.value,onClick:K},{icon:h(()=>[...o[13]||=[p(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`},[p(`line`,{x1:`12`,y1:`5`,x2:`12`,y2:`19`}),p(`line`,{x1:`5`,y1:`12`,x2:`19`,y2:`12`})],-1)]]),default:h(()=>[w.value?a(``,!0):(l(),O(H,{key:0},[f(T(S(u)(`chat.newChat`)),1)],64))]),_:1},8,[`circle`])],64)):a(``,!0)])]),g.value===`chat`?(l(),O(H,{key:0},[m(kt),m(ve)],64)):(l(),A(He,{key:1,"human-only":S(i).humanOnly},null,8,[`human-only`]))])]))}}),[[`__scopeId`,`data-v-ed01ae3e`]]),ln={class:`chat-view`},un=w(c({__name:`ChatView`,setup(e){let t=r(),n=te(),i=B();return ee(async()=>{t.loadModels(),await i.fetchProfiles(),n.loadSessions()}),(e,t)=>(l(),O(`div`,ln,[m(cn)]))}}),[[`__scopeId`,`data-v-6dae3628`]]);export{un as default};
\ No newline at end of file
diff --git a/webui/assets/ChatView-DG5WMkBg.css b/webui/assets/ChatView-DG5WMkBg.css
new file mode 100644
index 0000000000000000000000000000000000000000..d847c8f48d0f8a9b36e5da6cd34bb655c714694e
--- /dev/null
+++ b/webui/assets/ChatView-DG5WMkBg.css
@@ -0,0 +1 @@
+[data-v-e8019954]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-e8019954]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.chat-input-area[data-v-e8019954]{border-top:1px solid var(--border-color);flex-shrink:0;padding:12px 20px 16px}.input-top-bar[data-v-e8019954]{align-items:center;gap:8px;padding:0 0 6px;display:flex}.context-info[data-v-e8019954]{color:var(--text-muted);font-size:11px}.context-info.context-warning[data-v-e8019954]{color:#e8a735}.context-bar[data-v-e8019954]{background:#80808033;border-radius:2px;width:60px;height:4px;overflow:hidden}.context-bar-fill[data-v-e8019954]{background:linear-gradient(90deg,#8080804d,#80808099);border-radius:2px;height:100%;transition:width .3s}.context-bar-fill.context-bar-warn[data-v-e8019954]{background:linear-gradient(90deg,#c98a1a,#e8a735)}.context-bar-fill.context-bar-danger[data-v-e8019954]{background:linear-gradient(90deg,#c43a2a,#e85d4a)}.attachment-previews[data-v-e8019954]{flex-wrap:wrap;gap:8px;padding:0 0 10px;display:flex}.attachment-preview[data-v-e8019954]{background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:6px;position:relative;overflow:hidden}.attachment-preview.image[data-v-e8019954]{width:64px;height:64px}.attachment-thumb[data-v-e8019954]{object-fit:cover;width:100%;height:100%}.attachment-file[data-v-e8019954]{min-width:80px;max-width:140px;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:8px 12px;display:flex}.attachment-file .file-name[data-v-e8019954]{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:11px;overflow:hidden}.attachment-file .file-size[data-v-e8019954]{color:var(--text-muted);font-size:10px}.attachment-remove[data-v-e8019954]{width:18px;height:18px;color:var(--text-on-overlay);cursor:pointer;opacity:0;background:#00000080;border:none;border-radius:50%;justify-content:center;align-items:center;transition:opacity .15s;display:flex;position:absolute;top:2px;right:2px}.attachment-preview:hover .attachment-remove[data-v-e8019954]{opacity:1}.file-input-hidden[data-v-e8019954]{display:none}.input-wrapper[data-v-e8019954]{background-color:var(--bg-input);border:1px solid var(--border-color);border-radius:10px;align-items:center;gap:10px;padding:10px 12px;transition:border-color .15s,background-color .15s;display:flex}.input-wrapper[data-v-e8019954]:focus-within{border-color:var(--accent-primary)}.dark .input-wrapper[data-v-e8019954]{background-color:#333}.input-textarea[data-v-e8019954]{color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;flex:1;min-height:20px;max-height:100px;font-family:Inter,system-ui,-apple-system,sans-serif;font-size:14px;line-height:1.5;overflow-y:auto}.input-textarea[data-v-e8019954]::placeholder{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.input-actions[data-v-e8019954]{flex-shrink:0;align-items:center;gap:6px;display:flex}.input-wrapper.drag-over[data-v-e8019954]{border-color:var(--accent-info);background-color:rgba(var(--accent-info-rgb), .04);border-style:dashed}[data-v-be298d0d]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-be298d0d]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.conversation-monitor[data-v-be298d0d]{flex:1;min-height:0;display:flex}.conversation-monitor__sidebar[data-v-be298d0d]{border-right:1px solid var(--border-color);scrollbar-gutter:stable;flex-shrink:0;width:260px;overflow-y:auto}.conversation-monitor__sidebar[data-v-be298d0d]::-webkit-scrollbar{width:4px}.conversation-monitor__sidebar[data-v-be298d0d]::-webkit-scrollbar-thumb{background:rgba(var(--text-muted), .3);border-radius:4px}.conversation-monitor__sidebar[data-v-be298d0d]::-webkit-scrollbar-thumb:hover{background:rgba(var(--text-muted), .5)}.conversation-monitor__session[data-v-be298d0d]{border:0;border-bottom:1px solid rgba(var(--border-color), .6);width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;padding:12px 14px}.conversation-monitor__session.active[data-v-be298d0d]{background:rgba(var(--accent-primary-rgb), .12);color:var(--text-primary);font-weight:500}.conversation-monitor__session.active .conversation-monitor__session-title[data-v-be298d0d]{color:var(--accent-primary)}.conversation-monitor__session-title-row[data-v-be298d0d],.conversation-monitor__detail-meta[data-v-be298d0d],.conversation-monitor__message-meta[data-v-be298d0d]{align-items:center;gap:6px;display:flex}.conversation-monitor__session-title[data-v-be298d0d],.conversation-monitor__detail-title[data-v-be298d0d]{font-weight:600}.conversation-monitor__session-live[data-v-be298d0d]{color:var(--accent-primary);font-size:11px}.conversation-monitor__session-meta[data-v-be298d0d],.conversation-monitor__session-preview[data-v-be298d0d],.conversation-monitor__detail-meta[data-v-be298d0d],.conversation-monitor__message-meta[data-v-be298d0d]{color:var(--text-muted);font-size:12px}.conversation-monitor__session-preview[data-v-be298d0d],.conversation-monitor__message-content[data-v-be298d0d]{white-space:pre-wrap;margin-top:6px}.conversation-monitor__detail[data-v-be298d0d]{flex-direction:column;flex:1;min-width:0;display:flex}.conversation-monitor__detail-header[data-v-be298d0d]{border-bottom:1px solid var(--border-color);padding:16px 20px}.conversation-monitor__messages[data-v-be298d0d]{flex-direction:column;flex:1;gap:12px;padding:16px 20px;display:flex;overflow-y:auto}.conversation-monitor__message[data-v-be298d0d]{background:rgba(var(--bg-secondary), .8);border-radius:10px;padding:12px 14px}.conversation-monitor__message.role-user[data-v-be298d0d]{border:1px solid rgba(var(--accent-primary), .18)}.conversation-monitor__message.role-assistant[data-v-be298d0d]{border:1px solid rgba(var(--border-color), .9)}.conversation-monitor__empty[data-v-be298d0d]{color:var(--text-muted);padding:24px}.conversation-monitor__empty--error[data-v-be298d0d]{color:var(--error)}@media (width<=768px){.conversation-monitor[data-v-be298d0d]{flex-direction:column}.conversation-monitor__sidebar[data-v-be298d0d]{border-right:0;border-bottom:1px solid var(--border-color);flex-shrink:0;width:100%;max-height:220px}.conversation-monitor__detail[data-v-be298d0d]{min-height:0;overflow:hidden}}[data-v-c7d0f76f]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-c7d0f76f]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.message[data-v-c7d0f76f]{flex-direction:column;display:flex}.message.user[data-v-c7d0f76f]{align-items:flex-end}.message.user .msg-body[data-v-c7d0f76f]{max-width:75%}.message.user .msg-content.user[data-v-c7d0f76f]{align-items:flex-end}.message.user .message-bubble[data-v-c7d0f76f]{background-color:var(--msg-user-bg);border-radius:10px}.message.assistant[data-v-c7d0f76f]{flex-direction:row;align-items:flex-start;gap:8px}.message.assistant .msg-body[data-v-c7d0f76f]{max-width:80%}.message.assistant .msg-avatar[data-v-c7d0f76f]{flex-shrink:0;width:40px;height:40px;margin-top:2px}.message.assistant .message-bubble[data-v-c7d0f76f]{background-color:var(--msg-assistant-bg);border-radius:10px}.message.tool[data-v-c7d0f76f],.message.system[data-v-c7d0f76f]{align-items:flex-start}.message.system .message-bubble.system[data-v-c7d0f76f]{border-left:3px solid var(--warning);background-color:rgba(var(--warning-rgb), .06);border-radius:6px;max-width:80%}.message.highlight .message-bubble[data-v-c7d0f76f]{box-shadow:0 0 0 1px rgba(var(--accent-primary-rgb), .45)}.msg-body[data-v-c7d0f76f]{align-items:flex-start;gap:8px;max-width:85%;display:flex}.msg-content[data-v-c7d0f76f]{flex-direction:column;min-width:0;display:flex}.message-bubble[data-v-c7d0f76f]{word-break:break-word;border-radius:10px;padding:10px 14px;font-size:14px;line-height:1.65}.msg-attachments[data-v-c7d0f76f]{flex-wrap:wrap;gap:8px;margin-bottom:8px;display:flex}.msg-attachment[data-v-c7d0f76f]{border:1px solid var(--border-light);background-color:#0000000a;border-radius:6px;overflow:hidden}.msg-attachment.image[data-v-c7d0f76f]{max-width:200px}.msg-attachment-thumb[data-v-c7d0f76f]{object-fit:contain;cursor:pointer;max-width:200px;max-height:160px;display:block}.msg-attachment-file[data-v-c7d0f76f]{color:var(--text-secondary);align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:flex}.msg-attachment-file .att-name[data-v-c7d0f76f]{white-space:nowrap;text-overflow:ellipsis;max-width:160px;overflow:hidden}.msg-attachment-file .att-size[data-v-c7d0f76f]{color:var(--text-muted);flex-shrink:0;font-size:11px}.thinking-block[data-v-c7d0f76f]{border-bottom:1px dashed var(--border-light);margin-bottom:8px;padding:4px 0}.thinking-block .thinking-header[data-v-c7d0f76f]{color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.thinking-block .thinking-header[data-v-c7d0f76f]:hover{background:#00000008}.thinking-block .thinking-chevron[data-v-c7d0f76f]{flex-shrink:0;transition:transform .15s}.thinking-block .thinking-chevron.rotated[data-v-c7d0f76f]{transform:rotate(90deg)}.thinking-block .thinking-icon[data-v-c7d0f76f]{flex-shrink:0;font-size:11px}.thinking-block .thinking-label[data-v-c7d0f76f]{flex-shrink:0;font-weight:500}.thinking-block .thinking-meta[data-v-c7d0f76f]{color:var(--text-muted);font-variant-numeric:tabular-nums}.thinking-block .thinking-body[data-v-c7d0f76f]{border-left:2px solid var(--border-light);opacity:.85;margin-top:6px;padding:6px 10px;font-size:13px;font-style:italic}.thinking-block .thinking-body[data-v-c7d0f76f] p{margin:.3em 0}.message-meta[data-v-c7d0f76f]{opacity:0;align-items:center;gap:6px;margin-top:4px;padding:0 4px;transition:opacity .15s;display:flex}.message:hover .message-meta[data-v-c7d0f76f]{opacity:1}.copy-bubble-btn[data-v-c7d0f76f]{width:24px;height:24px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex}.copy-bubble-btn[data-v-c7d0f76f]:hover{color:var(--text-secondary);background:#0000000f}.dark .copy-bubble-btn[data-v-c7d0f76f]{color:#999}.dark .copy-bubble-btn[data-v-c7d0f76f]:hover{color:#ccc;background:#ffffff14}.message-time[data-v-c7d0f76f]{color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:11px}.dark .message-time[data-v-c7d0f76f]{color:#999}.tool-line[data-v-c7d0f76f]{color:var(--text-muted);border-radius:6px;align-items:center;gap:6px;padding:2px 4px;font-size:11px;display:flex}.tool-line.expandable[data-v-c7d0f76f]{cursor:pointer}.tool-line.expandable[data-v-c7d0f76f]:hover{background:#00000008}.tool-line .tool-name[data-v-c7d0f76f]{flex-shrink:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.tool-line .tool-preview[data-v-c7d0f76f]{text-overflow:ellipsis;white-space:nowrap;max-width:400px;overflow:hidden}.tool-chevron[data-v-c7d0f76f]{flex-shrink:0;transition:transform .15s}.tool-chevron.rotated[data-v-c7d0f76f]{transform:rotate(90deg)}.tool-spinner[data-v-c7d0f76f]{border:1.5px solid var(--text-muted);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite spin-c7d0f76f}.tool-error-badge[data-v-c7d0f76f]{color:var(--error);background:rgba(var(--error-rgb), .08);border-radius:3px;padding:0 4px;font-size:9px;line-height:14px}.tool-details[data-v-c7d0f76f]{border-left:2px solid var(--border-light);margin-top:2px;margin-left:16px;padding-left:10px}.tool-detail-section[data-v-c7d0f76f]{margin-bottom:6px}.tool-detail-label[data-v-c7d0f76f]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:2px;font-size:10px;font-weight:600}.tool-detail-code-block[data-v-c7d0f76f] .hljs-code-block{margin:0}.tool-detail-code-block[data-v-c7d0f76f] .code-header{background:#00000005}.tool-detail-code-block[data-v-c7d0f76f] code.hljs{white-space:pre-wrap;word-break:break-word;max-height:300px;font-size:11px;overflow-y:auto}@keyframes spin-c7d0f76f{to{transform:rotate(360deg)}}.streaming-cursor[data-v-c7d0f76f]{background-color:var(--text-muted);vertical-align:text-bottom;width:2px;height:1em;margin-left:2px;animation:.8s infinite blink-c7d0f76f;display:inline-block}.streaming-dots[data-v-c7d0f76f]{gap:4px;padding:4px 0;display:flex}.streaming-dots span[data-v-c7d0f76f]{background-color:var(--text-muted);border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite pulse-c7d0f76f}.streaming-dots span[data-v-c7d0f76f]:nth-child(2){animation-delay:.2s}.streaming-dots span[data-v-c7d0f76f]:nth-child(3){animation-delay:.4s}@keyframes blink-c7d0f76f{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes pulse-c7d0f76f{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.image-preview-overlay[data-v-c7d0f76f]{z-index:9999;cursor:pointer;background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.image-preview-img[data-v-c7d0f76f]{object-fit:contain;border-radius:4px;max-width:90vw;max-height:90vh}@media (width<=768px){.message.user .msg-body[data-v-c7d0f76f],.message.assistant .msg-body[data-v-c7d0f76f],.message.system .msg-body[data-v-c7d0f76f]{max-width:100%}}[data-v-1bc92f44]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-1bc92f44]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.message-list[data-v-1bc92f44]{background-color:var(--bg-card);flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow-y:auto}.dark .message-list[data-v-1bc92f44]{background-color:#333}.empty-state[data-v-1bc92f44]{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.empty-state .empty-logo[data-v-1bc92f44]{opacity:.25;width:48px;height:48px}.empty-state p[data-v-1bc92f44]{font-size:14px}.fade-enter-active[data-v-1bc92f44],.fade-leave-active[data-v-1bc92f44]{transition:opacity .4s}.fade-enter-from[data-v-1bc92f44],.fade-leave-to[data-v-1bc92f44]{opacity:0}.streaming-indicator[data-v-1bc92f44]{align-items:flex-start;gap:12px;padding:4px;display:flex}.streaming-indicator .thinking-video[data-v-1bc92f44]{object-fit:contain;border-radius:10px;flex-shrink:0;width:120px;height:213px}.tool-calls-panel[data-v-1bc92f44]{scrollbar-width:none;-ms-overflow-style:none;flex-direction:column;gap:4px;max-height:213px;padding-top:4px;display:flex;overflow-y:auto}.tool-calls-panel[data-v-1bc92f44]::-webkit-scrollbar{display:none}.tool-call-item[data-v-1bc92f44]{color:var(--text-secondary);background:#00000008;border-radius:6px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;display:flex}.dark .tool-call-item[data-v-1bc92f44]{background:#ffffff0f}.tool-call-item .tool-call-icon[data-v-1bc92f44]{color:var(--text-muted);flex-shrink:0}.tool-call-item .tool-call-name[data-v-1bc92f44]{flex-shrink:0;font-family:JetBrains Mono,Fira Code,Consolas,monospace}.tool-call-item .tool-call-preview[data-v-1bc92f44]{text-overflow:ellipsis;white-space:nowrap;max-width:300px;color:var(--text-muted);overflow:hidden}.tool-call-spinner[data-v-1bc92f44]{border:1.5px solid var(--text-muted);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.6s linear infinite spin-1bc92f44}.tool-call-error[data-v-1bc92f44]{color:var(--error);background:rgba(var(--error), .08);border-radius:3px;padding:0 4px;font-size:9px;line-height:14px}@keyframes spin-1bc92f44{to{transform:rotate(360deg)}}[data-v-ed01ae3e]:root{--bg-primary:#fafafa;--bg-secondary:#f0f0f0;--bg-sidebar:#f5f5f5;--bg-card:#fff;--bg-card-hover:#fafafa;--bg-input:#fff;--border-color:#e0e0e0;--border-light:#ebebeb;--accent-primary:#0d9488;--accent-hover:#0f766e;--accent-muted:#5eead4;--accent-subtle:#0d948814;--text-primary:#1a1a1a;--text-secondary:#555;--text-muted:#999;--success:#16a34a;--error:#dc2626;--warning:#d97706;--msg-user-bg:#f0fdfa;--msg-assistant-bg:#fff;--msg-system-border:#bdbdbd;--code-bg:#f4f4f4;--text-on-accent:#fff;--text-on-overlay:#fff;--accent-info:#0284c7;--accent-primary-rgb:13, 148, 136;--accent-hover-rgb:15, 118, 110;--text-primary-rgb:26, 26, 26;--text-muted-rgb:153, 153, 153;--success-rgb:22, 163, 74;--error-rgb:220, 38, 38;--warning-rgb:217, 119, 6;--accent-info-rgb:2, 132, 199}.dark[data-v-ed01ae3e]{--bg-primary:#141414;--bg-secondary:#1e1e1e;--bg-sidebar:#191919;--bg-card:#262626;--bg-card-hover:#2a2a2a;--bg-input:#222;--border-color:#333;--border-light:#2a2a2a;--accent-primary:#2dd4bf;--accent-hover:#5eead4;--accent-muted:#99f6e4;--accent-subtle:#2dd4bf1a;--text-primary:#f0f0f0;--text-secondary:#b8b8b8;--text-muted:#777;--success:#4ade80;--error:#f87171;--warning:#fbbf24;--msg-user-bg:#1a2e2b;--msg-assistant-bg:#1e1e1e;--msg-system-border:#444;--code-bg:#1a1a1a;--text-on-accent:#0f172a;--text-on-overlay:#fff;--accent-info:#38bdf8;--accent-primary-rgb:45, 212, 191;--accent-hover-rgb:94, 234, 212;--text-primary-rgb:240, 240, 240;--text-muted-rgb:119, 119, 119;--success-rgb:74, 222, 128;--error-rgb:248, 113, 113;--warning-rgb:251, 191, 36;--accent-info-rgb:56, 189, 248}.chat-panel[data-v-ed01ae3e]{height:100%;display:flex;position:relative}.session-list[data-v-ed01ae3e]{border-right:1px solid var(--border-color);flex-direction:column;flex-shrink:0;width:220px;transition:width .25s,opacity .25s;display:flex;overflow:hidden}.session-list.collapsed[data-v-ed01ae3e]{opacity:0;pointer-events:none;border-right:none;width:0}@media (width<=768px){.session-list[data-v-ed01ae3e]{z-index:10;background:var(--bg-card);width:280px;height:100%;position:absolute;top:0;left:0;box-shadow:2px 0 8px #0000001a}.session-list.collapsed[data-v-ed01ae3e]{opacity:0;transform:translate(-100%)}.session-close-btn[data-v-ed01ae3e]{display:flex}.session-backdrop[data-v-ed01ae3e]{z-index:9;opacity:0;pointer-events:none;background:#0006;transition:opacity .15s;position:absolute;inset:0}.session-backdrop.active[data-v-ed01ae3e]{opacity:1;pointer-events:auto}}.session-list-header[data-v-ed01ae3e]{flex-shrink:0;justify-content:space-between;align-items:center;padding:12px;display:flex}.session-list-actions[data-v-ed01ae3e]{align-items:center;gap:4px;display:flex}.session-close-btn[data-v-ed01ae3e]{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;padding:4px;display:none}.session-close-btn[data-v-ed01ae3e]:hover{background:rgba(var(--accent-primary), .06)}.session-list-title[data-v-ed01ae3e]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:12px;font-weight:600}.session-group-header[data-v-ed01ae3e]{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:6px 10px 4px;display:flex}.session-group-header--static[data-v-ed01ae3e]{cursor:default}.group-chevron[data-v-ed01ae3e]{flex-shrink:0;transition:transform .15s;transform:rotate(90deg)}.group-chevron.collapsed[data-v-ed01ae3e]{transform:rotate(0)}.session-group-label[data-v-ed01ae3e]{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:600}.session-group-count[data-v-ed01ae3e]{color:var(--text-muted);font-size:10px;font-weight:400}.session-items[data-v-ed01ae3e]{flex:1;padding:0 6px 12px;overflow-y:auto}.session-loading[data-v-ed01ae3e],.session-empty[data-v-ed01ae3e]{color:var(--text-muted);text-align:center;padding:16px 10px;font-size:12px}[data-v-ed01ae3e] .session-item{cursor:pointer;text-align:left;width:100%;color:var(--text-secondary);background:0 0;border:none;border-radius:6px;justify-content:space-between;align-items:center;margin-bottom:2px;padding:8px 10px;transition:all .15s;display:flex}[data-v-ed01ae3e] .session-item:hover{background:rgba(var(--accent-primary), .06);color:var(--text-primary)}[data-v-ed01ae3e] .session-item:hover .session-item-delete{opacity:1}[data-v-ed01ae3e] .session-item.active{background:rgba(var(--accent-primary-rgb), .12);color:var(--text-primary);font-weight:500}[data-v-ed01ae3e] .session-item.active .session-item-title,[data-v-ed01ae3e] .session-item.live .session-item-title{color:var(--accent-primary)}[data-v-ed01ae3e] .session-item-content{flex:1;overflow:hidden}[data-v-ed01ae3e] .session-item-title-row{align-items:center;gap:6px;min-width:0;display:flex}[data-v-ed01ae3e] .session-item-title{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;font-size:13px;display:block;overflow:hidden}[data-v-ed01ae3e] .session-item-active-indicator{color:var(--accent-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}[data-v-ed01ae3e] .session-item-active-spinner{animation:1.1s linear infinite session-spin-ed01ae3e}[data-v-ed01ae3e] .session-item-live-badge{letter-spacing:.04em;text-transform:uppercase;color:var(--accent-primary);background:rgba(var(--accent-primary-rgb), .1);border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:1px 7px;font-size:10px;font-weight:600;line-height:16px;display:inline-flex}[data-v-ed01ae3e] .live-dot{background:var(--accent-primary);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite live-pulse-ed01ae3e}@keyframes live-pulse-ed01ae3e{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}[data-v-ed01ae3e] .session-item-pin{color:var(--accent-primary);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}[data-v-ed01ae3e] .session-item-time{color:var(--text-muted);font-size:11px}[data-v-ed01ae3e] .session-item-meta{align-items:center;gap:6px;margin-top:2px;display:flex}[data-v-ed01ae3e] .session-item-model{color:var(--accent-primary);background:rgba(var(--accent-primary), .08);text-overflow:ellipsis;white-space:nowrap;border-radius:3px;flex-shrink:0;max-width:100px;padding:0 5px;font-size:10px;line-height:16px;overflow:hidden}[data-v-ed01ae3e] .session-item-delete{opacity:.5;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:3px;flex-shrink:0;padding:2px;transition:all .15s}[data-v-ed01ae3e] .session-item-delete:hover{color:var(--error);background:rgba(var(--error), .1)}@keyframes session-spin-ed01ae3e{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.chat-main[data-v-ed01ae3e]{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.chat-header[data-v-ed01ae3e]{border-bottom:1px solid var(--border-color);flex-shrink:0;justify-content:space-between;align-items:center;padding:21px 20px;display:flex}.header-left[data-v-ed01ae3e]{flex:1;align-items:center;gap:8px;min-width:0;display:flex;overflow:hidden}.header-session-title[data-v-ed01ae3e]{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:16px;font-weight:600;overflow:hidden}.source-badge[data-v-ed01ae3e]{color:var(--text-muted);background:rgba(var(--text-muted), .12);white-space:nowrap;border-radius:8px;flex-shrink:0;padding:1px 7px;font-size:10px;line-height:16px}.header-actions[data-v-ed01ae3e]{flex-shrink:0;align-items:center;gap:4px;display:flex}.chat-mode-toggle[data-v-ed01ae3e]{align-items:center;gap:4px;margin-right:4px;display:flex}@media (width<=768px){.chat-header[data-v-ed01ae3e]{padding:16px 12px 16px 52px}}.chat-view[data-v-6dae3628]{height:calc(100 * var(--vh));flex-direction:column;display:flex}
diff --git a/webui/assets/Dropdown-ReirMLrI.js b/webui/assets/Dropdown-ReirMLrI.js
new file mode 100644
index 0000000000000000000000000000000000000000..dc7545e275132481ae805ce29ebff2db892687a5
--- /dev/null
+++ b/webui/assets/Dropdown-ReirMLrI.js
@@ -0,0 +1,125 @@
+import{i as e,t}from"./create-EseJ7qR2.js";import{$n as n,B as r,Bn as i,Dr as a,Fr as o,H as s,Hn as c,Hr as l,Kr as u,L as d,Ln as f,Lr as p,Mn as m,Nn as h,On as g,Pn as _,R as v,Rr as y,S as b,Sn as x,T as S,Un as C,Vr as w,Xr as T,_r as E,ei as D,er as O,hn as k,in as A,ir as j,it as M,jn as N,kn as P,ni as F,nr as I,pn as L,ri as R,rn as z,rr as B,ti as V,tr as H,un as U,vn as W,wr as ee,yn as te,z as ne,zn as re,zr as G}from"./index-Cl8-DFW_.js";function ie(e={},t){let n=D({ctrl:!1,command:!1,win:!1,shift:!1,tab:!1}),{keydown:r,keyup:i}=e,a=e=>{switch(e.key){case`Control`:n.ctrl=!0;break;case`Meta`:n.command=!0,n.win=!0;break;case`Shift`:n.shift=!0;break;case`Tab`:n.tab=!0;break}r!==void 0&&Object.keys(r).forEach(t=>{if(t!==e.key)return;let n=r[t];if(typeof n==`function`)n(e);else{let{stop:t=!1,prevent:r=!1}=n;t&&e.stopPropagation(),r&&e.preventDefault(),n.handler(e)}})},o=e=>{switch(e.key){case`Control`:n.ctrl=!1;break;case`Meta`:n.command=!1,n.win=!1;break;case`Shift`:n.shift=!1;break;case`Tab`:n.tab=!1;break}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=()=>{(t===void 0||t.value)&&(C(`keydown`,document,a),C(`keyup`,document,o)),t!==void 0&&T(t,e=>{e?(C(`keydown`,document,a),C(`keyup`,document,o)):(c(`keydown`,document,a),c(`keyup`,document,o))})};return re()?(w(s),l(()=>{(t===void 0||t.value)&&(c(`keydown`,document,a),c(`keyup`,document,o))})):s(),V(n)}function ae(e,t,n){if(!t)return e;let r=F(e.value),i=null;return T(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 oe(e){return t=>{t?e.value=t.$el:e.value=null}}var K=o({name:`ChevronRight`,render(){return p(`svg`,{viewBox:`0 0 16 16`,fill:`none`,xmlns:`http://www.w3.org/2000/svg`},p(`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`}))}}),q=_(`n-dropdown-menu`),J=_(`n-dropdown`),Y=_(`n-dropdown-option`),X=o({name:`DropdownDivider`,props:{clsPrefix:{type:String,required:!0}},render(){return p(`div`,{class:`${this.clsPrefix}-dropdown-divider`})}}),se=o({name:`DropdownGroupHeader`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(){let{showIconRef:e,hasSubmenuRef:t}=y(q),{renderLabelRef:n,labelFieldRef:r,nodePropsRef:i,renderOptionRef:a}=y(J);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=p(`div`,Object.assign({class:`${e}-dropdown-option`},r?.(o)),p(`div`,{class:`${e}-dropdown-option-body ${e}-dropdown-option-body--group`},p(`div`,{"data-dropdown-option":!0,class:[`${e}-dropdown-option-body__prefix`,n&&`${e}-dropdown-option-body__prefix--show-icon`]},U(o.icon)),p(`div`,{class:`${e}-dropdown-option-body__label`,"data-dropdown-option":!0},i?i(o):U(o.title??o[this.labelField])),p(`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}}),ce=O(`icon`,`
+ height: 1em;
+ width: 1em;
+ line-height: 1em;
+ text-align: center;
+ display: inline-block;
+ position: relative;
+ fill: currentColor;
+`,[I(`color-transition`,{transition:`color .3s var(--n-bezier)`}),I(`depth`,{color:`var(--n-color)`},[n(`svg`,{opacity:`var(--n-opacity)`,transition:`opacity .3s var(--n-bezier)`})]),n(`svg`,{height:`1em`,width:`1em`})]),Z=o({_n_icon__:!0,name:`Icon`,inheritAttrs:!1,props:Object.assign(Object.assign({},M.props),{depth:[String,Number],size:[Number,String],color:String,component:[Object,Function]}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n}=A(e),r=M(`Icon`,`-icon`,ce,b,e,t),i=a(()=>{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":``}}),o=n?z(`icon`,a(()=>`${e.depth||`d`}`),i,e):void 0;return{mergedClsPrefix:t,mergedStyle:a(()=>{let{size:t,color:n}=e;return{fontSize:te(t),color:n}}),cssVars:n?void 0:i,themeClass:o?.themeClass,onRender:o?.onRender}},render(){let{$parent:e,depth:t,mergedClsPrefix:n,component:r,onRender:i,themeClass:a}=this;return e?.$options?._n_icon__&&W(`icon`,"don't wrap `n-icon` inside `n-icon`"),i?.(),p(`i`,G(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?p(r):this.$slots)}});function Q(e,t){return e.type===`submenu`||e.type===void 0&&e[t]!==void 0}function le(e){return e.type===`group`}function $(e){return e.type===`divider`}function ue(e){return e.type===`render`}var de=o({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(t){let n=y(J),{hoverKeyRef:r,keyboardKeyRef:o,lastToggledSubmenuKeyRef:s,pendingKeyPathRef:c,activeKeyPathRef:l,animatedRef:d,mergedShowRef:f,renderLabelRef:p,renderIconRef:m,labelFieldRef:h,childrenFieldRef:g,renderOptionRef:_,nodePropsRef:v,menuPropsRef:b}=n,x=y(Y,null),S=y(q),C=y(N),w=a(()=>t.tmNode.rawNode),T=a(()=>{let{value:e}=g;return Q(t.tmNode.rawNode,e)}),E=a(()=>{let{disabled:e}=t.tmNode;return e}),D=ae(a(()=>{if(!T.value)return!1;let{key:e,disabled:n}=t.tmNode;if(n)return!1;let{value:i}=r,{value:a}=o,{value:l}=s,{value:u}=c;return i===null?a===null?l===null?!1:u.includes(e):u.includes(e)&&u[u.length-1]!==e:u.includes(e)}),300,a(()=>o.value===null&&!d.value)),O=a(()=>!!x?.enteringSubmenuRef.value),k=F(!1);u(Y,{enteringSubmenuRef:k});function A(){k.value=!0}function j(){k.value=!1}function M(){let{parentKey:e,tmNode:n}=t;n.disabled||f.value&&(s.value=e,o.value=null,r.value=n.key)}function P(){let{tmNode:e}=t;e.disabled||f.value&&r.value!==e.key&&M()}function I(n){if(t.tmNode.disabled||!f.value)return;let{relatedTarget:i}=n;i&&!e({target:i},`dropdownOption`)&&!e({target:i},`scrollbarRail`)&&(r.value=null)}function L(){let{value:e}=T,{tmNode:r}=t;f.value&&!e&&!r.disabled&&(n.doSelect(r.key,r.rawNode),n.doUpdateShow(!1))}return{labelField:h,renderLabel:p,renderIcon:m,siblingHasIcon:S.showIconRef,siblingHasSubmenu:S.hasSubmenuRef,menuProps:b,popoverBody:C,animated:d,mergedShowSubmenu:a(()=>D.value&&!O.value),rawNode:w,hasSubmenu:T,pending:i(()=>{let{value:e}=c,{key:n}=t.tmNode;return e.includes(n)}),childActive:i(()=>{let{value:e}=l,{key:n}=t.tmNode,r=e.findIndex(e=>n===e);return r===-1?!1:r{let{value:e}=l,{key:n}=t.tmNode,r=e.findIndex(e=>n===e);return r===-1?!1:r===e.length-1}),mergedDisabled:E,renderOption:_,nodeProps:v,handleClick:L,handleMouseMove:P,handleMouseEnter:M,handleMouseLeave:I,handleSubmenuBeforeEnter:A,handleSubmenuAfterEnter:j}},render(){let{animated:e,rawNode:t,mergedShowSubmenu:n,clsPrefix:r,siblingHasIcon:i,siblingHasSubmenu:a,renderLabel:o,renderIcon:s,renderOption:c,nodeProps:l,props:u,scrollable:d}=this,f=null;if(n){let e=this.menuProps?.call(this,t,t.children);f=p(me,Object.assign({},e,{clsPrefix:r,scrollable:this.scrollable,tmNodes:this.tmNode.children,parentKey:this.tmNode.key}))}let m={class:[`${r}-dropdown-option-body`,this.pending&&`${r}-dropdown-option-body--pending`,this.active&&`${r}-dropdown-option-body--active`,this.childActive&&`${r}-dropdown-option-body--child-active`,this.mergedDisabled&&`${r}-dropdown-option-body--disabled`],onMousemove:this.handleMouseMove,onMouseenter:this.handleMouseEnter,onMouseleave:this.handleMouseLeave,onClick:this.handleClick},h=l?.(t),_=p(`div`,Object.assign({class:[`${r}-dropdown-option`,h?.class],"data-dropdown-option":!0},h),p(`div`,G(m,u),[p(`div`,{class:[`${r}-dropdown-option-body__prefix`,i&&`${r}-dropdown-option-body__prefix--show-icon`]},[s?s(t):U(t.icon)]),p(`div`,{"data-dropdown-option":!0,class:`${r}-dropdown-option-body__label`},o?o(t):U(t[this.labelField]??t.title)),p(`div`,{"data-dropdown-option":!0,class:[`${r}-dropdown-option-body__suffix`,a&&`${r}-dropdown-option-body__suffix--has-submenu`]},this.hasSubmenu?p(Z,null,{default:()=>p(K,null)}):null)]),this.hasSubmenu?p(P,null,{default:()=>[p(g,null,{default:()=>p(`div`,{class:`${r}-dropdown-offset-container`},p(x,{show:this.mergedShowSubmenu,placement:this.placement,to:d&&this.popoverBody||void 0,teleportDisabled:!d},{default:()=>p(`div`,{class:`${r}-dropdown-menu-wrapper`},e?p(E,{onBeforeEnter:this.handleSubmenuBeforeEnter,onAfterEnter:this.handleSubmenuAfterEnter,name:`fade-in-scale-up-transition`,appear:!0},{default:()=>f}):f)}))})]}):null);return c?c({node:_,option:t}):_}}),fe=o({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 p(ee,null,p(se,{clsPrefix:n,tmNode:e,key:e.key}),r?.map(e=>{let{rawNode:r}=e;return r.show===!1?null:$(r)?p(X,{clsPrefix:n,key:e.key}):e.isGroup?(W(`dropdown`,"`group` node is not allowed to be put in `group` node."),null):p(de,{clsPrefix:n,tmNode:e,parentKey:t,key:e.key})}))}}),pe=o({name:`DropdownRenderOption`,props:{tmNode:{type:Object,required:!0}},render(){let{rawNode:{render:e,props:t}}=this.tmNode;return p(`div`,t,[e?.()])}}),me=o({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}=y(J);u(q,{showIconRef:a(()=>{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:a(()=>{let{value:t}=n;return e.tmNodes.some(e=>{if(e.isGroup)return e.children?.some(({rawNode:e})=>Q(e,t));let{rawNode:n}=e;return Q(n,t)})})});let r=F(null);return u(m,null),u(h,null),u(N,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:ue(i)?p(pe,{tmNode:r,key:r.key}):$(i)?p(X,{clsPrefix:t,key:r.key}):le(i)?p(fe,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key}):p(de,{clsPrefix:t,tmNode:r,parentKey:e,key:r.key,props:i.props,scrollable:n})});return p(`div`,{class:[`${t}-dropdown-menu`,n&&`${t}-dropdown-menu--scrollable`],ref:`bodyRef`},n?p(s,{contentClass:`${t}-dropdown-menu__content`},{default:()=>r}):r,this.showArrow?ne({clsPrefix:t,arrowStyle:this.arrowStyle,arrowClass:void 0,arrowWrapperClass:void 0,arrowWrapperStyle:void 0}):null)}}),he=O(`dropdown-menu`,`
+ transform-origin: var(--v-transform-origin);
+ background-color: var(--n-color);
+ border-radius: var(--n-border-radius);
+ box-shadow: var(--n-box-shadow);
+ position: relative;
+ transition:
+ background-color .3s var(--n-bezier),
+ box-shadow .3s var(--n-bezier);
+`,[r(),O(`dropdown-option`,`
+ position: relative;
+ `,[n(`a`,`
+ text-decoration: none;
+ color: inherit;
+ outline: none;
+ `,[n(`&::before`,`
+ content: "";
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ `)]),O(`dropdown-option-body`,`
+ display: flex;
+ cursor: pointer;
+ position: relative;
+ height: var(--n-option-height);
+ line-height: var(--n-option-height);
+ font-size: var(--n-font-size);
+ color: var(--n-option-text-color);
+ transition: color .3s var(--n-bezier);
+ `,[n(`&::before`,`
+ content: "";
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 4px;
+ right: 4px;
+ transition: background-color .3s var(--n-bezier);
+ border-radius: var(--n-border-radius);
+ `),B(`disabled`,[I(`pending`,`
+ color: var(--n-option-text-color-hover);
+ `,[H(`prefix, suffix`,`
+ color: var(--n-option-text-color-hover);
+ `),n(`&::before`,`background-color: var(--n-option-color-hover);`)]),I(`active`,`
+ color: var(--n-option-text-color-active);
+ `,[H(`prefix, suffix`,`
+ color: var(--n-option-text-color-active);
+ `),n(`&::before`,`background-color: var(--n-option-color-active);`)]),I(`child-active`,`
+ color: var(--n-option-text-color-child-active);
+ `,[H(`prefix, suffix`,`
+ color: var(--n-option-text-color-child-active);
+ `)])]),I(`disabled`,`
+ cursor: not-allowed;
+ opacity: var(--n-option-opacity-disabled);
+ `),I(`group`,`
+ font-size: calc(var(--n-font-size) - 1px);
+ color: var(--n-group-header-text-color);
+ `,[H(`prefix`,`
+ width: calc(var(--n-option-prefix-width) / 2);
+ `,[I(`show-icon`,`
+ width: calc(var(--n-option-icon-prefix-width) / 2);
+ `)])]),H(`prefix`,`
+ width: var(--n-option-prefix-width);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ color: var(--n-prefix-color);
+ transition: color .3s var(--n-bezier);
+ z-index: 1;
+ `,[I(`show-icon`,`
+ width: var(--n-option-icon-prefix-width);
+ `),O(`icon`,`
+ font-size: var(--n-option-icon-size);
+ `)]),H(`label`,`
+ white-space: nowrap;
+ flex: 1;
+ z-index: 1;
+ `),H(`suffix`,`
+ box-sizing: border-box;
+ flex-grow: 0;
+ flex-shrink: 0;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ min-width: var(--n-option-suffix-width);
+ padding: 0 8px;
+ transition: color .3s var(--n-bezier);
+ color: var(--n-suffix-color);
+ z-index: 1;
+ `,[I(`has-submenu`,`
+ width: var(--n-option-icon-suffix-width);
+ `),O(`icon`,`
+ font-size: var(--n-option-icon-size);
+ `)]),O(`dropdown-menu`,`pointer-events: all;`)]),O(`dropdown-offset-container`,`
+ pointer-events: none;
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: -4px;
+ bottom: -4px;
+ `)]),O(`dropdown-divider`,`
+ transition: background-color .3s var(--n-bezier);
+ background-color: var(--n-divider-color);
+ height: 1px;
+ margin: 4px 0;
+ `),O(`dropdown-menu-wrapper`,`
+ transform-origin: var(--v-transform-origin);
+ width: fit-content;
+ `),n(`>`,[O(`scrollbar`,`
+ height: inherit;
+ max-height: inherit;
+ `)]),B(`scrollable`,`
+ padding: var(--n-padding);
+ `),I(`scrollable`,[H(`content`,`
+ padding: var(--n-padding);
+ `)])]),ge={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]},_e=Object.keys(v),ve=o({name:`Dropdown`,inheritAttrs:!1,props:Object.assign(Object.assign(Object.assign({},v),ge),M.props),setup(e){let n=F(!1),r=f(R(e,`show`),n),o=a(()=>{let{keyField:n,childrenField:r}=e;return t(e.options,{getKey(e){return e[n]},getDisabled(e){return e.disabled===!0},getIgnored(e){return e.type===`divider`||e.type===`render`},getChildren(e){return e[r]}})}),s=a(()=>o.value.treeNodes),c=F(null),l=F(null),d=F(null),p=a(()=>c.value??l.value??d.value??null),m=a(()=>o.value.getPath(p.value).keyPath),h=a(()=>o.value.getPath(e.value).keyPath),g=i(()=>e.keyboard&&r.value);ie({keydown:{ArrowUp:{prevent:!0,handler:P},ArrowRight:{prevent:!0,handler:N},ArrowDown:{prevent:!0,handler:I},ArrowLeft:{prevent:!0,handler:O},Enter:{prevent:!0,handler:L},Escape:D}},g);let{mergedClsPrefixRef:_,inlineThemeDisabled:v,mergedComponentPropsRef:y}=A(e),b=a(()=>e.size||y?.value?.Dropdown?.size||`medium`),x=M(`Dropdown`,`-dropdown`,he,S,e,_);u(J,{labelFieldRef:R(e,`labelField`),childrenFieldRef:R(e,`childrenField`),renderLabelRef:R(e,`renderLabel`),renderIconRef:R(e,`renderIcon`),hoverKeyRef:c,keyboardKeyRef:l,lastToggledSubmenuKeyRef:d,pendingKeyPathRef:m,activeKeyPathRef:h,animatedRef:R(e,`animated`),mergedShowRef:r,nodePropsRef:R(e,`nodeProps`),renderOptionRef:R(e,`renderOption`),menuPropsRef:R(e,`menuProps`),doSelect:C,doUpdateShow:w}),T(r,t=>{!e.animated&&!t&&E()});function C(t,n){let{onSelect:r}=e;r&&k(r,t,n)}function w(t){let{"onUpdate:show":r,onUpdateShow:i}=e;r&&k(r,t),i&&k(i,t),n.value=t}function E(){c.value=null,l.value=null,d.value=null}function D(){w(!1)}function O(){V(`left`)}function N(){V(`right`)}function P(){V(`up`)}function I(){V(`down`)}function L(){let e=B();e?.isLeaf&&r.value&&(C(e.key,e.rawNode),w(!1))}function B(){let{value:e}=o,{value:t}=p;return!e||t===null?null:e.getNode(t)??null}function V(e){let{value:t}=p,{value:{getFirstAvailableNode:n}}=o,r=null;if(t===null){let e=n();e!==null&&(r=e.key)}else{let t=B();if(t){let n;switch(e){case`down`:n=t.getNext();break;case`up`:n=t.getPrev();break;case`right`:n=t.getChild();break;case`left`:n=t.getParent();break}n&&(r=n.key)}}r!==null&&(c.value=null,l.value=r)}let H=a(()=>{let{inverted:t}=e,n=b.value,{common:{cubicBezierEaseInOut:r},self:i}=x.value,{padding:a,dividerColor:o,borderRadius:s,optionOpacityDisabled:c,[j(`optionIconSuffixWidth`,n)]:l,[j(`optionSuffixWidth`,n)]:u,[j(`optionIconPrefixWidth`,n)]:d,[j(`optionPrefixWidth`,n)]:f,[j(`fontSize`,n)]:p,[j(`optionHeight`,n)]:m,[j(`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}),U=v?z(`dropdown`,a(()=>`${b.value[0]}${e.inverted?`i`:``}`),H,e):void 0;return{mergedClsPrefix:_,mergedTheme:x,mergedSize:b,tmNodes:s,mergedShow:r,handleAfterLeave:()=>{e.animated&&E()},doUpdateShow:w,cssVars:v?void 0:H,themeClass:U?.themeClass,onRender:U?.onRender}},render(){let e=(e,t,n,r,i)=>{var a;let{mergedClsPrefix:o,menuProps:s}=this;(a=this.onRender)==null||a.call(this);let c=s?.(void 0,this.tmNodes.map(e=>e.rawNode))||{},l={ref:oe(t),class:[e,`${o}-dropdown`,`${o}-dropdown--${this.mergedSize}-size`,this.themeClass],clsPrefix:o,tmNodes:this.tmNodes,style:[...n,this.cssVars],showArrow:this.showArrow,arrowStyle:this.arrowStyle,scrollable:this.scrollable,onMouseenter:r,onMouseleave:i};return p(me,G(this.$attrs,l,c))},{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 p(d,Object.assign({},L(this.$props,_e),n),{trigger:()=>{var e;return(e=this.$slots).default?.call(e)}})}});export{Z as n,K as r,ve as t};
\ No newline at end of file
diff --git a/webui/assets/FilesView-B0-Cm0Le.js b/webui/assets/FilesView-B0-Cm0Le.js
new file mode 100644
index 0000000000000000000000000000000000000000..1afbf2158eedc1db270aa0439ebd91ae62f48598
--- /dev/null
+++ b/webui/assets/FilesView-B0-Cm0Le.js
@@ -0,0 +1,279 @@
+const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/cssMode-DoEY0nYG.js","assets/lspLanguageFeatures-ChEp7Hyv.js","assets/editor.api2-cJRsb5vn.js","assets/chunk-Dlc7tRH4.js","assets/editor-BVoRlxEN.css","assets/workers-C1QTB7PQ.js","assets/htmlMode-BhzpBkhJ.js","assets/jsonMode-BuT9RUwl.js","assets/freemarker2-DxpTGVfE.js","assets/handlebars-CiQm6Tfm.js","assets/html-7YxRD05_.js","assets/javascript-bRxVm489.js","assets/typescript-CVK17w93.js","assets/liquid-B3EoZCCH.js","assets/mdx-Bi_2NZxv.js","assets/python-Cg6U35xo.js","assets/razor-C5j4Bh-b.js","assets/xml-BU-TJ86q.js","assets/yaml-CSTQunUz.js"])))=>i.map(i=>d[i]);
+import{r as e}from"./chunk-Dlc7tRH4.js";import{t}from"./preload-helper-CPuF8Owr.js";import{i as n,n as r,r as i,t as a}from"./create-EseJ7qR2.js";import{n as o,t as s}from"./Dropdown-ReirMLrI.js";import{t as c}from"./Upload-DNhu4d4-.js";import{t as l}from"./composables-DggaE5oy.js";import{t as u}from"./Space-BZigAtaW.js";import{$n as d,An as f,Ar as p,Bn as m,Br as h,Dr as g,F as _,Fr as v,G as y,Gn as b,Gr as x,H as S,Hr as C,J as w,Jn as ee,K as te,Kr as ne,Ln as re,Lr as T,M as ie,N as ae,Nr as E,O as oe,Or as D,Pn as se,Pr as O,Qr as k,Rr as ce,Sr as le,Un as ue,Ur as de,V as fe,Wn as pe,Wr as me,Xn as he,Xr as ge,Zn as _e,Zr as ve,ai as A,ar as ye,b as be,bn as xe,c as j,ci as M,cn as Se,dr as Ce,er as N,f as we,gr as Te,hn as P,in as Ee,ir as De,it as Oe,jr as F,k as I,kr as L,lr as R,ni as z,nn as ke,nr as B,nt as Ae,on as je,or as Me,ot as Ne,pr as Pe,qr as V,ri as H,rn as Fe,rr as U,tr as W,tt as Ie,u as Le,un as Re,ur as ze,wr as Be,xr as Ve,y as He}from"./index-Cl8-DFW_.js";import{a as Ue,c as We,i as Ge,l as Ke,n as qe,r as Je,t as Ye,u as G}from"./editor.api2-cJRsb5vn.js";import"./workers-C1QTB7PQ.js";import{t as Xe}from"./monaco.contribution-aeBG78B9.js";import{t as Ze}from"./clipboard-BulqpJ4r.js";import{a as Qe,t as $e}from"./MarkdownRenderer-P3bVUblX.js";function et(e){return typeof e==`string`?`s-${e}`:`n-${e}`}var tt=v({name:`Switcher`,render(){return T(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 32 32`},T(`path`,{d:`M12 8l10 8l-10 8z`}))}}),nt=N(`breadcrumb`,`
+ white-space: nowrap;
+ cursor: default;
+ line-height: var(--n-item-line-height);
+`,[d(`ul`,`
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ `),d(`a`,`
+ color: inherit;
+ text-decoration: inherit;
+ `),N(`breadcrumb-item`,`
+ font-size: var(--n-font-size);
+ transition: color .3s var(--n-bezier);
+ display: inline-flex;
+ align-items: center;
+ `,[N(`icon`,`
+ font-size: 18px;
+ vertical-align: -.2em;
+ transition: color .3s var(--n-bezier);
+ color: var(--n-item-text-color);
+ `),d(`&:not(:last-child)`,[B(`clickable`,[W(`link`,`
+ cursor: pointer;
+ `,[d(`&:hover`,`
+ background-color: var(--n-item-color-hover);
+ `),d(`&:active`,`
+ background-color: var(--n-item-color-pressed);
+ `)])])]),W(`link`,`
+ padding: 4px;
+ border-radius: var(--n-item-border-radius);
+ transition:
+ background-color .3s var(--n-bezier),
+ color .3s var(--n-bezier);
+ color: var(--n-item-text-color);
+ position: relative;
+ `,[d(`&:hover`,`
+ color: var(--n-item-text-color-hover);
+ `,[N(`icon`,`
+ color: var(--n-item-text-color-hover);
+ `)]),d(`&:active`,`
+ color: var(--n-item-text-color-pressed);
+ `,[N(`icon`,`
+ color: var(--n-item-text-color-pressed);
+ `)])]),W(`separator`,`
+ margin: 0 8px;
+ color: var(--n-separator-color);
+ transition: color .3s var(--n-bezier);
+ user-select: none;
+ -webkit-user-select: none;
+ `),d(`&:last-child`,[W(`link`,`
+ font-weight: var(--n-font-weight-active);
+ cursor: unset;
+ color: var(--n-item-text-color-active);
+ `,[N(`icon`,`
+ color: var(--n-item-text-color-active);
+ `)]),W(`separator`,`
+ display: none;
+ `)])])]),rt=se(`n-breadcrumb`),it=v({name:`Breadcrumb`,props:Object.assign(Object.assign({},Oe.props),{separator:{type:String,default:`/`}}),setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n}=Ee(e),r=Oe(`Breadcrumb`,`-breadcrumb`,nt,ie,e,t);ne(rt,{separatorRef:H(e,`separator`),mergedClsPrefixRef:t});let i=g(()=>{let{common:{cubicBezierEaseInOut:e},self:{separatorColor:t,itemTextColor:n,itemTextColorHover:i,itemTextColorPressed:a,itemTextColorActive:o,fontSize:s,fontWeightActive:c,itemBorderRadius:l,itemColorHover:u,itemColorPressed:d,itemLineHeight:f}}=r.value;return{"--n-font-size":s,"--n-bezier":e,"--n-item-text-color":n,"--n-item-text-color-hover":i,"--n-item-text-color-pressed":a,"--n-item-text-color-active":o,"--n-separator-color":t,"--n-item-color-hover":u,"--n-item-color-pressed":d,"--n-item-border-radius":l,"--n-font-weight-active":c,"--n-item-line-height":f}}),a=n?Fe(`breadcrumb`,void 0,i,e):void 0;return{mergedClsPrefix:t,cssVars:n?void 0:i,themeClass:a?.themeClass,onRender:a?.onRender}},render(){var e;return(e=this.onRender)==null||e.call(this),T(`nav`,{class:[`${this.mergedClsPrefix}-breadcrumb`,this.themeClass],style:this.cssVars,"aria-label":`Breadcrumb`},T(`ul`,null,this.$slots))}});function at(e=f?window:null){let t=()=>{let{hash:t,host:n,hostname:r,href:i,origin:a,pathname:o,port:s,protocol:c,search:l}=e?.location||{};return{hash:t,host:n,hostname:r,href:i,origin:a,pathname:o,port:s,protocol:c,search:l}},n=z(t()),r=()=>{n.value=t()};return de(()=>{e&&(e.addEventListener(`popstate`,r),e.addEventListener(`hashchange`,r))}),me(()=>{e&&(e.removeEventListener(`popstate`,r),e.removeEventListener(`hashchange`,r))}),n}var ot=v({name:`BreadcrumbItem`,props:{separator:String,href:String,clickable:{type:Boolean,default:!0},showSeparator:{type:Boolean,default:!0},onClick:Function},slots:Object,setup(e,{slots:t}){let n=ce(rt,null);if(!n)return()=>null;let{separatorRef:r,mergedClsPrefixRef:i}=n,a=at(),o=g(()=>e.href?`a`:`span`),s=g(()=>a.value.href===e.href?`location`:null);return()=>{let{value:n}=i;return T(`li`,{class:[`${n}-breadcrumb-item`,e.clickable&&`${n}-breadcrumb-item--clickable`]},T(o.value,{class:`${n}-breadcrumb-item__link`,"aria-current":s.value,href:e.href,onClick:e.onClick},t),e.showSeparator&&T(`span`,{class:`${n}-breadcrumb-item__separator`,"aria-hidden":`true`},je(t.separator,()=>[e.separator??r.value])))}}}),st=se(`n-checkbox-group`);v({name:`CheckboxGroup`,props:{min:Number,max:Number,size:String,value:Array,defaultValue:{type:Array,default:null},disabled:{type:Boolean,default:void 0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],onChange:[Function,Array]},setup(e){let{mergedClsPrefixRef:t}=Ee(e),n=ke(e),{mergedSizeRef:r,mergedDisabledRef:i}=n,a=z(e.defaultValue),o=re(g(()=>e.value),a),s=g(()=>o.value?.length||0),c=g(()=>Array.isArray(o.value)?new Set(o.value):new Set);function l(t,r){let{nTriggerFormInput:i,nTriggerFormChange:s}=n,{onChange:c,"onUpdate:value":l,onUpdateValue:u}=e;if(Array.isArray(o.value)){let e=Array.from(o.value),n=e.findIndex(e=>e===r);t?~n||(e.push(r),u&&P(u,e,{actionType:`check`,value:r}),l&&P(l,e,{actionType:`check`,value:r}),i(),s(),a.value=e,c&&P(c,e)):~n&&(e.splice(n,1),u&&P(u,e,{actionType:`uncheck`,value:r}),l&&P(l,e,{actionType:`uncheck`,value:r}),c&&P(c,e),a.value=e,i(),s())}else t?(u&&P(u,[r],{actionType:`check`,value:r}),l&&P(l,[r],{actionType:`check`,value:r}),c&&P(c,[r]),a.value=[r],i(),s()):(u&&P(u,[],{actionType:`uncheck`,value:r}),l&&P(l,[],{actionType:`uncheck`,value:r}),c&&P(c,[]),a.value=[],i(),s())}return ne(st,{checkedCountRef:s,maxRef:H(e,`max`),minRef:H(e,`min`),valueSetRef:c,disabledRef:i,mergedSizeRef:r,toggleCheckbox:l}),{mergedClsPrefix:t}},render(){return T(`div`,{class:`${this.mergedClsPrefix}-checkbox-group`,role:`group`},this.$slots)}});var ct=()=>T(`svg`,{viewBox:`0 0 64 64`,class:`check-icon`},T(`path`,{d:`M50.42,16.76L22.34,39.45l-8.1-11.46c-1.12-1.58-3.3-1.96-4.88-0.84c-1.58,1.12-1.95,3.3-0.84,4.88l10.26,14.51 c0.56,0.79,1.42,1.31,2.38,1.45c0.16,0.02,0.32,0.03,0.48,0.03c0.8,0,1.57-0.27,2.2-0.78l30.99-25.03c1.5-1.21,1.74-3.42,0.52-4.92 C54.13,15.78,51.93,15.55,50.42,16.76z`})),lt=()=>T(`svg`,{viewBox:`0 0 100 100`,class:`line-icon`},T(`path`,{d:`M80.2,55.5H21.4c-2.8,0-5.1-2.5-5.1-5.5l0,0c0-3,2.3-5.5,5.1-5.5h58.7c2.8,0,5.1,2.5,5.1,5.5l0,0C85.2,53.1,82.9,55.5,80.2,55.5z`})),ut=d([N(`checkbox`,`
+ font-size: var(--n-font-size);
+ outline: none;
+ cursor: pointer;
+ display: inline-flex;
+ flex-wrap: nowrap;
+ align-items: flex-start;
+ word-break: break-word;
+ line-height: var(--n-size);
+ --n-merged-color-table: var(--n-color-table);
+ `,[B(`show-label`,`line-height: var(--n-label-line-height);`),d(`&:hover`,[N(`checkbox-box`,[W(`border`,`border: var(--n-border-checked);`)])]),d(`&:focus:not(:active)`,[N(`checkbox-box`,[W(`border`,`
+ border: var(--n-border-focus);
+ box-shadow: var(--n-box-shadow-focus);
+ `)])]),B(`inside-table`,[N(`checkbox-box`,`
+ background-color: var(--n-merged-color-table);
+ `)]),B(`checked`,[N(`checkbox-box`,`
+ background-color: var(--n-color-checked);
+ `,[N(`checkbox-icon`,[d(`.check-icon`,`
+ opacity: 1;
+ transform: scale(1);
+ `)])])]),B(`indeterminate`,[N(`checkbox-box`,[N(`checkbox-icon`,[d(`.check-icon`,`
+ opacity: 0;
+ transform: scale(.5);
+ `),d(`.line-icon`,`
+ opacity: 1;
+ transform: scale(1);
+ `)])])]),B(`checked, indeterminate`,[d(`&:focus:not(:active)`,[N(`checkbox-box`,[W(`border`,`
+ border: var(--n-border-checked);
+ box-shadow: var(--n-box-shadow-focus);
+ `)])]),N(`checkbox-box`,`
+ background-color: var(--n-color-checked);
+ border-left: 0;
+ border-top: 0;
+ `,[W(`border`,{border:`var(--n-border-checked)`})])]),B(`disabled`,{cursor:`not-allowed`},[B(`checked`,[N(`checkbox-box`,`
+ background-color: var(--n-color-disabled-checked);
+ `,[W(`border`,{border:`var(--n-border-disabled-checked)`}),N(`checkbox-icon`,[d(`.check-icon, .line-icon`,{fill:`var(--n-check-mark-color-disabled-checked)`})])])]),N(`checkbox-box`,`
+ background-color: var(--n-color-disabled);
+ `,[W(`border`,`
+ border: var(--n-border-disabled);
+ `),N(`checkbox-icon`,[d(`.check-icon, .line-icon`,`
+ fill: var(--n-check-mark-color-disabled);
+ `)])]),W(`label`,`
+ color: var(--n-text-color-disabled);
+ `)]),N(`checkbox-box-wrapper`,`
+ position: relative;
+ width: var(--n-size);
+ flex-shrink: 0;
+ flex-grow: 0;
+ user-select: none;
+ -webkit-user-select: none;
+ `),N(`checkbox-box`,`
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ height: var(--n-size);
+ width: var(--n-size);
+ display: inline-block;
+ box-sizing: border-box;
+ border-radius: var(--n-border-radius);
+ background-color: var(--n-color);
+ transition: background-color 0.3s var(--n-bezier);
+ `,[W(`border`,`
+ transition:
+ border-color .3s var(--n-bezier),
+ box-shadow .3s var(--n-bezier);
+ border-radius: inherit;
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ border: var(--n-border);
+ `),N(`checkbox-icon`,`
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: absolute;
+ left: 1px;
+ right: 1px;
+ top: 1px;
+ bottom: 1px;
+ `,[d(`.check-icon, .line-icon`,`
+ width: 100%;
+ fill: var(--n-check-mark-color);
+ opacity: 0;
+ transform: scale(0.5);
+ transform-origin: center;
+ transition:
+ fill 0.3s var(--n-bezier),
+ transform 0.3s var(--n-bezier),
+ opacity 0.3s var(--n-bezier),
+ border-color 0.3s var(--n-bezier);
+ `),w({left:`1px`,top:`1px`})])]),W(`label`,`
+ color: var(--n-text-color);
+ transition: color .3s var(--n-bezier);
+ user-select: none;
+ -webkit-user-select: none;
+ padding: var(--n-label-padding);
+ font-weight: var(--n-label-font-weight);
+ `,[d(`&:empty`,{display:`none`})])]),ye(N(`checkbox`,`
+ --n-merged-color-table: var(--n-color-table-modal);
+ `)),Me(N(`checkbox`,`
+ --n-merged-color-table: var(--n-color-table-popover);
+ `))]),dt=v({name:`Checkbox`,props:Object.assign(Object.assign({},Oe.props),{size:String,checked:{type:[Boolean,String,Number],default:void 0},defaultChecked:{type:[Boolean,String,Number],default:!1},value:[String,Number],disabled:{type:Boolean,default:void 0},indeterminate:Boolean,label:String,focusable:{type:Boolean,default:!0},checkedValue:{type:[Boolean,String,Number],default:!0},uncheckedValue:{type:[Boolean,String,Number],default:!1},"onUpdate:checked":[Function,Array],onUpdateChecked:[Function,Array],privateInsideTable:Boolean,onChange:[Function,Array]}),setup(e){let t=ce(st,null),n=z(null),{mergedClsPrefixRef:r,inlineThemeDisabled:i,mergedRtlRef:a,mergedComponentPropsRef:o}=Ee(e),s=z(e.defaultChecked),c=re(H(e,`checked`),s),l=m(()=>{if(t){let n=t.valueSetRef.value;return n&&e.value!==void 0?n.has(e.value):!1}else return c.value===e.checkedValue}),u=ke(e,{mergedSize(n){let{size:r}=e;if(r!==void 0)return r;if(t){let{value:e}=t.mergedSizeRef;if(e!==void 0)return e}if(n){let{mergedSize:e}=n;if(e!==void 0)return e.value}return o?.value?.Checkbox?.size||`medium`},mergedDisabled(n){let{disabled:r}=e;if(r!==void 0)return r;if(t){if(t.disabledRef.value)return!0;let{maxRef:{value:e},checkedCountRef:n}=t;if(e!==void 0&&n.value>=e&&!l.value)return!0;let{minRef:{value:r}}=t;if(r!==void 0&&n.value<=r&&l.value)return!0}return n?n.disabled.value:!1}}),{mergedDisabledRef:d,mergedSizeRef:f}=u,p=Oe(`Checkbox`,`-checkbox`,ut,oe,e,r);function h(n){if(t&&e.value!==void 0)t.toggleCheckbox(!l.value,e.value);else{let{onChange:t,"onUpdate:checked":r,onUpdateChecked:i}=e,{nTriggerFormInput:a,nTriggerFormChange:o}=u,c=l.value?e.uncheckedValue:e.checkedValue;r&&P(r,c,n),i&&P(i,c,n),t&&P(t,c,n),a(),o(),s.value=c}}function _(e){d.value||h(e)}function v(e){if(!d.value)switch(e.key){case` `:case`Enter`:h(e)}}function y(e){switch(e.key){case` `:e.preventDefault()}}let b={focus:()=>{var e;(e=n.value)==null||e.focus()},blur:()=>{var e;(e=n.value)==null||e.blur()}},x=Ne(`Checkbox`,a,r),S=g(()=>{let{value:e}=f,{common:{cubicBezierEaseInOut:t},self:{borderRadius:n,color:r,colorChecked:i,colorDisabled:a,colorTableHeader:o,colorTableHeaderModal:s,colorTableHeaderPopover:c,checkMarkColor:l,checkMarkColorDisabled:u,border:d,borderFocus:m,borderDisabled:h,borderChecked:g,boxShadowFocus:_,textColor:v,textColorDisabled:y,checkMarkColorDisabledChecked:b,colorDisabledChecked:x,borderDisabledChecked:S,labelPadding:C,labelLineHeight:w,labelFontWeight:ee,[De(`fontSize`,e)]:te,[De(`size`,e)]:ne}}=p.value;return{"--n-label-line-height":w,"--n-label-font-weight":ee,"--n-size":ne,"--n-bezier":t,"--n-border-radius":n,"--n-border":d,"--n-border-checked":g,"--n-border-focus":m,"--n-border-disabled":h,"--n-border-disabled-checked":S,"--n-box-shadow-focus":_,"--n-color":r,"--n-color-checked":i,"--n-color-table":o,"--n-color-table-modal":s,"--n-color-table-popover":c,"--n-color-disabled":a,"--n-color-disabled-checked":x,"--n-text-color":v,"--n-text-color-disabled":y,"--n-check-mark-color":l,"--n-check-mark-color-disabled":u,"--n-check-mark-color-disabled-checked":b,"--n-font-size":te,"--n-label-padding":C}}),C=i?Fe(`checkbox`,g(()=>f.value[0]),S,e):void 0;return Object.assign(u,b,{rtlEnabled:x,selfRef:n,mergedClsPrefix:r,mergedDisabled:d,renderedChecked:l,mergedTheme:p,labelId:pe(),handleClick:_,handleKeyUp:v,handleKeyDown:y,cssVars:i?void 0:S,themeClass:C?.themeClass,onRender:C?.onRender})},render(){var e;let{$slots:t,renderedChecked:n,mergedDisabled:r,indeterminate:i,privateInsideTable:a,cssVars:o,labelId:s,label:c,mergedClsPrefix:l,focusable:u,handleKeyUp:d,handleKeyDown:f,handleClick:p}=this;(e=this.onRender)==null||e.call(this);let m=Se(t.default,e=>c||e?T(`span`,{class:`${l}-checkbox__label`,id:s},c||e):null);return T(`div`,{ref:`selfRef`,class:[`${l}-checkbox`,this.themeClass,this.rtlEnabled&&`${l}-checkbox--rtl`,n&&`${l}-checkbox--checked`,r&&`${l}-checkbox--disabled`,i&&`${l}-checkbox--indeterminate`,a&&`${l}-checkbox--inside-table`,m&&`${l}-checkbox--show-label`],tabindex:r||!u?void 0:0,role:`checkbox`,"aria-checked":i?`mixed`:n,"aria-labelledby":s,style:o,onKeyup:d,onKeydown:f,onClick:p,onMousedown:()=>{ue(`selectstart`,window,e=>{e.preventDefault()},{once:!0})}},T(`div`,{class:`${l}-checkbox-box-wrapper`},`\xA0`,T(`div`,{class:`${l}-checkbox-box`},T(Ie,null,{default:()=>this.indeterminate?T(`div`,{key:`indeterminate`,class:`${l}-checkbox-icon`},lt()):T(`div`,{key:`check`,class:`${l}-checkbox-icon`},ct())}),T(`div`,{class:`${l}-checkbox-box__border`}))),m)}}),ft=se(`n-tree-select`);function pt({position:e,offsetLevel:t,indent:n,el:r}){let i={position:`absolute`,boxSizing:`border-box`,right:0};if(e===`inside`)i.left=0,i.top=0,i.bottom=0,i.borderRadius=`inherit`,i.boxShadow=`inset 0 0 0 2px var(--n-drop-mark-color)`;else{let a=e===`before`?`top`:`bottom`;i[a]=0,i.left=`${r.offsetLeft+6-t*n}px`,i.height=`2px`,i.backgroundColor=`var(--n-drop-mark-color)`,i.transformOrigin=a,i.borderRadius=`1px`,i.transform=e===`before`?`translateY(-4px)`:`translateY(4px)`}return T(`div`,{style:i})}function mt({dropPosition:e,node:t}){return t.isLeaf===!1||t.children?!0:e!==`inside`}var ht=se(`n-tree`);function gt({props:e,fNodesRef:t,mergedExpandedKeysRef:n,mergedSelectedKeysRef:r,mergedCheckedKeysRef:i,handleCheck:a,handleSelect:o,handleSwitcherClick:s}){let{value:c}=r,l=ce(ft,null),u=l?l.pendingNodeKeyRef:z(c.length?c[c.length-1]:null);function d(r){if(!e.keyboard)return{enterBehavior:null};let{value:c}=u,l=null;if(c===null){if((r.key===`ArrowDown`||r.key===`ArrowUp`)&&r.preventDefault(),[`ArrowDown`,`ArrowUp`,`ArrowLeft`,`ArrowRight`].includes(r.key)&&c===null){let{value:e}=t,n=0;for(;ne.key===c);if(!~f)return{enterBehavior:null};if(r.key===`Enter`){let t=d[f];switch(l=e.overrideDefaultNodeClickBehavior?.call(e,{option:t.rawNode})||null,l){case`toggleCheck`:a(t,!i.value.includes(t.key));break;case`toggleSelect`:o(t);break;case`toggleExpand`:s(t);break;case`none`:break;default:l=`default`,o(t)}}else if(r.key===`ArrowDown`)for(r.preventDefault(),f+=1;f=0;){if(!d[f].disabled){u.value=d[f].key;break}--f}else if(r.key===`ArrowLeft`){let e=d[f];if(e.isLeaf||!n.value.includes(c)){let t=e.getParent();t&&(u.value=t.key)}else s(e)}else if(r.key===`ArrowRight`){let e=d[f];if(e.isLeaf)return{enterBehavior:null};if(!n.value.includes(c))s(e);else for(f+=1;f{let{clsPrefix:r,expanded:i,hide:a,indent:o,onClick:s}=e;return T(`span`,{"data-switcher":!0,class:[`${r}-tree-node-switcher`,i&&`${r}-tree-node-switcher--expanded`,a&&`${r}-tree-node-switcher--hide`],style:{width:`${o}px`},onClick:s},T(`div`,{class:`${r}-tree-node-switcher__icon`},T(Ie,null,{default:()=>{if(e.loading)return T(y,Object.assign({clsPrefix:r,key:`loading`,radius:85,strokeWidth:20},n?.value));let{value:i}=t;return i?i({expanded:e.expanded,selected:e.selected,option:e.tmNode.rawNode}):T(Ae,{clsPrefix:r,key:`switcher`},{default:()=>T(tt,null)})}})))}}});function bt(e){return g(()=>e.leafOnly?`child`:e.checkStrategy)}function xt(e,t){return!!e.rawNode[t]}function St(e,t,n,r){e?.forEach(e=>{n(e),St(e[t],t,n,r),r(e)})}function Ct(e,t,n,r,i){let a=new Set,o=new Set,s=[];return St(e,r,e=>{if(s.push(e),i(t,e)){o.add(e[n]);for(let e=s.length-2;e>=0;--e)if(!a.has(s[e][n]))a.add(s[e][n]);else return}},()=>{s.pop()}),{expandedKeys:Array.from(a),highlightKeySet:o}}if(f&&Image){let e=new Image;e.src=`data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==`}function wt(e,t,n,r,i){let a=new Set,o=new Set,s=new Set,c=[],l=[],u=[];function d(e){e.forEach(e=>{if(u.push(e),t(n,e)){a.add(e[r]),s.add(e[r]);for(let e=u.length-2;e>=0;--e){let t=u[e][r];if(!o.has(t))o.add(t),a.has(t)&&a.delete(t);else break}}let c=e[i];c&&d(c),u.pop()})}d(e);function f(e,t){e.forEach(e=>{let n=e[r],s=a.has(n),l=o.has(n);if(!s&&!l)return;let u=e[i];if(u)if(s)t.push(e);else{c.push(n);let r=Object.assign(Object.assign({},e),{[i]:[]});t.push(r),f(u,r[i])}else t.push(e)})}return f(e,l),{filteredTree:l,highlightKeySet:s,expandedKeys:c}}var Tt=v({name:`TreeNode`,props:{clsPrefix:{type:String,required:!0},tmNode:{type:Object,required:!0}},setup(e){let t=ce(ht),{droppingNodeParentRef:r,droppingMouseNodeRef:i,draggingNodeRef:a,droppingPositionRef:o,droppingOffsetLevelRef:s,nodePropsRef:c,indentRef:l,blockLineRef:u,checkboxPlacementRef:d,checkOnClickRef:f,disabledFieldRef:p,showLineRef:h,renderSwitcherIconRef:_,overrideDefaultNodeClickBehaviorRef:v}=t,y=m(()=>!!e.tmNode.rawNode.checkboxDisabled),x=m(()=>xt(e.tmNode,p.value)),S=m(()=>t.disabledRef.value||x.value),C=g(()=>{let{value:t}=c;if(t)return t({option:e.tmNode.rawNode})}),w=z(null),ee={value:null};de(()=>{ee.value=w.value.$el});function te(){let n=()=>{let{tmNode:n}=e;if(!n.isLeaf&&!n.shallowLoaded){if(!t.loadingKeysRef.value.has(n.key))t.loadingKeysRef.value.add(n.key);else return;let{onLoadRef:{value:e}}=t;e&&e(n.rawNode).then(e=>{e!==!1&&t.handleSwitcherClick(n)}).finally(()=>{t.loadingKeysRef.value.delete(n.key)})}else t.handleSwitcherClick(n)};_.value?setTimeout(n,0):n()}let ne=m(()=>!x.value&&t.selectableRef.value&&(t.internalTreeSelect?t.mergedCheckStrategyRef.value!==`child`||t.multipleRef.value&&t.cascadeRef.value||e.tmNode.isLeaf:!0)),re=m(()=>t.checkableRef.value&&(t.cascadeRef.value||t.mergedCheckStrategyRef.value!==`child`||e.tmNode.isLeaf)),ie=m(()=>t.displayedCheckedKeysRef.value.includes(e.tmNode.key)),ae=m(()=>{let{value:t}=re;if(!t)return!1;let{value:n}=f,{tmNode:r}=e;return typeof n==`boolean`?!r.disabled&&n:n(e.tmNode.rawNode)});function E(r){let{value:i}=t.expandOnClickRef,{value:a}=ne,{value:o}=ae;if(!a&&!i&&!o||n(r,`checkbox`)||n(r,`switcher`))return;let{tmNode:s}=e;a&&t.handleSelect(s),i&&!s.isLeaf&&te(),o&&O(!ie.value)}function oe(r){var i,a;if(!(n(r,`checkbox`)||n(r,`switcher`))){if(!S.value){let n=v.value,i=!1;if(n)switch(n({option:e.tmNode.rawNode})){case`toggleCheck`:i=!0,O(!ie.value);break;case`toggleSelect`:i=!0,t.handleSelect(e.tmNode);break;case`toggleExpand`:i=!0,te(),i=!0;break;case`none`:i=!0,i=!0;return;default:break}i||E(r)}(a=(i=C.value)?.onClick)==null||a.call(i,r)}}function D(e){u.value||oe(e)}function se(e){u.value&&oe(e)}function O(n){t.handleCheck(e.tmNode,n)}function k(n){t.handleDragStart({event:n,node:e.tmNode})}function le(n){n.currentTarget===n.target&&t.handleDragEnter({event:n,node:e.tmNode})}function ue(n){n.preventDefault(),t.handleDragOver({event:n,node:e.tmNode})}function fe(n){t.handleDragEnd({event:n,node:e.tmNode})}function pe(n){n.currentTarget===n.target&&t.handleDragLeave({event:n,node:e.tmNode})}function me(n){n.preventDefault(),o.value!==null&&t.handleDrop({event:n,node:e.tmNode,dropPosition:o.value})}let he=g(()=>{let{clsPrefix:t}=e,{value:n}=l;if(h.value){let r=[],i=e.tmNode.parent;for(;i;)i.isLastChild?r.push(T(`div`,{class:`${t}-tree-node-indent`},T(`div`,{style:{width:`${n}px`}}))):r.push(T(`div`,{class:[`${t}-tree-node-indent`,`${t}-tree-node-indent--show-line`]},T(`div`,{style:{width:`${n}px`}}))),i=i.parent;return r.reverse()}else return b(e.tmNode.level,T(`div`,{class:`${e.clsPrefix}-tree-node-indent`},T(`div`,{style:{width:`${n}px`}})))});return{showDropMark:m(()=>{let{value:t}=a;if(!t)return;let{value:n}=o;if(!n)return;let{value:r}=i;if(!r)return;let{tmNode:s}=e;return s.key===r.key}),showDropMarkAsParent:m(()=>{let{value:t}=r;if(!t)return!1;let{tmNode:n}=e,{value:i}=o;return i===`before`||i===`after`?t.key===n.key:!1}),pending:m(()=>t.pendingNodeKeyRef.value===e.tmNode.key),loading:m(()=>t.loadingKeysRef.value.has(e.tmNode.key)),highlight:m(()=>t.highlightKeySetRef.value?.has(e.tmNode.key)),checked:ie,indeterminate:m(()=>t.displayedIndeterminateKeysRef.value.includes(e.tmNode.key)),selected:m(()=>t.mergedSelectedKeysRef.value.includes(e.tmNode.key)),expanded:m(()=>t.mergedExpandedKeysRef.value.includes(e.tmNode.key)),disabled:S,checkable:re,mergedCheckOnClick:ae,checkboxDisabled:y,selectable:ne,expandOnClick:t.expandOnClickRef,internalScrollable:t.internalScrollableRef,draggable:t.draggableRef,blockLine:u,nodeProps:C,checkboxFocusable:t.internalCheckboxFocusableRef,droppingPosition:o,droppingOffsetLevel:s,indent:l,checkboxPlacement:d,showLine:h,contentInstRef:w,contentElRef:ee,indentNodes:he,handleCheck:O,handleDrop:me,handleDragStart:k,handleDragEnter:le,handleDragOver:ue,handleDragEnd:fe,handleDragLeave:pe,handleLineClick:se,handleContentClick:D,handleSwitcherClick:te}},render(){let{tmNode:e,clsPrefix:t,checkable:n,expandOnClick:r,selectable:i,selected:a,checked:o,highlight:s,draggable:c,blockLine:l,indent:u,indentNodes:d,disabled:f,pending:p,internalScrollable:m,nodeProps:h,checkboxPlacement:g}=this,_=c&&!f?{onDragenter:this.handleDragEnter,onDragleave:this.handleDragLeave,onDragend:this.handleDragEnd,onDrop:this.handleDrop,onDragover:this.handleDragOver}:void 0,v=m?et(e.key):void 0,y=g===`right`,b=n?T(_t,{indent:u,right:y,focusable:this.checkboxFocusable,disabled:f||this.checkboxDisabled,clsPrefix:t,checked:this.checked,indeterminate:this.indeterminate,onCheck:this.handleCheck}):null;return T(`div`,Object.assign({class:`${t}-tree-node-wrapper`},_),T(`div`,Object.assign({},l?h:void 0,{class:[`${t}-tree-node`,{[`${t}-tree-node--selected`]:a,[`${t}-tree-node--checkable`]:n,[`${t}-tree-node--highlight`]:s,[`${t}-tree-node--pending`]:p,[`${t}-tree-node--disabled`]:f,[`${t}-tree-node--selectable`]:i,[`${t}-tree-node--clickable`]:i||r||this.mergedCheckOnClick},h?.class],"data-key":v,draggable:c&&l,onClick:this.handleLineClick,onDragstart:c&&l&&!f?this.handleDragStart:void 0}),d,e.isLeaf&&this.showLine?T(`div`,{class:[`${t}-tree-node-indent`,`${t}-tree-node-indent--show-line`,e.isLeaf&&`${t}-tree-node-indent--is-leaf`,e.isLastChild&&`${t}-tree-node-indent--last-child`]},T(`div`,{style:{width:`${u}px`}})):T(yt,{clsPrefix:t,expanded:this.expanded,selected:a,loading:this.loading,hide:e.isLeaf,tmNode:this.tmNode,indent:u,onClick:this.handleSwitcherClick}),y?null:b,T(vt,{ref:`contentInstRef`,clsPrefix:t,checked:o,selected:a,onClick:this.handleContentClick,nodeProps:l?void 0:h,onDragstart:c&&!l&&!f?this.handleDragStart:void 0,tmNode:e}),c?this.showDropMark?pt({el:this.contentElRef.value,position:this.droppingPosition,offsetLevel:this.droppingOffsetLevel,indent:u}):this.showDropMarkAsParent?pt({el:this.contentElRef.value,position:`inside`,offsetLevel:this.droppingOffsetLevel,indent:u}):null:null,y?b:null))}}),Et=v({name:`TreeMotionWrapper`,props:{clsPrefix:{type:String,required:!0},height:Number,nodes:{type:Array,required:!0},mode:{type:String,required:!0},onAfterEnter:{type:Function,required:!0}},render(){let{clsPrefix:e}=this;return T(te,{onAfterEnter:this.onAfterEnter,appear:!0,reverse:this.mode===`collapse`},{default:()=>T(`div`,{class:[`${e}-tree-motion-wrapper`,`${e}-tree-motion-wrapper--${this.mode}`],style:{height:_e(this.height)}},this.nodes.map(t=>T(Tt,{clsPrefix:e,tmNode:t})))})}}),Dt=w(),Ot=N(`tree`,`
+ font-size: var(--n-font-size);
+ outline: none;
+`,[d(`ul, li`,`
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ `),d(`>`,[N(`tree-node`,[d(`&:first-child`,`margin-top: 0;`)])]),N(`tree-motion-wrapper`,[B(`expand`,[_({duration:`0.2s`})]),B(`collapse`,[_({duration:`0.2s`,reverse:!0})])]),N(`tree-node-wrapper`,`
+ box-sizing: border-box;
+ padding: var(--n-node-wrapper-padding);
+ `),N(`tree-node`,`
+ position: relative;
+ display: flex;
+ border-radius: var(--n-node-border-radius);
+ transition: background-color .3s var(--n-bezier);
+ `,[B(`highlight`,[N(`tree-node-content`,[W(`text`,`border-bottom-color: var(--n-node-text-color-disabled);`)])]),B(`disabled`,[N(`tree-node-content`,`
+ color: var(--n-node-text-color-disabled);
+ cursor: not-allowed;
+ `)]),U(`disabled`,[B(`clickable`,[N(`tree-node-content`,`
+ cursor: pointer;
+ `)])])]),B(`block-node`,[N(`tree-node-content`,`
+ flex: 1;
+ min-width: 0;
+ `)]),U(`block-line`,[N(`tree-node`,[U(`disabled`,[N(`tree-node-content`,[d(`&:hover`,`background: var(--n-node-color-hover);`)]),B(`selectable`,[N(`tree-node-content`,[d(`&:active`,`background: var(--n-node-color-pressed);`)])]),B(`pending`,[N(`tree-node-content`,`
+ background: var(--n-node-color-hover);
+ `)]),B(`selected`,[N(`tree-node-content`,`background: var(--n-node-color-active);`)])]),B(`selected`,[N(`tree-node-content`,`background: var(--n-node-color-active);`)])])]),B(`block-line`,[N(`tree-node`,[U(`disabled`,[d(`&:hover`,`background: var(--n-node-color-hover);`),B(`pending`,`
+ background: var(--n-node-color-hover);
+ `),B(`selectable`,[U(`selected`,[d(`&:active`,`background: var(--n-node-color-pressed);`)])]),B(`selected`,`background: var(--n-node-color-active);`)]),B(`selected`,`background: var(--n-node-color-active);`),B(`disabled`,`
+ cursor: not-allowed;
+ `)])]),B(`ellipsis`,[N(`tree-node`,[N(`tree-node-content`,`
+ overflow: hidden;
+ `,[W(`text`,`
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ `)])])]),N(`tree-node-indent`,`
+ flex-grow: 0;
+ flex-shrink: 0;
+ `,[B(`show-line`,`position: relative`,[d(`&::before`,`
+ position: absolute;
+ left: 50%;
+ border-left: 1px solid var(--n-line-color);
+ transition: border-color .3s var(--n-bezier);
+ transform: translate(-50%);
+ content: "";
+ top: var(--n-line-offset-top);
+ bottom: var(--n-line-offset-bottom);
+ `),B(`last-child`,[d(`&::before`,`
+ bottom: 50%;
+ `)]),B(`is-leaf`,[d(`&::after`,`
+ position: absolute;
+ content: "";
+ left: calc(50% + 0.5px);
+ right: 0;
+ bottom: 50%;
+ transition: border-color .3s var(--n-bezier);
+ border-bottom: 1px solid var(--n-line-color);
+ `)])]),U(`show-line`,`height: 0;`)]),N(`tree-node-switcher`,`
+ cursor: pointer;
+ display: inline-flex;
+ flex-shrink: 0;
+ height: var(--n-node-content-height);
+ align-items: center;
+ justify-content: center;
+ transition: transform .15s var(--n-bezier);
+ vertical-align: bottom;
+ `,[W(`icon`,`
+ position: relative;
+ height: 14px;
+ width: 14px;
+ display: flex;
+ color: var(--n-arrow-color);
+ transition: color .3s var(--n-bezier);
+ font-size: 14px;
+ `,[N(`icon`,[Dt]),N(`base-loading`,`
+ color: var(--n-loading-color);
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ `,[Dt]),N(`base-icon`,[Dt])]),B(`hide`,`visibility: hidden;`),B(`expanded`,`transform: rotate(90deg);`)]),N(`tree-node-checkbox`,`
+ display: inline-flex;
+ height: var(--n-node-content-height);
+ vertical-align: bottom;
+ align-items: center;
+ justify-content: center;
+ `),N(`tree-node-content`,`
+ user-select: none;
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ min-height: var(--n-node-content-height);
+ box-sizing: border-box;
+ line-height: var(--n-line-height);
+ vertical-align: bottom;
+ padding: 0 6px 0 4px;
+ cursor: default;
+ border-radius: var(--n-node-border-radius);
+ color: var(--n-node-text-color);
+ transition:
+ color .3s var(--n-bezier),
+ background-color .3s var(--n-bezier),
+ border-color .3s var(--n-bezier);
+ `,[d(`&:last-child`,`margin-bottom: 0;`),W(`prefix`,`
+ display: inline-flex;
+ margin-right: 8px;
+ `),W(`text`,`
+ border-bottom: 1px solid #0000;
+ transition: border-color .3s var(--n-bezier);
+ flex-grow: 1;
+ max-width: 100%;
+ `),W(`suffix`,`
+ display: inline-flex;
+ `)]),W(`empty`,`margin: auto;`)]),kt=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})};function At(e,t,n,r){return{getIsGroup(){return!1},getKey(t){return t[e]},getChildren:r||(e=>e[t]),getDisabled(e){return!!(e[n]||e.checkboxDisabled)}}}var jt={allowCheckingNotLoaded:Boolean,filter:Function,defaultExpandAll:Boolean,expandedKeys:Array,keyField:{type:String,default:`key`},labelField:{type:String,default:`label`},childrenField:{type:String,default:`children`},disabledField:{type:String,default:`disabled`},defaultExpandedKeys:{type:Array,default:()=>[]},indent:{type:Number,default:24},indeterminateKeys:Array,renderSwitcherIcon:Function,onUpdateIndeterminateKeys:[Function,Array],"onUpdate:indeterminateKeys":[Function,Array],onUpdateExpandedKeys:[Function,Array],"onUpdate:expandedKeys":[Function,Array],overrideDefaultNodeClickBehavior:Function},Mt=v({name:`Tree`,props:Object.assign(Object.assign(Object.assign(Object.assign({},Oe.props),{accordion:Boolean,showIrrelevantNodes:{type:Boolean,default:!0},data:{type:Array,default:()=>[]},expandOnDragenter:{type:Boolean,default:!0},expandOnClick:Boolean,checkOnClick:{type:[Boolean,Function],default:!1},cancelable:{type:Boolean,default:!0},checkable:Boolean,draggable:Boolean,blockNode:Boolean,blockLine:Boolean,showLine:Boolean,disabled:Boolean,checkedKeys:Array,defaultCheckedKeys:{type:Array,default:()=>[]},selectedKeys:Array,defaultSelectedKeys:{type:Array,default:()=>[]},multiple:Boolean,pattern:{type:String,default:``},onLoad:Function,cascade:Boolean,selectable:{type:Boolean,default:!0},scrollbarProps:Object,allowDrop:{type:Function,default:mt},animated:{type:Boolean,default:!0},ellipsis:Boolean,checkboxPlacement:{type:String,default:`left`},virtualScroll:Boolean,watchProps:Array,renderLabel:Function,renderPrefix:Function,renderSuffix:Function,nodeProps:Function,keyboard:{type:Boolean,default:!0},getChildren:Function,onDragenter:[Function,Array],onDragleave:[Function,Array],onDragend:[Function,Array],onDragstart:[Function,Array],onDragover:[Function,Array],onDrop:[Function,Array],onUpdateCheckedKeys:[Function,Array],"onUpdate:checkedKeys":[Function,Array],onUpdateSelectedKeys:[Function,Array],"onUpdate:selectedKeys":[Function,Array]}),jt),{internalTreeSelect:Boolean,internalScrollable:Boolean,internalScrollablePadding:String,internalRenderEmpty:Function,internalHighlightKeySet:Object,internalUnifySelectCheck:Boolean,internalCheckboxFocusable:{type:Boolean,default:!0},internalFocusable:{type:Boolean,default:!0},checkStrategy:{type:String,default:`all`},spinProps:Object,leafOnly:Boolean}),slots:Object,setup(e){let{mergedClsPrefixRef:t,inlineThemeDisabled:n,mergedRtlRef:o,mergedComponentPropsRef:s}=Ee(e),c=Ne(`Tree`,o,t),l=Oe(`Tree`,`-tree`,Ot,we,e,t),u=g(()=>s?.value?.Tree?.renderEmpty),d=z(null),f=z(null),p=z(null);function m(){return p.value?.listElRef}function _(){return p.value?.itemsElRef}let v=g(()=>{let{filter:t}=e;if(t)return t;let{labelField:n}=e;return(e,t)=>{if(!e.length)return!0;let r=t[n];return typeof r==`string`?r.toLowerCase().includes(e.toLowerCase()):!1}}),y=g(()=>{let{pattern:t}=e;return!t||!t.length||!v.value?{filteredTree:e.data,highlightKeySet:null,expandedKeys:void 0}:wt(e.data,v.value,t,e.keyField,e.childrenField)}),b=g(()=>a(e.showIrrelevantNodes?e.data:y.value.filteredTree,At(e.keyField,e.childrenField,e.disabledField,e.getChildren))),x=ce(ft,null),S=e.internalTreeSelect?x.dataTreeMate:g(()=>e.showIrrelevantNodes?b.value:a(e.data,At(e.keyField,e.childrenField,e.disabledField,e.getChildren))),{watchProps:C}=e,w=z([]);C?.includes(`defaultCheckedKeys`)?ve(()=>{w.value=e.defaultCheckedKeys}):w.value=e.defaultCheckedKeys;let te=re(H(e,`checkedKeys`),w),T=g(()=>S.value.getCheckedKeys(te.value,{cascade:e.cascade,allowNotLoaded:e.allowCheckingNotLoaded})),ie=bt(e),ae=g(()=>T.value.checkedKeys),E=g(()=>{let{indeterminateKeys:t}=e;return t===void 0?T.value.indeterminateKeys:t}),oe=z([]);C?.includes(`defaultSelectedKeys`)?ve(()=>{oe.value=e.defaultSelectedKeys}):oe.value=e.defaultSelectedKeys;let D=re(H(e,`selectedKeys`),oe),se=z([]),O=t=>{se.value=e.defaultExpandAll?S.value.getNonLeafKeys():t===void 0?e.defaultExpandedKeys:t};C?.includes(`defaultExpandedKeys`)?ve(()=>{O(void 0)}):ve(()=>{O(e.defaultExpandedKeys)});let k=re(H(e,`expandedKeys`),se),le=g(()=>b.value.getFlattenedNodes(k.value)),{pendingNodeKeyRef:ue,handleKeydown:de}=gt({props:e,mergedCheckedKeysRef:te,mergedSelectedKeysRef:D,fNodesRef:le,mergedExpandedKeysRef:k,handleCheck:Je,handleSelect:Xe,handleSwitcherClick:G}),fe=null,pe=null,me=z(new Set),A=re(g(()=>e.internalHighlightKeySet||y.value.highlightKeySet),me),ye=z(new Set),be=g(()=>k.value.filter(e=>!ye.value.has(e))),xe=0,j=z(null),M=z(null),Se=z(null),Ce=z(null),N=z(0),Te=g(()=>{let{value:e}=M;return e?e.parent:null}),De=!1;ge(H(e,`data`),()=>{De=!0,h(()=>{De=!1}),ye.value.clear(),ue.value=null,We()},{deep:!1});let F=!1,I=()=>{F=!0,h(()=>{F=!1})},L;ge(H(e,`pattern`),(t,n)=>{if(e.showIrrelevantNodes)if(L=void 0,t){let{expandedKeys:t,highlightKeySet:n}=Ct(e.data,e.pattern,e.keyField,e.childrenField,v.value);me.value=n,I(),U(t,V(t),{node:null,action:`filter`})}else me.value=new Set;else if(!t.length)L!==void 0&&(I(),U(L,V(L),{node:null,action:`filter`}));else{n.length||(L=k.value);let{expandedKeys:e}=y.value;e!==void 0&&(I(),U(e,V(e),{node:null,action:`filter`}))}});function R(t){return kt(this,void 0,void 0,function*(){let{onLoad:n}=e;if(!n){yield Promise.resolve();return}let{value:r}=ye;if(!r.has(t.key)){r.add(t.key);try{(yield n(t.rawNode))===!1&&qe()}catch(e){console.error(e),qe()}r.delete(t.key)}})}ve(()=>{var e;let{value:t}=b;if(!t)return;let{getNode:n}=t;(e=k.value)==null||e.forEach(e=>{let t=n(e);t&&!t.shallowLoaded&&R(t)})});let ke=z(!1),B=z([]);ge(be,(t,n)=>{if(!e.animated||F){h(Me);return}if(De)return;let i=ee(l.value.self.nodeHeight),a=new Set(n),o=null,s=null;for(let e of t)if(!a.has(e)){if(o!==null)return;o=e}let c=new Set(t);for(let e of n)if(!c.has(e)){if(s!==null)return;s=e}if(o===null&&s===null)return;let{virtualScroll:u}=e,f=(u?p.value.listElRef:d.value).offsetHeight,m=Math.ceil(f/i)+1,g;if(o!==null&&(g=n),s!==null&&(g=g===void 0?t:g.filter(e=>e!==s)),ke.value=!0,B.value=b.value.getFlattenedNodes(g),o!==null){let e=B.value.findIndex(e=>e.key===o);if(~e){let n=B.value[e].children;if(n){let a=r(n,t);B.value.splice(e+1,0,{__motion:!0,mode:`expand`,height:u?a.length*i:void 0,nodes:u?a.slice(0,m):a})}}}if(s!==null){let e=B.value.findIndex(e=>e.key===s);if(~e){let n=B.value[e].children;if(!n)return;ke.value=!0;let a=r(n,t);B.value.splice(e+1,0,{__motion:!0,mode:`collapse`,height:u?a.length*i:void 0,nodes:u?a.slice(0,m):a})}}});let Ae=g(()=>i(le.value)),je=g(()=>ke.value?B.value:le.value);function Me(){let{value:e}=f;e&&e.sync()}function Pe(){ke.value=!1,e.virtualScroll&&h(Me)}function V(e){let{getNode:t}=S.value;return e.map(e=>t(e)?.rawNode||null)}function U(t,n,r){let{"onUpdate:expandedKeys":i,onUpdateExpandedKeys:a}=e;se.value=t,i&&P(i,t,n,r),a&&P(a,t,n,r)}function W(t,n,r){let{"onUpdate:checkedKeys":i,onUpdateCheckedKeys:a}=e;w.value=t,a&&P(a,t,n,r),i&&P(i,t,n,r)}function Ie(t,n){let{"onUpdate:indeterminateKeys":r,onUpdateIndeterminateKeys:i}=e;r&&P(r,t,n),i&&P(i,t,n)}function Le(t,n,r){let{"onUpdate:selectedKeys":i,onUpdateSelectedKeys:a}=e;oe.value=t,a&&P(a,t,n,r),i&&P(i,t,n,r)}function Re(t){let{onDragenter:n}=e;n&&P(n,t)}function ze(t){let{onDragleave:n}=e;n&&P(n,t)}function Be(t){let{onDragend:n}=e;n&&P(n,t)}function Ve(t){let{onDragstart:n}=e;n&&P(n,t)}function He(t){let{onDragover:n}=e;n&&P(n,t)}function Ue(t){let{onDrop:n}=e;n&&P(n,t)}function We(){Ge(),Ke()}function Ge(){j.value=null}function Ke(){N.value=0,M.value=null,Se.value=null,Ce.value=null,qe()}function qe(){fe&&=(window.clearTimeout(fe),null),pe=null}function Je(t,n){if(e.disabled||xt(t,e.disabledField))return;if(e.internalUnifySelectCheck&&!e.multiple){Xe(t);return}let r=n?`check`:`uncheck`,{checkedKeys:i,indeterminateKeys:a}=S.value[r](t.key,ae.value,{cascade:e.cascade,checkStrategy:ie.value,allowNotLoaded:e.allowCheckingNotLoaded});W(i,V(i),{node:t.rawNode,action:r}),Ie(a,V(a))}function Ye(t){if(e.disabled)return;let{key:n}=t,{value:r}=k,i=r.findIndex(e=>e===n);if(~i){let e=Array.from(r);e.splice(i,1),U(e,V(e),{node:t.rawNode,action:`collapse`})}else{let i=b.value.getNode(n);if(!i||i.isLeaf)return;let a;if(e.accordion){let e=new Set(t.siblings.map(({key:e})=>e));a=r.filter(t=>!e.has(t)),a.push(n)}else a=r.concat(n);U(a,V(a),{node:t.rawNode,action:`expand`})}}function G(t){e.disabled||ke.value||Ye(t)}function Xe(t){if(!(e.disabled||!e.selectable)){if(ue.value=t.key,e.internalUnifySelectCheck){let{value:{checkedKeys:n,indeterminateKeys:r}}=T;e.multiple?Je(t,!(n.includes(t.key)||r.includes(t.key))):W([t.key],V([t.key]),{node:t.rawNode,action:`check`})}if(e.multiple){let n=Array.from(D.value),r=n.findIndex(e=>e===t.key);~r?e.cancelable&&n.splice(r,1):~r||n.push(t.key),Le(n,V(n),{node:t.rawNode,action:~r?`unselect`:`select`})}else D.value.includes(t.key)?e.cancelable&&Le([],[],{node:t.rawNode,action:`unselect`}):Le([t.key],V([t.key]),{node:t.rawNode,action:`select`})}}function Ze(e){if(fe&&=(window.clearTimeout(fe),null),e.isLeaf)return;pe=e.key;let t=()=>{if(pe!==e.key)return;let{value:t}=Se;if(t&&t.key===e.key&&!k.value.includes(e.key)){let t=k.value.concat(e.key);U(t,V(t),{node:e.rawNode,action:`expand`})}fe=null,pe=null};fe=e.shallowLoaded?window.setTimeout(()=>{t()},1e3):window.setTimeout(()=>{R(e).then(()=>{t()})},1e3)}function Qe({event:t,node:n}){!e.draggable||e.disabled||xt(n,e.disabledField)||(it({event:t,node:n},!1),Re({event:t,node:n.rawNode}))}function $e({event:t,node:n}){!e.draggable||e.disabled||xt(n,e.disabledField)||ze({event:t,node:n.rawNode})}function tt(e){e.target===e.currentTarget&&Ke()}function nt({event:t,node:n}){We(),!(!e.draggable||e.disabled||xt(n,e.disabledField))&&Be({event:t,node:n.rawNode})}function rt({event:t,node:n}){!e.draggable||e.disabled||xt(n,e.disabledField)||(xe=t.clientX,j.value=n,Ve({event:t,node:n.rawNode}))}function it({event:t,node:n},r=!0){if(!e.draggable||e.disabled||xt(n,e.disabledField))return;let{value:i}=j;if(!i)return;let{allowDrop:a,indent:o}=e;r&&He({event:t,node:n.rawNode});let{height:s,top:c}=t.currentTarget.getBoundingClientRect(),l=t.clientY-c,u;u=a({node:n.rawNode,dropPosition:`inside`,phase:`drag`})?l<=8?`before`:l>=s-8?`after`:`inside`:l<=s/2?`before`:`after`;let{value:d}=Ae,f,p,m=d(n.key);if(m===null){Ke();return}let h=!1;u===`inside`?(f=n,p=`inside`):u===`before`?n.isFirstChild?(f=n,p=`before`):(f=le.value[m-1],p=`after`):(f=n,p=`after`),!f.isLeaf&&k.value.includes(f.key)&&(h=!0,p===`after`&&(f=le.value[m+1],f?p=`before`:(f=n,p=`inside`)));let g=f;if(Se.value=g,!h&&i.isLastChild&&i.key===f.key&&(p=`after`),p===`after`){let e=xe-t.clientX,n=0;for(;e>=o/2&&f.parent!==null&&f.isLastChild&&n<1;)e-=o,n+=1,f=f.parent;N.value=n}else N.value=0;if((i.contains(f)||p===`inside`&&i.parent?.key===f.key)&&!(i.key===g.key&&i.key===f.key)){Ke();return}if(!a({node:f.rawNode,dropPosition:p,phase:`drag`})){Ke();return}if(i.key===f.key)qe();else if(pe!==f.key)if(p===`inside`){if(e.expandOnDragenter){if(Ze(f),!f.shallowLoaded&&pe!==f.key){We();return}}else if(!f.shallowLoaded){We();return}}else qe();else p!==`inside`&&qe();Ce.value=p,M.value=f}function at({event:t,node:n,dropPosition:r}){if(!e.draggable||e.disabled||xt(n,e.disabledField))return;let{value:i}=j,{value:a}=M,{value:o}=Ce;if(!(!i||!a||!o)&&e.allowDrop({node:a.rawNode,dropPosition:o,phase:`drag`})&&i.key!==a.key){if(o===`before`){let e=i.getNext({includeDisabled:!0});if(e&&e.key===a.key){Ke();return}}if(o===`after`){let e=i.getPrev({includeDisabled:!0});if(e&&e.key===a.key){Ke();return}}Ue({event:t,node:a.rawNode,dragNode:i.rawNode,dropPosition:r}),We()}}function ot(){Me()}function st(){Me()}function ct(t){if(e.virtualScroll||e.internalScrollable){let{value:e}=f;if((e?.containerRef)?.contains(t.relatedTarget))return;ue.value=null}else{let{value:e}=d;if(e?.contains(t.relatedTarget))return;ue.value=null}}ge(ue,t=>{var n;if(t!==null){if(e.virtualScroll)(n=p.value)==null||n.scrollTo({key:t});else if(e.internalScrollable){let{value:e}=f;if(e===null)return;let n=e.contentRef?.querySelector(`[data-key="${et(t)}"]`);if(!n)return;e.scrollTo({el:n})}}}),ne(ht,{loadingKeysRef:ye,highlightKeySetRef:A,displayedCheckedKeysRef:ae,displayedIndeterminateKeysRef:E,mergedSelectedKeysRef:D,mergedExpandedKeysRef:k,mergedThemeRef:l,mergedCheckStrategyRef:ie,nodePropsRef:H(e,`nodeProps`),disabledRef:H(e,`disabled`),checkableRef:H(e,`checkable`),selectableRef:H(e,`selectable`),expandOnClickRef:H(e,`expandOnClick`),onLoadRef:H(e,`onLoad`),draggableRef:H(e,`draggable`),blockLineRef:H(e,`blockLine`),indentRef:H(e,`indent`),cascadeRef:H(e,`cascade`),checkOnClickRef:H(e,`checkOnClick`),checkboxPlacementRef:e.checkboxPlacement,droppingMouseNodeRef:Se,droppingNodeParentRef:Te,draggingNodeRef:j,droppingPositionRef:Ce,droppingOffsetLevelRef:N,fNodesRef:le,pendingNodeKeyRef:ue,showLineRef:H(e,`showLine`),disabledFieldRef:H(e,`disabledField`),internalScrollableRef:H(e,`internalScrollable`),internalCheckboxFocusableRef:H(e,`internalCheckboxFocusable`),internalTreeSelect:e.internalTreeSelect,renderLabelRef:H(e,`renderLabel`),renderPrefixRef:H(e,`renderPrefix`),renderSuffixRef:H(e,`renderSuffix`),renderSwitcherIconRef:H(e,`renderSwitcherIcon`),labelFieldRef:H(e,`labelField`),multipleRef:H(e,`multiple`),overrideDefaultNodeClickBehaviorRef:H(e,`overrideDefaultNodeClickBehavior`),spinPropsRef:H(e,`spinProps`),handleSwitcherClick:G,handleDragEnd:nt,handleDragEnter:Qe,handleDragLeave:$e,handleDragStart:rt,handleDrop:at,handleDragOver:it,handleSelect:Xe,handleCheck:Je});function lt(e,t){var n,r;typeof e==`number`?(n=p.value)==null||n.scrollTo(e,t||0):(r=p.value)==null||r.scrollTo(e)}let ut={handleKeydown:de,scrollTo:lt,getCheckedData:()=>{if(!e.checkable)return{keys:[],options:[]};let{checkedKeys:t}=T.value;return{keys:t,options:V(t)}},getIndeterminateData:()=>{if(!e.checkable)return{keys:[],options:[]};let{indeterminateKeys:t}=T.value;return{keys:t,options:V(t)}}},dt=g(()=>{let{common:{cubicBezierEaseInOut:e},self:{fontSize:t,nodeBorderRadius:n,nodeColorHover:r,nodeColorPressed:i,nodeColorActive:a,arrowColor:o,loadingColor:s,nodeTextColor:c,nodeTextColorDisabled:u,dropMarkColor:d,nodeWrapperPadding:f,nodeHeight:p,lineHeight:m,lineColor:h}}=l.value,g=he(f,`top`),_=he(f,`bottom`),v=_e(ee(p)-ee(g)-ee(_));return{"--n-arrow-color":o,"--n-loading-color":s,"--n-bezier":e,"--n-font-size":t,"--n-node-border-radius":n,"--n-node-color-active":a,"--n-node-color-hover":r,"--n-node-color-pressed":i,"--n-node-text-color":c,"--n-node-text-color-disabled":u,"--n-drop-mark-color":d,"--n-node-wrapper-padding":f,"--n-line-offset-top":`-${g}`,"--n-line-offset-bottom":`-${_}`,"--n-node-content-height":v,"--n-line-height":m,"--n-line-color":h}}),pt=n?Fe(`tree`,void 0,dt,e):void 0;return Object.assign(Object.assign({},ut),{mergedClsPrefix:t,mergedTheme:l,mergedRenderEmpty:u,rtlEnabled:c,fNodes:je,aip:ke,selfElRef:d,virtualListInstRef:p,scrollbarInstRef:f,handleFocusout:ct,handleDragLeaveTree:tt,handleScroll:ot,getScrollContainer:m,getScrollContent:_,handleAfterEnter:Pe,handleResize:st,cssVars:n?void 0:dt,themeClass:pt?.themeClass,onRender:pt?.onRender})},render(){var e;let{fNodes:t,internalRenderEmpty:n}=this;if(!t.length&&n)return n();let{mergedClsPrefix:r,blockNode:i,blockLine:a,draggable:o,disabled:s,ellipsis:c,internalFocusable:l,checkable:u,handleKeydown:d,rtlEnabled:f,handleFocusout:p,scrollbarProps:m}=this,h=l&&!s,g=h?`0`:void 0,_=[`${r}-tree`,f&&`${r}-tree--rtl`,u&&`${r}-tree--checkable`,(a||i)&&`${r}-tree--block-node`,a&&`${r}-tree--block-line`,c&&`${r}-tree--ellipsis`],v=e=>`__motion`in e?T(Et,{height:e.height,nodes:e.nodes,clsPrefix:r,mode:e.mode,onAfterEnter:this.handleAfterEnter}):T(Tt,{key:e.key,tmNode:e,clsPrefix:r});if(this.virtualScroll){let{mergedTheme:e,internalScrollablePadding:n}=this,i=he(n||`0`);return T(S,Object.assign({},m,{ref:`scrollbarInstRef`,onDragleave:o?this.handleDragLeaveTree:void 0,container:this.getScrollContainer,content:this.getScrollContent,class:_,theme:e.peers.Scrollbar,themeOverrides:e.peerOverrides.Scrollbar,tabindex:g,onKeydown:h?d:void 0,onFocusout:h?p:void 0}),{default:()=>{var n;return(n=this.onRender)==null||n.call(this),t.length?T(xe,{ref:`virtualListInstRef`,items:this.fNodes,itemSize:ee(e.self.nodeHeight),ignoreItemResize:this.aip,paddingTop:i.top,paddingBottom:i.bottom,class:this.themeClass,style:[this.cssVars,{paddingLeft:i.left,paddingRight:i.right}],onScroll:this.handleScroll,onResize:this.handleResize,showScrollbar:!1,itemResizable:!0},{default:({item:e})=>v(e)}):je(this.$slots.empty,()=>[this.mergedRenderEmpty?.call(this)||T(fe,{class:`${r}-tree__empty`,theme:this.mergedTheme.peers.Empty,themeOverrides:this.mergedTheme.peerOverrides.Empty})])}})}let{internalScrollable:y}=this;return _.push(this.themeClass),(e=this.onRender)==null||e.call(this),y?T(S,Object.assign({},m,{class:_,tabindex:g,onKeydown:h?d:void 0,onFocusout:h?p:void 0,style:this.cssVars,contentStyle:{padding:this.internalScrollablePadding}}),{default:()=>T(`div`,{onDragleave:o?this.handleDragLeaveTree:void 0,ref:`selfElRef`},this.fNodes.map(v))}):T(`div`,{class:_,tabindex:g,ref:`selfElRef`,style:this.cssVars,onKeydown:h?d:void 0,onFocusout:h?p:void 0,onDragleave:o?this.handleDragLeaveTree:void 0},t.length?t.map(v):je(this.$slots.empty,()=>[this.mergedRenderEmpty?.call(this)||T(fe,{class:`${r}-tree__empty`,theme:this.mergedTheme.peers.Empty,themeOverrides:this.mergedTheme.peerOverrides.Empty})]))}});async function Nt(e=``){let t=new URLSearchParams;e&&t.set(`path`,e);let n=t.toString();return Pe(`/api/hermes/files/list${n?`?${n}`:``}`)}async function Pt(e){return Pe(`/api/hermes/files/read?path=${encodeURIComponent(e)}`)}async function Ft(e,t){await Pe(`/api/hermes/files/write`,{method:`PUT`,body:JSON.stringify({path:e,content:t})})}async function It(e,t=!1){await Pe(`/api/hermes/files/delete`,{method:`DELETE`,body:JSON.stringify({path:e,recursive:t})})}async function Lt(e,t){await Pe(`/api/hermes/files/rename`,{method:`POST`,body:JSON.stringify({oldPath:e,newPath:t})})}async function Rt(e){await Pe(`/api/hermes/files/mkdir`,{method:`POST`,body:JSON.stringify({path:e})})}async function zt(e,t){await Pe(`/api/hermes/files/copy`,{method:`POST`,body:JSON.stringify({srcPath:e,destPath:t})})}async function Bt(e,t){let n=Ce(),r=new FormData;for(let e of t)r.append(`file`,e);let i=new URLSearchParams;e&&i.set(`path`,e);let a=i.toString(),o=`${n}/api/hermes/files/upload${a?`?${a}`:``}`,s={},c=ze();c&&(s.Authorization=`Bearer ${c}`);let l=await fetch(o,{method:`POST`,headers:s,body:r});if(!l.ok){let e=await l.json().catch(()=>({error:`HTTP ${l.status}`}));throw Error(e.error||`Upload failed: ${l.status}`)}return(await l.json()).files}function Vt(e,t){let n=Ce(),r=new URLSearchParams({path:e});t&&r.set(`name`,t);let i=ze();return i&&r.set(`token`,i),`${n}/api/hermes/download?${r.toString()}`}var Ht={".js":`javascript`,".jsx":`javascript`,".ts":`typescript`,".tsx":`typescript`,".json":`json`,".jsonc":`json`,".html":`html`,".htm":`html`,".css":`css`,".scss":`scss`,".less":`less`,".md":`markdown`,".markdown":`markdown`,".py":`python`,".yaml":`yaml`,".yml":`yaml`,".xml":`xml`,".sh":`shell`,".bash":`shell`,".zsh":`shell`,".sql":`sql`,".go":`go`,".rs":`rust`,".java":`java`,".c":`c`,".h":`c`,".cpp":`cpp`,".hpp":`cpp`,".toml":`ini`,".ini":`ini`,".env":`ini`,".vue":`html`,".dockerfile":`dockerfile`,".graphql":`graphql`,".lua":`lua`,".r":`r`,".rb":`ruby`,".php":`php`,".swift":`swift`,".kt":`kotlin`};function Ut(e){let t=e.split(`/`).pop()||``;return t===`Dockerfile`?`dockerfile`:t===`Makefile`?`makefile`:Ht[`.`+t.split(`.`).pop()?.toLowerCase()]||`plaintext`}var Wt=new Set([`.png`,`.jpg`,`.jpeg`,`.gif`,`.svg`,`.webp`,`.bmp`,`.ico`]);function Gt(e){let t=e.lastIndexOf(`.`);return t>=0?e.slice(t).toLowerCase():``}function Kt(e){return Wt.has(Gt(e))}function qt(e){let t=Gt(e);return t===`.md`||t===`.markdown`}function Jt(e){return!new Set(`.png,.jpg,.jpeg,.gif,.webp,.bmp,.ico,.zip,.gz,.tar,.7z,.rar,.pdf,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.mp3,.mp4,.wav,.webm,.avi,.mov,.exe,.dll,.so,.dylib,.bin,.dat,.db,.sqlite`.split(`,`)).has(Gt(e))}function Yt(e,t,n){return!!(e===t||n&&e.startsWith(t+`/`))}var Xt=Te(`files`,()=>{let e=z(``),t=z([]),n=z(!1),r=z(`name`),i=z(`asc`),a=z(null),o=z(null),s=g(()=>e.value?e.value.split(`/`).filter(Boolean):[]),c=g(()=>{let e=[...t.value];return e.sort((e,t)=>{if(e.isDir!==t.isDir)return e.isDir?-1:1;let n=0;switch(r.value){case`name`:n=e.name.localeCompare(t.name);break;case`size`:n=e.size-t.size;break;case`modTime`:n=e.modTime.localeCompare(t.modTime);break}return i.value===`asc`?n:-n}),e});async function l(r){r!==void 0&&r!==e.value&&(o.value=null),r!==void 0&&(e.value=r),n.value=!0;try{t.value=(await Nt(e.value)).entries}catch(e){throw console.error(`Failed to fetch files:`,e),e}finally{n.value=!1}}function u(e){return l(e)}function d(){let t=e.value.split(`/`).filter(Boolean);return t.pop(),l(t.join(`/`))}async function f(e){let t=await Pt(e);a.value={path:e,content:t.content,originalContent:t.content,language:Ut(e)}}async function p(){a.value&&(await Ft(a.value.path,a.value.content),a.value.originalContent=a.value.content)}function m(){a.value=null}async function h(e){if(Kt(e.name))o.value={path:e.path,type:`image`};else if(qt(e.name)){let t=await Pt(e.path);o.value={path:e.path,type:`markdown`,content:t.content}}}function _(){o.value=null}async function v(t){await Rt(e.value?`${e.value}/${t}`:t),await l()}async function y(t){await Ft(e.value?`${e.value}/${t}`:t,``),await l()}async function b(e){await It(e.path,e.isDir),o.value&&Yt(o.value.path,e.path,e.isDir)&&(o.value=null),a.value&&Yt(a.value.path,e.path,e.isDir)&&(a.value=null),await l()}async function x(e,t){let n=e.path.includes(`/`)?e.path.slice(0,e.path.lastIndexOf(`/`)):``,r=n?`${n}/${t}`:t;await Lt(e.path,r),o.value&&Yt(o.value.path,e.path,e.isDir)&&(o.value=null),a.value&&Yt(a.value.path,e.path,e.isDir)&&(a.value=null),await l()}async function S(e,t){await zt(e.path,t),await l()}async function C(t){await Bt(e.value,t),await l()}function w(e){r.value===e?i.value=i.value===`asc`?`desc`:`asc`:(r.value=e,i.value=`asc`)}return{currentPath:e,entries:t,loading:n,sortBy:r,sortOrder:i,editingFile:a,previewFile:o,pathSegments:s,sortedEntries:c,hasUnsavedChanges:g(()=>a.value?a.value.content!==a.value.originalContent:!1),fetchEntries:l,navigateTo:u,navigateUp:d,openEditor:f,saveEditor:p,closeEditor:m,openPreview:h,closePreview:_,createDir:v,createFile:y,deleteEntry:b,renameEntry:x,copyEntry:S,uploadFiles:C,setSort:w}}),Zt={class:`file-tree`},Qt=j(v({__name:`FileTree`,setup(e){let{t}=R(),n=Xt(),r=z([]),i=z([]);async function a(e){try{return(await Nt(e)).entries.filter(e=>e.isDir).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>({key:e.path,label:e.name,isLeaf:!1}))}catch{return[]}}async function o(e){e.children=await a(e.key)}function s(e){e.length>0&&(i.value=e,n.navigateTo(e[0]))}function c(){i.value=[],n.navigateTo(``)}return de(async()=>{r.value=await a(``)}),(e,n)=>(x(),F(`div`,Zt,[D(`div`,{class:`tree-header`,onClick:c},[n[0]||=D(`svg`,{width:`14`,height:`14`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[D(`path`,{d:`M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`}),D(`polyline`,{points:`9 22 9 12 15 12 15 22`})],-1),D(`span`,null,M(A(t)(`files.breadcrumbRoot`)),1)]),O(A(Mt),{data:r.value,"selected-keys":i.value,"on-load":o,"expand-on-click":``,"block-line":``,"onUpdate:selectedKeys":s},null,8,[`data`,`selected-keys`])]))}}),[[`__scopeId`,`data-v-7f00b3bc`]]),$t={class:`file-breadcrumb`},en=j(v({__name:`FileBreadcrumb`,setup(e){let{t}=R(),n=Xt();function r(e){if(e<0)n.navigateTo(``);else{let t=n.pathSegments.slice(0,e+1).join(`/`);n.navigateTo(t)}}return(e,i)=>(x(),F(`div`,$t,[O(A(it),null,{default:k(()=>[O(A(ot),{onClick:i[0]||=e=>r(-1)},{default:k(()=>[E(M(A(t)(`files.breadcrumbRoot`)),1)]),_:1}),(x(!0),F(Be,null,V(A(n).pathSegments,(e,t)=>(x(),L(A(ot),{key:t,onClick:e=>r(t)},{default:k(()=>[E(M(e),1)]),_:2},1032,[`onClick`]))),128))]),_:1})]))}}),[[`__scopeId`,`data-v-061302de`]]),tn={class:`file-toolbar`},nn=j(v({__name:`FileToolbar`,emits:[`showNewFile`,`showNewFolder`,`showUpload`],setup(e,{emit:t}){let{t:n}=R(),r=He(),i=Xt(),a=t;async function o(){try{await i.fetchEntries()}catch{r.error(n(`files.backendError`))}}return(e,t)=>(x(),F(`div`,tn,[O(A(u),null,{default:k(()=>[O(A(I),{size:`small`,onClick:t[0]||=e=>a(`showNewFile`)},{default:k(()=>[E(M(A(n)(`files.newFile`)),1)]),_:1}),O(A(I),{size:`small`,onClick:t[1]||=e=>a(`showNewFolder`)},{default:k(()=>[E(M(A(n)(`files.newFolder`)),1)]),_:1}),O(A(I),{size:`small`,onClick:t[2]||=e=>a(`showUpload`)},{default:k(()=>[E(M(A(n)(`files.upload`)),1)]),_:1}),O(A(I),{size:`small`,onClick:o},{default:k(()=>[E(M(A(n)(`files.refresh`)),1)]),_:1})]),_:1})]))}}),[[`__scopeId`,`data-v-138da008`]]),rn={class:`file-list`},an={key:1,class:`file-list-items`},on={class:`file-list-header`},sn={key:0,class:`sort-indicator`},cn={key:0,class:`sort-indicator`},ln={key:0,class:`sort-indicator`},un=[`onDblclick`,`onContextmenu`],dn={class:`file-name`},fn={class:`file-icon`},pn={class:`file-size`},mn={class:`file-date`},hn={class:`file-actions`},gn=j(v({__name:`FileList`,emits:[`contextmenu-entry`],setup(e,{emit:t}){let{t:n}=R(),r=He(),i=Xt(),a=t;function o(e){if(e===0)return`—`;let t=[`B`,`KB`,`MB`,`GB`],n=0,r=e;for(;r>=1024&&n(x(),F(`div`,rn,[O(A(Le),{show:A(i).loading},{default:k(()=>[!A(i).loading&&A(i).sortedEntries.length===0?(x(),L(A(fe),{key:0,description:A(n)(`files.emptyDir`)},null,8,[`description`])):(x(),F(`div`,an,[D(`div`,on,[D(`div`,{class:`file-name sort-header`,onClick:t[0]||=e=>A(i).setSort(`name`)},[E(M(A(n)(`files.name`))+` `,1),A(i).sortBy===`name`?(x(),F(`span`,sn,M(A(i).sortOrder===`asc`?`↑`:`↓`),1)):p(``,!0)]),D(`div`,{class:`file-size sort-header`,onClick:t[1]||=e=>A(i).setSort(`size`)},[E(M(A(n)(`files.size`))+` `,1),A(i).sortBy===`size`?(x(),F(`span`,cn,M(A(i).sortOrder===`asc`?`↑`:`↓`),1)):p(``,!0)]),D(`div`,{class:`file-date sort-header`,onClick:t[2]||=e=>A(i).setSort(`modTime`)},[E(M(A(n)(`files.modified`))+` `,1),A(i).sortBy===`modTime`?(x(),F(`span`,ln,M(A(i).sortOrder===`asc`?`↑`:`↓`),1)):p(``,!0)]),t[3]||=D(`div`,{class:`file-actions-placeholder`},null,-1)]),(x(!0),F(Be,null,V(A(i).sortedEntries,e=>(x(),F(`div`,{key:e.path,class:`file-list-row`,onDblclick:t=>l(e),onContextmenu:t=>u(t,e)},[D(`div`,dn,[D(`span`,fn,M(c(e)),1),D(`span`,null,M(e.name),1)]),D(`div`,pn,M(e.isDir?`—`:o(e.size)),1),D(`div`,mn,M(s(e.modTime)),1),D(`div`,hn,[A(Jt)(e.name)&&!e.isDir?(x(),L(A(I),{key:0,size:`tiny`,quaternary:``,onClick:le(t=>A(i).openEditor(e.path),[`stop`]),title:A(n)(`files.edit`)},{default:k(()=>[...t[4]||=[E(`✏️`,-1)]]),_:1},8,[`onClick`,`title`])):p(``,!0),e.isDir?p(``,!0):(x(),L(A(I),{key:1,size:`tiny`,quaternary:``,onClick:le(t=>d(e),[`stop`]),title:A(n)(`files.download`)},{default:k(()=>[...t[5]||=[E(`⬇️`,-1)]]),_:1},8,[`onClick`,`title`]))])],40,un))),128))]))]),_:1},8,[`show`])]))}}),[[`__scopeId`,`data-v-ab2593c7`]]),_n=v({__name:`FileContextMenu`,emits:[`rename`],setup(e,{expose:t,emit:n}){let{t:r}=R(),i=He(),a=l(),o=Xt(),c=z(!1),u=z(0),d=z(0),f=z(null),p=n;function m(e,t){f.value=t,u.value=e.clientX,d.value=e.clientY,c.value=!1,h(()=>{c.value=!0})}function g(){let e=f.value;if(!e)return[];let t=[];return e.isDir?t.push({label:r(`files.open`),key:`open`}):(Jt(e.name)&&t.push({label:r(`files.edit`),key:`edit`}),(Kt(e.name)||qt(e.name))&&t.push({label:r(`files.preview`),key:`preview`}),t.push({label:r(`files.download`),key:`download`})),t.push({type:`divider`,key:`d1`}),t.push({label:r(`files.copyPath`),key:`copyPath`}),t.push({label:r(`files.rename`),key:`rename`}),t.push({type:`divider`,key:`d2`}),t.push({label:r(`files.delete`),key:`delete`}),t}async function _(e){c.value=!1;let t=f.value;if(t)switch(e){case`open`:o.navigateTo(t.path);break;case`edit`:try{await o.openEditor(t.path)}catch{i.error(r(`files.backendError`))}break;case`preview`:try{await o.openPreview(t)}catch{i.error(r(`files.backendError`))}break;case`download`:try{await Qe(t.path,t.name)}catch(e){i.error(e.message)}break;case`copyPath`:await Ze(t.path)?i.success(r(`files.pathCopied`)):i.error(r(`files.pathCopied`)+` ✗`);break;case`rename`:p(`rename`,t);break;case`delete`:a.warning({title:r(`files.delete`),content:t.isDir?r(`files.confirmDeleteDir`,{name:t.name}):r(`files.confirmDelete`,{name:t.name}),positiveText:r(`common.delete`),negativeText:r(`common.cancel`),onPositiveClick:async()=>{try{await o.deleteEntry(t),i.success(r(`files.deleted`))}catch{i.error(r(`files.deleteFailed`))}}});break}}function v(){c.value=!1}return t({show:m}),(e,t)=>(x(),L(A(s),{show:c.value,x:u.value,y:d.value,options:g(),placement:`bottom-start`,trigger:`manual`,onSelect:_,onClickoutside:v},null,8,[`show`,`x`,`y`,`options`]))}}),vn=e({cssDefaults:()=>Sn,lessDefaults:()=>wn,scssDefaults:()=>Cn}),yn=class{constructor(e,t,n){this._onDidChange=new Ye,this._languageId=e,this.setOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this.options}get options(){return this._options}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setDiagnosticsOptions(e){this.setOptions(e)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},bn={validate:!0,lint:{compatibleVendorPrefixes:`ignore`,vendorPrefix:`warning`,duplicateProperties:`warning`,emptyRules:`warning`,importStatement:`ignore`,boxModel:`ignore`,universalSelector:`ignore`,zeroUnits:`ignore`,fontFaceProperties:`warning`,hexColorLength:`error`,argumentsInColorFunction:`error`,unknownProperties:`warning`,ieHack:`ignore`,unknownVendorSpecificProperties:`ignore`,propertyIgnoredDueToDisplay:`warning`,important:`ignore`,float:`ignore`,idSelector:`ignore`},data:{useDefaultDataProvider:!0},format:{newlineBetweenSelectors:!0,newlineBetweenRules:!0,spaceAroundSelectorSeparator:!1,braceStyle:`collapse`,maxPreserveNewLines:void 0,preserveNewLines:!0}},xn={completionItems:!0,hovers:!0,documentSymbols:!0,definitions:!0,references:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0,documentFormattingEdits:!0,documentRangeFormattingEdits:!0},Sn=new yn(`css`,bn,xn),Cn=new yn(`scss`,bn,xn),wn=new yn(`less`,bn,xn);function Tn(){return t(()=>import(`./cssMode-DoEY0nYG.js`),__vite__mapDeps([0,1,2,3,4,5]))}G.onLanguage(`less`,()=>{Tn().then(e=>e.setupMode(wn))}),G.onLanguage(`scss`,()=>{Tn().then(e=>e.setupMode(Cn))}),G.onLanguage(`css`,()=>{Tn().then(e=>e.setupMode(Sn))});var En=e({handlebarDefaults:()=>In,handlebarLanguageService:()=>Fn,htmlDefaults:()=>Pn,htmlLanguageService:()=>Nn,razorDefaults:()=>Rn,razorLanguageService:()=>Ln,registerHTMLLanguageService:()=>Bn}),Dn=class{constructor(e,t,n){this._onDidChange=new Ye,this._languageId=e,this.setOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get options(){return this._options}get modeConfiguration(){return this._modeConfiguration}setOptions(e){this._options=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}},On={format:{tabSize:4,insertSpaces:!1,wrapLineLength:120,unformatted:`default": "a, abbr, acronym, b, bdo, big, br, button, cite, code, dfn, em, i, img, input, kbd, label, map, object, q, samp, select, small, span, strong, sub, sup, textarea, tt, var`,contentUnformatted:`pre`,indentInnerHtml:!1,preserveNewLines:!0,maxPreserveNewLines:void 0,indentHandlebars:!1,endWithNewline:!1,extraLiners:`head, body, /html`,wrapAttributes:`auto`},suggest:{},data:{useDefaultDataProvider:!0}};function kn(e){return{completionItems:!0,hovers:!0,documentSymbols:!0,links:!0,documentHighlights:!0,rename:!0,colors:!0,foldingRanges:!0,selectionRanges:!0,diagnostics:e===An,documentFormattingEdits:e===An,documentRangeFormattingEdits:e===An}}var An=`html`,jn=`handlebars`,Mn=`razor`,Nn=Bn(An,On,kn(An)),Pn=Nn.defaults,Fn=Bn(jn,On,kn(jn)),In=Fn.defaults,Ln=Bn(Mn,On,kn(Mn)),Rn=Ln.defaults;function zn(){return t(()=>import(`./htmlMode-BhzpBkhJ.js`),__vite__mapDeps([6,1,2,3,4,5]))}function Bn(e,t=On,n=kn(e)){let r=new Dn(e,t,n),i,a=G.onLanguage(e,async()=>{i=(await zn()).setupMode(r)});return{defaults:r,dispose(){a.dispose(),i?.dispose(),i=void 0}}}var Vn=e({getWorker:()=>Un,jsonDefaults:()=>Hn}),Hn=new class{constructor(e,t,n){this._onDidChange=new Ye,this._languageId=e,this.setDiagnosticsOptions(t),this.setModeConfiguration(n)}get onDidChange(){return this._onDidChange.event}get languageId(){return this._languageId}get modeConfiguration(){return this._modeConfiguration}get diagnosticsOptions(){return this._diagnosticsOptions}setDiagnosticsOptions(e){this._diagnosticsOptions=e||Object.create(null),this._onDidChange.fire(this)}setModeConfiguration(e){this._modeConfiguration=e||Object.create(null),this._onDidChange.fire(this)}}(`json`,{validate:!0,allowComments:!0,schemas:[],enableSchemaRequest:!1,schemaRequest:`warning`,schemaValidation:`warning`,comments:`error`,trailingCommas:`error`},{documentFormattingEdits:!0,documentRangeFormattingEdits:!0,completionItems:!0,hovers:!0,documentSymbols:!0,tokens:!0,colors:!0,foldingRanges:!0,diagnostics:!0,selectionRanges:!0}),Un=()=>Wn().then(e=>e.getWorker());function Wn(){return t(()=>import(`./jsonMode-BuT9RUwl.js`),__vite__mapDeps([7,1,2,3,4,5]))}G.register({id:`json`,extensions:[`.json`,`.bowerrc`,`.jshintrc`,`.jscsrc`,`.eslintrc`,`.babelrc`,`.har`],aliases:[`JSON`,`json`],mimetypes:[`application/json`]}),G.onLanguage(`json`,()=>{Wn().then(e=>e.setupMode(Hn))});var Gn={},Kn={},qn=class e{static getOrCreate(t){return Kn[t]||(Kn[t]=new e(t)),Kn[t]}constructor(e){this._languageId=e,this._loadingTriggered=!1,this._lazyLoadPromise=new Promise((e,t)=>{this._lazyLoadPromiseResolve=e,this._lazyLoadPromiseReject=t})}load(){return this._loadingTriggered||(this._loadingTriggered=!0,Gn[this._languageId].loader().then(e=>this._lazyLoadPromiseResolve(e),e=>this._lazyLoadPromiseReject(e))),this._lazyLoadPromise}};function K(e){let t=e.id;Gn[t]=e,G.register(e);let n=qn.getOrCreate(t);G.registerTokensProviderFactory(t,{create:async()=>(await n.load()).language}),G.onLanguageEncountered(t,async()=>{let e=await n.load();G.setLanguageConfiguration(t,e.conf)})}K({id:`abap`,extensions:[`.abap`],aliases:[`abap`,`ABAP`],loader:()=>t(()=>import(`./abap-CDhDeuvv.js`),[])}),K({id:`apex`,extensions:[`.cls`],aliases:[`Apex`,`apex`],mimetypes:[`text/x-apex-source`,`text/x-apex`],loader:()=>t(()=>import(`./apex-CAdLmNAy.js`),[])}),K({id:`azcli`,extensions:[`.azcli`],aliases:[`Azure CLI`,`azcli`],loader:()=>t(()=>import(`./azcli-CvWhls1o.js`),[])}),K({id:`bat`,extensions:[`.bat`,`.cmd`],aliases:[`Batch`,`bat`],loader:()=>t(()=>import(`./bat-DIzIZRPr.js`),[])}),K({id:`bicep`,extensions:[`.bicep`],aliases:[`Bicep`],loader:()=>t(()=>import(`./bicep-DTOnpIJV.js`),[])}),K({id:`cameligo`,extensions:[`.mligo`],aliases:[`Cameligo`],loader:()=>t(()=>import(`./cameligo-BYWbA6IW.js`),[])}),K({id:`clojure`,extensions:[`.clj`,`.cljs`,`.cljc`,`.edn`],aliases:[`clojure`,`Clojure`],loader:()=>t(()=>import(`./clojure-BWDPO2x4.js`),[])}),K({id:`coffeescript`,extensions:[`.coffee`],aliases:[`CoffeeScript`,`coffeescript`,`coffee`],mimetypes:[`text/x-coffeescript`,`text/coffeescript`],loader:()=>t(()=>import(`./coffee-BjgzsY8W.js`),[])}),K({id:`c`,extensions:[`.c`,`.h`],aliases:[`C`,`c`],loader:()=>t(()=>import(`./cpp-DYj4MD35.js`),[])}),K({id:`cpp`,extensions:[`.cpp`,`.cc`,`.cxx`,`.hpp`,`.hh`,`.hxx`],aliases:[`C++`,`Cpp`,`cpp`],loader:()=>t(()=>import(`./cpp-DYj4MD35.js`),[])}),K({id:`csharp`,extensions:[`.cs`,`.csx`,`.cake`],aliases:[`C#`,`csharp`],loader:()=>t(()=>import(`./csharp-BolpPGa0.js`),[])}),K({id:`csp`,extensions:[`.csp`],aliases:[`CSP`,`csp`],loader:()=>t(()=>import(`./csp-C22RxLEo.js`),[])}),K({id:`css`,extensions:[`.css`],aliases:[`CSS`,`css`],mimetypes:[`text/css`],loader:()=>t(()=>import(`./css-CxBOnN3S.js`),[])}),K({id:`cypher`,extensions:[`.cypher`,`.cyp`],aliases:[`Cypher`,`OpenCypher`],loader:()=>t(()=>import(`./cypher-CNME4_3_.js`),[])}),K({id:`dart`,extensions:[`.dart`],aliases:[`Dart`,`dart`],mimetypes:[`text/x-dart-source`,`text/x-dart`],loader:()=>t(()=>import(`./dart-CK0QjfLJ.js`),[])}),K({id:`dockerfile`,extensions:[`.dockerfile`],filenames:[`Dockerfile`],aliases:[`Dockerfile`],loader:()=>t(()=>import(`./dockerfile-CU0HBiR_.js`),[])}),K({id:`ecl`,extensions:[`.ecl`],aliases:[`ECL`,`Ecl`,`ecl`],loader:()=>t(()=>import(`./ecl-C2jBSlrM.js`),[])}),K({id:`elixir`,extensions:[`.ex`,`.exs`],aliases:[`Elixir`,`elixir`,`ex`],loader:()=>t(()=>import(`./elixir-CY0zb48c.js`),[])}),K({id:`flow9`,extensions:[`.flow`],aliases:[`Flow9`,`Flow`,`flow9`,`flow`],loader:()=>t(()=>import(`./flow9-BOoOQMGi.js`),[])}),K({id:`fsharp`,extensions:[`.fs`,`.fsi`,`.ml`,`.mli`,`.fsx`,`.fsscript`],aliases:[`F#`,`FSharp`,`fsharp`],loader:()=>t(()=>import(`./fsharp-DXEV-z8E.js`),[])}),K({id:`freemarker2`,extensions:[`.ftl`,`.ftlh`,`.ftlx`],aliases:[`FreeMarker2`,`Apache FreeMarker2`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagAutoInterpolationDollar),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-angle.interpolation-dollar`,aliases:[`FreeMarker2 (Angle/Dollar)`,`Apache FreeMarker2 (Angle/Dollar)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagAngleInterpolationDollar),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-bracket.interpolation-dollar`,aliases:[`FreeMarker2 (Bracket/Dollar)`,`Apache FreeMarker2 (Bracket/Dollar)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagBracketInterpolationDollar),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-angle.interpolation-bracket`,aliases:[`FreeMarker2 (Angle/Bracket)`,`Apache FreeMarker2 (Angle/Bracket)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagAngleInterpolationBracket),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-bracket.interpolation-bracket`,aliases:[`FreeMarker2 (Bracket/Bracket)`,`Apache FreeMarker2 (Bracket/Bracket)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagBracketInterpolationBracket),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-auto.interpolation-dollar`,aliases:[`FreeMarker2 (Auto/Dollar)`,`Apache FreeMarker2 (Auto/Dollar)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagAutoInterpolationDollar),__vite__mapDeps([8,2,3,4]))}),K({id:`freemarker2.tag-auto.interpolation-bracket`,aliases:[`FreeMarker2 (Auto/Bracket)`,`Apache FreeMarker2 (Auto/Bracket)`],loader:()=>t(()=>import(`./freemarker2-DxpTGVfE.js`).then(e=>e.TagAutoInterpolationBracket),__vite__mapDeps([8,2,3,4]))}),K({id:`go`,extensions:[`.go`],aliases:[`Go`],loader:()=>t(()=>import(`./go-CdptEtBX.js`),[])}),K({id:`graphql`,extensions:[`.graphql`,`.gql`],aliases:[`GraphQL`,`graphql`,`gql`],mimetypes:[`application/graphql`],loader:()=>t(()=>import(`./graphql-CjCYg5Nh.js`),[])}),K({id:`handlebars`,extensions:[`.handlebars`,`.hbs`],aliases:[`Handlebars`,`handlebars`,`hbs`],mimetypes:[`text/x-handlebars-template`],loader:()=>t(()=>import(`./handlebars-CiQm6Tfm.js`),__vite__mapDeps([9,2,3,4]))}),K({id:`hcl`,extensions:[`.tf`,`.tfvars`,`.hcl`],aliases:[`Terraform`,`tf`,`HCL`,`hcl`],loader:()=>t(()=>import(`./hcl-CIqI6Xq2.js`),[])}),K({id:`html`,extensions:[`.html`,`.htm`,`.shtml`,`.xhtml`,`.mdoc`,`.jsp`,`.asp`,`.aspx`,`.jshtm`],aliases:[`HTML`,`htm`,`html`,`xhtml`],mimetypes:[`text/html`,`text/x-jshtm`,`text/template`,`text/ng-template`],loader:()=>t(()=>import(`./html-7YxRD05_.js`),__vite__mapDeps([10,2,3,4]))}),K({id:`ini`,extensions:[`.ini`,`.properties`,`.gitconfig`],filenames:[`config`,`.gitattributes`,`.gitconfig`,`.editorconfig`],aliases:[`Ini`,`ini`],loader:()=>t(()=>import(`./ini-CDJ2j2vA.js`),[])}),K({id:`java`,extensions:[`.java`,`.jav`],aliases:[`Java`,`java`],mimetypes:[`text/x-java-source`,`text/x-java`],loader:()=>t(()=>import(`./java-CHOIoTUU.js`),[])}),K({id:`javascript`,extensions:[`.js`,`.es6`,`.jsx`,`.mjs`,`.cjs`],firstLine:`^#!.*\\bnode`,filenames:[`jakefile`],aliases:[`JavaScript`,`javascript`,`js`],mimetypes:[`text/javascript`],loader:()=>t(()=>import(`./javascript-bRxVm489.js`),__vite__mapDeps([11,12,2,3,4]))}),K({id:`julia`,extensions:[`.jl`],aliases:[`julia`,`Julia`],loader:()=>t(()=>import(`./julia-C1Q5f9pw.js`),[])}),K({id:`kotlin`,extensions:[`.kt`,`.kts`],aliases:[`Kotlin`,`kotlin`],mimetypes:[`text/x-kotlin-source`,`text/x-kotlin`],loader:()=>t(()=>import(`./kotlin-B_vAm8fz.js`),[])}),K({id:`less`,extensions:[`.less`],aliases:[`Less`,`less`],mimetypes:[`text/x-less`,`text/less`],loader:()=>t(()=>import(`./less-Cql0PWan.js`),[])}),K({id:`lexon`,extensions:[`.lex`],aliases:[`Lexon`],loader:()=>t(()=>import(`./lexon-DxXPzNxb.js`),[])}),K({id:`lua`,extensions:[`.lua`],aliases:[`Lua`,`lua`],loader:()=>t(()=>import(`./lua-B9t718Dn.js`),[])}),K({id:`liquid`,extensions:[`.liquid`,`.html.liquid`],aliases:[`Liquid`,`liquid`],mimetypes:[`application/liquid`],loader:()=>t(()=>import(`./liquid-B3EoZCCH.js`),__vite__mapDeps([13,2,3,4]))}),K({id:`m3`,extensions:[`.m3`,`.i3`,`.mg`,`.ig`],aliases:[`Modula-3`,`Modula3`,`modula3`,`m3`],loader:()=>t(()=>import(`./m3-BLRwY2ss.js`),[])}),K({id:`markdown`,extensions:[`.md`,`.markdown`,`.mdown`,`.mkdn`,`.mkd`,`.mdwn`,`.mdtxt`,`.mdtext`],aliases:[`Markdown`,`markdown`],loader:()=>t(()=>import(`./markdown-BFmZdZB5.js`),[])}),K({id:`mdx`,extensions:[`.mdx`],aliases:[`MDX`,`mdx`],loader:()=>t(()=>import(`./mdx-Bi_2NZxv.js`),__vite__mapDeps([14,2,3,4]))}),K({id:`mips`,extensions:[`.s`],aliases:[`MIPS`,`MIPS-V`],mimetypes:[`text/x-mips`,`text/mips`,`text/plaintext`],loader:()=>t(()=>import(`./mips-DF6-z2O6.js`),[])}),K({id:`msdax`,extensions:[`.dax`,`.msdax`],aliases:[`DAX`,`MSDAX`],loader:()=>t(()=>import(`./msdax-CHaAEINt.js`),[])}),K({id:`mysql`,extensions:[],aliases:[`MySQL`,`mysql`],loader:()=>t(()=>import(`./mysql-uPQg9vEB.js`),[])}),K({id:`objective-c`,extensions:[`.m`],aliases:[`Objective-C`],loader:()=>t(()=>import(`./objective-c-DDvj-3Gs.js`),[])}),K({id:`pascal`,extensions:[`.pas`,`.p`,`.pp`],aliases:[`Pascal`,`pas`],mimetypes:[`text/x-pascal-source`,`text/x-pascal`],loader:()=>t(()=>import(`./pascal-BtwdqP0I.js`),[])}),K({id:`pascaligo`,extensions:[`.ligo`],aliases:[`Pascaligo`,`ligo`],loader:()=>t(()=>import(`./pascaligo-CkCbT5yL.js`),[])}),K({id:`perl`,extensions:[`.pl`,`.pm`],aliases:[`Perl`,`pl`],loader:()=>t(()=>import(`./perl-Dani_kyN.js`),[])}),K({id:`pgsql`,extensions:[],aliases:[`PostgreSQL`,`postgres`,`pg`,`postgre`],loader:()=>t(()=>import(`./pgsql-C4qqkVfM.js`),[])}),K({id:`php`,extensions:[`.php`,`.php4`,`.php5`,`.phtml`,`.ctp`],aliases:[`PHP`,`php`],mimetypes:[`application/x-php`],loader:()=>t(()=>import(`./php-BoGZVf8G.js`),[])}),K({id:`pla`,extensions:[`.pla`],loader:()=>t(()=>import(`./pla-BN0i5Nh7.js`),[])}),K({id:`postiats`,extensions:[`.dats`,`.sats`,`.hats`],aliases:[`ATS`,`ATS/Postiats`],loader:()=>t(()=>import(`./postiats-D-rOik-N.js`),[])}),K({id:`powerquery`,extensions:[`.pq`,`.pqm`],aliases:[`PQ`,`M`,`Power Query`,`Power Query M`],loader:()=>t(()=>import(`./powerquery-zzNHAhSR.js`),[])}),K({id:`powershell`,extensions:[`.ps1`,`.psm1`,`.psd1`],aliases:[`PowerShell`,`powershell`,`ps`,`ps1`],loader:()=>t(()=>import(`./powershell-DElKmRYu.js`),[])}),K({id:`proto`,extensions:[`.proto`],aliases:[`protobuf`,`Protocol Buffers`],loader:()=>t(()=>import(`./protobuf-BLG_cB3K.js`),[])}),K({id:`pug`,extensions:[`.jade`,`.pug`],aliases:[`Pug`,`Jade`,`jade`],loader:()=>t(()=>import(`./pug-ZR8jtt1u.js`),[])}),K({id:`python`,extensions:[`.py`,`.rpy`,`.pyw`,`.cpy`,`.gyp`,`.gypi`],aliases:[`Python`,`py`],firstLine:`^#!/.*\\bpython[0-9.-]*\\b`,loader:()=>t(()=>import(`./python-Cg6U35xo.js`),__vite__mapDeps([15,2,3,4]))}),K({id:`qsharp`,extensions:[`.qs`],aliases:[`Q#`,`qsharp`],loader:()=>t(()=>import(`./qsharp-D2cee7Ne.js`),[])}),K({id:`r`,extensions:[`.r`,`.rhistory`,`.rmd`,`.rprofile`,`.rt`],aliases:[`R`,`r`],loader:()=>t(()=>import(`./r-DoHsXzjM.js`),[])}),K({id:`razor`,extensions:[`.cshtml`],aliases:[`Razor`,`razor`],mimetypes:[`text/x-cshtml`],loader:()=>t(()=>import(`./razor-C5j4Bh-b.js`),__vite__mapDeps([16,2,3,4]))}),K({id:`redis`,extensions:[`.redis`],aliases:[`redis`],loader:()=>t(()=>import(`./redis-DZVra2W1.js`),[])}),K({id:`redshift`,extensions:[],aliases:[`Redshift`,`redshift`],loader:()=>t(()=>import(`./redshift-DGeVCKd_.js`),[])}),K({id:`restructuredtext`,extensions:[`.rst`],aliases:[`reStructuredText`,`restructuredtext`],loader:()=>t(()=>import(`./restructuredtext-dKPOABuQ.js`),[])}),K({id:`ruby`,extensions:[`.rb`,`.rbx`,`.rjs`,`.gemspec`,`.pp`],filenames:[`rakefile`,`Gemfile`],aliases:[`Ruby`,`rb`],loader:()=>t(()=>import(`./ruby-l2URKD3u.js`),[])}),K({id:`rust`,extensions:[`.rs`,`.rlib`],aliases:[`Rust`,`rust`],loader:()=>t(()=>import(`./rust-BjohuVCv.js`),[])}),K({id:`sb`,extensions:[`.sb`],aliases:[`Small Basic`,`sb`],loader:()=>t(()=>import(`./sb-fQEEXGZ4.js`),[])}),K({id:`scala`,extensions:[`.scala`,`.sc`,`.sbt`],aliases:[`Scala`,`scala`,`SBT`,`Sbt`,`sbt`,`Dotty`,`dotty`],mimetypes:[`text/x-scala-source`,`text/x-scala`,`text/x-sbt`,`text/x-dotty`],loader:()=>t(()=>import(`./scala-BJn2uy72.js`),[])}),K({id:`scheme`,extensions:[`.scm`,`.ss`,`.sch`,`.rkt`],aliases:[`scheme`,`Scheme`],loader:()=>t(()=>import(`./scheme-uR45e6Cj.js`),[])}),K({id:`scss`,extensions:[`.scss`],aliases:[`Sass`,`sass`,`scss`],mimetypes:[`text/x-scss`,`text/scss`],loader:()=>t(()=>import(`./scss-Bb5aFLdH.js`),[])}),K({id:`shell`,extensions:[`.sh`,`.bash`],aliases:[`Shell`,`sh`],loader:()=>t(()=>import(`./shell-CVpK2JOU.js`),[])}),K({id:`sol`,extensions:[`.sol`],aliases:[`sol`,`solidity`,`Solidity`],loader:()=>t(()=>import(`./solidity-C5R0E1ET.js`),[])}),K({id:`aes`,extensions:[`.aes`],aliases:[`aes`,`sophia`,`Sophia`],loader:()=>t(()=>import(`./sophia-a9J0M0YJ.js`),[])}),K({id:`sparql`,extensions:[`.rq`],aliases:[`sparql`,`SPARQL`],loader:()=>t(()=>import(`./sparql-BstjA3WV.js`),[])}),K({id:`sql`,extensions:[`.sql`],aliases:[`SQL`],loader:()=>t(()=>import(`./sql-CWGlZ53m.js`),[])}),K({id:`st`,extensions:[`.st`,`.iecst`,`.iecplc`,`.lc3lib`,`.TcPOU`,`.TcDUT`,`.TcGVL`,`.TcIO`],aliases:[`StructuredText`,`scl`,`stl`],loader:()=>t(()=>import(`./st-BTv5IzCZ.js`),[])}),K({id:`swift`,aliases:[`Swift`,`swift`],extensions:[`.swift`],mimetypes:[`text/swift`],loader:()=>t(()=>import(`./swift-Co-87OWG.js`),[])}),K({id:`systemverilog`,extensions:[`.sv`,`.svh`],aliases:[`SV`,`sv`,`SystemVerilog`,`systemverilog`],loader:()=>t(()=>import(`./systemverilog-xWr6vjak.js`),[])}),K({id:`verilog`,extensions:[`.v`,`.vh`],aliases:[`V`,`v`,`Verilog`,`verilog`],loader:()=>t(()=>import(`./systemverilog-xWr6vjak.js`),[])}),K({id:`tcl`,extensions:[`.tcl`],aliases:[`tcl`,`Tcl`,`tcltk`,`TclTk`,`tcl/tk`,`Tcl/Tk`],loader:()=>t(()=>import(`./tcl-B6qTnlRI.js`),[])}),K({id:`twig`,extensions:[`.twig`],aliases:[`Twig`,`twig`],mimetypes:[`text/x-twig`],loader:()=>t(()=>import(`./twig-DC4COwrm.js`),[])}),K({id:`typescript`,extensions:[`.ts`,`.tsx`,`.cts`,`.mts`],aliases:[`TypeScript`,`ts`,`typescript`],mimetypes:[`text/typescript`],loader:()=>t(()=>import(`./typescript-CVK17w93.js`),__vite__mapDeps([12,2,3,4]))}),K({id:`typespec`,extensions:[`.tsp`],aliases:[`TypeSpec`],loader:()=>t(()=>import(`./typespec-DHt30vj3.js`),[])}),K({id:`vb`,extensions:[`.vb`],aliases:[`Visual Basic`,`vb`],loader:()=>t(()=>import(`./vb-BBAt_CPZ.js`),[])}),K({id:`wgsl`,extensions:[`.wgsl`],aliases:[`WebGPU Shading Language`,`WGSL`,`wgsl`],loader:()=>t(()=>import(`./wgsl-COrKLdj8.js`),[])}),K({id:`xml`,extensions:[`.xml`,`.xsd`,`.dtd`,`.ascx`,`.csproj`,`.config`,`.props`,`.targets`,`.wxi`,`.wxl`,`.wxs`,`.xaml`,`.svg`,`.svgz`,`.opf`,`.xslt`,`.xsl`],firstLine:`(\\<\\?xml.*)|(\\