@zhanguym/chatroom 1.2.0 → 1.3.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.
- package/dist/app/application.d.ts +5 -0
- package/dist/app/application.js +55 -4
- package/dist/app/lifecycle.js +12 -0
- package/dist/app/workspace-access.d.ts +17 -4
- package/dist/core/operations/types.d.ts +1 -1
- package/dist/core/operations/types.js +1 -1
- package/dist/infrastructure/database/agent-mcp-settings-repository.d.ts +12 -0
- package/dist/infrastructure/database/agent-mcp-settings-repository.js +55 -0
- package/dist/infrastructure/database/app-database.js +3 -3
- package/dist/infrastructure/database/migrate.d.ts +2 -0
- package/dist/infrastructure/database/migrate.js +68 -0
- package/dist/infrastructure/database/schema.d.ts +3 -1
- package/dist/infrastructure/database/schema.js +35 -6
- package/dist/infrastructure/database/workspace-repository.d.ts +28 -0
- package/dist/infrastructure/database/workspace-repository.js +126 -0
- package/dist/mcp/custom/manager.d.ts +3 -1
- package/dist/mcp/custom/manager.js +37 -2
- package/dist/mcp/server/plugin-mcp-registrar.d.ts +4 -1
- package/dist/mcp/server/plugin-mcp-registrar.js +7 -2
- package/dist/mcp/server/tool-control.d.ts +6 -1
- package/dist/mcp/server/tool-control.js +11 -2
- package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
- package/dist/native/windows/chatroom-computer-helper.exe +0 -0
- package/dist/plugins/agent/custom-mcp-store.d.ts +17 -0
- package/dist/plugins/agent/custom-mcp-store.js +38 -0
- package/dist/plugins/agent/mcp-gateway.d.ts +16 -0
- package/dist/plugins/agent/mcp-gateway.js +110 -0
- package/dist/plugins/agent/mcp.js +3 -2
- package/dist/plugins/agent/plugin.js +1 -1
- package/dist/plugins/agent/provider.d.ts +1 -0
- package/dist/plugins/agent/providers/codex/launch.d.ts +17 -0
- package/dist/plugins/agent/providers/codex/launch.js +24 -0
- package/dist/plugins/agent/providers/codex/provider.d.ts +3 -1
- package/dist/plugins/agent/providers/codex/provider.js +8 -2
- package/dist/plugins/agent/providers/codex/rpc.d.ts +7 -1
- package/dist/plugins/agent/providers/codex/rpc.js +28 -3
- package/dist/plugins/agent/providers/index.d.ts +2 -1
- package/dist/plugins/agent/providers/index.js +5 -2
- package/dist/plugins/agent/repository.js +10 -7
- package/dist/plugins/agent/runtime-files.d.ts +4 -4
- package/dist/plugins/agent/runtime-files.js +18 -14
- package/dist/plugins/agent/runtime.d.ts +2 -0
- package/dist/plugins/agent/runtime.js +52 -13
- package/dist/plugins/agent/types.d.ts +3 -2
- package/dist/plugins/cloud/v2/tunnel-client.js +1 -7
- package/dist/plugins/plugin-manager.d.ts +6 -1
- package/dist/plugins/plugin-manager.js +9 -2
- package/dist/plugins/types.d.ts +4 -0
- package/dist/plugins/web/http/agent-api-router.js +15 -1
- package/dist/plugins/web/http/git-api-router.js +13 -13
- package/dist/plugins/web/http/rtc-api-router.js +3 -0
- package/dist/plugins/web/http/runtime-api-router.js +22 -0
- package/dist/plugins/web/http/workspace-api-router.js +63 -12
- package/dist/plugins/web/plugin.js +1 -1
- package/dist/plugins/web/runtime.d.ts +3 -1
- package/dist/plugins/web/runtime.js +5 -1
- package/dist/plugins/workspace/mcp.js +20 -15
- package/dist/plugins/workspace/plugin.js +1 -1
- package/dist/plugins/workspace/workspace-root-policy.d.ts +0 -1
- package/dist/plugins/workspace/workspace-root-policy.js +25 -19
- package/dist/plugins/workspace/workspace-service.d.ts +20 -8
- package/dist/plugins/workspace/workspace-service.js +270 -64
- package/dist/web/assets/{AgentView-CMxIn3KB.css → AgentView-BqAfmgc4.css} +1 -1
- package/dist/web/assets/AgentView-tr6COjRg.js +4 -0
- package/dist/web/assets/{CloudView-CXuTK7Of.js → CloudView-D-fYLw_O.js} +1 -1
- package/dist/web/assets/{CodeViewer.vue_vue_type_script_setup_true_lang-DK6xGH2G.js → CodeViewer.vue_vue_type_script_setup_true_lang-BtA5aWrS.js} +1 -1
- package/dist/web/assets/ComputerView-B25C_C_h.js +1 -0
- package/dist/web/assets/ComputerView-vSSsexBY.css +1 -0
- package/dist/web/assets/{MarkdownContent-D4KYOn-f.js → MarkdownContent-BuDRrZ6c.js} +1 -1
- package/dist/web/assets/McpToolsView-D0G_HACK.css +1 -0
- package/dist/web/assets/McpToolsView-s0-Qvg2g.js +2 -0
- package/dist/web/assets/OperationsView-B_0SN40Y.js +4 -0
- package/dist/web/assets/{ProcessesView-NUAplTg4.js → ProcessesView-B2i-O0AL.js} +3 -3
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-DwnqcvSQ.js +1 -0
- package/dist/web/assets/{SystemLogsView-DGW_4nS0.js → SystemLogsView-BR4FZoAh.js} +1 -1
- package/dist/web/assets/{TerminalView-DCqHCfb5.js → TerminalView-2Z1blITD.js} +1 -1
- package/dist/web/assets/VSelect-CHI_FOMl.js +1 -0
- package/dist/web/assets/VSheet-CKEhsY-7.js +1 -0
- package/dist/web/assets/VSpacer-FbdDPUGx.js +1 -0
- package/dist/web/assets/{VSwitch-o-WPjZs0.js → VSwitch-o9DuRTKF.js} +1 -1
- package/dist/web/assets/{VTabs-D2y6M66D.js → VTabs-BSfSKBtT.js} +1 -1
- package/dist/web/assets/{VTextarea-DFSNyIwH.js → VTextarea-D_kPhUVU.js} +1 -1
- package/dist/web/assets/WorkspaceDownloadPreview-BoALqL1M.js +1 -0
- package/dist/web/assets/WorkspaceDownloadPreview-dFslZB0W.css +1 -0
- package/dist/web/assets/{WorkspaceMediaPreview-tkpcPK82.js → WorkspaceMediaPreview-qjt04eze.js} +3 -3
- package/dist/web/assets/{WorkspacePdfPreview-PqIFAx2J.js → WorkspacePdfPreview-BrUJpmNs.js} +1 -1
- package/dist/web/assets/WorkspacesView-CHXmDTlX.js +2 -0
- package/dist/web/assets/WorkspacesView-Dt24eGQ4.css +1 -0
- package/dist/web/assets/index-9DLDvF8M.js +19 -0
- package/dist/web/assets/{useMasterDetailFocus-DgNjKho5.js → useMasterDetailFocus-Chh0cM6g.js} +1 -1
- package/dist/web/assets/useOperationLabels-DF67nIF0.js +1 -0
- package/dist/web/index.html +1 -1
- package/dist/web/transport-sw.js +43 -15
- package/package.json +1 -1
- package/dist/web/assets/AgentView-XEf1AUcH.js +0 -4
- package/dist/web/assets/ComputerView-Bz2Wsz2X.css +0 -1
- package/dist/web/assets/ComputerView-Cxn7zhrw.js +0 -1
- package/dist/web/assets/McpToolsView-DdYOoY9_.css +0 -1
- package/dist/web/assets/McpToolsView-XLtFPY_M.js +0 -2
- package/dist/web/assets/OperationsView-DRx2Qq8W.js +0 -4
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-BYoHRX9h.js +0 -1
- package/dist/web/assets/VSelect-Dla-KtWu.js +0 -1
- package/dist/web/assets/VSheet-B9d-Gdzq.js +0 -1
- package/dist/web/assets/VSpacer--LXbKJE2.js +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-DJKSNaZ_.css +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-DaFQwUIa.js +0 -1
- package/dist/web/assets/WorkspacesView-ClA6xcjn.css +0 -1
- package/dist/web/assets/WorkspacesView-DkGvIFCb.js +0 -2
- package/dist/web/assets/index-CacDJSDn.js +0 -19
- package/dist/web/assets/useOperationLabels-BNiE-bRq.js +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as ae,x as ve,u as le,w as fe,c as m,l as T,I as de,p as r,k as o,z as L,P as re,q as f,t as i,Q as ue,E as W,h as _,f as h,m as V,R as G,e as k,F as H,V as he,T as Z,J as ne,s as C,b8 as Q,i as P,y as j,_ as oe,o as ee,b5 as ye,D as ce,j as X,C as me,O as ge,$ as be,g as F,v as _e}from"./index-CacDJSDn.js";import{V as we}from"./VSelect-Dla-KtWu.js";import{V as se}from"./VTextarea-DFSNyIwH.js";import{V as te}from"./VSpacer--LXbKJE2.js";import{V as Y}from"./VSwitch-o-WPjZs0.js";import{a as ie,V as Ve}from"./VTabs-D2y6M66D.js";import"./VSheet-B9d-Gdzq.js";const ke=["aria-label"],Ce={key:1,class:"text-caption text-medium-emphasis"},xe={key:4,class:"text-caption text-medium-emphasis"},$e=ae({__name:"CustomMcpDialog",props:ne({server:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:ne(["saved"],["update:modelValue"]),setup(q,{emit:I}){const d=q,g=ve(q,"modelValue"),U=I,x=le(),n=t=>x.t("$vuetify.chatroom.customMcp."+t),b=C(!1),z=C(!1),y=C(!1),$=C(""),v=C(""),R=C(!1),a=Q({name:"",type:"http",authMode:"auto",command:"",args:"",cwd:"",url:"",env:"",headers:""});fe([g,()=>d.server],()=>{if(!g.value)return;const t=d.server;Object.assign(a,{name:t?.name??"",type:t?.type??"http",authMode:t?.authMode??"auto",command:t?.command??"",args:t?.args?.map(e=>/[\s"']/.test(e)?JSON.stringify(e):e).join(" ")??"",cwd:t?.cwd??"",url:t?.url??"",env:"",headers:""}),y.value=!1,$.value="",v.value="",R.value=!1},{immediate:!0});function B(t){if(!t.trim())return{};const e=JSON.parse(t);if(!e||typeof e!="object"||Array.isArray(e)||Object.values(e).some(c=>typeof c!="string"))throw new Error(n("invalidMap"));return e}function N(t){const e=t.trim();if(!e)return[];if(e.startsWith("[")){const A=JSON.parse(e);if(!Array.isArray(A)||A.some(O=>typeof O!="string"))throw new Error(n("invalidArgs"));return A}const c=[];let E="",D=null,J=!1;for(let A=0;A<e.length;A++){const O=e[A];!D&&/\s/.test(O)?(J&&c.push(E),E="",J=!1):O==="'"||O==='"'?D===O?D=null:D?E+=O:(D=O,J=!0):O==="\\"&&D!=="'"&&A+1<e.length&&/[\s"'\\]/.test(e[A+1])?(E+=e[++A],J=!0):(E+=O,J=!0)}if(D)throw new Error(n("invalidArgs"));return J&&c.push(E),c}function K(t){if(!t.trim())return{};if(t.trim().startsWith("{"))return B(t);const e={};for(const c of t.split(`
|
|
2
|
-
`)){if(!c.trim())continue;const E=c.indexOf("=");if(E<=0)throw new Error(n("invalidEnv"));e[c.slice(0,E).trim()]=c.slice(E+1)}return e}function S(){if(!a.name.trim())throw new Error(n("nameRequired"));if(a.type==="http"){if(!a.url.trim())throw new Error(n("urlRequired"));return{name:a.name.trim(),type:a.type,url:a.url.trim(),authMode:a.authMode,...a.authMode==="headers"&&(a.headers.trim()||!d.server)?{headers:B(a.headers)}:{},...d.server?{}:{enabled:!0}}}if(!a.command.trim())throw new Error(n("commandRequired"));return{name:a.name.trim(),type:a.type,command:a.command.trim(),args:N(a.args),cwd:a.cwd.trim(),...a.env.trim()||!d.server?{env:K(a.env)}:{},...d.server?{}:{enabled:!0}}}async function u(){if(!(b.value||z.value)){b.value=!0,$.value="";try{await P(d.server?"/mcp/servers/"+encodeURIComponent(d.server.id):"/mcp/servers",{method:d.server?"PATCH":"POST",body:JSON.stringify(S()),timeoutMs:3e4}),g.value=!1,U("saved")}catch(t){$.value=j(t)}finally{b.value=!1}}}async function p(){if(!(z.value||b.value)){z.value=!0,$.value="",v.value="",R.value=!1;try{const t=await P(d.server?"/mcp/servers/"+encodeURIComponent(d.server.id)+"/test":"/mcp/servers/test",{method:"POST",...d.server?{}:{body:JSON.stringify(S())},timeoutMs:25e3});R.value=!!t.authRequired,v.value=t.authRequired?n("testAuthRequired"):n("testSuccess").replace("{0}",String(t.tools))}catch(t){$.value=j(t)}finally{z.value=!1}}}return(t,e)=>(m(),T(de,{modelValue:g.value,"onUpdate:modelValue":e[12]||(e[12]=c=>g.value=c),"max-width":"720",scrollable:""},{default:r(()=>[o(L,null,{default:r(()=>[o(re,null,{default:r(()=>[f(i(n(q.server?"edit":"add")),1)]),_:1}),o(ue,{class:"custom-mcp-form"},{default:r(()=>[$.value?(m(),T(W,{key:0,type:"error",variant:"tonal",density:"compact"},{default:r(()=>[f(i($.value),1)]),_:1})):_("",!0),v.value?(m(),T(W,{key:1,type:R.value?"info":"success",variant:"tonal",density:"compact"},{default:r(()=>[f(i(v.value),1)]),_:1},8,["type"])):_("",!0),h("div",{class:"custom-mcp-transport",role:"group","aria-label":n("transport")},[o(V,{size:"small",rounded:"lg",variant:a.type==="http"?"tonal":"outlined",color:a.type==="http"?"primary":void 0,"aria-pressed":a.type==="http",onClick:e[0]||(e[0]=c=>a.type="http")},{default:r(()=>[f(i(n("remote")),1)]),_:1},8,["variant","color","aria-pressed"]),o(V,{size:"small",rounded:"lg",variant:a.type==="stdio"?"tonal":"outlined",color:a.type==="stdio"?"primary":void 0,"aria-pressed":a.type==="stdio",onClick:e[1]||(e[1]=c=>a.type="stdio")},{default:r(()=>[f(i(n("local")),1)]),_:1},8,["variant","color","aria-pressed"])],8,ke),o(G,{modelValue:a.name,"onUpdate:modelValue":e[2]||(e[2]=c=>a.name=c),label:n("name"),variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"]),a.type==="http"?(m(),k(H,{key:2},[o(G,{modelValue:a.url,"onUpdate:modelValue":e[3]||(e[3]=c=>a.url=c),label:"MCP Server URL",placeholder:"https://example.com/mcp",variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue"]),o(we,{modelValue:a.authMode,"onUpdate:modelValue":e[4]||(e[4]=c=>a.authMode=c),label:n("authMode"),items:[{title:n("authAuto"),value:"auto"},{title:n("authNone"),value:"none"},{title:n("authHeaders"),value:"headers"}],variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label","items"]),a.authMode==="headers"?(m(),T(se,{key:0,modelValue:a.headers,"onUpdate:modelValue":e[5]||(e[5]=c=>a.headers=c),label:n("headers"),placeholder:'{"X-API-Key":"..."}',rows:"2","auto-grow":"",variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"])):_("",!0),a.authMode==="auto"?(m(),k("div",Ce,i(n("authHint")),1)):_("",!0)],64)):(m(),k(H,{key:3},[o(G,{modelValue:a.command,"onUpdate:modelValue":e[6]||(e[6]=c=>a.command=c),label:n("command"),placeholder:"npx",variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"]),o(G,{modelValue:a.args,"onUpdate:modelValue":e[7]||(e[7]=c=>a.args=c),label:n("argsSimple"),placeholder:"-y @modelcontextprotocol/server-filesystem /path",variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"]),o(V,{variant:"text",size:"small",class:"align-self-start",onClick:e[8]||(e[8]=c=>y.value=!y.value)},{default:r(()=>[o(he,{icon:y.value?"$mdiChevronUp":"$mdiChevronDown",start:""},null,8,["icon"]),f(" "+i(n("advanced")),1)]),_:1}),y.value?(m(),k(H,{key:0},[o(G,{modelValue:a.cwd,"onUpdate:modelValue":e[9]||(e[9]=c=>a.cwd=c),label:n("cwd"),variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"]),o(se,{modelValue:a.env,"onUpdate:modelValue":e[10]||(e[10]=c=>a.env=c),label:n("envSimple"),placeholder:"KEY=value",rows:"2","auto-grow":"",variant:"outlined",density:"comfortable","hide-details":""},null,8,["modelValue","label"])],64)):_("",!0)],64)),q.server&&(q.server.envKeys.length||q.server.headerKeys.length)?(m(),k("div",xe,i(n("secretsHint"))+" "+i([...q.server.envKeys,...q.server.headerKeys].join(", ")),1)):_("",!0)]),_:1}),o(Z,{class:"flex-wrap"},{default:r(()=>[o(V,{variant:"text",loading:z.value,disabled:b.value,onClick:p},{default:r(()=>[f(i(n("test")),1)]),_:1},8,["loading","disabled"]),o(te),o(V,{variant:"text",disabled:b.value||z.value,onClick:e[11]||(e[11]=c=>g.value=!1)},{default:r(()=>[f(i(n("cancel")),1)]),_:1},8,["disabled"]),o(V,{color:"primary",loading:b.value,disabled:z.value,onClick:u},{default:r(()=>[f(i(n("save")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),Me=oe($e,[["__scopeId","data-v-828952e7"]]),Te={class:"custom-mcp-view"},Ue={class:"d-flex align-center justify-end ga-2"},Se={class:"d-flex align-center ga-1"},Ie={class:"empty-inline"},ze={class:"custom-mcp-header"},Re={class:"min-w-0"},Ee={class:"panel-title"},Ae={class:"text-caption text-medium-emphasis text-truncate"},Oe={key:0,class:"text-error text-body-2 px-4 pb-2"},Pe={key:0,class:"empty-inline"},qe={class:"min-w-0"},Be={class:"text-body-2 font-weight-medium"},Ne=["title"],De=ae({__name:"CustomMcpView",setup(q){const I=le(),d=s=>I.t("$vuetify.chatroom.customMcp."+s),g=C([]),U=C(!1),x=C(""),n=C(""),b=C(!1),z=C(null),y=C(null),$=Q(new Set),v=Q(new Set);let R=null,a=null,B=null;const N=()=>{R!==null&&window.clearInterval(R),B!==null&&window.clearTimeout(B),R=null,B=null,a=null},K=s=>{s.origin===window.location.origin&&s.data?.type==="chatroom:mcp-oauth-completed"&&(N(),s.data.success===!1&&(n.value=d("authFailed")),S())};ee(()=>window.addEventListener("message",K)),ye(()=>{N(),window.removeEventListener("message",K)}),ee(()=>{S()});async function S(){U.value=!0,x.value="";try{g.value=await P("/mcp/servers"),R!==null&&g.value.some(s=>s.id===a&&s.status==="connected")&&N()}catch(s){x.value=j(s)}finally{U.value=!1}}function u(){z.value=null,b.value=!0}function p(s){z.value=s,b.value=!0}function t(s){$.has(s)?$.delete(s):$.add(s)}async function e(s,M){if(!v.has(s)){v.add(s),x.value="";try{await M(),await S()}catch(l){x.value=j(l)}finally{v.delete(s)}}}async function c(s,M){await e(s.id,()=>P("/mcp/servers/"+encodeURIComponent(s.id),{method:"PATCH",body:JSON.stringify({enabled:M}),timeoutMs:3e4}))}async function E(s){await e(s.id,()=>P("/mcp/servers/"+encodeURIComponent(s.id)+"/refresh",{method:"POST",timeoutMs:3e4}))}async function D(s){if(v.has(s.id))return;const M=window.open("","chatroom-mcp-login","width=620,height=760");if(!M){n.value=d("popupBlocked");return}v.add(s.id),n.value="";try{const{authorizationUrl:l}=await P("/mcp/servers/"+encodeURIComponent(s.id)+"/authorize",{method:"POST",timeoutMs:3e4});M.location.href=l,N(),a=s.id,R=window.setInterval(()=>{S()},2500),B=window.setTimeout(()=>{N(),S()},600*1e3)}catch(l){M.close(),n.value=j(l)}finally{v.delete(s.id),await S()}}async function J(s){await e(s.id,()=>P("/mcp/servers/"+encodeURIComponent(s.id)+"/revoke",{method:"POST"}))}async function A(){const s=y.value;s&&(await e(s.id,()=>P("/mcp/servers/"+encodeURIComponent(s.id),{method:"DELETE"})),x.value||(y.value=null))}async function O(s,M){await e(s.name,()=>P("/mcp/tools/"+encodeURIComponent(s.name),{method:"PATCH",body:JSON.stringify({enabled:M})}))}return(s,M)=>(m(),k("div",Te,[x.value||n.value?(m(),T(W,{key:0,type:"error",variant:"tonal",density:"compact"},{default:r(()=>[f(i(x.value||n.value),1)]),_:1})):_("",!0),h("div",Ue,[h("div",Se,[o(V,{icon:"$mdiRefresh",size:"small",variant:"text",loading:U.value,"aria-label":d("refresh"),onClick:S},null,8,["loading","aria-label"]),o(V,{color:"primary","prepend-icon":"$mdiPlus",size:"small",onClick:u},{default:r(()=>[f(i(d("add")),1)]),_:1})])]),U.value&&!g.value.length?(m(),T(ce,{key:1,indeterminate:""})):_("",!0),!U.value&&!g.value.length?(m(),T(L,{key:2,class:"panel-card"},{default:r(()=>[h("div",Ie,i(d("empty")),1)]),_:1})):_("",!0),(m(!0),k(H,null,X(g.value,l=>(m(),T(L,{key:l.id,class:"panel-card"},{default:r(()=>[h("div",ze,[h("div",Re,[h("div",Ee,i(l.name),1),h("div",Ae,i(l.type==="stdio"?"stdio":"Streamable HTTP")+" · "+i(l.status==="connected"?d("connected"):l.status==="connecting"?d("connecting"):l.status==="disabled"?d("disabled"):l.status==="auth_required"?d("authRequired"):d("error"))+" · "+i(l.tools.length)+" "+i(d("tools")),1)]),o(Y,{"model-value":l.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:v.has(l.id),disabled:v.has(l.id),"aria-label":l.name,"onUpdate:modelValue":w=>c(l,!!w)},null,8,["model-value","loading","disabled","aria-label","onUpdate:modelValue"])]),l.error?(m(),k("div",Oe,i(l.error),1)):_("",!0),o(Z,{class:"flex-wrap ga-1"},{default:r(()=>[o(V,{variant:"text",size:"small","append-icon":$.has(l.id)?"$mdiChevronUp":"$mdiChevronDown",onClick:w=>t(l.id)},{default:r(()=>[f(i(d("tools")),1)]),_:1},8,["append-icon","onClick"]),o(te),l.type==="http"&&l.authMode==="auto"&&(l.status==="auth_required"||l.authorized)?(m(),T(V,{key:0,variant:l.status==="auth_required"?"tonal":"text",color:l.status==="auth_required"?"primary":void 0,size:"small",loading:v.has(l.id),onClick:w=>D(l)},{default:r(()=>[f(i(d(l.status==="connected"?"reauthorize":"authorize")),1)]),_:2},1032,["variant","color","loading","onClick"])):_("",!0),l.type==="http"&&l.authMode==="auto"&&l.status==="connected"?(m(),T(V,{key:1,variant:"text",size:"small",disabled:v.has(l.id),onClick:w=>J(l)},{default:r(()=>[f(i(d("revoke")),1)]),_:1},8,["disabled","onClick"])):_("",!0),o(V,{variant:"text",size:"small",disabled:v.has(l.id),onClick:w=>p(l)},{default:r(()=>[f(i(d("edit")),1)]),_:1},8,["disabled","onClick"]),o(V,{variant:"text",size:"small",loading:v.has(l.id),disabled:!l.enabled,onClick:w=>E(l)},{default:r(()=>[f(i(d("refresh")),1)]),_:1},8,["loading","disabled","onClick"]),o(V,{variant:"text",color:"error",size:"small",disabled:v.has(l.id),onClick:w=>y.value=l},{default:r(()=>[f(i(d("delete")),1)]),_:1},8,["disabled","onClick"])]),_:2},1024),$.has(l.id)?(m(),k(H,{key:1},[o(me),l.tools.length?_("",!0):(m(),k("div",Pe,i(d("noTools")),1)),(m(!0),k(H,null,X(l.tools,w=>(m(),k("div",{key:w.name,class:"custom-mcp-tool-row"},[h("div",qe,[h("div",Be,i(w.title),1),h("div",{class:"text-caption text-medium-emphasis text-truncate",title:w.description},i(w.name),9,Ne)]),o(Y,{"model-value":w.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:v.has(w.name),disabled:v.has(w.name)||!l.enabled,"aria-label":w.title,"onUpdate:modelValue":pe=>O(w,!!pe)},null,8,["model-value","loading","disabled","aria-label","onUpdate:modelValue"])]))),128))],64)):_("",!0)]),_:2},1024))),128)),o(Me,{modelValue:b.value,"onUpdate:modelValue":M[0]||(M[0]=l=>b.value=l),server:z.value,onSaved:S},null,8,["modelValue","server"]),o(de,{"model-value":!!y.value,width:"auto","max-width":"32rem",persistent:!!(y.value&&v.has(y.value.id)),"onUpdate:modelValue":M[2]||(M[2]=l=>!l&&(y.value=null))},{default:r(()=>[y.value?(m(),T(L,{key:0},{default:r(()=>[o(ge,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:r(()=>[o(re,null,{default:r(()=>[f(i(d("delete")),1)]),_:1})]),_:1}),o(ue,null,{default:r(()=>[f(i(d("deleteConfirm").replace("{0}",y.value.name)),1)]),_:1}),o(Z,null,{default:r(()=>[o(te),o(V,{variant:"text",disabled:v.has(y.value.id),onClick:M[1]||(M[1]=l=>y.value=null)},{default:r(()=>[f(i(d("cancel")),1)]),_:1},8,["disabled"]),o(V,{color:"error",variant:"flat",loading:v.has(y.value.id),onClick:A},{default:r(()=>[f(i(d("delete")),1)]),_:1},8,["loading"])]),_:1})]),_:1})):_("",!0)]),_:1},8,["model-value","persistent"])]))}}),Je=oe(De,[["__scopeId","data-v-f2c6da95"]]),He={class:"mcp-tools-shell"},Le={key:1,class:"mcp-tools-view"},je={class:"panel-header"},Ke={class:"panel-title"},Fe={class:"mcp-tool-group-header"},Ge={class:"min-w-0"},We={class:"panel-title"},Qe={class:"mcp-tool-list"},Xe=["title"],Ye={class:"mcp-tool-heading"},Ze={class:"empty-inline"},et=ae({__name:"McpToolsView",setup(q){const I=le(),d=C("builtIn"),g=C([]),U=C(!1),x=C(""),n=Q(new Set),b=be(),z=_e(()=>{const u=new Map;for(const p of g.value){if(p.pluginId==="custom-mcp")continue;const t=u.get(p.pluginId)??[];t.push(p),u.set(p.pluginId,t)}return[...u.entries()].map(([p,t])=>({pluginId:p,tools:t}))});ee(()=>{y()});async function y(){if(n.size)return;const u=b.begin();U.value=!0,x.value="";try{const p=await P("/mcp/tools",{signal:u.signal});b.isCurrent(u)&&(g.value=p)}catch(p){b.isCurrent(u)&&(x.value=j(p))}finally{b.isCurrent(u)&&(U.value=!1)}}async function $(u,p){if(!(n.has(u.name)||u.enabled===p)){b.invalidate(),U.value=!1,n.add(u.name),x.value="";try{const t=await P(`/mcp/tools/${encodeURIComponent(u.name)}`,{method:"PATCH",body:JSON.stringify({enabled:p})});g.value=g.value.map(e=>e.name===t.name?t:e)}catch(t){x.value=j(t)}finally{n.delete(u.name)}}}async function v(u,p){const t=u.tools.filter(e=>e.enabled!==p&&!n.has(e.name));await Promise.all(t.map(e=>$(e,p)))}function R(u){return["workspace","process","computer","agent"].includes(u)?I.t(`$vuetify.chatroom.mcpTools.plugins.${u}`):u}const a=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 B(u){return a.has(u.name)?I.t("$vuetify.chatroom.mcpTools.tools."+u.name+".title"):u.title}function N(u){return a.has(u.name)?I.t("$vuetify.chatroom.mcpTools.tools."+u.name+".description"):u.description}function K(u){return u.tools.some(p=>p.enabled)}function S(u){return u.tools.every(p=>p.enabled)}return(u,p)=>(m(),k("div",He,[o(Ve,{modelValue:d.value,"onUpdate:modelValue":p[0]||(p[0]=t=>d.value=t),color:"primary",density:"compact"},{default:r(()=>[o(ie,{value:"builtIn"},{default:r(()=>[f(i(F(I).t("$vuetify.chatroom.customMcp.builtIn")),1)]),_:1}),o(ie,{value:"custom"},{default:r(()=>[f(i(F(I).t("$vuetify.chatroom.customMcp.custom")),1)]),_:1})]),_:1},8,["modelValue"]),d.value==="custom"?(m(),T(Je,{key:0})):(m(),k("div",Le,[x.value?(m(),T(W,{key:0,type:"error",variant:"tonal",density:"compact"},{default:r(()=>[f(i(x.value),1)]),_:1})):_("",!0),o(L,{class:"panel-card"},{default:r(()=>[h("div",je,[h("div",null,[h("div",Ke,i(F(I).t("$vuetify.chatroom.mcpTools.title")),1)]),o(V,{class:"mcp-tools-refresh",icon:"$mdiRefresh",size:"small",variant:"text",loading:U.value,disabled:n.size>0,"aria-label":F(I).t("$vuetify.chatroom.mcpTools.refresh"),onClick:y},null,8,["loading","disabled","aria-label"])])]),_:1}),U.value&&!g.value.length?(m(),T(ce,{key:1,indeterminate:"",rounded:""})):_("",!0),(m(!0),k(H,null,X(z.value,t=>(m(),T(L,{key:t.pluginId,class:"panel-card mcp-tool-group"},{default:r(()=>[h("div",Fe,[h("div",Ge,[h("div",We,i(R(t.pluginId)),1)]),o(Y,{class:"mcp-tool-switch","model-value":S(t),indeterminate:K(t)&&!S(t),color:"primary",density:"compact","hide-details":"",inset:"",disabled:t.tools.some(e=>n.has(e.name)),"aria-label":F(I).t("$vuetify.chatroom.mcpTools.togglePlugin",R(t.pluginId)),"onUpdate:modelValue":e=>v(t,!!e)},null,8,["model-value","indeterminate","disabled","aria-label","onUpdate:modelValue"])]),o(me),h("div",Qe,[(m(!0),k(H,null,X(t.tools,e=>(m(),k("div",{key:e.name,class:"mcp-tool-row"},[h("div",{class:"mcp-tool-copy",title:N(e)},[h("div",Ye,[h("strong",null,i(B(e)),1),h("code",null,i(e.name),1)])],8,Xe),o(Y,{class:"mcp-tool-switch","model-value":e.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:n.has(e.name),"aria-label":B(e),"onUpdate:modelValue":c=>$(e,!!c)},null,8,["model-value","loading","aria-label","onUpdate:modelValue"])]))),128))])]),_:2},1024))),128)),!U.value&&!g.value.length?(m(),T(L,{key:2,class:"panel-card"},{default:r(()=>[h("div",Ze,i(F(I).t("$vuetify.chatroom.mcpTools.empty")),1)]),_:1})):_("",!0)]))]))}}),dt=oe(et,[["__scopeId","data-v-153efee2"]]);export{dt as default};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{$ as ae,a0 as be,w as Z,i as Q,y as W,a7 as de,s as C,d as ie,u as re,c as f,l as O,p as u,f as i,m as H,g as e,h as B,t as l,b6 as _e,a3 as ke,k as s,C as oe,e as P,q as $,z as ee,v as we,F as pe,j as Ce,n as Ve,bs as Se,b7 as Ae,b3 as xe,ab as ve,b as Me,ae as Oe,X as Be,b4 as Re,E as le,af as Le,O as Te,P as De,Q as qe,T as Ee,I as ze}from"./index-CacDJSDn.js";import{c as Ue}from"./entity-refresh-queue-wQii8Dl5.js";import{u as Pe}from"./useMasterDetailFocus-DgNjKho5.js";import{u as me}from"./useOperationLabels-BNiE-bRq.js";import{_ as Y}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DK6xGH2G.js";import{_ as he}from"./StateChip.vue_vue_type_script_setup_true_lang-BYoHRX9h.js";import{V as Fe,a as ne,b as He,c as se}from"./VTabs-D2y6M66D.js";import{V as Ne}from"./VSpacer--LXbKJE2.js";import"./VSheet-B9d-Gdzq.js";const X=50,j=1e3;function je(a,h){const o=C([]),n=C(null),m=C(null),V=C("all"),r=C(!1),R=C(!1),y=C(!1),c=C(!1),p=C(""),I=C(!1),w=ae(),_=ae(),S=ae(),L=new Map;let T=!1,A=null,D=0,g=!1;const z=Ue({keyOf:t=>t.operationId,merge:(t,d)=>d,isReady:()=>T,isLoading:()=>r.value,isDisposed:()=>g,refreshAll:N,applyBatch:k});be(()=>{g=!0,T=!1,z.reset(),L.clear(),w.invalidate(),_.invalidate(),S.invalidate()}),Z(V,()=>{T=!1,A=null,z.reset(),S.invalidate(),N()},{immediate:!0}),Z(a,()=>{$e(h())}),Z(n,()=>{D+=1,q(D)});function J(t,d=null){const v=new URLSearchParams({limit:String(t)});return V.value!=="all"&&v.set("status",V.value),d&&(v.set("beforeStartedAt",d.startedAt),v.set("beforeOperationId",d.operationId)),`/operations?${v}`}async function N(){if(g)return;T=!1;const t=w.begin();r.value=!0,R.value=!1,p.value="";try{const d=await Q(J(X),{signal:t.signal});if(g||!w.isCurrent(t))return;if(o.value=d.slice(0,j),I.value=!1,A=fe(d),y.value=d.length===X,T=!0,n.value){const v=d.find(x=>x.operationId===n.value);v?(_.invalidate(),m.value=v):q(D)}}catch(d){w.isCurrent(t)&&(p.value=W(d))}finally{w.isCurrent(t)&&(r.value=!1,T&&z.drain())}}async function te(){if(r.value||R.value||!y.value)return;const t=w.begin(),d=A;R.value=!0;try{const v=await Q(J(X,d),{signal:t.signal});if(g||!w.isCurrent(t))return;v.length&&(A=fe(v));const x=new Set(o.value.map(M=>M.operationId)),G=[...o.value,...v.filter(M=>!x.has(M.operationId))];o.value=G.slice(0,j),I.value=G.length>j||o.value.length>=j&&v.length===X,y.value=!I.value&&v.length===X}catch(v){w.isCurrent(t)&&(p.value=W(v))}finally{w.isCurrent(t)&&(R.value=!1)}}async function k(t){if(g||!t.length)return;const d=S.begin(),v=n.value,x=D,G=await Promise.allSettled(t.map(async U=>{try{return await Q(`/operations/${encodeURIComponent(U.operationId)}`,{signal:d.signal})}catch(E){if(E instanceof de&&E.status===404)return null;throw E}}));if(g||!S.isCurrent(d))return;let M=[...o.value];for(let U=0;U<G.length;U+=1){const E=G[U],ce=t[U];if(E.status==="rejected"){b(ce,E.reason);continue}L.delete(ce.operationId);const F=E.value;if(!F)continue;const K=M.findIndex(Ie=>Ie.operationId===F.operationId);Ge(F,V.value)?K>=0?M[K]=F:M.push(F):K>=0&&M.splice(K,1),n.value===F.operationId&&v===F.operationId&&D===x&&(_.invalidate(),m.value=F)}M.sort((U,E)=>E.startedAt.localeCompare(U.startedAt)||E.operationId.localeCompare(U.operationId)),M.length>j&&(I.value=!0,y.value=!1),o.value=M.slice(0,j)}function b(t,d){const v=(L.get(t.operationId)??0)+1;if(v<=1&&!g){L.set(t.operationId,v),z.enqueue([t]);return}L.delete(t.operationId),p.value=W(d)}async function q(t=D){const d=n.value,v=_.begin();if(!d){m.value=null;return}try{const x=await Q(`/operations/${encodeURIComponent(d)}`,{signal:v.signal});_.isCurrent(v)&&n.value===d&&D===t&&(m.value=x)}catch(x){if(!_.isCurrent(v))return;if(x instanceof de&&x.status===404){n.value===d&&D===t&&ue();return}p.value=W(x)}}async function ye(){if(c.value)return!1;c.value=!0,p.value="",w.invalidate(),S.invalidate(),_.invalidate();try{return await Q("/operations",{method:"DELETE"}),n.value=null,m.value=null,T=!1,A=null,await N(),!0}catch(t){return p.value=W(t),!1}finally{c.value=!1}}function ge(t){n.value=t.operationId,m.value=t}function ue(){n.value=null,m.value=null,_.invalidate()}function $e(t){if(!g){if(t===null){z.enqueue(null);return}if(!t.clearAll){z.enqueue(t.changes);return}S.invalidate(),L.clear(),z.reset(),n.value=null,m.value=null,_.invalidate(),o.value=[],A=null,y.value=!1,I.value=!1,T=!1,N()}}return{events:o,selected:n,detail:m,filter:V,loading:r,loadingMore:R,hasMore:y,clearing:c,error:p,limitReached:I,loadInitial:N,loadMore:te,select:ge,clearSelection:ue,clearHistory:ye}}function fe(a){const h=a.at(-1);return h?{startedAt:h.startedAt,operationId:h.operationId}:null}function Ge(a,h){return h==="all"||a.status===h}const Qe={class:"panel-header operation-detail-header"},We={class:"min-w-0 detail-header-title"},Xe={class:"panel-title text-truncate"},Ze={class:"panel-subtitle"},Je={class:"detail-facts"},Ke={class:"mono"},Ye={key:0},et={class:"mono"},tt={class:"empty-panel"},at=ie({__name:"OperationDetail",props:{event:{},showBack:{type:Boolean}},emits:["back"],setup(a){const h=a,o=C("input"),n=re(),{actionLabel:m,sourceLabel:V}=me(),r=we(()=>R(h.event?.output));function R(y){if(!y||typeof y!="object"||Array.isArray(y))return null;const c=y;if(typeof c.stdout!="string"&&typeof c.stderr!="string")return null;const p=typeof c.stdout=="string"?c.stdout:"",I=typeof c.stderr=="string"&&c.stderr?`
|
|
2
|
-
|
|
3
|
-
[stderr]
|
|
4
|
-
${c.stderr}`:"";return`${p}${I}`}return(y,c)=>a.event?(f(),O(ee,{key:0,class:"panel-card"},{default:u(()=>[i("div",Qe,[a.showBack?(f(),O(H,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":e(n).t("$vuetify.chatroom.operations.back"),onClick:c[0]||(c[0]=p=>y.$emit("back"))},null,8,["aria-label"])):B("",!0),i("div",We,[i("div",Xe,l(e(m)(a.event.pluginId,a.event.action)),1),i("div",Ze,l(e(V)(a.event.source))+" · "+l(e(_e)(a.event.startedAt,e(ke)(e(n).current.value))),1)]),s(he,{value:a.event.status},null,8,["value"])]),s(oe),i("div",Je,[i("div",null,[i("span",null,l(e(n).t("$vuetify.chatroom.detail.plugin")),1),i("strong",Ke,l(a.event.pluginId),1)]),i("div",null,[i("span",null,l(e(n).t("$vuetify.chatroom.detail.duration")),1),i("strong",null,l(a.event.durationMs===null?e(n).t("$vuetify.chatroom.statuses.running"):`${a.event.durationMs} ms`),1)]),a.event.processId?(f(),P("div",Ye,[i("span",null,l(e(n).t("$vuetify.chatroom.detail.process")),1),i("strong",et,l(a.event.processId.slice(0,16)),1)])):B("",!0)]),s(Fe,{modelValue:o.value,"onUpdate:modelValue":c[1]||(c[1]=p=>o.value=p),density:"compact",class:"detail-tabs"},{default:u(()=>[s(ne,{value:"input"},{default:u(()=>[$(l(e(n).t("$vuetify.chatroom.detail.input")),1)]),_:1}),s(ne,{value:"output"},{default:u(()=>[$(l(e(n).t("$vuetify.chatroom.detail.output")),1)]),_:1}),a.event.error?(f(),O(ne,{key:0,value:"failure"},{default:u(()=>[$(l(e(n).t("$vuetify.chatroom.detail.error")),1)]),_:1})):B("",!0)]),_:1},8,["modelValue"]),s(oe),s(He,{modelValue:o.value,"onUpdate:modelValue":c[2]||(c[2]=p=>o.value=p),touch:!1},{default:u(()=>[s(se,{value:"input",class:"pa-3"},{default:u(()=>[s(Y,{value:a.event.input},null,8,["value"])]),_:1}),s(se,{value:"output",class:"pa-3"},{default:u(()=>[r.value!==null?(f(),O(Y,{key:0,text:r.value??"",filename:"operation-terminal.txt",highlight:a.event.status!=="running"},null,8,["text","highlight"])):(f(),O(Y,{key:1,value:a.event.output,highlight:a.event.status!=="running"},null,8,["value","highlight"]))]),_:1}),a.event.error?(f(),O(se,{key:0,value:"failure",class:"pa-3"},{default:u(()=>[s(Y,{value:a.event.error},null,8,["value"])]),_:1})):B("",!0)]),_:1},8,["modelValue"])]),_:1})):(f(),O(ee,{key:1,class:"panel-card"},{default:u(()=>[i("div",tt,l(e(n).t("$vuetify.chatroom.operations.select")),1)]),_:1}))}}),lt={key:0,class:"responsive-record-list"},nt=["aria-current","data-operation-id","onClick"],st={class:"responsive-record-main"},ot={class:"responsive-record-title"},it={class:"responsive-record-subtitle mono"},rt={class:"responsive-record-meta"},ut={class:"responsive-record-side"},ct={key:1,class:"empty-inline"},dt=ie({__name:"OperationTable",props:{events:{},selected:{}},emits:["select"],setup(a){const h=re(),{actionLabel:o,sourceLabel:n}=me();return(m,V)=>a.events.length?(f(),P("div",lt,[(f(!0),P(pe,null,Ce(a.events,r=>(f(),P("button",{key:r.operationId,type:"button",class:Ve(["responsive-record-row",{"selected-row":a.selected===r.operationId}]),"aria-current":a.selected===r.operationId?"true":void 0,"data-operation-id":r.operationId,onClick:R=>m.$emit("select",r)},[i("div",st,[i("div",ot,l(e(o)(r.pluginId,r.action)),1),i("div",it,l(r.pluginId),1)]),i("div",rt,[i("span",null,l(e(Se)(r.startedAt)),1),i("span",null,l(e(n)(r.source)),1),i("span",null,l(r.durationMs===null?e(h).t("$vuetify.chatroom.statuses.running"):e(Ae)(r.durationMs)),1)]),i("div",ut,[s(he,{value:r.status},null,8,["value"])])],10,nt))),128))])):(f(),P("div",ct,l(e(h).t("$vuetify.chatroom.operations.empty")),1))}}),vt={ref:"layout",class:"master-detail-layout operations-layout"},ft={key:0,class:"master-pane"},pt={class:"panel-header operations-header"},mt={class:"panel-title"},ht={class:"panel-subtitle"},yt={class:"operations-controls"},gt={key:1,ref:"detailPane",class:"detail-pane",tabindex:"-1"},At=ie({__name:"OperationsView",props:{revision:{},changes:{}},setup(a){const h=a,o=re(),{mdAndDown:n}=xe(),m=ve("loadSentinel"),V=ve("listScroller"),r=C(!1),{focusDetail:R,focusMaster:y}=Pe(n),c=je(()=>h.revision,()=>h.changes),{events:p,selected:I,detail:w,filter:_,loadingMore:S,hasMore:L,clearing:T,error:A,limitReached:D}=c;let g=null;Z(m,k=>{g?.disconnect(),g=null,k&&(g=new IntersectionObserver(b=>{b.some(q=>q.isIntersecting)&&c.loadMore()},{rootMargin:"240px 0px"}),g.observe(k))},{flush:"post"}),Z(()=>[p.value.length,L.value,S.value],()=>{z()},{flush:"post"}),Me(()=>g?.disconnect());async function z(){await Oe();const k=m.value;if(!k||S.value||!L.value)return;const b=V.value?.getBoundingClientRect().bottom??window.innerHeight;k.getBoundingClientRect().top<=Math.min(b,window.innerHeight)+240&&c.loadMore()}function J(k){c.select(k),R()}function N(){const k=I.value;c.clearSelection(),k&&y(`[data-operation-id="${CSS.escape(k)}"]`)}async function te(){await c.clearHistory()&&(r.value=!1)}return(k,b)=>(f(),P(pe,null,[i("div",vt,[!e(n)||!e(I)?(f(),P("div",ft,[s(ee,{class:"panel-card"},{default:u(()=>[i("div",pt,[i("div",null,[i("div",mt,l(e(o).t("$vuetify.chatroom.operations.title")),1),i("div",ht,l(e(o).t("$vuetify.chatroom.operations.subtitle")),1)]),i("div",yt,[s(Be,{modelValue:e(_),"onUpdate:modelValue":b[0]||(b[0]=q=>Re(_)?_.value=q:null),mandatory:"",variant:"text",class:"record-filters"},{default:u(()=>[s(H,{value:"all",size:"small"},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.all")),1)]),_:1}),s(H,{value:"running",size:"small"},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.running")),1)]),_:1}),s(H,{value:"error",size:"small"},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.errors")),1)]),_:1}),s(H,{value:"success",size:"small"},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.success")),1)]),_:1})]),_:1},8,["modelValue"]),s(H,{"prepend-icon":"$mdiDeleteSweepOutline",variant:"text",size:"small",class:"operations-clear",disabled:!e(p).length,onClick:b[1]||(b[1]=q=>r.value=!0)},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.clear")),1)]),_:1},8,["disabled"])])]),s(oe),e(A)?(f(),O(le,{key:0,type:"error",variant:"tonal",density:"compact"},{default:u(()=>[$(l(e(A)),1)]),_:1})):B("",!0),i("div",{ref_key:"listScroller",ref:V,class:"operation-scroll-area"},[s(dt,{events:e(p),selected:e(I),onSelect:J},null,8,["events","selected"]),e(D)?(f(),O(le,{key:0,type:"info",variant:"tonal",density:"compact",class:"operation-window-limit"},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.windowLimit")),1)]),_:1})):B("",!0),e(L)||e(S)?(f(),P("div",{key:1,ref_key:"loadSentinel",ref:m,class:"operation-load-sentinel","aria-hidden":"true"},[e(S)?(f(),O(Le,{key:0,indeterminate:"",size:"20",width:"2"})):B("",!0)],512)):B("",!0)],512)]),_:1})])):B("",!0),!e(n)||e(I)?(f(),P("div",gt,[e(n)&&e(I)&&e(A)?(f(),O(le,{key:0,type:"error",variant:"tonal",density:"compact"},{default:u(()=>[$(l(e(A)),1)]),_:1})):B("",!0),s(at,{event:e(w),"show-back":e(n),onBack:N},null,8,["event","show-back"])],512)):B("",!0)],512),s(ze,{modelValue:r.value,"onUpdate:modelValue":b[3]||(b[3]=q=>r.value=q),width:"auto","max-width":"32rem"},{default:u(()=>[s(ee,null,{default:u(()=>[s(Te,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:u(()=>[s(De,null,{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.clearTitle")),1)]),_:1})]),_:1}),s(qe,null,{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.clearDescription")),1)]),_:1}),s(Ee,null,{default:u(()=>[s(Ne),s(H,{variant:"text",onClick:b[2]||(b[2]=q=>r.value=!1)},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),s(H,{color:"error",variant:"flat",loading:e(T),onClick:te},{default:u(()=>[$(l(e(o).t("$vuetify.chatroom.operations.clearConfirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}});export{At as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{d as n,u,c as i,l as d,a4 as p,p as v,q as m,t as f,v as s,bw as C}from"./index-CacDJSDn.js";const h=n({__name:"StateChip",props:{value:{}},setup(l){const e=l,t=u(),c=s(()=>({running:"warning",success:"success",exited:"success",error:"error",failed:"error",cancelled:"default",killed:"default"})[e.value]??"default"),r=s(()=>e.value==="running"?"$mdiProgressClock":e.value==="success"||e.value==="exited"?"$mdiCheckCircleOutline":e.value==="error"||e.value==="failed"?"$mdiAlertCircleOutline":"$mdiCircleOutline"),o=s(()=>{const a=C(e.value);return a?t.t(a):e.value});return(a,_)=>(i(),d(p,{class:"state-chip",color:c.value,"prepend-icon":r.value,size:"small",variant:"tonal"},{default:v(()=>[m(f(o.value),1)]),_:1},8,["color","prepend-icon"]))}});export{h as _};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ag as xe,bW as Ee,w as ae,aq as Ae,f as A,F as fe,a9 as j,aC as J,aW as Be,b3 as Qe,bb 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,bD as lt,k as x,aR as ve,aa as He,n as $e,aA as pe,b$ as nt,c0 as at,c1 as Z,al as ye,c2 as ot,ai as rt,bF as st,c3 as ze,g as me,bn as ut,u as it,ah as ct,ak as we,am as ft,ba 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,bj as Rt,az as _e,c8 as De}from"./index-CacDJSDn.js";import{V as Mt}from"./VSheet-B9d-Gdzq.js";const _t=J({renderless:Boolean,...Be()},"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}=Ee(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,Et=1,he=100,Bt=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}=Ee();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 z(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!==Et||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:z}}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,...Bt(),...Be(),...at()},"VVirtualScroll"),$t=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:$e(["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 zt(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=zt(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:$e(["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&&ze(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?ze(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 z="",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&&(z="",C=0),z+=n.key.toLowerCase(),re=M;const le=_.value;function X(){let F=ne();return F||z.at(-1)===z.at(-2)&&(z=z.slice(0,-1),C++,F=ne(),F)||(C=0,F=ne(),F)?F:(z=n.key.toLowerCase(),ne())}function ne(){for(let F=C;F<le.length;F++){const U=le[F];if(U.title.toLowerCase().startsWith(z))return[U,F]}}const $=X();if(!$)return;const[v,E]=$;C=E,D.value?.focus(E),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($=>$.props.title).join(", "),name:void 0,"onUpdate:modelValue":Xe,focused:T.value,"onUpdate:focused":$=>T.value=$,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:$})=>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":`${$.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($t,{ref:r,renderless:!0,items:_.value,itemKey:"value"},{default:({item:v,index:E,itemRef:F})=>{const U=St(v.props),ue=j(v.props,{ref:F,key:v.value,onClick:()=>Y(v,null),"aria-posinset":E+1,"aria-setsize":_.value.length});return v.type==="divider"?t.divider?.({props:v.raw,index:E})??x(Ct,j(v.props,{key:`divider-${E}`}),null):v.type==="subheader"?t.subheader?.({props:v.raw,index:E})??x(It,j(v.props,{key:`subheader-${E}`}),null):t.item?.({item:v.raw,internalItem:v,index:E,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:B=>B.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,E)=>{function F(B){B.stopPropagation(),B.preventDefault(),Y(v,!1)}const U=j(Me.filterProps(v.props),{"onClick:close":F,onKeydown(B){B.key!=="Enter"&&B.key!==" "||(B.preventDefault(),B.stopPropagation(),F(B))},onMousedown(B){B.preventDefault(),B.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:E,props:U}):t.selection({item:v.raw,internalItem:v,index:E})):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&&E<d.value.length-1&&A("span",{class:"v-select__selection-comma"},[Tt(",")])])])})]),"append-inner":(...$)=>A(fe,null,[t["append-inner"]?.(...$),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:$[0].iconColor.value},null)])})}),mt({isFocused:T,menu:w,search:g,filteredItems:h,select:Y},l)}});export{ol as V,el as a,$t 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{ag as d,bB as v,aP as k,ca as C,cb as P,cc as S,aX as b,aq as g,aC as h,bE as y,bF as V,aK as B,cd as E,ce as R,aJ as T,c0 as f,aW as z,cf as D,k as F,aa as L,n as p,b$ as q,aV as x}from"./index-CacDJSDn.js";const J=h({color:String,...D(),...z(),...f(),...T(),...R(),...E(),...B(),...V(),...y()},"VSheet"),N=d()({name:"VSheet",props:J(),setup(e,{slots:s}){const{themeClasses:a}=v(e),{backgroundColorClasses:o,backgroundColorStyles:n}=k(()=>e.color),{borderClasses:t}=C(e),{dimensionStyles:l}=q(e),{elevationClasses:c}=x(e),{locationStyles:r}=P(e),{positionClasses:u}=S(e),{roundedClasses:i,roundedStyles:m}=b(e);return g(()=>F(e.tag,{class:p(["v-sheet",a.value,o.value,t.value,c.value,u.value,i.value,e.class]),style:L([n.value,l.value,r.value,m.value,e.style])},s)),{}}});export{N as V};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{cg as a}from"./index-CacDJSDn.js";const e=a("v-spacer","div","VSpacer");export{e as V};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.workspace-download-preview[data-v-07dc6455]{display:flex;flex-direction:column}.workspace-download-preview-body[data-v-07dc6455]{flex:1;min-height:0;min-width:0;overflow:auto;padding:12px}.workspace-download-preview-image[data-v-07dc6455]{display:block;max-width:100%;max-height:100%;margin:auto;object-fit:contain}
|
|
@@ -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-CacDJSDn.js";import{_ as X}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DK6xGH2G.js";import{M as Y}from"./MarkdownContent-D4KYOn-f.js";import{W as Z,a as ee}from"./WorkspaceMediaPreview-tkpcPK82.js";import"./VSheet-B9d-Gdzq.js";import"./VSpacer--LXbKJE2.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"]))}}),de=j(le,[["__scopeId","data-v-07dc6455"]]);export{de as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.workspace-create-form[data-v-f24d3eec]{display:grid;gap:18px}.workspace-create-location[data-v-f24d3eec]{display:grid;gap:4px}.workspace-create-location span[data-v-f24d3eec]{color:rgb(var(--v-theme-on-surface),.55);font-size:12px}.workspace-create-location code[data-v-f24d3eec]{overflow-wrap:anywhere;font-size:12px}.workspace-prompt-pane[data-v-0b6d6c75]{min-width:0}.workspace-prompt-form[data-v-0b6d6c75]{display:grid;gap:18px;padding:18px}.workspace-prompt-actions[data-v-0b6d6c75]{display:flex;justify-content:flex-end}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{d as ne,x as Ne,u as re,w as Y,c as i,l as y,p as t,k as a,z as ve,O as he,P as ge,q as c,t as o,g as e,m as L,Q as ye,R as Pe,S as Se,e as R,f as n,h as S,E as ee,T as ke,I as $e,J as Te,s as $,v as K,_ as De,U as Ee,F as j,j as ie,W as _e,G as Ge,X as He,C as Ie,D as ce,H as le,M as je,L as Le,N as Ke,n as Fe,Y as we,Z as Je,$ as se,a0 as Qe,i as J,y as oe,a1 as Ce,a2 as xe,a3 as Xe,a4 as Ae,V as Ye,o as Ze}from"./index-CacDJSDn.js";import{V as qe}from"./VSelect-Dla-KtWu.js";import{_ as Oe}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DK6xGH2G.js";import{W as et,a as tt}from"./WorkspaceMediaPreview-tkpcPK82.js";import{M as at}from"./MarkdownContent-D4KYOn-f.js";import{V as ze}from"./VSheet-B9d-Gdzq.js";import{V as Ve}from"./VSpacer--LXbKJE2.js";import{V as We}from"./VTextarea-DFSNyIwH.js";import{V as lt,a as me,b as ot,c as pe}from"./VTabs-D2y6M66D.js";import"./syntax-highlight-C_fuMcwC.js";const it={key:1,class:"workspace-create-location"},st={key:2,class:"workspace-create-location"},nt=ne({__name:"WorkspaceCreateDialog",props:Te({roots:{},busy:{type:Boolean},error:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:Te(["create"],["update:modelValue"]),setup(T,{emit:C}){const l=T,m=C,u=Ne(T,"modelValue"),p=$(""),k=$(""),P=re();Y(()=>[u.value,l.roots],()=>{u.value&&(l.roots.includes(k.value)||(k.value=l.roots[0]??""))},{immediate:!0,deep:!0}),Y(u,v=>{v&&(p.value="")});const r=K(()=>{const v=k.value.replace(/[\\/]+$/,""),f=v.includes("\\")&&!v.includes("/")?"\\":"/";return p.value.trim()?`${v}${f}${p.value.trim()}`:v});function _(){!k.value||!p.value.trim()||m("create",k.value,p.value.trim())}return(v,f)=>(i(),y($e,{modelValue:u.value,"onUpdate:modelValue":f[4]||(f[4]=h=>u.value=h),width:"auto"},{default:t(()=>[a(ve,null,{default:t(()=>[a(he,{"prepend-icon":"$mdiFolderOutline"},{append:t(()=>[a(L,{icon:"$mdiClose",variant:"text",size:"small","aria-label":e(P).t("$vuetify.chatroom.common.close"),onClick:f[0]||(f[0]=h=>u.value=!1)},null,8,["aria-label"])]),default:t(()=>[a(ge,null,{default:t(()=>[c(o(e(P).t("$vuetify.chatroom.workspaces.createTitle")),1)]),_:1})]),_:1}),a(ye,{class:"workspace-create-form"},{default:t(()=>[a(Pe,{modelValue:p.value,"onUpdate:modelValue":f[1]||(f[1]=h=>p.value=h),label:e(P).t("$vuetify.chatroom.workspaces.projectName"),autofocus:"","hide-details":"auto",onKeyup:Se(_,["enter"])},null,8,["modelValue","label"]),T.roots.length>1?(i(),y(qe,{key:0,modelValue:k.value,"onUpdate:modelValue":f[2]||(f[2]=h=>k.value=h),items:T.roots,label:e(P).t("$vuetify.chatroom.workspaces.createLocation"),"hide-details":"auto"},null,8,["modelValue","items","label"])):k.value?(i(),R("div",it,[n("span",null,o(e(P).t("$vuetify.chatroom.workspaces.createLocation")),1),n("code",null,o(k.value),1)])):S("",!0),k.value?(i(),R("div",st,[n("span",null,o(e(P).t("$vuetify.chatroom.workspaces.projectPath")),1),n("code",null,o(r.value),1)])):S("",!0),T.error?(i(),y(ee,{key:3,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(T.error),1)]),_:1})):S("",!0)]),_:1}),a(ke,{class:"justify-end"},{default:t(()=>[a(L,{variant:"text",onClick:f[3]||(f[3]=h=>u.value=!1)},{default:t(()=>[c(o(e(P).t("$vuetify.chatroom.workspaces.cancel")),1)]),_:1}),a(L,{color:"primary",variant:"flat",loading:T.busy,disabled:!k.value||!p.value.trim(),onClick:_},{default:t(()=>[c(o(e(P).t("$vuetify.chatroom.workspaces.create")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),rt=De(nt,[["__scopeId","data-v-f24d3eec"]]),ut={class:"workspace-files-pane"},ct={class:"workspace-files-layout"},dt={class:"workspace-file-browser"},vt={class:"workspace-file-breadcrumbs"},ft={class:"workspace-breadcrumb-items"},mt={key:0,class:"workspace-breadcrumb-separator"},pt=["onClick"],ht={key:0,class:"workspace-file-load-more"},gt=["aria-busy"],yt={key:0,class:"workspace-preview-toolbar"},kt=["title"],$t={class:"workspace-preview-content"},_t={class:"workspace-markdown-header"},wt={key:0,class:"workspace-markdown-body"},bt={key:1,class:"workspace-markdown-source"},Ct={class:"workspace-image-stage"},xt=["src","alt"],Vt=ne({__name:"WorkspaceFilesPane",props:{root:{}},setup(T){const C=T,l=re(),m=$("preview"),u=$(!1),p=$(!1),k=Ee(()=>C.root),{entries:P,file:r,selectedPath:_,previewLoading:v,breadcrumbs:f,parentPath:h,nextOffset:z,loading:w,loadingMore:s,error:b,loadDirectory:N,loadMore:U,navigate:W,openEntry:M}=k;Y(()=>r.value?.path??null,()=>{m.value="preview"}),Y(()=>r.value?.kind==="image"?r.value.url:null,B=>{u.value=!!B,p.value=!1});const I=K(()=>P.value.find(B=>B.path===_.value&&B.type==="file"));function V(){if(!I.value)return;const B=I.value.path;je(Ke(C.root,B),Le(B)).catch(()=>{})}function G(B){return B==="file"?l.t("$vuetify.chatroom.files.file"):B==="directory"?l.t("$vuetify.chatroom.files.directory"):B==="symlink"?l.t("$vuetify.chatroom.files.symlink"):B}return(B,q)=>(i(),R("div",ut,[e(b)?(i(),y(ee,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(b)),1)]),_:1})):S("",!0),n("div",ct,[n("div",dt,[n("div",vt,[a(L,{icon:"$mdiArrowUp",size:"x-small",variant:"text",disabled:e(h)===null,"aria-label":e(l).t("$vuetify.chatroom.files.parentDirectory"),onClick:q[0]||(q[0]=O=>e(h)&&e(W)(e(h)))},null,8,["disabled","aria-label"]),n("div",ft,[(i(!0),R(j,null,ie(e(f),(O,Q)=>(i(),R(j,{key:O.path},[Q?(i(),R("span",mt,"/")):S("",!0),n("button",{type:"button",class:Fe(["workspace-breadcrumb",{active:Q===e(f).length-1}]),onClick:fe=>e(W)(O.path)},o(O.title),11,pt)],64))),128))]),a(L,{icon:"$mdiRefresh",size:"x-small",variant:"text",loading:e(w),"aria-label":e(l).t("$vuetify.chatroom.files.refresh"),onClick:q[1]||(q[1]=O=>e(N)())},null,8,["loading","aria-label"])]),a(_e,{density:"compact",border:"",rounded:"lg",class:"workspace-file-list"},{default:t(()=>[(i(!0),R(j,null,ie(e(P),O=>(i(),y(we,{key:O.path,active:e(_)===O.path,title:e(Le)(O.path),subtitle:O.type==="file"?`${G(O.type)} · ${e(Je)(O.size)}`:G(O.type),"prepend-icon":O.type==="directory"?"$mdiFolderOutline":O.type==="symlink"?"$mdiLinkVariant":"$mdiFileOutline","append-icon":O.type==="directory"?"$mdiChevronRight":void 0,onClick:Q=>e(M)(O)},null,8,["active","title","subtitle","prepend-icon","append-icon","onClick"]))),128))]),_:1}),e(z)!==null?(i(),R("div",ht,[a(L,{size:"small",variant:"text",loading:e(s),disabled:e(w),onClick:e(U)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.loadMore")),1)]),_:1},8,["loading","disabled","onClick"])])):S("",!0)]),n("div",{class:"workspace-file-preview","aria-busy":e(v)||u.value},[I.value?(i(),R("div",yt,[n("span",{class:"workspace-preview-filename mono",title:I.value.path},o(I.value.path),9,kt),a(L,{size:"small",variant:"tonal","prepend-icon":"$mdiDownloadOutline",onClick:V},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.download")),1)]),_:1})])):S("",!0),n("div",$t,[e(v)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(r)?.kind==="text"&&e(r).truncated?(i(),y(ee,{key:1,type:"warning",variant:"tonal",density:"compact",class:"workspace-preview-truncated"},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.previewTruncated")),1)]),_:1})):S("",!0),e(r)&&(e(r).kind==="pdf"||e(r).kind==="video"||e(r).kind==="audio")?(i(),y(et,{key:e(r).url,kind:e(r).kind,path:e(r).path,url:e(r).url},null,8,["kind","path","url"])):e(r)?.kind==="text"&&/\.(csv|tsv)$/i.test(e(r).path)?(i(),y(tt,{key:3,content:e(r).content,path:e(r).path,truncated:e(r).truncated},null,8,["content","path","truncated"])):e(r)?.kind==="text"&&e(Ge)(e(r).path)?(i(),y(ze,{key:4,border:"",rounded:"lg",class:"workspace-markdown-preview"},{default:t(()=>[n("div",_t,[a(He,{modelValue:m.value,"onUpdate:modelValue":q[2]||(q[2]=O=>m.value=O),mandatory:"",density:"compact",variant:"text",divided:"",class:"workspace-markdown-mode"},{default:t(()=>[a(L,{value:"preview",size:"small"},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.preview")),1)]),_:1}),a(L,{value:"source",size:"small"},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.source")),1)]),_:1})]),_:1},8,["modelValue"])]),a(Ie),m.value==="preview"?(i(),R("div",wt,[a(at,{text:e(r).content},null,8,["text"])])):(i(),R("div",bt,[a(Oe,{text:e(r).content,filename:e(r).path,toolbar:!1},null,8,["text","filename"])]))]),_:1})):e(r)?.kind==="text"?(i(),y(Oe,{key:5,text:e(r).content,filename:e(r).path,"show-download":!1},null,8,["text","filename"])):e(r)?.kind==="image"?(i(),y(ze,{key:6,border:"",rounded:"lg",class:"workspace-image-preview"},{default:t(()=>[n("div",Ct,[u.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),p.value?(i(),y(le,{key:1,icon:"$mdiAlertCircleOutline",title:e(l).t("$vuetify.chatroom.common.imageLoadFailed")},null,8,["title"])):(i(),R("img",{key:e(r).url,src:e(r).url,alt:e(r).path,decoding:"async",onLoad:q[3]||(q[3]=O=>u.value=!1),onError:q[4]||(q[4]=O=>{u.value=!1,p.value=!0})},null,40,xt))])]),_:1})):e(r)?.kind==="unsupported"?(i(),y(le,{key:7,icon:"$mdiFileQuestionOutline",title:e(l).t("$vuetify.chatroom.files.previewUnavailable"),text:e(r).path},null,8,["title","text"])):e(v)?S("",!0):(i(),y(le,{key:8,icon:"$mdiFileEyeOutline",title:e(l).t("$vuetify.chatroom.files.select"),text:e(l).t("$vuetify.chatroom.files.readOnly")},null,8,["title","text"]))])],8,gt)])]))}});function Pt(T){const C=$(null),l=$([]),m=$([]),u=$(null),p=$(null),k=$(!1),P=$(!1),r=$(null),_=$("");let v=0;const f=se(),h=se(),z=se();let w=!1;Qe(()=>{w=!0,v+=1,f.invalidate(),h.invalidate(),z.invalidate()});const s=()=>typeof T=="function"?T():String(T.value??""),b=K(()=>C.value?.changes??[]),N=K(()=>b.value.find(d=>d.path===u.value)??null),U=K(()=>b.value.filter(Be).map(d=>d.path)),W=K(()=>b.value.filter(Me).map(d=>d.path));Y(T,()=>{v+=1,f.invalidate(),h.invalidate(),z.invalidate(),r.value=null,C.value=null,l.value=[],m.value=[],u.value=null,p.value=null,M()},{immediate:!0});async function M(){if(w||r.value)return;const d=++v,A=f.begin(),F=s();k.value=!0,_.value="";try{const E=await J(`/git/status?root=${encodeURIComponent(F)}`,{signal:A.signal});if(d!==v||!f.isCurrent(A)||s()!==F)return;if(C.value=E,!E){l.value=[],m.value=[],u.value=null,p.value=null;return}if(await I(d,F,A.signal),d!==v||!f.isCurrent(A)||s()!==F)return;H(),await G()}catch(E){d===v&&f.isCurrent(A)&&s()===F&&(_.value=oe(E))}finally{d===v&&f.isCurrent(A)&&s()===F&&(k.value=!1)}}async function I(d,A,F){const E=encodeURIComponent(A),ue=F?{signal:F}:{},[X,D]=await Promise.all([J(`/git/branches?root=${E}`,ue),J(`/git/log?root=${E}&limit=20`,ue)]);d!==v||s()!==A||(l.value=X,m.value=D)}function V(d){u.value!==d&&(u.value=d,p.value=null,G())}async function G(){const d=u.value,A=s();if(!d||!C.value?.head){h.invalidate(),P.value=!1,p.value=null;return}const F=h.begin();P.value=!0;try{const E=await J(`/git/diff?root=${encodeURIComponent(A)}&path=${encodeURIComponent(d)}`,{signal:F.signal});h.isCurrent(F)&&s()===A&&u.value===d&&(p.value=E)}catch(E){h.isCurrent(F)&&s()===A&&(p.value=null,_.value=oe(E))}finally{h.isCurrent(F)&&s()===A&&(P.value=!1)}}async function B(d,A,F,E,ue=6e4){if(w||r.value)return!1;const X=s(),D=++v,x=z.begin();f.invalidate(),h.invalidate(),k.value=!1,P.value=!1,r.value=d,_.value="";try{const g=await J(A,{method:F,body:JSON.stringify({root:X,...E}),timeoutMs:ue,signal:x.signal});return w||D!==v||!z.isCurrent(x)||s()!==X||(C.value=g,H(),await I(D,X,x.signal),w||D!==v||!z.isCurrent(x)||s()!==X)?!1:(await G(),!0)}catch(g){return!w&&D===v&&z.isCurrent(x)&&s()===X&&(_.value=oe(g)),!1}finally{!w&&D===v&&z.isCurrent(x)&&s()===X&&(r.value=null)}}async function q(d){return d.length?B("stage","/git/stage","POST",{paths:d}):!1}async function O(d){return d.length?B("unstage","/git/unstage","POST",{paths:d}):!1}function Q(d){return B("restore","/git/restore","POST",{path:d})}function fe(d){return B("commit","/git/commit","POST",{message:d})}function be(d){return B("branch","/git/branches","POST",{name:d})}function te(d){return B("branch","/git/switch","POST",{name:d})}function Z(d){return B("branch","/git/branches","DELETE",{name:d})}function ae(d){return B(d,`/git/${d}`,"POST",{},5*6e4)}function H(){b.value.some(d=>d.path===u.value)||(u.value=b.value[0]?.path??null)}return{status:C,branches:l,commits:m,selectedPath:u,selectPath:V,diff:p,loading:k,diffLoading:P,busy:r,error:_,changes:b,selectedChange:N,stagedPaths:U,unstagedPaths:W,load:M,stage:q,unstage:O,restore:Q,commit:fe,createBranch:be,switchBranch:te,deleteBranch:Z,remote:ae,isStaged:Be,isUnstaged:Me,statusCode:St}}function Be(T){return T.indexStatus!==" "&&T.indexStatus!=="?"}function Me(T){return T.indexStatus==="?"||T.workingTreeStatus!==" "&&T.workingTreeStatus!=="?"}function St(T){return`${T.indexStatus}${T.workingTreeStatus}`.replaceAll(" ","·")}const Rt={class:"git-diff-viewer"},Tt={class:"git-diff-content"},Lt={class:"git-diff-line-number"},Ot={class:"git-diff-line-number"},zt={class:"git-diff-line"},Wt={key:0,class:"git-diff-expand"},Bt={key:1},Ue=500,Mt=500,de=2500,Ut=ne({__name:"GitDiffViewer",props:{text:{}},setup(T){const C=T,l=re(),m=$(Ue);Y(()=>C.text,()=>{m.value=Ue});const u=K(()=>f(C.text)),p=K(()=>v(C.text,Math.min(m.value,de))),k=K(()=>Math.max(0,u.value-p.value.length)),P=K(()=>p.value.length<Math.min(u.value,de)),r=K(()=>u.value>de&&p.value.length>=de);function _(){m.value=Math.min(de,m.value+Mt)}function v(z,w){const s=[],b=new Map;let N=0,U=0,W=!1,M="header";const I=(V,G,B,q)=>{const O=M+":"+G+":"+(B??"-")+":"+(q??"-")+":"+h(V),Q=b.get(O)??0;b.set(O,Q+1),s.push({key:O+":"+Q,text:V,kind:G,oldLine:B,newLine:q})};for(const V of z.split(`
|
|
2
|
-
`,w)){const G=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(V);if(G){N=Number(G[1]),U=Number(G[2]),W=!0,M=V,I(V,"hunk",null,null);continue}if(!W||V.startsWith("diff --git ")||V.startsWith("index ")||V.startsWith("--- ")||V.startsWith("+++ ")||V.startsWith("new file mode ")||V.startsWith("deleted file mode ")||V.startsWith("Binary files ")||V.startsWith("GIT binary patch")||V.startsWith("\\ No newline")){V.startsWith("diff --git ")&&(M=V),I(V,"meta",null,null);continue}V.startsWith("+")?(I(V,"add",null,U),U+=1):V.startsWith("-")?(I(V,"delete",N,null),N+=1):(I(V,"context",N,U),N+=1,U+=1)}return s}function f(z){if(!z)return 1;let w=1;for(let s=0;s<z.length;s+=1)z.charCodeAt(s)===10&&(w+=1);return w}function h(z){let w=2166136261;for(let s=0;s<z.length;s+=1)w^=z.charCodeAt(s),w=Math.imul(w,16777619);return(w>>>0).toString(36)}return(z,w)=>(i(),R("div",Rt,[n("div",Tt,[(i(!0),R(j,null,ie(p.value,s=>(i(),R("div",{key:s.key,class:Fe(["git-diff-row",`git-diff-row-${s.kind}`])},[n("span",Lt,o(s.oldLine??""),1),n("span",Ot,o(s.newLine??""),1),n("code",zt,o(s.text),1)],2))),128))]),k.value?(i(),R("div",Wt,[n("span",null,o(e(l).t("$vuetify.chatroom.git.diffRowsHidden",String(k.value))),1),P.value?(i(),y(L,{key:0,size:"small",variant:"text",onClick:_},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.showMoreDiff")),1)]),_:1})):r.value?(i(),R("span",Bt,o(e(l).t("$vuetify.chatroom.git.diffRenderLimit")),1)):S("",!0)])):S("",!0)]))}}),Dt={class:"workspace-git-pane"},It={class:"git-toolbar"},Ft={class:"git-facts"},At={class:"mono"},qt={class:"mono"},Nt={class:"mono"},Et={key:0},Gt={class:"git-toolbar-actions"},Ht={class:"git-section-header"},jt={class:"git-section-actions"},Kt={key:0,class:"git-workbench"},Jt={class:"git-change-code mono"},Qt={class:"git-diff-pane"},Xt={class:"git-file-toolbar"},Yt={class:"mono git-selected-path"},Zt={class:"git-file-actions"},ea={class:"git-commit-bar"},ta={class:"git-history"},aa={class:"git-section-header"},la={class:"git-commit-hash mono"},oa={class:"git-new-branch"},ia={class:"mono mt-2 text-break"},sa={class:"mono mt-2 text-break"},na=ne({__name:"WorkspaceGitPane",props:{root:{}},setup(T){const C=T,l=re(),m=Pt(()=>C.root),{status:u,branches:p,commits:k,selectedPath:P,selectPath:r,diff:_,loading:v,diffLoading:f,busy:h,error:z,changes:w,selectedChange:s,stagedPaths:b,unstagedPaths:N,load:U,stage:W,unstage:M,restore:I,commit:V,createBranch:G,switchBranch:B,deleteBranch:q,remote:O,isStaged:Q,isUnstaged:fe,statusCode:be}=m,te=$(""),Z=$(!1),ae=$(""),H=$(null),d=$(null);Y(()=>C.root,()=>{te.value="",Z.value=!1,ae.value="",H.value=null,d.value=null});async function A(){const D=H.value;D&&await I(D.path)&&(H.value=null)}async function F(){const D=te.value.trim();D&&await V(D)&&(te.value="")}async function E(){const D=ae.value.trim();D&&await G(D)&&(ae.value="",Z.value=!1)}async function ue(D){D.current||await B(D.name)&&(Z.value=!1)}async function X(){const D=d.value;D&&await q(D.name)&&(d.value=null)}return(D,x)=>(i(),R("div",Dt,[e(v)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(z)?(i(),y(ee,{key:1,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(z)),1)]),_:1})):S("",!0),!e(v)&&!e(u)?(i(),y(le,{key:2,icon:"$mdiSourceBranch",title:e(l).t("$vuetify.chatroom.git.notRepository")},null,8,["title"])):e(u)?(i(),R(j,{key:3},[n("div",It,[n("div",Ft,[n("div",null,[n("span",null,o(e(l).t("$vuetify.chatroom.git.branch")),1),n("strong",At,o(e(u).branch??"—"),1)]),n("div",null,[n("span",null,o(e(l).t("$vuetify.chatroom.git.head")),1),n("strong",qt,o(e(u).head?.slice(0,12)??"—"),1)]),n("div",null,[n("span",null,o(e(l).t("$vuetify.chatroom.git.upstream")),1),n("strong",Nt,o(e(u).upstream??"—"),1)]),e(u).upstream?(i(),R("div",Et,[n("span",null,o(e(l).t("$vuetify.chatroom.git.sync")),1),n("strong",null,"↑ "+o(e(u).ahead)+" · ↓ "+o(e(u).behind),1)])):S("",!0)]),n("div",Gt,[a(L,{icon:"$mdiRefresh",size:"small",variant:"text",loading:e(v),disabled:e(h)!==null,"aria-label":e(l).t("$vuetify.chatroom.git.refresh"),onClick:e(U)},null,8,["loading","disabled","aria-label","onClick"]),a(L,{"prepend-icon":"$mdiSourceBranch",size:"small",variant:"tonal",onClick:x[0]||(x[0]=g=>Z.value=!0)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.branches")),1)]),_:1}),a(L,{size:"small",variant:"text",loading:e(h)==="fetch",onClick:x[1]||(x[1]=g=>e(O)("fetch"))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.fetch")),1)]),_:1},8,["loading"]),a(L,{size:"small",variant:"text",disabled:!e(u).upstream,loading:e(h)==="pull",onClick:x[2]||(x[2]=g=>e(O)("pull"))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.pull")),1)]),_:1},8,["disabled","loading"]),a(L,{size:"small",variant:"text",loading:e(h)==="push",onClick:x[3]||(x[3]=g=>e(O)("push"))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.push")),1)]),_:1},8,["loading"])])]),n("div",Ht,[n("div",null,[n("strong",null,o(e(l).t("$vuetify.chatroom.git.changes")),1),n("span",null,o(e(w).length),1)]),n("div",jt,[a(L,{size:"small",variant:"text",disabled:!e(N).length,loading:e(h)==="stage",onClick:x[4]||(x[4]=g=>e(W)(e(N)))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.stageAll")),1)]),_:1},8,["disabled","loading"]),a(L,{size:"small",variant:"text",disabled:!e(b).length,loading:e(h)==="unstage",onClick:x[5]||(x[5]=g=>e(M)(e(b)))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.unstageAll")),1)]),_:1},8,["disabled","loading"])])]),e(w).length?(i(),R("div",Kt,[a(_e,{density:"compact",class:"git-change-list"},{default:t(()=>[(i(!0),R(j,null,ie(e(w),g=>(i(),y(we,{key:g.path,active:e(P)===g.path,onClick:Re=>e(r)(g.path)},{prepend:t(()=>[n("span",Jt,o(e(be)(g)),1)]),default:t(()=>[a(Ce,{class:"mono"},{default:t(()=>[c(o(g.path),1)]),_:2},1024),g.originalPath?(i(),y(xe,{key:0,class:"mono"},{default:t(()=>[c(o(g.originalPath)+" → "+o(g.path),1)]),_:2},1024)):S("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1}),n("div",Qt,[e(s)?(i(),R(j,{key:0},[n("div",Xt,[n("div",Yt,o(e(s).path),1),n("div",Zt,[e(fe)(e(s))?(i(),y(L,{key:0,size:"small",variant:"text",loading:e(h)==="stage",onClick:x[6]||(x[6]=g=>e(W)([e(s).path]))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.stage")),1)]),_:1},8,["loading"])):S("",!0),e(Q)(e(s))?(i(),y(L,{key:1,size:"small",variant:"text",loading:e(h)==="unstage",onClick:x[7]||(x[7]=g=>e(M)([e(s).path]))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.unstage")),1)]),_:1},8,["loading"])):S("",!0),a(L,{color:"error",size:"small",variant:"text",disabled:!e(u).head&&e(s).kind!=="untracked",onClick:x[8]||(x[8]=g=>H.value=e(s))},{default:t(()=>[c(o(e(s).kind==="untracked"?e(l).t("$vuetify.chatroom.git.deleteFile"):e(l).t("$vuetify.chatroom.git.restore")),1)]),_:1},8,["disabled"])])]),e(f)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(_)?.truncated?(i(),y(ee,{key:1,type:"info",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.diffTruncated")),1)]),_:1})):S("",!0),e(_)?.diff?(i(),y(Ut,{key:2,text:e(_).diff},null,8,["text"])):e(f)?S("",!0):(i(),y(le,{key:3,icon:"$mdiFileCompare",title:e(u).head?e(l).t("$vuetify.chatroom.git.noDiff"):e(l).t("$vuetify.chatroom.git.noHead")},null,8,["title"]))],64)):S("",!0)])])):(i(),y(le,{key:1,icon:"$mdiCheckCircleOutline",title:e(l).t("$vuetify.chatroom.git.clean")},null,8,["title"])),n("div",ea,[a(Pe,{modelValue:te.value,"onUpdate:modelValue":x[9]||(x[9]=g=>te.value=g),label:e(l).t("$vuetify.chatroom.git.commitMessage"),density:"compact",variant:"outlined","hide-details":"",disabled:!e(b).length,onKeyup:Se(F,["enter"])},null,8,["modelValue","label","disabled"]),a(L,{color:"primary",variant:"flat",disabled:!e(b).length||!te.value.trim(),loading:e(h)==="commit",onClick:F},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.commit")),1)]),_:1},8,["disabled","loading"])]),n("div",ta,[n("div",aa,[n("strong",null,o(e(l).t("$vuetify.chatroom.git.recentCommits")),1)]),e(k).length?(i(),y(_e,{key:0,density:"compact"},{default:t(()=>[(i(!0),R(j,null,ie(e(k),g=>(i(),y(we,{key:g.hash},{prepend:t(()=>[n("span",la,o(g.shortHash),1)]),default:t(()=>[a(Ce,null,{default:t(()=>[c(o(g.subject),1)]),_:2},1024),a(xe,null,{default:t(()=>[c(o(g.author)+" · "+o(new Date(g.date).toLocaleString(e(Xe)(e(l).current.value))),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):S("",!0)])],64)):S("",!0),a($e,{modelValue:Z.value,"onUpdate:modelValue":x[12]||(x[12]=g=>Z.value=g),width:"auto","max-width":"42rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(he,{"prepend-icon":"$mdiSourceBranch"},{default:t(()=>[a(ge,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.branches")),1)]),_:1})]),_:1}),a(ye,null,{default:t(()=>[n("div",oa,[a(Pe,{modelValue:ae.value,"onUpdate:modelValue":x[10]||(x[10]=g=>ae.value=g),label:e(l).t("$vuetify.chatroom.git.newBranch"),density:"compact",variant:"outlined","hide-details":"",onKeyup:Se(E,["enter"])},null,8,["modelValue","label"]),a(L,{color:"primary",variant:"flat",disabled:!ae.value.trim(),loading:e(h)==="branch",onClick:E},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.create")),1)]),_:1},8,["disabled","loading"])]),a(_e,{class:"mt-3",density:"compact",border:"",rounded:"lg"},{default:t(()=>[(i(!0),R(j,null,ie(e(p),g=>(i(),y(we,{key:g.name},{append:t(()=>[g.current?(i(),y(Ae,{key:0,size:"x-small",variant:"tonal"},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.current")),1)]),_:1})):(i(),R(j,{key:1},[a(L,{size:"x-small",variant:"text",onClick:Re=>ue(g)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.switch")),1)]),_:1},8,["onClick"]),a(L,{icon:"$mdiDeleteOutline",size:"x-small",color:"error",variant:"text","aria-label":e(l).t("$vuetify.chatroom.git.deleteBranch"),onClick:Re=>d.value=g},null,8,["aria-label","onClick"])],64))]),default:t(()=>[a(Ce,{class:"mono"},{default:t(()=>[c(o(g.name),1)]),_:2},1024),g.upstream?(i(),y(xe,{key:0,class:"mono"},{default:t(()=>[c(o(g.upstream),1)]),_:2},1024)):S("",!0)]),_:2},1024))),128))]),_:1})]),_:1}),a(ke,null,{default:t(()=>[a(Ve),a(L,{variant:"text",onClick:x[11]||(x[11]=g=>Z.value=!1)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.common.close")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),a($e,{"model-value":H.value!==null,width:"auto","max-width":"32rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(he,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:t(()=>[a(ge,null,{default:t(()=>[c(o(H.value?.kind==="untracked"?e(l).t("$vuetify.chatroom.git.deleteTitle"):e(l).t("$vuetify.chatroom.git.restoreTitle")),1)]),_:1})]),_:1}),a(ye,null,{default:t(()=>[c(o(H.value?.kind==="untracked"?e(l).t("$vuetify.chatroom.git.deleteDescription"):e(l).t("$vuetify.chatroom.git.restoreDescription"))+" ",1),n("div",ia,o(H.value?.path),1)]),_:1}),a(ke,null,{default:t(()=>[a(Ve),a(L,{variant:"text",onClick:x[13]||(x[13]=g=>H.value=null)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),a(L,{color:"error",variant:"flat",loading:e(h)==="restore",onClick:A},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]),a($e,{"model-value":d.value!==null,width:"auto","max-width":"32rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(he,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:t(()=>[a(ge,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.deleteBranchTitle")),1)]),_:1})]),_:1}),a(ye,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.deleteBranchDescription"))+" ",1),n("div",sa,o(d.value?.name),1)]),_:1}),a(ke,null,{default:t(()=>[a(Ve),a(L,{variant:"text",onClick:x[14]||(x[14]=g=>d.value=null)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),a(L,{color:"error",variant:"flat",loading:e(h)==="branch",onClick:X},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"])]))}}),ra={class:"workspace-prompt-pane"},ua={class:"workspace-prompt-form"},ca={class:"workspace-prompt-actions"},da=".chatroom/summary.md",va=".chatroom/prompt.md",fa=ne({__name:"WorkspacePromptPane",props:{root:{}},setup(T){const C=T,l=$(""),m=$(""),u=$(""),p=$(""),k=$(!1),P=$(!1),r=$(!1),_=$(""),v=$(null),f=re(),h=se(),z=se(),w=K(()=>v.value===C.root&&(l.value!==u.value||m.value!==p.value));Y(()=>C.root,()=>{h.invalidate(),z.invalidate(),l.value="",m.value="",u.value="",p.value="",v.value=null,P.value=!1,r.value=!1,_.value="",s()},{immediate:!0});async function s(){const U=h.begin(),W=C.root;k.value=!0,_.value="",r.value=!1;try{const M=await J(`/workspace?root=${encodeURIComponent(W)}`,{signal:U.signal});if(!h.isCurrent(U)||C.root!==W)return;l.value=M.summary??"",m.value=M.presetPrompt??"",u.value=l.value,p.value=m.value,v.value=W}catch(M){h.isCurrent(U)&&(_.value=oe(M))}finally{h.isCurrent(U)&&(k.value=!1)}}async function b(U,W,M,I){await J("/workspace/file",{method:"PUT",body:JSON.stringify({root:U,path:W,content:M}),signal:I})}async function N(){if(!w.value||P.value||v.value!==C.root)return;const U=z.begin(),W=C.root,M=l.value,I=m.value;P.value=!0,_.value="",r.value=!1;try{const V=[];if(M!==u.value&&V.push(b(W,da,M,U.signal)),I!==p.value&&V.push(b(W,va,I,U.signal)),await Promise.all(V),!z.isCurrent(U)||C.root!==W)return;u.value=M,p.value=I,r.value=!0}catch(V){z.isCurrent(U)&&C.root===W&&(_.value=oe(V))}finally{z.isCurrent(U)&&C.root===W&&(P.value=!1)}}return(U,W)=>(i(),R("div",ra,[k.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),n("div",ua,[a(We,{modelValue:l.value,"onUpdate:modelValue":W[0]||(W[0]=M=>l.value=M),label:e(f).t("$vuetify.chatroom.workspaces.summary"),rows:"3","auto-grow":"",maxlength:"2048",counter:"",disabled:k.value},null,8,["modelValue","label","disabled"]),a(We,{modelValue:m.value,"onUpdate:modelValue":W[1]||(W[1]=M=>m.value=M),label:e(f).t("$vuetify.chatroom.workspaces.presetPrompt"),rows:"10","auto-grow":"",maxlength:"16384",counter:"",disabled:k.value},null,8,["modelValue","label","disabled"]),_.value?(i(),y(ee,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(_.value),1)]),_:1})):r.value?(i(),y(ee,{key:1,type:"success",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(f).t("$vuetify.chatroom.workspaces.saved")),1)]),_:1})):S("",!0),n("div",ca,[a(L,{color:"primary",variant:"flat",loading:P.value,disabled:k.value||!w.value,onClick:N},{default:t(()=>[c(o(e(f).t("$vuetify.chatroom.workspaces.save")),1)]),_:1},8,["loading","disabled"])])])]))}}),ma=De(fa,[["__scopeId","data-v-0b6d6c75"]]),pa={class:"workspace-skills-pane"},ha={key:2,class:"workspace-skill-grid"},ga={class:"workspace-skill-header"},ya={class:"workspace-skill-title"},ka={class:"workspace-skill-description"},$a={class:"workspace-skill-path"},_a=ne({__name:"WorkspaceSkillsPane",props:{root:{}},setup(T){const C=T,l=$(null),m=$(!1),u=$(""),p=re(),k=se();Y(()=>C.root,()=>{l.value=null,P()},{immediate:!0});async function P(){const _=k.begin(),v=C.root;m.value=!0,u.value="";try{const f=await J(`/workspace?root=${encodeURIComponent(v)}`,{signal:_.signal});if(!k.isCurrent(_)||C.root!==v)return;l.value=f}catch(f){k.isCurrent(_)&&(u.value=oe(f))}finally{k.isCurrent(_)&&(m.value=!1)}}function r(_){return _.path.startsWith(".claude/skills/")?p.t("$vuetify.chatroom.skills.sources.claude"):_.path.startsWith(".chatroom/skills/")?p.t("$vuetify.chatroom.skills.sources.chatRoom"):p.t("$vuetify.chatroom.skills.sources.agent")}return(_,v)=>(i(),R("div",pa,[m.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),u.value?(i(),y(ee,{key:1,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(u.value),1)]),_:1})):S("",!0),l.value?.skills.length?(i(),R("div",ha,[(i(!0),R(j,null,ie(l.value.skills,f=>(i(),R("div",{key:f.path,class:"workspace-skill-card"},[n("div",ga,[n("div",ya,[a(Ye,{icon:"$mdiPuzzleOutline",size:"18"}),n("strong",null,o(f.name),1)]),a(Ae,{size:"x-small",variant:"tonal"},{default:t(()=>[c(o(r(f)),1)]),_:2},1024)]),n("div",ka,o(f.description||e(p).t("$vuetify.chatroom.skills.noDescription")),1),n("div",$a,o(f.path),1)]))),128))])):!m.value&&!u.value?(i(),y(le,{key:3,icon:"$mdiPuzzleOutline",title:e(p).t("$vuetify.chatroom.skills.empty")},null,8,["title"])):S("",!0)]))}}),wa={class:"workspace-layout"},ba={class:"workspace-header"},Ca={class:"workspace-identity min-w-0"},xa={class:"workspace-meta-row"},Va=["title"],Pa={class:"workspace-actions"},Da=ne({__name:"WorkspacesView",setup(T){const C=$([]),l=$([]),m=$(window.localStorage.getItem("chatroom.workspace.root")),u=$("git"),p=$(!1),k=$(""),P=$(!1),r=$(!1),_=$(""),v=re(),f=se();Ze(()=>{h()}),Y(m,w=>{w?window.localStorage.setItem("chatroom.workspace.root",w):window.localStorage.removeItem("chatroom.workspace.root")});async function h(){const w=f.begin();p.value=!0,k.value="";try{const[s,b]=await Promise.all([J("/workspaces",{signal:w.signal}),J("/workspace/roots",{signal:w.signal})]);if(!f.isCurrent(w))return;C.value=s,l.value=b,C.value.some(N=>N.root===m.value)||(m.value=C.value[0]?.root??null)}catch(s){f.isCurrent(w)&&(k.value=oe(s))}finally{f.isCurrent(w)&&(p.value=!1)}}async function z(w,s){if(!r.value){r.value=!0,_.value="";try{const b=await J("/workspaces",{method:"POST",body:JSON.stringify({parent:w,name:s})});await h(),m.value=b.root,P.value=!1}catch(b){_.value=oe(b)}finally{r.value=!1}}}return(w,s)=>(i(),R("div",wa,[a(ve,{class:"workspace-detail panel-card"},{default:t(()=>[n("div",ba,[n("div",Ca,[a(qe,{modelValue:m.value,"onUpdate:modelValue":s[0]||(s[0]=b=>m.value=b),items:C.value.map(b=>({title:b.name,value:b.root})),loading:p.value,"aria-label":e(v).t("$vuetify.chatroom.workspaces.workspace"),density:"compact",variant:"outlined","hide-details":"","prepend-inner-icon":"$mdiFolderOutline",class:"workspace-switcher"},null,8,["modelValue","items","loading","aria-label"]),n("div",xa,[m.value?(i(),R("div",{key:0,class:"workspace-path",title:m.value},o(m.value),9,Va)):S("",!0),n("div",Pa,[a(L,{icon:"$mdiPlus",size:"small",variant:"text","aria-label":e(v).t("$vuetify.chatroom.workspaces.createTitle"),onClick:s[1]||(s[1]=b=>{_.value="",P.value=!0})},null,8,["aria-label"]),a(L,{icon:"$mdiRefresh",size:"small",variant:"text",loading:p.value,"aria-label":e(v).t("$vuetify.chatroom.workspaces.refresh"),onClick:h},null,8,["loading","aria-label"])])])])]),k.value?(i(),y(ee,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(k.value),1)]),_:1})):S("",!0),m.value?(i(),R(j,{key:1},[a(lt,{modelValue:u.value,"onUpdate:modelValue":s[2]||(s[2]=b=>u.value=b),density:"compact",class:"workspace-tabs"},{default:t(()=>[a(me,{value:"git"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.git")),1)]),_:1}),a(me,{value:"prompt"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.prompt")),1)]),_:1}),a(me,{value:"files"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.files")),1)]),_:1}),a(me,{value:"skills"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.skills")),1)]),_:1})]),_:1},8,["modelValue"]),a(Ie),a(ot,{modelValue:u.value,"onUpdate:modelValue":s[3]||(s[3]=b=>u.value=b),touch:!1},{default:t(()=>[a(pe,{value:"git"},{default:t(()=>[a(na,{root:m.value},null,8,["root"])]),_:1}),a(pe,{value:"prompt"},{default:t(()=>[a(ma,{root:m.value},null,8,["root"])]),_:1}),a(pe,{value:"files"},{default:t(()=>[a(Vt,{root:m.value},null,8,["root"])]),_:1}),a(pe,{value:"skills"},{default:t(()=>[a(_a,{root:m.value},null,8,["root"])]),_:1})]),_:1},8,["modelValue"])],64)):p.value?S("",!0):(i(),y(le,{key:2,icon:"$mdiFolderOutline",title:e(v).t("$vuetify.chatroom.workspaces.empty")},null,8,["title"]))]),_:1}),a(rt,{modelValue:P.value,"onUpdate:modelValue":s[4]||(s[4]=b=>P.value=b),roots:l.value,busy:r.value,error:_.value,onCreate:z},null,8,["modelValue","roots","busy","error"])]))}});export{Da as default};
|