@zhanguym/chatroom 1.2.0-beta.0 → 1.2.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/dist/app/application.d.ts +2 -0
  2. package/dist/app/application.js +7 -1
  3. package/dist/app/lifecycle.js +6 -0
  4. package/dist/auth/auth-service.js +5 -1
  5. package/dist/infrastructure/database/custom-mcp-repository.d.ts +9 -0
  6. package/dist/infrastructure/database/custom-mcp-repository.js +37 -0
  7. package/dist/infrastructure/database/mcp-tool-settings-repository.d.ts +1 -0
  8. package/dist/infrastructure/database/mcp-tool-settings-repository.js +6 -0
  9. package/dist/infrastructure/database/schema.d.ts +1 -1
  10. package/dist/infrastructure/database/schema.js +9 -0
  11. package/dist/mcp/custom/manager.d.ts +54 -0
  12. package/dist/mcp/custom/manager.js +494 -0
  13. package/dist/mcp/custom/oauth.d.ts +38 -0
  14. package/dist/mcp/custom/oauth.js +116 -0
  15. package/dist/mcp/custom/types.d.ts +42 -0
  16. package/dist/mcp/custom/types.js +1 -0
  17. package/dist/mcp/server/create-mcp-server.d.ts +2 -1
  18. package/dist/mcp/server/create-mcp-server.js +4 -3
  19. package/dist/mcp/server/tool-control.d.ts +5 -0
  20. package/dist/mcp/server/tool-control.js +17 -0
  21. package/dist/native/linux/chatroom-computer-helper +0 -0
  22. package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
  23. package/dist/native/windows/chatroom-computer-helper.exe +0 -0
  24. package/dist/plugins/computer/computer-schemas.d.ts +8 -8
  25. package/dist/plugins/types.d.ts +2 -0
  26. package/dist/plugins/web/api-types.d.ts +2 -0
  27. package/dist/plugins/web/http/api-router.js +3 -0
  28. package/dist/plugins/web/http/custom-mcp-api-router.d.ts +6 -0
  29. package/dist/plugins/web/http/custom-mcp-api-router.js +114 -0
  30. package/dist/plugins/web/plugin.js +1 -1
  31. package/dist/plugins/web/runtime.d.ts +3 -1
  32. package/dist/plugins/web/runtime.js +3 -1
  33. package/dist/web/assets/{AgentView-DQr-5aLK.js → AgentView-Chyr0duc.js} +3 -3
  34. package/dist/web/assets/{CloudView-B2VBut3O.js → CloudView-DN3gdtln.js} +1 -1
  35. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-B3tNL1LG.js +3 -0
  36. package/dist/web/assets/{ComputerView-CIFF1zUb.js → ComputerView-BQsCJDj6.js} +1 -1
  37. package/dist/web/assets/ComputerView-Bz2Wsz2X.css +1 -0
  38. package/dist/web/assets/{MarkdownContent-DRZp88_G.js → MarkdownContent-Cs2dEsGL.js} +1 -1
  39. package/dist/web/assets/McpToolsView-DEihWplq.js +2 -0
  40. package/dist/web/assets/McpToolsView-DdYOoY9_.css +1 -0
  41. package/dist/web/assets/{OperationsView-B_Nv1Mgi.js → OperationsView-xUzS2M6J.js} +2 -2
  42. package/dist/web/assets/{ProcessesView-5K8wNiPC.js → ProcessesView-BZJE6ibM.js} +2 -2
  43. package/dist/web/assets/{StateChip.vue_vue_type_script_setup_true_lang-CQEj-YRM.js → StateChip.vue_vue_type_script_setup_true_lang-DIF7HtT8.js} +1 -1
  44. package/dist/web/assets/SystemLogsView-BHNuvcuf.js +1 -0
  45. package/dist/web/assets/{TerminalView-DNaKG3II.css → TerminalView-B1cLrRJ3.css} +1 -1
  46. package/dist/web/assets/{TerminalView-Dvyy2GKF.js → TerminalView-DynA5Y2x.js} +10 -10
  47. package/dist/web/assets/VSelect-EZ3BvG23.js +1 -0
  48. package/dist/web/assets/VSheet-DQI4RXKJ.js +1 -0
  49. package/dist/web/assets/VSpacer-CYKfdiFh.js +1 -0
  50. package/dist/web/assets/{VSwitch-CvQYU48e.js → VSwitch-C-NDv5Ol.js} +1 -1
  51. package/dist/web/assets/{VTabs-CftrBFlF.js → VTabs-Cd28-4lH.js} +1 -1
  52. package/dist/web/assets/{VTextarea-Dcui00tn.js → VTextarea-j4nd1i82.js} +1 -1
  53. package/dist/web/assets/WorkspaceDownloadPreview-CT8fPWGZ.js +1 -0
  54. package/dist/web/assets/{WorkspaceMediaPreview-ctIyG3Ru.js → WorkspaceMediaPreview-BYfyE2rF.js} +3 -3
  55. package/dist/web/assets/{WorkspacePdfPreview-CeizxEAH.js → WorkspacePdfPreview-Cn1Z4mrW.js} +1 -1
  56. package/dist/web/assets/{WorkspacesView-DcmqHGvr.js → WorkspacesView-CHos0Dy0.js} +2 -2
  57. package/dist/web/assets/{index-BRI_re-n.css → index-BCUxnASh.css} +1 -1
  58. package/dist/web/assets/index-CR4g0KyE.js +19 -0
  59. package/dist/web/assets/{useMasterDetailFocus-DR5N95_A.js → useMasterDetailFocus-D_0RtiVd.js} +1 -1
  60. package/dist/web/assets/useOperationLabels-a5jWmoTY.js +1 -0
  61. package/dist/web/index.html +2 -2
  62. package/dist/web/transport-sw.js +6 -0
  63. package/package.json +2 -1
  64. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js +0 -3
  65. package/dist/web/assets/ComputerView-DWzfSYJ7.css +0 -1
  66. package/dist/web/assets/McpToolsView-CSEru3ck.js +0 -1
  67. package/dist/web/assets/McpToolsView-DjxPbTHj.css +0 -1
  68. package/dist/web/assets/SystemLogsView-CBINILPo.js +0 -1
  69. package/dist/web/assets/VSelect-CBX17QQj.js +0 -1
  70. package/dist/web/assets/VSpacer-9N_Ffoce.js +0 -1
  71. package/dist/web/assets/WorkspaceDownloadPreview-DzM2p_xl.js +0 -1
  72. package/dist/web/assets/index-DTyxBHlJ.js +0 -19
  73. package/dist/web/assets/useOperationLabels-Dou4m0ac.js +0 -1
  74. /package/dist/web/assets/{CodeViewer-CH1DEJge.css → VSheet-CH1DEJge.css} +0 -0
@@ -1 +1 @@
1
- import{ab as o,ae as u}from"./index-DTyxBHlJ.js";function i(e){const t=o("layout"),a=o("detailPane");function r(){e.value&&u(()=>{t.value?.scrollIntoView({behavior:"smooth",block:"start"}),a.value?.focus({preventScroll:!0})})}function l(n){e.value&&u(()=>{t.value?.querySelector(n)?.focus({preventScroll:!0})})}return{focusDetail:r,focusMaster:l}}export{i as u};
1
+ import{ab as o,ae as u}from"./index-CR4g0KyE.js";function i(e){const t=o("layout"),a=o("detailPane");function r(){e.value&&u(()=>{t.value?.scrollIntoView({behavior:"smooth",block:"start"}),a.value?.focus({preventScroll:!0})})}function l(n){e.value&&u(()=>{t.value?.querySelector(n)?.focus({preventScroll:!0})})}return{focusDetail:r,focusMaster:l}}export{i as u};
@@ -0,0 +1 @@
1
+ import{u,bt as c,bu as r,bv as i}from"./index-CR4g0KyE.js";function l(){const n=u();function a(t,e){const s=c(t,e);return s?n.t(s):r(e)}function o(t){const e=i(t);return e?n.t(e):t}return{actionLabel:a,sourceLabel:o}}export{l as u};
@@ -10,8 +10,8 @@
10
10
  href="/assets/chatroom-B5p-5n3y.svg"
11
11
  />
12
12
  <title>ChatRoom Runtime</title>
13
- <script type="module" crossorigin src="/assets/index-DTyxBHlJ.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-BRI_re-n.css">
13
+ <script type="module" crossorigin src="/assets/index-CR4g0KyE.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-BCUxnASh.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
@@ -229,6 +229,12 @@ self.addEventListener("fetch", (event) => {
229
229
  async function route(event) {
230
230
  const request = event.request;
231
231
  const url = new URL(request.url);
232
+ // Explicit HTTP selection and timed-out P2P downloads must stay on HTTP.
233
+ if (
234
+ url.pathname === "/api/workspace/file/download" &&
235
+ url.searchParams.get("__chatroom_http") === "1"
236
+ )
237
+ return fetch(request);
232
238
  if (!activeClients.has(event.clientId)) return fetch(request);
233
239
  const client = event.clientId && (await self.clients.get(event.clientId));
234
240
  if (!client) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhanguym/chatroom",
3
- "version": "1.2.0-beta.0",
3
+ "version": "1.2.0-beta.2",
4
4
  "type": "module",
5
5
  "description": "Local MCP runtime for ChatGPT with workspace, process, Cloud, and WebUI controls.",
6
6
  "bin": {
@@ -30,6 +30,7 @@
30
30
  "postinstall": "node scripts/ensure-pty-helper.mjs"
31
31
  },
32
32
  "dependencies": {
33
+ "@modelcontextprotocol/client": "^2.3.1",
33
34
  "@modelcontextprotocol/node": "^2.0.0",
34
35
  "@modelcontextprotocol/server": "^2.0.0",
35
36
  "@simplewebauthn/server": "13.3.2",
@@ -1,3 +0,0 @@
1
- import{ag as H,bx as A,aP as F,c9 as z,ca as M,cb as N,aX as O,aq as W,aC as j,bA as G,bB as I,aK as U,cc as q,cd as J,aJ as X,c0 as K,aW as Q,ce as Y,k as m,aa as Z,n as S,b$ as ee,aV as ae,d as oe,u as te,w as _,a6 as le,b as se,c as d,l as B,p as ne,e as b,F as ie,f as k,R as re,g as v,m as w,h as V,C as ce,t as P,s as f,v as $,cf as ue}from"./index-DTyxBHlJ.js";import{V as de}from"./VSpacer-9N_Ffoce.js";const ve=j({color:String,...Y(),...Q(),...K(),...X(),...J(),...q(),...U(),...I(),...G()},"VSheet"),me=H()({name:"VSheet",props:ve(),setup(e,{slots:a}){const{themeClasses:h}=A(e),{backgroundColorClasses:g,backgroundColorStyles:l}=F(()=>e.color),{borderClasses:n}=z(e),{dimensionStyles:o}=ee(e),{elevationClasses:i}=ae(e),{locationStyles:t}=M(e),{positionClasses:r}=N(e),{roundedClasses:c,roundedStyles:y}=O(e);return W(()=>m(e.tag,{class:S(["v-sheet",h.value,g.value,n.value,i.value,r.value,c.value,e.class]),style:Z([l.value,o.value,t.value,y.value,e.style])},a)),{}}}),he={class:"code-toolbar"},ye={class:"code-actions"},fe={key:1,class:"code-copy-error",role:"alert"},ge=["innerHTML"],pe={key:1},be=2e5,Ce=120,Ve=oe({__name:"CodeViewer",props:{value:{},text:{},filename:{default:"chatroom-output.txt"},language:{},toolbar:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0}},setup(e){const a=e,h=f(""),g=f(""),l=f(!0),n=f(null),o=te(),i=f("");let t=null,r=0;const c=$(()=>a.text??JSON.stringify(a.value??null,null,2)),y=$(()=>{const u=g.value.toLocaleLowerCase();return u?c.value.split(`
2
- `).filter(s=>s.toLocaleLowerCase().includes(u)).join(`
3
- `):c.value});_(h,u=>{t&&clearTimeout(t),t=setTimeout(()=>{g.value=u,t=null},Ce)}),_([y,()=>a.filename,()=>a.language,()=>a.value!==void 0,()=>a.highlight],async(u,s,p)=>{const L=++r;p(()=>{r+=1}),n.value=null;const C=y.value;if(!a.highlight||!C||C.length>be)return;const D={filename:a.filename,language:a.language??(a.value!==void 0?"json":null)};try{const{highlightSource:E}=await le(async()=>{const{highlightSource:R}=await import("./syntax-highlight-C_fuMcwC.js");return{highlightSource:R}},[]);if(L!==r)return;n.value=E(C,D)}catch{}},{immediate:!0}),se(()=>{t&&clearTimeout(t),r+=1});async function x(){i.value="";try{await navigator.clipboard.writeText(c.value)}catch{i.value=o.t("$vuetify.chatroom.code.copyFailed")}}function T(){ue(new Blob([c.value],{type:"text/plain;charset=utf-8"}),a.filename)}return(u,s)=>(d(),B(me,{border:e.toolbar,rounded:e.toolbar?"lg":0,"overflow-hidden":"",class:S(["code-viewer",{"code-viewer-plain":!e.toolbar}])},{default:ne(()=>[e.toolbar?(d(),b(ie,{key:0},[k("div",he,[m(re,{modelValue:h.value,"onUpdate:modelValue":s[0]||(s[0]=p=>h.value=p),placeholder:v(o).t("$vuetify.chatroom.code.search"),"aria-label":v(o).t("$vuetify.chatroom.code.search"),"prepend-inner-icon":"$mdiMagnify",density:"compact","hide-details":"",class:"code-search"},null,8,["modelValue","placeholder","aria-label"]),m(de),k("div",ye,[m(w,{icon:"$mdiContentCopy",size:"small",variant:"text","aria-label":v(o).t("$vuetify.chatroom.code.copy"),onClick:x},null,8,["aria-label"]),m(w,{icon:l.value?"$mdiWrap":"$mdiFormatAlignLeft",size:"small",variant:"text","aria-label":v(o).t(l.value?"$vuetify.chatroom.code.disableWrap":"$vuetify.chatroom.code.enableWrap"),onClick:s[1]||(s[1]=p=>l.value=!l.value)},null,8,["icon","aria-label"]),e.showDownload?(d(),B(w,{key:0,icon:"$mdiDownloadOutline",size:"small",variant:"text","aria-label":v(o).t("$vuetify.chatroom.code.download"),onClick:T},null,8,["aria-label"])):V("",!0)])]),m(ce)],64)):V("",!0),i.value?(d(),b("div",fe,P(i.value),1)):V("",!0),k("pre",{class:S(["code-block",{wrap:l.value}])},[n.value?(d(),b("code",{key:0,class:"hljs",innerHTML:n.value},null,8,ge)):(d(),b("code",pe,P(y.value||v(o).t("$vuetify.chatroom.code.noOutput")),1))],2)]),_:1},8,["border","rounded","class"]))}});export{me as V,Ve as _};
@@ -1 +0,0 @@
1
- .computer-operation-scroll[data-v-e1119403]{overflow-y:auto;overscroll-behavior:contain}.computer-operation-list[data-v-e1119403]{padding-block:4px}.computer-operation-list[data-v-e1119403] .v-list-item{min-height:52px;padding-inline:18px}.computer-operation-list[data-v-e1119403] .v-list-item-title,.computer-operation-list[data-v-e1119403] .v-list-item-subtitle{font-size:12px}.computer-preview-heading[data-v-f2938466]{min-width:0}.computer-preview-time[data-v-f2938466]{margin-top:2px;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.computer-preview-content[data-v-f2938466]{padding:14px}.computer-screen-shell[data-v-f2938466]{overflow:hidden;border:1px solid rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface))}.computer-screen-shell img[data-v-f2938466]{display:block;width:100%;height:auto;object-fit:contain}.computer-screen-empty[data-v-f2938466]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;border:1px dashed rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface),.68);text-align:center}.computer-preview-meta[data-v-f2938466]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:10px;margin-top:10px}.computer-preview-meta>div[data-v-f2938466]{display:flex;min-width:0;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:rgb(var(--v-theme-on-surface),.04)}.computer-preview-meta span[data-v-f2938466]{color:rgb(var(--v-theme-on-surface),.7);font-size:11px}.computer-preview-meta strong[data-v-f2938466]{color:rgb(var(--v-theme-on-surface),.92);font-size:12px;font-weight:650}@media(max-width:900px){.computer-preview-meta[data-v-f2938466]{grid-template-columns:1fr}}.computer-status-list[data-v-fbaed594]{display:flex;flex-direction:column;gap:2px;padding:12px 18px}.computer-status-row[data-v-fbaed594]{display:flex;min-height:36px;align-items:center;justify-content:space-between;gap:16px}.computer-status-label[data-v-fbaed594]{color:rgb(var(--v-theme-on-surface),.76);font-size:13px;font-weight:500}.computer-status-value[data-v-fbaed594]{color:rgb(var(--v-theme-on-surface),.94);font-size:13px;font-weight:600}.computer-permission-value[data-v-fbaed594]{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:10px}.computer-permission-state[data-v-fbaed594]{font-size:13px;font-weight:600;white-space:nowrap}.computer-permission-state.is-granted[data-v-fbaed594]{color:rgb(var(--v-theme-success))}.computer-permission-state.is-denied[data-v-fbaed594]{color:rgb(var(--v-theme-warning))}.computer-permission-state.is-muted[data-v-fbaed594]{color:rgb(var(--v-theme-on-surface),.72)}.computer-permission-btn[data-v-fbaed594]{padding-inline:10px;font-size:12px;font-weight:650}.computer-permission-alert[data-v-fbaed594]{margin-top:8px}.computer-settings-list[data-v-fbaed594],.computer-display-list[data-v-fbaed594]{padding-block:4px}.computer-settings-list[data-v-fbaed594] .v-list-item,.computer-display-list[data-v-fbaed594] .v-list-item{min-height:48px;padding-inline:18px}.computer-settings-list[data-v-fbaed594] .v-list-item-title,.computer-display-list[data-v-fbaed594] .v-list-item-title,.computer-display-list[data-v-fbaed594] .v-list-item-subtitle{font-size:12px}@media(max-width:900px){.computer-status-row[data-v-fbaed594]{min-height:40px}}.computer-view[data-v-2084f1f6]{display:flex;flex-direction:column;gap:14px;font-size:14px}
@@ -1 +0,0 @@
1
- import{d as q,u as D,$ as L,o as P,i as x,y as B,c as l,e as _,l as v,p as f,q as j,t as u,E as A,h as g,k as p,f as o,g as h,m as F,z as y,F as E,j as z,s as w,bj as G,v as H,D as J,C as O,_ as K}from"./index-DTyxBHlJ.js";import{V as I}from"./VSwitch-CvQYU48e.js";const Q={class:"mcp-tools-view"},W={class:"panel-header"},X={class:"panel-title"},Y={class:"mcp-tool-group-header"},Z={class:"min-w-0"},ee={class:"panel-title"},ae={class:"mcp-tool-list"},te=["title"],se={class:"mcp-tool-heading"},oe={class:"empty-inline"},ne=q({__name:"McpToolsView",setup(le){const i=D(),c=w([]),r=w(!1),d=w(""),n=G(new Set),m=L(),M=H(()=>{const e=new Map;for(const a of c.value){const t=e.get(a.pluginId)??[];t.push(a),e.set(a.pluginId,t)}return[...e.entries()].map(([a,t])=>({pluginId:a,tools:t}))});P(()=>{b()});async function b(){if(n.size)return;const e=m.begin();r.value=!0,d.value="";try{const a=await x("/mcp/tools",{signal:e.signal});m.isCurrent(e)&&(c.value=a)}catch(a){m.isCurrent(e)&&(d.value=B(a))}finally{m.isCurrent(e)&&(r.value=!1)}}async function k(e,a){if(!(n.has(e.name)||e.enabled===a)){m.invalidate(),r.value=!1,n.add(e.name),d.value="";try{const t=await x(`/mcp/tools/${encodeURIComponent(e.name)}`,{method:"PATCH",body:JSON.stringify({enabled:a})});c.value=c.value.map(s=>s.name===t.name?t:s)}catch(t){d.value=B(t)}finally{n.delete(e.name)}}}async function N(e,a){const t=e.tools.filter(s=>s.enabled!==a&&!n.has(s.name));await Promise.all(t.map(s=>k(s,a)))}function V(e){return["workspace","process","computer","agent"].includes(e)?i.t(`$vuetify.chatroom.mcpTools.plugins.${e}`):e}const T=new Set(["workspace_list","workspace_info","workspace_file_get","process_start","process_read","process_write","process_kill","computer_snapshot","computer_action","agent_providers","agent_provider_details","agent_models","agent_sessions","agent_create","agent_send","agent_steer","agent_review","agent_history","agent_configure","agent_respond","agent_interrupt","agent_switch_provider"]);function C(e){return T.has(e.name)?i.t("$vuetify.chatroom.mcpTools.tools."+e.name+".title"):e.title}function R(e){return T.has(e.name)?i.t("$vuetify.chatroom.mcpTools.tools."+e.name+".description"):e.description}function S(e){return e.tools.some(a=>a.enabled)}function $(e){return e.tools.every(a=>a.enabled)}return(e,a)=>(l(),_("div",Q,[d.value?(l(),v(A,{key:0,type:"error",variant:"tonal",density:"compact"},{default:f(()=>[j(u(d.value),1)]),_:1})):g("",!0),p(y,{class:"panel-card"},{default:f(()=>[o("div",W,[o("div",null,[o("div",X,u(h(i).t("$vuetify.chatroom.mcpTools.title")),1)]),p(F,{class:"mcp-tools-refresh",icon:"$mdiRefresh",size:"small",variant:"text",loading:r.value,disabled:n.size>0,"aria-label":h(i).t("$vuetify.chatroom.mcpTools.refresh"),onClick:b},null,8,["loading","disabled","aria-label"])])]),_:1}),r.value&&!c.value.length?(l(),v(J,{key:1,indeterminate:"",rounded:""})):g("",!0),(l(!0),_(E,null,z(M.value,t=>(l(),v(y,{key:t.pluginId,class:"panel-card mcp-tool-group"},{default:f(()=>[o("div",Y,[o("div",Z,[o("div",ee,u(V(t.pluginId)),1)]),p(I,{class:"mcp-tool-switch","model-value":$(t),indeterminate:S(t)&&!$(t),color:"primary",density:"compact","hide-details":"",inset:"",disabled:t.tools.some(s=>n.has(s.name)),"aria-label":h(i).t("$vuetify.chatroom.mcpTools.togglePlugin",V(t.pluginId)),"onUpdate:modelValue":s=>N(t,!!s)},null,8,["model-value","indeterminate","disabled","aria-label","onUpdate:modelValue"])]),p(O),o("div",ae,[(l(!0),_(E,null,z(t.tools,s=>(l(),_("div",{key:s.name,class:"mcp-tool-row"},[o("div",{class:"mcp-tool-copy",title:R(s)},[o("div",se,[o("strong",null,u(C(s)),1),o("code",null,u(s.name),1)])],8,te),p(I,{class:"mcp-tool-switch","model-value":s.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:n.has(s.name),"aria-label":C(s),"onUpdate:modelValue":U=>k(s,!!U)},null,8,["model-value","loading","aria-label","onUpdate:modelValue"])]))),128))])]),_:2},1024))),128)),!r.value&&!c.value.length?(l(),v(y,{key:2,class:"panel-card"},{default:f(()=>[o("div",oe,u(h(i).t("$vuetify.chatroom.mcpTools.empty")),1)]),_:1})):g("",!0)]))}}),re=K(ne,[["__scopeId","data-v-61a9b5c5"]]);export{re as default};
@@ -1 +0,0 @@
1
- .mcp-tools-view[data-v-61a9b5c5]{display:grid;gap:14px}.mcp-tools-refresh[data-v-61a9b5c5]{flex:0 0 auto}.mcp-tool-group-header[data-v-61a9b5c5],.mcp-tool-row[data-v-61a9b5c5]{display:grid;grid-template-columns:minmax(0,1fr) 52px;align-items:center;column-gap:18px}.mcp-tool-group-header[data-v-61a9b5c5]{min-height:56px;padding:10px 18px}.mcp-tool-list[data-v-61a9b5c5]{display:grid}.mcp-tool-row[data-v-61a9b5c5]{min-width:0;min-height:54px;padding:8px 18px;border-bottom:1px solid rgb(var(--v-theme-outline),.08)}.mcp-tool-row[data-v-61a9b5c5]:last-child{border-bottom:0}.mcp-tool-copy[data-v-61a9b5c5]{width:100%;min-width:0}.mcp-tool-heading[data-v-61a9b5c5]{display:flex;min-width:0;align-items:baseline;gap:12px}.mcp-tool-heading strong[data-v-61a9b5c5],.mcp-tool-heading code[data-v-61a9b5c5]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mcp-tool-heading strong[data-v-61a9b5c5]{flex:0 1 auto;font-size:13px;font-weight:650}.mcp-tool-heading code[data-v-61a9b5c5]{flex:1 1 0;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.mcp-tool-switch[data-v-61a9b5c5]{justify-self:end}.mcp-tool-switch[data-v-61a9b5c5] .v-input__control,.mcp-tool-switch[data-v-61a9b5c5] .v-selection-control{inline-size:max-content}.mcp-tool-switch[data-v-61a9b5c5] .v-selection-control{flex:0 0 auto}@media(max-width:640px){.mcp-tools-view[data-v-61a9b5c5]{gap:12px}.mcp-tool-group-header[data-v-61a9b5c5],.mcp-tool-row[data-v-61a9b5c5]{column-gap:10px;padding-inline:14px}.mcp-tool-group-header[data-v-61a9b5c5]{min-height:54px}.mcp-tool-row[data-v-61a9b5c5]{min-height:52px;padding-block:7px}.mcp-tool-heading[data-v-61a9b5c5]{gap:8px}}@media(max-width:380px){.mcp-tool-group-header[data-v-61a9b5c5],.mcp-tool-row[data-v-61a9b5c5]{column-gap:8px;padding-inline:12px}.mcp-tool-heading[data-v-61a9b5c5]{gap:6px}}
@@ -1 +0,0 @@
1
- import{$ as P,w as J,bV as Q,o as Y,b as ee,i as W,y as X,s as k,d as te,u as le,b3 as se,c as d,e as p,g as e,k as h,p as w,f as t,t as s,m as N,X as ae,b4 as K,F as q,j as Z,l as I,q as B,C as F,V as oe,h as V,n as ne,bs as ie,a4 as ue,E as re,z as T,bh as ce,a3 as de,v as j}from"./index-DTyxBHlJ.js";import{u as me}from"./useMasterDetailFocus-DR5N95_A.js";import{_ as ve}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js";import{V as fe}from"./VSelect-CBX17QQj.js";import"./VSpacer-9N_Ffoce.js";const ge=100,x=1e3;function ye(){const u=k([]),r=k(null),l=k("all"),a=k("all"),v=k(null),S=k(!1),_=k(!1),L=k(""),n=k(!1),b=P(),f=P(),M=new Map;let C=null,E=!1;J(Q,o=>{o&&E&&D()}),J([l,a],()=>{E&&R()}),Y(()=>{E=!0,D(),R()}),ee(()=>{E=!1,C?.close(),C=null});async function R(){f.invalidate(),_.value=!1,M.clear();const o=b.begin();S.value=!0,L.value="",n.value=!1;try{const g=await W(H(l.value,a.value),{signal:o.signal});if(!b.isCurrent(o))return;const c=G(g.items,[...M.values()]);u.value=c.slice(0,x),n.value=c.length>x||u.value.length>=x&&g.nextCursor!==null,v.value=n.value?null:g.nextCursor,r.value&&(r.value=u.value.find($=>$.id===r.value?.id)??null),M.clear()}catch(g){b.isCurrent(o)&&(L.value=X(g))}finally{b.isCurrent(o)&&(S.value=!1)}}async function U(){if(S.value||!v.value||_.value)return;const o=f.begin(),g=v.value;_.value=!0,L.value="";try{const c=await W(H(l.value,a.value,g),{signal:o.signal});if(!f.isCurrent(o))return;const $=G(u.value,c.items);u.value=$.slice(0,x),n.value=$.length>x||u.value.length>=x&&c.nextCursor!==null,v.value=n.value?null:c.nextCursor}catch(c){f.isCurrent(o)&&(L.value=X(c))}finally{f.isCurrent(o)&&(_.value=!1)}}function D(){C?.close();const o=new EventSource("/api/logs/stream");C=o,o.addEventListener("open",()=>{C===o&&R()}),o.addEventListener("log",g=>{if(C!==o)return;const c=pe(g);if(!c||!z(c))return;S.value&&M.set(c.id,c);const $=G([c],u.value);$.length>x&&(n.value=!0),u.value=$.slice(0,x),n.value&&(v.value=null),r.value?.id===c.id&&(r.value=c)})}function z(o){return(l.value==="all"||o.level===l.value)&&(a.value==="all"||o.module===a.value)}function O(o){r.value=o}function A(){r.value=null}return{records:u,selected:r,level:l,module:a,nextCursor:v,loading:S,loadingMore:_,error:L,limitReached:n,loadInitial:R,loadMore:U,select:O,clearSelection:A}}function G(u,r){const l=new Map;for(const a of r)l.set(a.id,a);for(const a of u)l.set(a.id,a);return[...l.values()].sort((a,v)=>v.timestamp.localeCompare(a.timestamp)||v.id.localeCompare(a.id))}function pe(u){if(!(u instanceof MessageEvent)||typeof u.data!="string")return null;try{const r=JSON.parse(u.data);return typeof r?.id=="string"&&typeof r?.message=="string"?r:null}catch{return null}}function H(u,r,l){const a=new URLSearchParams({limit:String(ge)});return u!=="all"&&a.set("level",u),r!=="all"&&a.set("module",r),l&&a.set("cursor",l),`/logs?${a}`}const he={ref:"layout",class:"master-detail-layout system-logs-layout"},_e={key:0,class:"master-pane"},Le={class:"panel-header system-logs-header"},Ce={class:"panel-title"},$e={class:"panel-subtitle"},ke={class:"system-log-controls"},be={key:0,class:"panel-error",role:"alert"},we={key:1,class:"system-log-list"},Ve={class:"system-log-header","aria-hidden":"true"},xe=["aria-current","data-log-id","onClick"],Se=["title"],Re={class:"system-log-level"},Me={class:"system-log-module mono"},Ee={class:"system-log-message"},Ie={class:"mono"},De={key:2,class:"empty-inline"},Ne={key:4,class:"system-log-load-more"},Be={key:1,ref:"detailPane",class:"detail-pane",tabindex:"-1"},Ue={class:"panel-header compact-header"},ze={class:"min-w-0 detail-header-title"},Oe={class:"panel-title text-truncate"},Ae={class:"panel-subtitle mono text-truncate"},qe={class:"detail-facts system-log-facts"},Fe={class:"system-log-detail-data"},Te={class:"detail-section-label"},je={class:"empty-panel"},Ze=te({__name:"SystemLogsView",setup(u){const r=["app","http","auth","cloud","plugin","mcp"],l=le(),{mdAndDown:a}=se(),{focusDetail:v,focusMaster:S}=me(a),_=ye(),{records:L,selected:n,level:b,module:f,nextCursor:M,loading:C,loadingMore:E,error:R,limitReached:U,loadInitial:D,loadMore:z}=_,O=j(()=>[{title:l.t("$vuetify.chatroom.systemLogs.allLevels"),value:"all"},{title:"INFO",value:"info"},{title:"WARN",value:"warn"},{title:"ERROR",value:"error"},{title:"DEBUG",value:"debug"}]),A=j(()=>{const m=new Set(r);for(const y of L.value)m.add(y.module);return f.value!=="all"&&m.add(f.value),[{title:l.t("$vuetify.chatroom.systemLogs.allModules"),value:"all"},...[...m].sort((y,i)=>y.localeCompare(i)).map(y=>({title:y,value:y}))]}),o=j(()=>n.value?.data?JSON.stringify(n.value.data,null,2):"");function g(m){if(m==="error")return"error";if(m==="warn")return"warning";if(m==="info")return"primary"}function c(m){_.select(m),v()}function $(){const m=n.value?.id??null;_.clearSelection(),m&&S(`[data-log-id="${CSS.escape(m)}"]`)}return(m,y)=>(d(),p("div",he,[!e(a)||!e(n)?(d(),p("div",_e,[h(T,{class:"panel-card"},{default:w(()=>[t("div",Le,[t("div",null,[t("div",Ce,s(e(l).t("$vuetify.chatroom.systemLogs.title")),1),t("div",$e,s(e(l).t("$vuetify.chatroom.systemLogs.subtitle")),1)]),h(N,{icon:"$mdiRefresh",size:"small",variant:"text",loading:e(C),"aria-label":e(l).t("$vuetify.chatroom.systemLogs.refresh"),onClick:e(D)},null,8,["loading","aria-label","onClick"])]),t("div",ke,[h(ae,{modelValue:e(b),"onUpdate:modelValue":y[0]||(y[0]=i=>K(b)?b.value=i:null),mandatory:"",variant:"text",class:"record-filters"},{default:w(()=>[(d(!0),p(q,null,Z(O.value,i=>(d(),I(N,{key:i.value,value:i.value,size:"small"},{default:w(()=>[B(s(i.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),h(fe,{modelValue:e(f),"onUpdate:modelValue":y[1]||(y[1]=i=>K(f)?f.value=i:null),items:A.value,"item-title":"title","item-value":"value","aria-label":e(l).t("$vuetify.chatroom.systemLogs.module"),density:"compact",variant:"outlined","hide-details":"",class:"system-log-module-filter"},null,8,["modelValue","items","aria-label"])]),h(F),e(R)?(d(),p("div",be,[h(oe,{icon:"$mdiAlertCircleOutline",size:"18"}),t("span",null,s(e(R)),1)])):V("",!0),e(L).length?(d(),p("div",we,[t("div",Ve,[t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.time")),1),t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.level")),1),t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.module")),1),t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.message")),1)]),(d(!0),p(q,null,Z(e(L),i=>(d(),p("button",{key:i.id,type:"button",class:ne(["system-log-row",{"selected-row":e(n)?.id===i.id}]),"aria-current":e(n)?.id===i.id?"true":void 0,"data-log-id":i.id,onClick:Ge=>c(i)},[t("span",{class:"system-log-time mono",title:i.timestamp},s(e(ie)(i.timestamp)),9,Se),t("span",Re,[h(ue,{size:"x-small",variant:"tonal",color:g(i.level)},{default:w(()=>[B(s(i.level.toUpperCase()),1)]),_:2},1032,["color"])]),t("span",Me,s(i.module),1),t("span",Ee,[t("strong",null,s(i.message),1),t("small",Ie,s(i.event),1)])],10,xe))),128))])):e(C)?V("",!0):(d(),p("div",De,s(e(l).t("$vuetify.chatroom.systemLogs.empty")),1)),e(U)?(d(),I(re,{key:3,type:"info",variant:"tonal",density:"compact",class:"system-log-window-limit"},{default:w(()=>[B(s(e(l).t("$vuetify.chatroom.systemLogs.windowLimit")),1)]),_:1})):V("",!0),e(M)?(d(),p("div",Ne,[h(N,{variant:"text",size:"small",loading:e(E),onClick:e(z)},{default:w(()=>[B(s(e(l).t("$vuetify.chatroom.systemLogs.loadMore")),1)]),_:1},8,["loading","onClick"])])):V("",!0)]),_:1})])):V("",!0),!e(a)||e(n)?(d(),p("div",Be,[e(n)?(d(),I(T,{key:0,class:"panel-card"},{default:w(()=>[t("div",Ue,[e(a)?(d(),I(N,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":e(l).t("$vuetify.chatroom.systemLogs.back"),onClick:$},null,8,["aria-label"])):V("",!0),t("div",ze,[t("div",Oe,s(e(n).message),1),t("div",Ae,s(e(n).event),1)])]),h(F),t("div",qe,[t("div",null,[t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.time")),1),t("strong",null,s(e(ce)(e(n).timestamp,e(de)(e(l).current.value))),1)]),t("div",null,[t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.level")),1),t("strong",null,s(e(n).level.toUpperCase()),1)]),t("div",null,[t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.module")),1),t("strong",null,s(e(n).module),1)]),t("div",null,[t("span",null,s(e(l).t("$vuetify.chatroom.systemLogs.event")),1),t("strong",null,s(e(n).event),1)])]),o.value?(d(),p(q,{key:0},[h(F),t("div",Fe,[t("div",Te,s(e(l).t("$vuetify.chatroom.systemLogs.data")),1),h(ve,{text:o.value,filename:"log.json",language:"json",toolbar:!1},null,8,["text"])])],64)):V("",!0)]),_:1})):(d(),I(T,{key:1,class:"panel-card"},{default:w(()=>[t("div",je,s(e(l).t("$vuetify.chatroom.systemLogs.select")),1)]),_:1}))],512)):V("",!0)],512))}});export{Ze as default};
@@ -1 +0,0 @@
1
- import{ag as xe,bW as Be,w as ae,aq as Ae,f as A,F as fe,a9 as j,aC as J,aW as Ee,b3 as Qe,b7 as Ce,s as G,a0 as Le,aH as ce,r as Q,bX as Ze,v as L,ae as Ie,ap as ge,bY as Ke,bZ as Je,b_ as et,o as tt,bz as lt,k as x,aR as ve,aa as He,n as ze,aA as pe,b$ as nt,c0 as at,c1 as Z,al as ye,c2 as ot,ai as rt,bB as st,c3 as $e,g as me,bn as ut,u as it,ah as ct,ak as we,am as ft,b6 as dt,aj as vt,ay as mt,ao as Ve,c4 as ht,c5 as gt,aD as pt,aE as yt,c6 as bt,c7 as kt,R as Pe,V as Te,a8 as wt,W as Vt,Y as Re,as as St,C as Ct,at as It,au as xt,av as At,a4 as Me,aw as Ft,ax as Pt,q as Tt,bf as Rt,az as _e,c8 as De}from"./index-DTyxBHlJ.js";import{V as Mt}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js";const _t=J({renderless:Boolean,...Ee()},"VVirtualScrollItem"),Dt=xe()({name:"VVirtualScrollItem",inheritAttrs:!1,props:_t(),emits:{"update:height":e=>!0},setup(e,{attrs:t,emit:o,slots:l}){const{resizeRef:a,contentRect:u}=Be(void 0,"border");ae(()=>u.value?.height,i=>{i!=null&&o("update:height",i)}),Ae(()=>e.renderless?A(fe,null,[l.default?.({itemRef:a})]):A("div",j({ref:a,class:["v-virtual-scroll__item",e.class],style:e.style},t),[l.default?.()]))}}),Ot=-1,Bt=1,he=100,Et=J({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function Lt(e,t){const o=Qe(),l=G(0);Ce(()=>{l.value=parseFloat(e.itemHeight||0)});const a=G(0),u=G(Math.ceil((parseInt(e.height)||o.height.value)/(l.value||16))||1),i=G(0),r=G(0),s=Q(),c=Q();let k=0;const{resizeRef:g,contentRect:h}=Be();Ce(()=>{g.value=s.value});const m=L(()=>s.value===document.documentElement?o.height.value:h.value?.height||parseInt(e.height)||0),d=L(()=>!!(s.value&&c.value&&m.value&&l.value));let V=Array.from({length:t.value.length}),p=Array.from({length:t.value.length});const q=G(0);let P=-1;function T(f){return V[f]||l.value}const K=Ze(()=>{const f=performance.now();p[0]=0;const b=t.value.length;for(let S=1;S<=b;S++)p[S]=(p[S-1]||0)+T(S-1);q.value=Math.max(q.value,performance.now()-f),H()},q),be=ae(d,f=>{f&&(be(),k=c.value.offsetTop,K.immediate(),H(),~P&&Ie(()=>{ge&&window.requestAnimationFrame(()=>{~P&&oe(P)})}))});Le(()=>{K.clear()});function $(f,b){const S=V[f],I=l.value;b>0&&(l.value=I?Math.min(I,b):b),(S!==b||I!==l.value)&&(V[f]=b,K())}function C(f){f=ce(f,0,t.value.length);const b=Math.floor(f),S=f%1,I=b+1,W=p[b]||0,R=p[I]||W;return W+(R-W)*S}function re(f){return Kt(p,f)}let N=0,O=0,_=0;ae(m,(f,b)=>{H(),f<b&&requestAnimationFrame(()=>{O=0,H()})});let ee=-1;function se(){if(!s.value||!c.value)return;const f=s.value.scrollTop,b=performance.now();b-_>500?(O=Math.sign(f-N),k=c.value.offsetTop):O=f-N,N=f,_=b,window.clearTimeout(ee),ee=window.setTimeout(w,500),H()}function w(){!s.value||!c.value||(O=0,_=0,window.clearTimeout(ee),H())}let de=-1;function H(){cancelAnimationFrame(de),de=requestAnimationFrame(ke)}function ke(){if(!s.value||!m.value||!l.value)return;const f=N-k,b=Math.sign(O),S=Math.max(0,f-he),I=ce(re(S),0,t.value.length),W=f+m.value+he,R=ce(re(W)+1,I+1,t.value.length);if((b!==Ot||I<a.value)&&(b!==Bt||R>u.value)){const te=C(a.value)-C(I),Y=C(R)-C(u.value);Math.max(te,Y)>he?(a.value=I,u.value=R):(I<=0&&(a.value=I),R>=t.value.length&&(u.value=R,a.value=I))}i.value=C(a.value),r.value=C(t.value.length)-C(u.value)}function oe(f){const b=C(f);if(!s.value||f&&!b){P=f;return}const S=l.value||16,I=Math.ceil(he/S),W=Math.max(1,Math.ceil((m.value||0)/S));a.value=ce(f-I,0,Math.max(0,t.value.length-1)),u.value=ce(f+W+I,a.value+1,t.value.length),i.value=C(a.value),r.value=C(t.value.length)-C(u.value),O=0,_=0,P=f,Ie(()=>{const R=s.value;if(!R||!~P||P!==f)return;const te=C(f);R.scrollTop=te,N=R.scrollTop;const Y=C(t.value.length)+k;f&&R.scrollTop<te-1&&R.scrollHeight<Y-1?ge&&requestAnimationFrame(()=>{P===f&&oe(f)}):(P=-1,H())})}const D=L(()=>t.value.slice(a.value,u.value).map((f,b)=>{const S=b+a.value;return{raw:f,index:S,key:Ke(f,e.itemKey,S)}}));return ae(t,()=>{V=Array.from({length:t.value.length}),p=Array.from({length:t.value.length}),K.immediate(),H()},{deep:1}),{calculateVisibleItems:H,containerRef:s,markerRef:c,computedItems:D,paddingTop:i,paddingBottom:r,scrollToIndex:oe,handleScroll:se,handleScrollend:w,handleItemResize:$}}function Kt(e,t){let o=e.length-1,l=0,a=0,u=null,i=-1;if(e[o]<t)return o;for(;l<=o;)if(a=l+o>>1,u=e[a],u>t)o=a-1;else if(u<t)i=a,l=a+1;else return u===t?a:l;return i}const Ht=J({items:{type:Array,default:()=>[]},renderless:Boolean,...Et(),...Ee(),...at()},"VVirtualScroll"),zt=xe()({name:"VVirtualScroll",props:Ht(),setup(e,{slots:t}){const o=Je("VVirtualScroll"),{dimensionStyles:l}=nt(e),{calculateVisibleItems:a,containerRef:u,markerRef:i,handleScroll:r,handleScrollend:s,handleItemResize:c,scrollToIndex:k,paddingTop:g,paddingBottom:h,computedItems:m}=Lt(e,pe(()=>e.items));return et(()=>e.renderless,()=>{function d(V=!1){const p=V?"addEventListener":"removeEventListener";ge&&(u.value===document.documentElement?(document[p]("scroll",r,{passive:!0}),document[p]("scrollend",s)):(u.value?.[p]("scroll",r,{passive:!0}),u.value?.[p]("scrollend",s)))}tt(()=>{u.value=lt(o.vnode.el,!0),d(!0)}),Le(d)}),Ae(()=>{const d=m.value.map(V=>x(Dt,{key:V.key,renderless:e.renderless,"onUpdate:height":p=>c(V.index,p)},{default:p=>t.default?.({item:V.raw,index:V.index,...p})}));return e.renderless?A(fe,null,[A("div",{ref:i,class:"v-virtual-scroll__spacer",style:{paddingTop:ve(g.value)}},null),d,A("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:ve(h.value)}},null)]):A("div",{ref:u,class:ze(["v-virtual-scroll",e.class]),onScrollPassive:r,onScrollend:s,style:He([l.value,e.style])},[A("div",{ref:i,class:"v-virtual-scroll__container",style:{paddingTop:ve(g.value),paddingBottom:ve(h.value)}},[d])])}),{calculateVisibleItems:a,scrollToIndex:k}}});function Ne(e){const t=e.filter(l=>l[0]<l[1]).toSorted((l,a)=>l[0]-a[0]),o=[];for(const l of t){const a=o.at(-1);a&&l[0]<=a[1]?a[1]=Math.max(a[1],l[1]):o.push([l[0],l[1]])}return o}function Oe(e,t){const o=[];let l=0;for(const[a,u]of t)l<a&&o.push({text:e.slice(l,a),match:!1}),o.push({text:e.slice(a,u),match:!0}),l=u;return l<e.length&&o.push({text:e.slice(l),match:!1}),o}function $t(e,t,o,l){const a=ye(t).filter(Boolean),u=l?e.toLocaleLowerCase():e,i=[];for(const r of a){const s=l?r.toLocaleLowerCase():r;let c=u.indexOf(s);if(c!==-1&&(i.push([c,c+r.length]),o))for(c=u.indexOf(s,c+r.length);c!==-1;)i.push([c,c+r.length]),c=u.indexOf(s,c+r.length)}return Ne(i)}function Nt(e,t,o={}){const l=Z(e),a=Z(t),u=Z(o.matches),i=Z(o.matchAll)??!1,r=Z(o.ignoreCase)??!1;if(u?.length)return Oe(l,Ne(u));if(a){const s=$t(l,a,i,r);return s.length>0?Oe(l,s):[{text:l,match:!1}]}return[{text:l,match:!1}]}const Ut=J({text:{type:String,default:""},query:[String,Array],matches:Array,matchAll:Boolean,ignoreCase:Boolean,color:String,opacity:[String,Number],markClass:String,...st({tag:"span"})},"VHighlight"),jt=ot({name:"VHighlight",props:Ut(),setup(e){const t=L(()=>Nt(()=>e.text,()=>e.query,{matches:()=>e.matches,matchAll:()=>e.matchAll,ignoreCase:()=>e.ignoreCase})),{textColorClasses:o,textColorStyles:l}=rt(()=>e.color);return()=>x(e.tag,{class:"v-highlight"},{default:()=>[t.value.map((a,u)=>a.match?A("mark",{key:u,class:ze(["v-highlight__mark",o.value,e.markClass]),style:He([l.value,{"--v-highlight-opacity":e.opacity}])},[a.text]):A("span",{key:u},[a.text]))]})}});function Gt(e,t,o){return function(a){return!a.relatedTarget&&document.activeElement===document.body&&e.value?(requestAnimationFrame(()=>{if(!e.value)return;const u=t();((u&&$e(u)[0])??o())?.focus({preventScroll:!0})}),!0):!1}}function Wt(e,t){const o=G(!1);let l;function a(r){cancelAnimationFrame(l),o.value=!0,l=requestAnimationFrame(()=>{l=requestAnimationFrame(()=>{o.value=!1})})}async function u(){await new Promise(r=>requestAnimationFrame(r)),await new Promise(r=>requestAnimationFrame(r)),await new Promise(r=>requestAnimationFrame(r)),await new Promise(r=>{if(o.value){const s=ae(o,()=>{s(),r()})}else r()})}async function i(r){if(r.key==="Tab"&&t.value?.focus(),!["PageDown","PageUp","Home","End"].includes(r.key))return;const s=e.value?.$el;if(!s)return;(r.key==="Home"||r.key==="End")&&s.scrollTo({top:r.key==="Home"?0:s.scrollHeight,behavior:"smooth"}),await u();const c=s.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(r.key==="PageDown"||r.key==="Home"){const k=s.getBoundingClientRect().top;for(const g of c)if(g.getBoundingClientRect().top>=k){g.focus();break}}else{const k=s.getBoundingClientRect().bottom;for(const g of[...c].reverse())if(g.getBoundingClientRect().bottom<=k){g.focus();break}}}return{onScrollPassive:a,onKeydown:i}}function qt({groups:e,onLeave:t}){function o(i){return i.type==="list"?i.contentRef.value?.$el:i.contentRef.value}function l(i){const r=o(i);return r?$e(r):[]}function a(i){const r=i.target,s=i.shiftKey?"backward":"forward",c=e.map(l),k=e.map(h=>h.type==="list"?h.contentRef.value?.$el:h.contentRef.value).findIndex(h=>h?.contains(r)),g=u(c,k,s,r);if(g===null){const h=e[k],m=c[k];(h.type==="list"||(s==="forward"?m.at(-1)===i.target:m.at(0)===i.target))&&t()}else{i.preventDefault(),i.stopImmediatePropagation();const h=e[g];if(h.type==="list"&&Z(h.displayItemsCount)>0)h.contentRef.value?.focus(0);else{const m=s==="forward";c[g].at(m?0:-1).focus()}}}function u(i,r,s,c){const k=e[r],g=i[r];if(k.type!=="list"&&!(s==="forward"?g.at(-1)===c:g.at(0)===c))return null;const h=s==="forward"?1:-1;for(let m=r+h;m>=0&&m<e.length;m+=h){const d=e[m];if(i[m].length>0||d.type==="list"&&Z(d.displayItemsCount)>0)return m}return null}return{onTabKeydown:a}}const Yt=(e,t,o)=>{if(e==null||t==null)return-1;if(!t.length)return 0;e=e.toString().toLocaleLowerCase(),t=t.toString().toLocaleLowerCase();const l=[];let a=e.indexOf(t);for(;~a;)l.push([a,a+t.length]),a=e.indexOf(t,a+t.length);return l.length?l:-1};function Se(e,t){if(!(e==null||typeof e=="boolean"||e===-1))return typeof e=="number"?[[e,e+t.length]]:Array.isArray(e[0])?e:[e]}const Xt=J({customFilter:Function,customKeyFilter:Object,filterKeys:[Array,String],filterMode:{type:String,default:"intersection"},noFilter:Boolean},"filter");function Qt(e,t,o){const l=[],a=o?.default??Yt,u=o?.filterKeys?ye(o.filterKeys):!1,i=Object.keys(o?.customKeyFilter??{}).length;if(!e?.length)return l;let r=[];e:for(let s=0;s<e.length;s++){const[c,k=c]=ye(e[s]),g={},h={};let m=-1;if((t||i>0)&&!o?.noFilter){let d=!1;if(typeof c=="object"){if(c.type==="divider"||c.type==="subheader"){(r.at(-1)?.type!=="divider"||c.type!=="subheader")&&(r=[]),r.push({index:s,matches:{},type:c.type});continue}const q=u||Object.keys(k);d=q.length===i;for(const P of q){const T=Ke(k,P),K=o?.customKeyFilter?.[P];if(m=K?K(T,t,c):a(T,t,c),m!==-1&&m!==!1)K?g[P]=Se(m,t):h[P]=Se(m,t);else if(o?.filterMode==="every")continue e}}else m=a(c,t,c),m!==-1&&m!==!1&&(h.title=Se(m,t));const V=Object.keys(h).length,p=Object.keys(g).length;if(!V&&!p||o?.filterMode==="union"&&p!==i&&!V||o?.filterMode==="intersection"&&(p!==i||!V&&i>0&&!d))continue}r.length&&(l.push(...r),r=[]),l.push({index:s,matches:{...h,...g}})}return l}function Zt(e,t,o,l){const a=G([]),u=G(new Map),i=L(()=>me(t));Ce(()=>{const s=typeof o=="function"?o():me(o),c=typeof s!="string"&&typeof s!="number"?"":String(s),k=Qt(i.value,c,{customKeyFilter:{...e.customKeyFilter,...me(l?.customKeyFilter)},default:e.customFilter,filterKeys:e.filterKeys,filterMode:e.filterMode,noFilter:e.noFilter}),g=me(t),h=[],m=new Map;k.forEach(({index:d,matches:V})=>{const p=g[d];h.push(p),p.value!==void 0&&m.set(p.value,V)}),a.value=h,u.value=m});function r(s){return u.value.get(s.value)}return{filteredItems:a,filteredMatches:u,getMatches:r}}const Jt=J({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function el(e,t){const o=ut(),l=L(()=>`menu-${o}`),a=pe(()=>Z(t)),u=pe(()=>l.value);return{menuId:l,ariaExpanded:a,ariaControls:u}}const tl=J({chips:Boolean,closableChips:Boolean,eager:Boolean,hideNoData:Boolean,hideSelected:Boolean,listProps:{type:Object},menu:Boolean,menuElevation:[Number,String],menuIcon:{type:bt,default:"$dropdown"},menuProps:{type:Object},multiple:Boolean,noDataText:{type:String,default:"$vuetify.noDataText"},openOnClear:Boolean,itemColor:String,noAutoScroll:Boolean,...Jt(),...kt({itemChildren:!1})},"Select"),ll=J({search:String,...Xt({filterKeys:["title"]}),...tl(),...pt(yt({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...ht({transition:{component:gt}})},"VSelect"),ol=xe()({name:"VSelect",props:ll(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:menu":e=>!0,"update:search":e=>!0},setup(e,{slots:t}){const{t:o}=it(),l=Q(),a=Q(),u=Q(),i=Q(),r=Q(),{items:s,transformIn:c,transformOut:k}=ct(e),g=we(e,"search",""),{filteredItems:h,getMatches:m}=Zt(e,s,()=>g.value),d=we(e,"modelValue",[],n=>c(n===null?[null]:ye(n)),n=>{const y=k(n);return e.multiple?y:y[0]??null}),V=L(()=>typeof e.counterValue=="function"?e.counterValue(d.value):typeof e.counterValue=="number"?e.counterValue:d.value.length),p=ft(e),q=dt(e),P=L(()=>d.value.map(n=>n.value)),T=G(!1),K=pe(()=>e.closableChips&&!p.isReadonly.value&&!p.isDisabled.value),{InputIcon:be}=vt(e);let $="",C=0,re,N=!1,O=null;const _=L(()=>{const n=g.value?h.value:s.value;return e.hideSelected?n.filter(y=>!d.value.some(M=>(e.valueComparator||Ve)(M,y))):n}),ee=L(()=>e.hideNoData&&!_.value.length||p.isReadonly.value||p.isDisabled.value),se=we(e,"menu"),w=L({get:()=>se.value,set:n=>{se.value&&!n&&a.value?.ΨopenChildren.size||n&&ee.value||(se.value=n)}}),{menuId:de,ariaExpanded:H,ariaControls:ke}=el(e,w),oe=L(()=>({...e.menuProps,activatorProps:{...e.menuProps?.activatorProps||{},"aria-haspopup":"listbox"}})),D=Q(),f=Wt(D,l),b=Gt(w,()=>a.value?.contentEl,()=>l.value?.controlRef),{onTabKeydown:S}=qt({groups:[{type:"element",contentRef:u},{type:"list",contentRef:D,displayItemsCount:()=>_.value.length},{type:"element",contentRef:i}],onLeave:()=>{w.value=!1,l.value?.focus()}});function I(n){e.openOnClear&&(w.value=!0)}function W(){ee.value||(N=!1,O=null,w.value=!w.value)}function R(n){n.key==="Tab"&&S(n),D.value?.$el.contains(n.target)&&_e(n)&&te(n)}function te(n){if(!n.key||p.isReadonly.value)return;if(["Enter"," ","ArrowDown","ArrowUp","Home","End"].includes(n.key)&&n.preventDefault(),["ArrowDown","ArrowUp"].includes(n.key)?O=n.key==="ArrowDown"?"next":"prev":["Enter"," "].includes(n.key)&&(O=null),["Enter","ArrowDown"," "].includes(n.key)&&(N=!0,w.value=!0),["Escape","Tab"].includes(n.key)&&(w.value=!1),e.clearable&&n.key==="Backspace"){n.preventDefault(),d.value=[],I();return}n.key==="Home"?D.value?.focus("first"):n.key==="End"&&D.value?.focus("last");const y=1e3;if(!_e(n))return;const M=performance.now();M-re>y&&($="",C=0),$+=n.key.toLowerCase(),re=M;const le=_.value;function X(){let F=ne();return F||$.at(-1)===$.at(-2)&&($=$.slice(0,-1),C++,F=ne(),F)||(C=0,F=ne(),F)?F:($=n.key.toLowerCase(),ne())}function ne(){for(let F=C;F<le.length;F++){const U=le[F];if(U.title.toLowerCase().startsWith($))return[U,F]}}const z=X();if(!z)return;const[v,B]=z;C=B,D.value?.focus(B),e.multiple||(d.value=[v])}function Y(n,y=!0){if(!n.props.disabled)if(e.multiple){const M=d.value.findIndex(X=>(e.valueComparator||Ve)(X.value,n.value)),le=y??!~M;if(~M){const X=le?[...d.value,n]:[...d.value];X.splice(M,1),d.value=X}else le&&(d.value=[...d.value,n])}else{const M=y!==!1;d.value=M?[n]:[],Ie(()=>{w.value=!1})}}function Fe(n){const y=n.target;l.value?.$el.contains(y)||(w.value=!1)}function Ue(){return _.value.findIndex(n=>d.value.some(y=>(e.valueComparator||Ve)(y.value,n.value)))}function je(n){const y=D.value?.$el?.querySelector?.('[aria-selected="true"]');return y?(y.focus(n),!0):!1}function Ge(){if(e.eager&&r.value?.calculateVisibleItems(),!D.value||!T.value||D.value.$el?.contains(Rt()))return;const n={focusVisible:!1,preventScroll:e.noAutoScroll};if(O){D.value.focus(O,n);return}je(n)||N&&D.value.focus("first",n)}function We(){g.value="",T.value&&(a.value?.contentEl?._clickOutside?.lastMousedownWasOutside?T.value=!1:l.value?.focus())}function qe(n){T.value=!0}function Ye(n){if(!l.value?.$el.contains(n.relatedTarget)&&!n.currentTarget.contains(n.relatedTarget)){if(b(n))return;T.value=!1}}function Xe(n){if(n==null)d.value=[];else if(De(l.value,":autofill")||De(l.value,":-webkit-autofill")){const y=s.value.find(M=>M.title===n);y&&Y(y)}else l.value&&(l.value.value="")}return ae(w,n=>{if(n||(N=!1,O=null),!e.hideSelected&&w.value&&d.value.length){const y=Ue();ge&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{y>=0&&r.value?.scrollToIndex(y)})}}),ae(s,(n,y)=>{w.value||T.value&&e.hideNoData&&!y.length&&n.length&&(w.value=!0)}),Ae(()=>{const n=!!(e.chips||t.chip),y=!!(!e.hideNoData||_.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),M=d.value.length>0,le=Pe.filterProps(e),X=M||!T.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder,ne={search:g,filteredItems:h.value};return x(Pe,j({ref:l},le,{modelValue:d.value.map(z=>z.props.title).join(", "),name:void 0,"onUpdate:modelValue":Xe,focused:T.value,"onUpdate:focused":z=>T.value=z,validationValue:d.externalValue,counterValue:V.value,dirty:M,class:["v-select",{"v-select--active-menu":w.value,"v-select--chips":!!e.chips,[`v-select--${e.multiple?"multiple":"single"}`]:!0,"v-select--selected":d.value.length,"v-select--selection-slot":!!t.selection},e.class],style:e.style,inputmode:"none",placeholder:X,"onClick:clear":I,"onMousedown:control":W,onBlur:Fe,onKeydown:te,"aria-expanded":H.value,"aria-controls":ke.value}),{...t,default:({id:z})=>A(fe,null,[A("select",{hidden:!0,multiple:e.multiple,name:q.fieldName.value},[s.value.map(v=>A("option",{key:v.value,value:v.value,selected:P.value.includes(v.value)},null))]),x(wt,j({id:de.value,ref:a,modelValue:w.value,"onUpdate:modelValue":v=>w.value=v,activator:"parent",captureFocus:!1,disabled:ee.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,transition:e.transition,onAfterEnter:Ge,onAfterLeave:We},oe.value,{contentClass:["v-select__content",oe.value.contentClass]}),{default:()=>[x(Mt,{elevation:e.menuElevation,onFocusin:qe,onFocusout:Ye,onKeydown:R},{default:()=>[t["menu-header"]&&A("header",{ref:u},[t["menu-header"](ne)]),y&&x(Vt,j({key:"select-list",ref:D,selected:P.value,selectStrategy:e.multiple?"independent":"single-independent",tabindex:"-1",selectable:!!_.value.length,"aria-live":"polite","aria-labelledby":`${z.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},f,e.listProps),{default:()=>[t["prepend-item"]?.(),!_.value.length&&!e.hideNoData&&(t["no-data"]?.()??x(Re,{key:"no-data",title:o(e.noDataText)},null)),x(zt,{ref:r,renderless:!0,items:_.value,itemKey:"value"},{default:({item:v,index:B,itemRef:F})=>{const U=St(v.props),ue=j(v.props,{ref:F,key:v.value,onClick:()=>Y(v,null),"aria-posinset":B+1,"aria-setsize":_.value.length});return v.type==="divider"?t.divider?.({props:v.raw,index:B})??x(Ct,j(v.props,{key:`divider-${B}`}),null):v.type==="subheader"?t.subheader?.({props:v.raw,index:B})??x(It,j(v.props,{key:`subheader-${B}`}),null):t.item?.({item:v.raw,internalItem:v,index:B,props:ue})??x(Re,j(ue,{role:"option"}),{prepend:({isSelected:ie})=>A(fe,null,[e.multiple&&!e.hideSelected?x(xt,{key:v.value,modelValue:ie,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:E=>E.preventDefault()},null):void 0,U.prependAvatar&&x(At,{image:U.prependAvatar},null),U.prependIcon&&x(Te,{icon:U.prependIcon},null)]),title:()=>g.value?x(jt,{text:v.title,matches:m(v)?.title,markClass:"v-select__mask",matchAll:!0,ignoreCase:!0},null):v.title})}}),t["append-item"]?.()]}),t["menu-footer"]&&A("footer",{ref:i},[t["menu-footer"](ne)])]})]}),d.value.map((v,B)=>{function F(E){E.stopPropagation(),E.preventDefault(),Y(v,!1)}const U=j(Me.filterProps(v.props),{"onClick:close":F,onKeydown(E){E.key!=="Enter"&&E.key!==" "||(E.preventDefault(),E.stopPropagation(),F(E))},onMousedown(E){E.preventDefault(),E.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),ue=n?!!t.chip:!!t.selection,ie=ue?Ft(n?t.chip({item:v.raw,internalItem:v,index:B,props:U}):t.selection({item:v.raw,internalItem:v,index:B})):void 0;if(!(ue&&!ie))return A("div",{key:v.value,class:"v-select__selection"},[n?t.chip?x(Pt,{key:"chip-defaults",defaults:{VChip:{closable:K.value,size:"small",text:v.title}}},{default:()=>[ie]}):x(Me,j({key:"chip",closable:K.value,size:"small",text:v.title,disabled:v.props.disabled},U),null):ie??A("span",{class:"v-select__selection-text"},[v.title,e.multiple&&B<d.value.length-1&&A("span",{class:"v-select__selection-comma"},[Tt(",")])])])})]),"append-inner":(...z)=>A(fe,null,[t["append-inner"]?.(...z),e.menuIcon?x(Te,{class:"v-select__menu-icon",color:l.value?.fieldIconColor,icon:e.menuIcon,"aria-hidden":!0},null):void 0,e.appendInnerIcon&&x(be,{key:"append-icon",name:"appendInner",color:z[0].iconColor.value},null)])})}),mt({isFocused:T,menu:w,search:g,filteredItems:h,select:Y},l)}});export{ol as V,el as a,zt as b,jt as c,Wt as d,Xt as e,qt as f,Gt as g,tl as m,Zt as u};
@@ -1 +0,0 @@
1
- import{cg as a}from"./index-DTyxBHlJ.js";const e=a("v-spacer","div","VSpacer");export{e as V};
@@ -1 +0,0 @@
1
- import{d as _,x as B,u as N,w as U,i as F,y as L,c as e,l,p as s,k as r,z as T,A as W,B as S,q as w,t as k,m as C,g as c,C as A,f as E,D as O,h as V,E as M,e as D,F as R,G as q,H as I,I as K,J as z,v as x,K as G,L as H,M as J,N as Q,s as b,_ as j}from"./index-DTyxBHlJ.js";import{_ as X}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js";import{M as Y}from"./MarkdownContent-DRZp88_G.js";import{W as Z,a as ee}from"./WorkspaceMediaPreview-ctIyG3Ru.js";import"./VSpacer-9N_Ffoce.js";import"./syntax-highlight-C_fuMcwC.js";const ae={class:"workspace-download-preview-body"},te=["src","alt"],le=_({__name:"WorkspaceDownloadPreview",props:z({workspace:{},path:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const a=o,d=B(o,"modelValue"),p=N(),t=x(()=>G(a.path)),h=x(()=>H(a.path)),$=x(()=>`/api/workspace/file/${t.value==="image"?"image":"preview"}?${new URLSearchParams({workspace:a.workspace,path:a.path})}`);function P(){J(Q(a.workspace,a.path),h.value).catch(()=>{})}const n=b(null),v=b(!1),m=b("");return U([d,()=>a.workspace,()=>a.path],([y],i,f)=>{if(n.value=null,m.value="",v.value=!1,!y||t.value!=="text")return;const u=new AbortController;f(()=>u.abort()),v.value=!0,F(`/workspace/file?${new URLSearchParams({workspace:a.workspace,path:a.path})}`,{signal:u.signal}).then(g=>{u.signal.aborted||(n.value=g)}).catch(g=>{u.signal.aborted||(m.value=L(g))}).finally(()=>{u.signal.aborted||(v.value=!1)})},{immediate:!0}),(y,i)=>(e(),l(K,{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=f=>d.value=f),fullscreen:""},{default:s(()=>[r(T,{class:"workspace-download-preview"},{default:s(()=>[r(W,{density:"comfortable",color:"surface"},{default:s(()=>[r(S,{class:"text-body-1 text-truncate",title:o.path},{default:s(()=>[w(k(h.value),1)]),_:1},8,["title"]),r(C,{variant:"text","prepend-icon":"$mdiDownloadOutline",onClick:P},{default:s(()=>[w(k(c(p).t("$vuetify.chatroom.files.download")),1)]),_:1}),r(C,{icon:"$mdiClose",variant:"text","aria-label":c(p).t("$vuetify.chatroom.common.close"),onClick:i[0]||(i[0]=f=>d.value=!1)},null,8,["aria-label"])]),_:1}),r(A),E("div",ae,[v.value?(e(),l(O,{key:0,indeterminate:""})):V("",!0),m.value?(e(),l(M,{key:1,type:"error",variant:"tonal",density:"compact"},{default:s(()=>[w(k(m.value),1)]),_:1})):t.value==="pdf"||t.value==="video"||t.value==="audio"?(e(),l(Z,{key:2,kind:t.value,path:o.path,url:$.value},null,8,["kind","path","url"])):t.value==="image"?(e(),D("img",{key:3,class:"workspace-download-preview-image",src:$.value,alt:h.value},null,8,te)):t.value==="text"&&n.value?(e(),D(R,{key:4},[n.value.truncated?(e(),l(M,{key:0,type:"warning",variant:"tonal",density:"compact"},{default:s(()=>[w(k(c(p).t("$vuetify.chatroom.files.previewTruncated")),1)]),_:1})):V("",!0),/\.(csv|tsv)$/i.test(o.path)?(e(),l(ee,{key:1,content:n.value.content,path:o.path,truncated:n.value.truncated},null,8,["content","path","truncated"])):c(q)(o.path)?(e(),l(Y,{key:2,text:n.value.content},null,8,["text"])):(e(),l(X,{key:3,text:n.value.content,filename:o.path,"show-download":!1},null,8,["text","filename"]))],64)):t.value==="unsupported"?(e(),l(I,{key:5,icon:"$mdiFileQuestionOutline",title:c(p).t("$vuetify.chatroom.files.previewUnavailable")},null,8,["title"])):V("",!0)])]),_:1})]),_:1},8,["modelValue"]))}}),ce=j(le,[["__scopeId","data-v-07dc6455"]]);export{ce as default};