@zhanguym/chatroom 1.1.0 → 1.2.0-beta.0
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/core/runtime/child-environment.js +3 -2
- package/dist/infrastructure/http/http-server.js +7 -1
- 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/cloud/tunnel-client.d.ts +2 -84
- package/dist/plugins/cloud/tunnel-client.js +2 -426
- package/dist/plugins/cloud/v2/stream.d.ts +48 -0
- package/dist/plugins/cloud/v2/stream.js +156 -0
- package/dist/plugins/cloud/v2/tunnel-client.d.ts +45 -0
- package/dist/plugins/cloud/v2/tunnel-client.js +426 -0
- package/dist/plugins/process/backend.d.ts +3 -0
- package/dist/plugins/process/infrastructure/pty-process-backend.d.ts +2 -0
- package/dist/plugins/process/infrastructure/pty-process-backend.js +5 -2
- package/dist/plugins/process/infrastructure/terminal-shell.d.ts +4 -0
- package/dist/plugins/process/infrastructure/terminal-shell.js +10 -0
- package/dist/plugins/process/process-supervisor.d.ts +6 -0
- package/dist/plugins/process/process-supervisor.js +26 -0
- package/dist/plugins/process/types.d.ts +2 -0
- package/dist/plugins/web/http/api-router.d.ts +2 -1
- package/dist/plugins/web/http/api-router.js +5 -1
- package/dist/plugins/web/http/logs-api-router.js +2 -2
- package/dist/plugins/web/http/process-api-router.js +48 -0
- package/dist/plugins/web/http/rtc-api-router.d.ts +4 -0
- package/dist/plugins/web/http/rtc-api-router.js +316 -0
- package/dist/plugins/web/http/runtime-api-router.js +2 -2
- package/dist/plugins/web/http/terminal-api-router.d.ts +4 -0
- package/dist/plugins/web/http/terminal-api-router.js +132 -0
- package/dist/web/assets/{AgentView-BGLIBoxF.css → AgentView-CMxIn3KB.css} +1 -1
- package/dist/web/assets/AgentView-DQr-5aLK.js +4 -0
- package/dist/web/assets/CloudView-B2VBut3O.js +1 -0
- package/dist/web/assets/CloudView-Bgp5G965.css +1 -0
- package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js +3 -0
- package/dist/web/assets/ComputerView-CIFF1zUb.js +1 -0
- package/dist/web/assets/{MarkdownContent-CkjR5fs7.js → MarkdownContent-DRZp88_G.js} +2 -2
- package/dist/web/assets/McpToolsView-CSEru3ck.js +1 -0
- package/dist/web/assets/OperationsView-B_Nv1Mgi.js +4 -0
- package/dist/web/assets/ProcessesView-5K8wNiPC.js +5 -0
- package/dist/web/assets/ProcessesView-BmNdR3C0.css +1 -0
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-CQEj-YRM.js +1 -0
- package/dist/web/assets/SystemLogsView-CBINILPo.js +1 -0
- package/dist/web/assets/SystemLogsView-COvwamo5.css +1 -0
- package/dist/web/assets/TerminalView-DNaKG3II.css +1 -0
- package/dist/web/assets/TerminalView-Dvyy2GKF.js +16 -0
- package/dist/web/assets/VSelect-CBX17QQj.js +1 -0
- package/dist/web/assets/VSpacer-9N_Ffoce.js +1 -0
- package/dist/web/assets/VSwitch-CvQYU48e.js +1 -0
- package/dist/web/assets/VTabs-CftrBFlF.js +1 -0
- package/dist/web/assets/VTextarea-Dcui00tn.js +1 -0
- package/dist/web/assets/WorkspaceDownloadPreview-DJKSNaZ_.css +1 -0
- package/dist/web/assets/WorkspaceDownloadPreview-DzM2p_xl.js +1 -0
- package/dist/web/assets/WorkspaceMediaPreview-ctIyG3Ru.js +4 -0
- package/dist/web/assets/{WorkspacePdfPreview-CO-ZtDHG.js → WorkspacePdfPreview-CeizxEAH.js} +2 -2
- package/dist/web/assets/WorkspacesView-DcmqHGvr.js +2 -0
- package/dist/web/assets/index-BRI_re-n.css +1 -0
- package/dist/web/assets/index-DTyxBHlJ.js +19 -0
- package/dist/web/assets/{useMasterDetailFocus-D1mQ8Qjk.js → useMasterDetailFocus-DR5N95_A.js} +1 -1
- package/dist/web/assets/useOperationLabels-Dou4m0ac.js +1 -0
- package/dist/web/index.html +2 -2
- package/dist/web/transport-sw.js +411 -0
- package/package.json +9 -4
- package/scripts/ensure-pty-helper.mjs +28 -0
- package/dist/web/assets/AgentView-Dd6zCbr-.js +0 -4
- package/dist/web/assets/CloudView-DVVvwuWW.css +0 -1
- package/dist/web/assets/CloudView-DquY1HDZ.js +0 -1
- package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-ekOImmBP.js +0 -3
- package/dist/web/assets/ComputerView-RD2gMxJZ.js +0 -1
- package/dist/web/assets/McpToolsView-Dg2-iaDP.js +0 -1
- package/dist/web/assets/OperationsView-C8yCX7WZ.js +0 -4
- package/dist/web/assets/ProcessesView-C834LC-f.js +0 -4
- package/dist/web/assets/ProcessesView-Ce6iVwjA.css +0 -1
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-By2gilBw.js +0 -1
- package/dist/web/assets/SystemLogsView-B6KcZv1J.js +0 -1
- package/dist/web/assets/SystemLogsView-CofP4Jvi.css +0 -1
- package/dist/web/assets/VSelect-BtAJX-XJ.js +0 -1
- package/dist/web/assets/VSpacer-M8bpkhTH.js +0 -1
- package/dist/web/assets/VSwitch-C0VTnwLJ.js +0 -1
- package/dist/web/assets/VTabs-g61mykvY.js +0 -1
- package/dist/web/assets/VTextarea-CRYQYRqg.js +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-BrESF-82.js +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-DnxhH5Q7.css +0 -1
- package/dist/web/assets/WorkspaceMediaPreview-HYajqgZ3.js +0 -4
- package/dist/web/assets/WorkspacesView-BJCnzBLj.js +0 -2
- package/dist/web/assets/_plugin-vue_export-helper-DlAUqK2U.js +0 -1
- package/dist/web/assets/index-CZ-4tJlF.css +0 -1
- package/dist/web/assets/index-u-aADQP-.js +0 -19
- package/dist/web/assets/useOperationLabels-BjPIVnJW.js +0 -1
- package/dist/web/assets/utils-rtPwWNel.js +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
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-DTyxBHlJ.js";import{V as qe}from"./VSelect-CBX17QQj.js";import{_ as Oe,V as ze}from"./CodeViewer.vue_vue_type_script_setup_true_lang-DkN8x_6L.js";import{W as et,a as tt}from"./WorkspaceMediaPreview-ctIyG3Ru.js";import{M as at}from"./MarkdownContent-DRZp88_G.js";import{V as Ve}from"./VSpacer-9N_Ffoce.js";import{V as We}from"./VTextarea-Dcui00tn.js";import{V as lt,a as me,b as ot,c as pe}from"./VTabs-CftrBFlF.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"},Ua=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{Ua as default};
|