@zhanguym/chatroom 1.1.0-beta.1 → 1.1.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.
Files changed (36) hide show
  1. package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
  2. package/dist/native/windows/chatroom-computer-helper.exe +0 -0
  3. package/dist/web/assets/{AgentView-BwL3S7sb.js → AgentView-Dd6zCbr-.js} +1 -1
  4. package/dist/web/assets/{CloudView-DH4sOXJr.js → CloudView-DquY1HDZ.js} +1 -1
  5. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-ekOImmBP.js +3 -0
  6. package/dist/web/assets/ComputerView-RD2gMxJZ.js +1 -0
  7. package/dist/web/assets/{MarkdownContent-AdAmmDn5.js → MarkdownContent-CkjR5fs7.js} +1 -1
  8. package/dist/web/assets/{McpToolsView-CPaWUG9h.js → McpToolsView-Dg2-iaDP.js} +1 -1
  9. package/dist/web/assets/{OperationsView-D2FtLkHn.js → OperationsView-C8yCX7WZ.js} +2 -2
  10. package/dist/web/assets/{ProcessesView-BHOsaM2H.js → ProcessesView-C834LC-f.js} +2 -2
  11. package/dist/web/assets/{StateChip.vue_vue_type_script_setup_true_lang-iW1SYlX_.js → StateChip.vue_vue_type_script_setup_true_lang-By2gilBw.js} +1 -1
  12. package/dist/web/assets/{SystemLogsView-By5ijObd.js → SystemLogsView-B6KcZv1J.js} +1 -1
  13. package/dist/web/assets/{VSelect-CLnwhyWJ.js → VSelect-BtAJX-XJ.js} +1 -1
  14. package/dist/web/assets/VSpacer-M8bpkhTH.js +1 -0
  15. package/dist/web/assets/VSwitch-C0VTnwLJ.js +1 -0
  16. package/dist/web/assets/VTabs-g61mykvY.js +1 -0
  17. package/dist/web/assets/VTextarea-CRYQYRqg.js +1 -0
  18. package/dist/web/assets/{WorkspaceDownloadPreview-BjuqUdB9.js → WorkspaceDownloadPreview-BrESF-82.js} +1 -1
  19. package/dist/web/assets/{WorkspaceMediaPreview-D-igEnka.css → WorkspaceMediaPreview-CwtP9xWT.css} +1 -1
  20. package/dist/web/assets/WorkspaceMediaPreview-HYajqgZ3.js +4 -0
  21. package/dist/web/assets/WorkspacePdfPreview-BtZkUHzV.css +1 -0
  22. package/dist/web/assets/WorkspacePdfPreview-CO-ZtDHG.js +55 -0
  23. package/dist/web/assets/{WorkspacesView-DHl28eWf.js → WorkspacesView-BJCnzBLj.js} +1 -1
  24. package/dist/web/assets/{index-BzRlodie.js → index-u-aADQP-.js} +2 -2
  25. package/dist/web/assets/pdf.worker.min-CjEcRF4W.mjs +28 -0
  26. package/dist/web/assets/{useMasterDetailFocus-BQAutDO9.js → useMasterDetailFocus-D1mQ8Qjk.js} +1 -1
  27. package/dist/web/assets/{useOperationLabels-C-zgM_ET.js → useOperationLabels-BjPIVnJW.js} +1 -1
  28. package/dist/web/index.html +1 -1
  29. package/package.json +2 -1
  30. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-BaC1eGzG.js +0 -3
  31. package/dist/web/assets/ComputerView-BJSjCxFr.js +0 -1
  32. package/dist/web/assets/VSpacer-dDRRKhUn.js +0 -1
  33. package/dist/web/assets/VSwitch-CGzxwZuj.js +0 -1
  34. package/dist/web/assets/VTabs-7aSwjrKs.js +0 -1
  35. package/dist/web/assets/VTextarea-D1_2FwMe.js +0 -1
  36. package/dist/web/assets/WorkspaceMediaPreview-LwXeVOY2.js +0 -3
@@ -1,2 +1,2 @@
1
- import{d as ne,u as Ne,a as re,w as X,o as i,c as y,f as t,g as a,V as ve,G as pe,H as he,j as c,t as o,l as e,k as L,I as ge,J as Pe,K as Se,v as R,p as n,r as S,s as Z,L as ye,z as ke,A as Te,E as _,B as K,M as Ee,F as j,N as ie,O as _e,D as Le,m as Ge,x as He,P as je,n as De,q as ce,y as ae,Q as Ie,R as $e,S as se,T as Ke,b as J,e as le,U as Ce,W as xe,X as Je,Y as Ae,Z as Qe,_ as Xe}from"./index-BzRlodie.js";import{V as Fe}from"./VSelect-CLnwhyWJ.js";import{_ as qe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{b as Ye}from"./utils-rtPwWNel.js";import{_ as Oe,V as ze}from"./CodeViewer.vue_vue_type_script_setup_true_lang-BaC1eGzG.js";import{W as Ze,a as et}from"./WorkspaceMediaPreview-LwXeVOY2.js";import{M as tt}from"./MarkdownContent-AdAmmDn5.js";import{V as Ve}from"./VSpacer-dDRRKhUn.js";import{V as We}from"./VTextarea-D1_2FwMe.js";import{V as at,a as fe,b as lt,c as me}from"./VTabs-7aSwjrKs.js";import"./syntax-highlight-C_fuMcwC.js";const ot={key:1,class:"workspace-create-location"},it={key:2,class:"workspace-create-location"},st=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();X(()=>[u.value,l.roots],()=>{u.value&&(l.roots.includes(k.value)||(k.value=l.roots[0]??""))},{immediate:!0,deep:!0}),X(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(ke,{modelValue:u.value,"onUpdate:modelValue":f[4]||(f[4]=h=>u.value=h),width:"auto"},{default:t(()=>[a(ve,null,{default:t(()=>[a(pe,{"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(he,null,{default:t(()=>[c(o(e(P).t("$vuetify.chatroom.workspaces.createTitle")),1)]),_:1})]),_:1}),a(ge,{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(Fe,{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",ot,[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",it,[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(Z,{key:3,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(T.error),1)]),_:1})):S("",!0)]),_:1}),a(ye,{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"]))}}),nt=qe(st,[["__scopeId","data-v-f24d3eec"]]),rt={class:"workspace-files-pane"},ut={class:"workspace-files-layout"},ct={class:"workspace-file-browser"},dt={class:"workspace-file-breadcrumbs"},vt={class:"workspace-breadcrumb-items"},ft={key:0,class:"workspace-breadcrumb-separator"},mt=["onClick"],pt={key:0,class:"workspace-file-load-more"},ht=["aria-busy"],gt={key:0,class:"workspace-preview-toolbar"},yt=["title"],kt={class:"workspace-preview-content"},_t={class:"workspace-markdown-header"},$t={key:0,class:"workspace-markdown-body"},wt={key:1,class:"workspace-markdown-source"},bt={class:"workspace-image-stage"},Ct=["src","alt"],xt=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:O,loading:w,loadingMore:s,error:b,loadDirectory:N,loadMore:M,navigate:W,openEntry:B}=k;X(()=>r.value?.path??null,()=>{m.value="preview"}),X(()=>r.value?.kind==="image"?r.value.url:null,D=>{u.value=!!D,p.value=!1});const A=K(()=>P.value.find(D=>D.path===$.value&&D.type==="file"));function V(D){return D==="file"?l.t("$vuetify.chatroom.files.file"):D==="directory"?l.t("$vuetify.chatroom.files.directory"):D==="symlink"?l.t("$vuetify.chatroom.files.symlink"):D}return(D,U)=>(i(),R("div",rt,[e(b)?(i(),y(Z,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(b)),1)]),_:1})):S("",!0),n("div",ut,[n("div",ct,[n("div",dt,[a(L,{icon:"$mdiArrowUp",size:"x-small",variant:"text",disabled:e(h)===null,"aria-label":e(l).t("$vuetify.chatroom.files.parentDirectory"),onClick:U[0]||(U[0]=z=>e(h)&&e(W)(e(h)))},null,8,["disabled","aria-label"]),n("div",vt,[(i(!0),R(j,null,ie(e(f),(z,G)=>(i(),R(j,{key:z.path},[G?(i(),R("span",ft,"/")):S("",!0),n("button",{type:"button",class:Ie(["workspace-breadcrumb",{active:G===e(f).length-1}]),onClick:oe=>e(W)(z.path)},o(z.title),11,mt)],64))),128))]),a(L,{icon:"$mdiRefresh",size:"x-small",variant:"text",loading:e(w),"aria-label":e(l).t("$vuetify.chatroom.files.refresh"),onClick:U[1]||(U[1]=z=>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),z=>(i(),y($e,{key:z.path,active:e($)===z.path,title:e(Le)(z.path),subtitle:z.type==="file"?`${V(z.type)} · ${e(Ye)(z.size)}`:V(z.type),"prepend-icon":z.type==="directory"?"$mdiFolderOutline":z.type==="symlink"?"$mdiLinkVariant":"$mdiFileOutline","append-icon":z.type==="directory"?"$mdiChevronRight":void 0,onClick:G=>e(B)(z)},null,8,["active","title","subtitle","prepend-icon","append-icon","onClick"]))),128))]),_:1}),e(O)!==null?(i(),R("div",pt,[a(L,{size:"small",variant:"text",loading:e(s),disabled:e(w),onClick:e(M)},{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},[A.value?(i(),R("div",gt,[n("span",{class:"workspace-preview-filename mono",title:A.value.path},o(A.value.path),9,yt),a(L,{size:"small",variant:"tonal","prepend-icon":"$mdiDownloadOutline",href:e(Ge)(C.root,A.value.path),download:e(Le)(A.value.path)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.download")),1)]),_:1},8,["href","download"])])):S("",!0),n("div",kt,[e(v)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(r)?.kind==="text"&&e(r).truncated?(i(),y(Z,{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(Ze,{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(et,{key:3,content:e(r).content,path:e(r).path,truncated:e(r).truncated},null,8,["content","path","truncated"])):e(r)?.kind==="text"&&e(He)(e(r).path)?(i(),y(ze,{key:4,border:"",rounded:"lg",class:"workspace-markdown-preview"},{default:t(()=>[n("div",_t,[a(je,{modelValue:m.value,"onUpdate:modelValue":U[2]||(U[2]=z=>m.value=z),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(De),m.value==="preview"?(i(),R("div",$t,[a(tt,{text:e(r).content},null,8,["text"])])):(i(),R("div",wt,[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",bt,[u.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),p.value?(i(),y(ae,{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:U[3]||(U[3]=z=>u.value=!1),onError:U[4]||(U[4]=z=>{u.value=!1,p.value=!0})},null,40,Ct))])]),_:1})):e(r)?.kind==="unsupported"?(i(),y(ae,{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(ae,{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,ht)])]))}});function Vt(T){const C=_(null),l=_([]),m=_([]),u=_(null),p=_(null),k=_(!1),P=_(!1),r=_(null),$=_("");let v=0;const f=se(),h=se(),O=se();let w=!1;Ke(()=>{w=!0,v+=1,f.invalidate(),h.invalidate(),O.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),M=K(()=>b.value.filter(Be).map(d=>d.path)),W=K(()=>b.value.filter(Me).map(d=>d.path));X(T,()=>{v+=1,f.invalidate(),h.invalidate(),O.invalidate(),r.value=null,C.value=null,l.value=[],m.value=[],u.value=null,p.value=null,B()},{immediate:!0});async function B(){if(w||r.value)return;const d=++v,q=f.begin(),F=s();k.value=!0,$.value="";try{const E=await J(`/git/status?root=${encodeURIComponent(F)}`,{signal:q.signal});if(d!==v||!f.isCurrent(q)||s()!==F)return;if(C.value=E,!E){l.value=[],m.value=[],u.value=null,p.value=null;return}if(await A(d,F,q.signal),d!==v||!f.isCurrent(q)||s()!==F)return;H(),await D()}catch(E){d===v&&f.isCurrent(q)&&s()===F&&($.value=le(E))}finally{d===v&&f.isCurrent(q)&&s()===F&&(k.value=!1)}}async function A(d,q,F){const E=encodeURIComponent(q),ue=F?{signal:F}:{},[Q,I]=await Promise.all([J(`/git/branches?root=${E}`,ue),J(`/git/log?root=${E}&limit=20`,ue)]);d!==v||s()!==q||(l.value=Q,m.value=I)}function V(d){u.value!==d&&(u.value=d,p.value=null,D())}async function D(){const d=u.value,q=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(q)}&path=${encodeURIComponent(d)}`,{signal:F.signal});h.isCurrent(F)&&s()===q&&u.value===d&&(p.value=E)}catch(E){h.isCurrent(F)&&s()===q&&(p.value=null,$.value=le(E))}finally{h.isCurrent(F)&&s()===q&&(P.value=!1)}}async function U(d,q,F,E,ue=6e4){if(w||r.value)return!1;const Q=s(),I=++v,x=O.begin();f.invalidate(),h.invalidate(),k.value=!1,P.value=!1,r.value=d,$.value="";try{const g=await J(q,{method:F,body:JSON.stringify({root:Q,...E}),timeoutMs:ue,signal:x.signal});return w||I!==v||!O.isCurrent(x)||s()!==Q||(C.value=g,H(),await A(I,Q,x.signal),w||I!==v||!O.isCurrent(x)||s()!==Q)?!1:(await D(),!0)}catch(g){return!w&&I===v&&O.isCurrent(x)&&s()===Q&&($.value=le(g)),!1}finally{!w&&I===v&&O.isCurrent(x)&&s()===Q&&(r.value=null)}}async function z(d){return d.length?U("stage","/git/stage","POST",{paths:d}):!1}async function G(d){return d.length?U("unstage","/git/unstage","POST",{paths:d}):!1}function oe(d){return U("restore","/git/restore","POST",{path:d})}function we(d){return U("commit","/git/commit","POST",{message:d})}function be(d){return U("branch","/git/branches","POST",{name:d})}function ee(d){return U("branch","/git/switch","POST",{name:d})}function Y(d){return U("branch","/git/branches","DELETE",{name:d})}function te(d){return U(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:M,unstagedPaths:W,load:B,stage:z,unstage:G,restore:oe,commit:we,createBranch:be,switchBranch:ee,deleteBranch:Y,remote:te,isStaged:Be,isUnstaged:Me,statusCode:Pt}}function Be(T){return T.indexStatus!==" "&&T.indexStatus!=="?"}function Me(T){return T.indexStatus==="?"||T.workingTreeStatus!==" "&&T.workingTreeStatus!=="?"}function Pt(T){return`${T.indexStatus}${T.workingTreeStatus}`.replaceAll(" ","·")}const St={class:"git-diff-viewer"},Rt={class:"git-diff-content"},Tt={class:"git-diff-line-number"},Lt={class:"git-diff-line-number"},Ot={class:"git-diff-line"},zt={key:0,class:"git-diff-expand"},Wt={key:1},Ue=500,Bt=500,de=2500,Mt=ne({__name:"GitDiffViewer",props:{text:{}},setup(T){const C=T,l=re(),m=_(Ue);X(()=>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+Bt)}function v(O,w){const s=[],b=new Map;let N=0,M=0,W=!1,B="header";const A=(V,D,U,z)=>{const G=B+":"+D+":"+(U??"-")+":"+(z??"-")+":"+h(V),oe=b.get(G)??0;b.set(G,oe+1),s.push({key:G+":"+oe,text:V,kind:D,oldLine:U,newLine:z})};for(const V of O.split(`
1
+ import{d as ne,u as Ne,a as re,w as X,o as i,c as y,f as t,g as a,V as ve,G as pe,H as he,j as c,t as o,l as e,k as L,I as ge,J as Pe,K as Se,v as R,p as n,r as S,s as Z,L as ye,z as ke,A as Te,E as _,B as K,M as Ee,F as j,N as ie,O as _e,D as Le,m as Ge,x as He,P as je,n as De,q as ce,y as ae,Q as Ie,R as $e,S as se,T as Ke,b as J,e as le,U as Ce,W as xe,X as Je,Y as Ae,Z as Qe,_ as Xe}from"./index-u-aADQP-.js";import{V as Fe}from"./VSelect-BtAJX-XJ.js";import{_ as qe}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{b as Ye}from"./utils-rtPwWNel.js";import{_ as Oe,V as ze}from"./CodeViewer.vue_vue_type_script_setup_true_lang-ekOImmBP.js";import{W as Ze,a as et}from"./WorkspaceMediaPreview-HYajqgZ3.js";import{M as tt}from"./MarkdownContent-CkjR5fs7.js";import{V as Ve}from"./VSpacer-M8bpkhTH.js";import{V as We}from"./VTextarea-CRYQYRqg.js";import{V as at,a as fe,b as lt,c as me}from"./VTabs-g61mykvY.js";import"./syntax-highlight-C_fuMcwC.js";const ot={key:1,class:"workspace-create-location"},it={key:2,class:"workspace-create-location"},st=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();X(()=>[u.value,l.roots],()=>{u.value&&(l.roots.includes(k.value)||(k.value=l.roots[0]??""))},{immediate:!0,deep:!0}),X(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(ke,{modelValue:u.value,"onUpdate:modelValue":f[4]||(f[4]=h=>u.value=h),width:"auto"},{default:t(()=>[a(ve,null,{default:t(()=>[a(pe,{"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(he,null,{default:t(()=>[c(o(e(P).t("$vuetify.chatroom.workspaces.createTitle")),1)]),_:1})]),_:1}),a(ge,{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(Fe,{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",ot,[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",it,[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(Z,{key:3,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(T.error),1)]),_:1})):S("",!0)]),_:1}),a(ye,{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"]))}}),nt=qe(st,[["__scopeId","data-v-f24d3eec"]]),rt={class:"workspace-files-pane"},ut={class:"workspace-files-layout"},ct={class:"workspace-file-browser"},dt={class:"workspace-file-breadcrumbs"},vt={class:"workspace-breadcrumb-items"},ft={key:0,class:"workspace-breadcrumb-separator"},mt=["onClick"],pt={key:0,class:"workspace-file-load-more"},ht=["aria-busy"],gt={key:0,class:"workspace-preview-toolbar"},yt=["title"],kt={class:"workspace-preview-content"},_t={class:"workspace-markdown-header"},$t={key:0,class:"workspace-markdown-body"},wt={key:1,class:"workspace-markdown-source"},bt={class:"workspace-image-stage"},Ct=["src","alt"],xt=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:O,loading:w,loadingMore:s,error:b,loadDirectory:N,loadMore:M,navigate:W,openEntry:B}=k;X(()=>r.value?.path??null,()=>{m.value="preview"}),X(()=>r.value?.kind==="image"?r.value.url:null,D=>{u.value=!!D,p.value=!1});const A=K(()=>P.value.find(D=>D.path===$.value&&D.type==="file"));function V(D){return D==="file"?l.t("$vuetify.chatroom.files.file"):D==="directory"?l.t("$vuetify.chatroom.files.directory"):D==="symlink"?l.t("$vuetify.chatroom.files.symlink"):D}return(D,U)=>(i(),R("div",rt,[e(b)?(i(),y(Z,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(b)),1)]),_:1})):S("",!0),n("div",ut,[n("div",ct,[n("div",dt,[a(L,{icon:"$mdiArrowUp",size:"x-small",variant:"text",disabled:e(h)===null,"aria-label":e(l).t("$vuetify.chatroom.files.parentDirectory"),onClick:U[0]||(U[0]=z=>e(h)&&e(W)(e(h)))},null,8,["disabled","aria-label"]),n("div",vt,[(i(!0),R(j,null,ie(e(f),(z,G)=>(i(),R(j,{key:z.path},[G?(i(),R("span",ft,"/")):S("",!0),n("button",{type:"button",class:Ie(["workspace-breadcrumb",{active:G===e(f).length-1}]),onClick:oe=>e(W)(z.path)},o(z.title),11,mt)],64))),128))]),a(L,{icon:"$mdiRefresh",size:"x-small",variant:"text",loading:e(w),"aria-label":e(l).t("$vuetify.chatroom.files.refresh"),onClick:U[1]||(U[1]=z=>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),z=>(i(),y($e,{key:z.path,active:e($)===z.path,title:e(Le)(z.path),subtitle:z.type==="file"?`${V(z.type)} · ${e(Ye)(z.size)}`:V(z.type),"prepend-icon":z.type==="directory"?"$mdiFolderOutline":z.type==="symlink"?"$mdiLinkVariant":"$mdiFileOutline","append-icon":z.type==="directory"?"$mdiChevronRight":void 0,onClick:G=>e(B)(z)},null,8,["active","title","subtitle","prepend-icon","append-icon","onClick"]))),128))]),_:1}),e(O)!==null?(i(),R("div",pt,[a(L,{size:"small",variant:"text",loading:e(s),disabled:e(w),onClick:e(M)},{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},[A.value?(i(),R("div",gt,[n("span",{class:"workspace-preview-filename mono",title:A.value.path},o(A.value.path),9,yt),a(L,{size:"small",variant:"tonal","prepend-icon":"$mdiDownloadOutline",href:e(Ge)(C.root,A.value.path),download:e(Le)(A.value.path)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.files.download")),1)]),_:1},8,["href","download"])])):S("",!0),n("div",kt,[e(v)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(r)?.kind==="text"&&e(r).truncated?(i(),y(Z,{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(Ze,{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(et,{key:3,content:e(r).content,path:e(r).path,truncated:e(r).truncated},null,8,["content","path","truncated"])):e(r)?.kind==="text"&&e(He)(e(r).path)?(i(),y(ze,{key:4,border:"",rounded:"lg",class:"workspace-markdown-preview"},{default:t(()=>[n("div",_t,[a(je,{modelValue:m.value,"onUpdate:modelValue":U[2]||(U[2]=z=>m.value=z),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(De),m.value==="preview"?(i(),R("div",$t,[a(tt,{text:e(r).content},null,8,["text"])])):(i(),R("div",wt,[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",bt,[u.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),p.value?(i(),y(ae,{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:U[3]||(U[3]=z=>u.value=!1),onError:U[4]||(U[4]=z=>{u.value=!1,p.value=!0})},null,40,Ct))])]),_:1})):e(r)?.kind==="unsupported"?(i(),y(ae,{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(ae,{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,ht)])]))}});function Vt(T){const C=_(null),l=_([]),m=_([]),u=_(null),p=_(null),k=_(!1),P=_(!1),r=_(null),$=_("");let v=0;const f=se(),h=se(),O=se();let w=!1;Ke(()=>{w=!0,v+=1,f.invalidate(),h.invalidate(),O.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),M=K(()=>b.value.filter(Be).map(d=>d.path)),W=K(()=>b.value.filter(Me).map(d=>d.path));X(T,()=>{v+=1,f.invalidate(),h.invalidate(),O.invalidate(),r.value=null,C.value=null,l.value=[],m.value=[],u.value=null,p.value=null,B()},{immediate:!0});async function B(){if(w||r.value)return;const d=++v,q=f.begin(),F=s();k.value=!0,$.value="";try{const E=await J(`/git/status?root=${encodeURIComponent(F)}`,{signal:q.signal});if(d!==v||!f.isCurrent(q)||s()!==F)return;if(C.value=E,!E){l.value=[],m.value=[],u.value=null,p.value=null;return}if(await A(d,F,q.signal),d!==v||!f.isCurrent(q)||s()!==F)return;H(),await D()}catch(E){d===v&&f.isCurrent(q)&&s()===F&&($.value=le(E))}finally{d===v&&f.isCurrent(q)&&s()===F&&(k.value=!1)}}async function A(d,q,F){const E=encodeURIComponent(q),ue=F?{signal:F}:{},[Q,I]=await Promise.all([J(`/git/branches?root=${E}`,ue),J(`/git/log?root=${E}&limit=20`,ue)]);d!==v||s()!==q||(l.value=Q,m.value=I)}function V(d){u.value!==d&&(u.value=d,p.value=null,D())}async function D(){const d=u.value,q=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(q)}&path=${encodeURIComponent(d)}`,{signal:F.signal});h.isCurrent(F)&&s()===q&&u.value===d&&(p.value=E)}catch(E){h.isCurrent(F)&&s()===q&&(p.value=null,$.value=le(E))}finally{h.isCurrent(F)&&s()===q&&(P.value=!1)}}async function U(d,q,F,E,ue=6e4){if(w||r.value)return!1;const Q=s(),I=++v,x=O.begin();f.invalidate(),h.invalidate(),k.value=!1,P.value=!1,r.value=d,$.value="";try{const g=await J(q,{method:F,body:JSON.stringify({root:Q,...E}),timeoutMs:ue,signal:x.signal});return w||I!==v||!O.isCurrent(x)||s()!==Q||(C.value=g,H(),await A(I,Q,x.signal),w||I!==v||!O.isCurrent(x)||s()!==Q)?!1:(await D(),!0)}catch(g){return!w&&I===v&&O.isCurrent(x)&&s()===Q&&($.value=le(g)),!1}finally{!w&&I===v&&O.isCurrent(x)&&s()===Q&&(r.value=null)}}async function z(d){return d.length?U("stage","/git/stage","POST",{paths:d}):!1}async function G(d){return d.length?U("unstage","/git/unstage","POST",{paths:d}):!1}function oe(d){return U("restore","/git/restore","POST",{path:d})}function we(d){return U("commit","/git/commit","POST",{message:d})}function be(d){return U("branch","/git/branches","POST",{name:d})}function ee(d){return U("branch","/git/switch","POST",{name:d})}function Y(d){return U("branch","/git/branches","DELETE",{name:d})}function te(d){return U(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:M,unstagedPaths:W,load:B,stage:z,unstage:G,restore:oe,commit:we,createBranch:be,switchBranch:ee,deleteBranch:Y,remote:te,isStaged:Be,isUnstaged:Me,statusCode:Pt}}function Be(T){return T.indexStatus!==" "&&T.indexStatus!=="?"}function Me(T){return T.indexStatus==="?"||T.workingTreeStatus!==" "&&T.workingTreeStatus!=="?"}function Pt(T){return`${T.indexStatus}${T.workingTreeStatus}`.replaceAll(" ","·")}const St={class:"git-diff-viewer"},Rt={class:"git-diff-content"},Tt={class:"git-diff-line-number"},Lt={class:"git-diff-line-number"},Ot={class:"git-diff-line"},zt={key:0,class:"git-diff-expand"},Wt={key:1},Ue=500,Bt=500,de=2500,Mt=ne({__name:"GitDiffViewer",props:{text:{}},setup(T){const C=T,l=re(),m=_(Ue);X(()=>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+Bt)}function v(O,w){const s=[],b=new Map;let N=0,M=0,W=!1,B="header";const A=(V,D,U,z)=>{const G=B+":"+D+":"+(U??"-")+":"+(z??"-")+":"+h(V),oe=b.get(G)??0;b.set(G,oe+1),s.push({key:G+":"+oe,text:V,kind:D,oldLine:U,newLine:z})};for(const V of O.split(`
2
2
  `,w)){const D=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(V);if(D){N=Number(D[1]),M=Number(D[2]),W=!0,B=V,A(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 ")&&(B=V),A(V,"meta",null,null);continue}V.startsWith("+")?(A(V,"add",null,M),M+=1):V.startsWith("-")?(A(V,"delete",N,null),N+=1):(A(V,"context",N,M),N+=1,M+=1)}return s}function f(O){if(!O)return 1;let w=1;for(let s=0;s<O.length;s+=1)O.charCodeAt(s)===10&&(w+=1);return w}function h(O){let w=2166136261;for(let s=0;s<O.length;s+=1)w^=O.charCodeAt(s),w=Math.imul(w,16777619);return(w>>>0).toString(36)}return(O,w)=>(i(),R("div",St,[n("div",Rt,[(i(!0),R(j,null,ie(p.value,s=>(i(),R("div",{key:s.key,class:Ie(["git-diff-row",`git-diff-row-${s.kind}`])},[n("span",Tt,o(s.oldLine??""),1),n("span",Lt,o(s.newLine??""),1),n("code",Ot,o(s.text),1)],2))),128))]),k.value?(i(),R("div",zt,[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",Wt,o(e(l).t("$vuetify.chatroom.git.diffRenderLimit")),1)):S("",!0)])):S("",!0)]))}}),Ut={class:"workspace-git-pane"},Dt={class:"git-toolbar"},It={class:"git-facts"},At={class:"mono"},Ft={class:"mono"},qt={class:"mono"},Nt={key:0},Et={class:"git-toolbar-actions"},Gt={class:"git-section-header"},Ht={class:"git-section-actions"},jt={key:0,class:"git-workbench"},Kt={class:"git-change-code mono"},Jt={class:"git-diff-pane"},Qt={class:"git-file-toolbar"},Xt={class:"mono git-selected-path"},Yt={class:"git-file-actions"},Zt={class:"git-commit-bar"},ea={class:"git-history"},ta={class:"git-section-header"},aa={class:"git-commit-hash mono"},la={class:"git-new-branch"},oa={class:"mono mt-2 text-break"},ia={class:"mono mt-2 text-break"},sa=ne({__name:"WorkspaceGitPane",props:{root:{}},setup(T){const C=T,l=re(),m=Vt(()=>C.root),{status:u,branches:p,commits:k,selectedPath:P,selectPath:r,diff:$,loading:v,diffLoading:f,busy:h,error:O,changes:w,selectedChange:s,stagedPaths:b,unstagedPaths:N,load:M,stage:W,unstage:B,restore:A,commit:V,createBranch:D,switchBranch:U,deleteBranch:z,remote:G,isStaged:oe,isUnstaged:we,statusCode:be}=m,ee=_(""),Y=_(!1),te=_(""),H=_(null),d=_(null);X(()=>C.root,()=>{ee.value="",Y.value=!1,te.value="",H.value=null,d.value=null});async function q(){const I=H.value;I&&await A(I.path)&&(H.value=null)}async function F(){const I=ee.value.trim();I&&await V(I)&&(ee.value="")}async function E(){const I=te.value.trim();I&&await D(I)&&(te.value="",Y.value=!1)}async function ue(I){I.current||await U(I.name)&&(Y.value=!1)}async function Q(){const I=d.value;I&&await z(I.name)&&(d.value=null)}return(I,x)=>(i(),R("div",Ut,[e(v)?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),e(O)?(i(),y(Z,{key:1,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o(e(O)),1)]),_:1})):S("",!0),!e(v)&&!e(u)?(i(),y(ae,{key:2,icon:"$mdiSourceBranch",title:e(l).t("$vuetify.chatroom.git.notRepository")},null,8,["title"])):e(u)?(i(),R(j,{key:3},[n("div",Dt,[n("div",It,[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",Ft,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",qt,o(e(u).upstream??"—"),1)]),e(u).upstream?(i(),R("div",Nt,[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",Et,[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(M)},null,8,["loading","disabled","aria-label","onClick"]),a(L,{"prepend-icon":"$mdiSourceBranch",size:"small",variant:"tonal",onClick:x[0]||(x[0]=g=>Y.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(G)("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(G)("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(G)("push"))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.push")),1)]),_:1},8,["loading"])])]),n("div",Gt,[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",Ht,[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(B)(e(b)))},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.unstageAll")),1)]),_:1},8,["disabled","loading"])])]),e(w).length?(i(),R("div",jt,[a(_e,{density:"compact",class:"git-change-list"},{default:t(()=>[(i(!0),R(j,null,ie(e(w),g=>(i(),y($e,{key:g.path,active:e(P)===g.path,onClick:Re=>e(r)(g.path)},{prepend:t(()=>[n("span",Kt,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",Jt,[e(s)?(i(),R(j,{key:0},[n("div",Qt,[n("div",Xt,o(e(s).path),1),n("div",Yt,[e(we)(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(oe)(e(s))?(i(),y(L,{key:1,size:"small",variant:"text",loading:e(h)==="unstage",onClick:x[7]||(x[7]=g=>e(B)([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(Z,{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(Mt,{key:2,text:e($).diff},null,8,["text"])):e(f)?S("",!0):(i(),y(ae,{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(ae,{key:1,icon:"$mdiCheckCircleOutline",title:e(l).t("$vuetify.chatroom.git.clean")},null,8,["title"])),n("div",Zt,[a(Pe,{modelValue:ee.value,"onUpdate:modelValue":x[9]||(x[9]=g=>ee.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||!ee.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",ea,[n("div",ta,[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($e,{key:g.hash},{prepend:t(()=>[n("span",aa,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(Je)(e(l).current.value))),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):S("",!0)])],64)):S("",!0),a(ke,{modelValue:Y.value,"onUpdate:modelValue":x[12]||(x[12]=g=>Y.value=g),width:"auto","max-width":"42rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(pe,{"prepend-icon":"$mdiSourceBranch"},{default:t(()=>[a(he,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.branches")),1)]),_:1})]),_:1}),a(ge,null,{default:t(()=>[n("div",la,[a(Pe,{modelValue:te.value,"onUpdate:modelValue":x[10]||(x[10]=g=>te.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:!te.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($e,{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(ye,null,{default:t(()=>[a(Ve),a(L,{variant:"text",onClick:x[11]||(x[11]=g=>Y.value=!1)},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.common.close")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),a(ke,{"model-value":H.value!==null,width:"auto","max-width":"32rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(pe,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:t(()=>[a(he,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(ge,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",oa,o(H.value?.path),1)]),_:1}),a(ye,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:q},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]),a(ke,{"model-value":d.value!==null,width:"auto","max-width":"32rem"},{default:t(()=>[a(ve,null,{default:t(()=>[a(pe,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:t(()=>[a(he,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.deleteBranchTitle")),1)]),_:1})]),_:1}),a(ge,null,{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.deleteBranchDescription"))+" ",1),n("div",ia,o(d.value?.name),1)]),_:1}),a(ye,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:Q},{default:t(()=>[c(o(e(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"])]))}}),na={class:"workspace-prompt-pane"},ra={class:"workspace-prompt-form"},ua={class:"workspace-prompt-actions"},ca=".chatroom/summary.md",da=".chatroom/prompt.md",va=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(),O=se(),w=K(()=>v.value===C.root&&(l.value!==u.value||m.value!==p.value));X(()=>C.root,()=>{h.invalidate(),O.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 M=h.begin(),W=C.root;k.value=!0,$.value="",r.value=!1;try{const B=await J(`/workspace?root=${encodeURIComponent(W)}`,{signal:M.signal});if(!h.isCurrent(M)||C.root!==W)return;l.value=B.summary??"",m.value=B.presetPrompt??"",u.value=l.value,p.value=m.value,v.value=W}catch(B){h.isCurrent(M)&&($.value=le(B))}finally{h.isCurrent(M)&&(k.value=!1)}}async function b(M,W,B,A){await J("/workspace/file",{method:"PUT",body:JSON.stringify({root:M,path:W,content:B}),signal:A})}async function N(){if(!w.value||P.value||v.value!==C.root)return;const M=O.begin(),W=C.root,B=l.value,A=m.value;P.value=!0,$.value="",r.value=!1;try{const V=[];if(B!==u.value&&V.push(b(W,ca,B,M.signal)),A!==p.value&&V.push(b(W,da,A,M.signal)),await Promise.all(V),!O.isCurrent(M)||C.root!==W)return;u.value=B,p.value=A,r.value=!0}catch(V){O.isCurrent(M)&&C.root===W&&($.value=le(V))}finally{O.isCurrent(M)&&C.root===W&&(P.value=!1)}}return(M,W)=>(i(),R("div",na,[k.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),n("div",ra,[a(We,{modelValue:l.value,"onUpdate:modelValue":W[0]||(W[0]=B=>l.value=B),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]=B=>m.value=B),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(Z,{key:0,type:"error",variant:"tonal",density:"compact"},{default:t(()=>[c(o($.value),1)]),_:1})):r.value?(i(),y(Z,{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",ua,[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"])])])]))}}),fa=qe(va,[["__scopeId","data-v-0b6d6c75"]]),ma={class:"workspace-skills-pane"},pa={key:2,class:"workspace-skill-grid"},ha={class:"workspace-skill-header"},ga={class:"workspace-skill-title"},ya={class:"workspace-skill-description"},ka={class:"workspace-skill-path"},_a=ne({__name:"WorkspaceSkillsPane",props:{root:{}},setup(T){const C=T,l=_(null),m=_(!1),u=_(""),p=re(),k=se();X(()=>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=le(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",ma,[m.value?(i(),y(ce,{key:0,indeterminate:""})):S("",!0),u.value?(i(),y(Z,{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",pa,[(i(!0),R(j,null,ie(l.value.skills,f=>(i(),R("div",{key:f.path,class:"workspace-skill-card"},[n("div",ha,[n("div",ga,[a(Qe,{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",ya,o(f.description||e(p).t("$vuetify.chatroom.skills.noDescription")),1),n("div",ka,o(f.path),1)]))),128))])):!m.value&&!u.value?(i(),y(ae,{key:3,icon:"$mdiPuzzleOutline",title:e(p).t("$vuetify.chatroom.skills.empty")},null,8,["title"])):S("",!0)]))}}),$a={class:"workspace-layout"},wa={class:"workspace-header"},ba={class:"workspace-identity min-w-0"},Ca={class:"workspace-meta-row"},xa=["title"],Va={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();Xe(()=>{h()}),X(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=le(s))}finally{f.isCurrent(w)&&(p.value=!1)}}async function O(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=le(b)}finally{r.value=!1}}}return(w,s)=>(i(),R("div",$a,[a(ve,{class:"workspace-detail panel-card"},{default:t(()=>[n("div",wa,[n("div",ba,[a(Fe,{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",Ca,[m.value?(i(),R("div",{key:0,class:"workspace-path",title:m.value},o(m.value),9,xa)):S("",!0),n("div",Va,[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(Z,{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(at,{modelValue:u.value,"onUpdate:modelValue":s[2]||(s[2]=b=>u.value=b),density:"compact",class:"workspace-tabs"},{default:t(()=>[a(fe,{value:"git"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.git")),1)]),_:1}),a(fe,{value:"prompt"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.prompt")),1)]),_:1}),a(fe,{value:"files"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.files")),1)]),_:1}),a(fe,{value:"skills"},{default:t(()=>[c(o(e(v).t("$vuetify.chatroom.workspaces.skills")),1)]),_:1})]),_:1},8,["modelValue"]),a(De),a(lt,{modelValue:u.value,"onUpdate:modelValue":s[3]||(s[3]=b=>u.value=b),touch:!1},{default:t(()=>[a(me,{value:"git"},{default:t(()=>[a(sa,{root:m.value},null,8,["root"])]),_:1}),a(me,{value:"prompt"},{default:t(()=>[a(fa,{root:m.value},null,8,["root"])]),_:1}),a(me,{value:"files"},{default:t(()=>[a(xt,{root:m.value},null,8,["root"])]),_:1}),a(me,{value:"skills"},{default:t(()=>[a(_a,{root:m.value},null,8,["root"])]),_:1})]),_:1},8,["modelValue"])],64)):p.value?S("",!0):(i(),y(ae,{key:2,icon:"$mdiFolderOutline",title:e(v).t("$vuetify.chatroom.workspaces.empty")},null,8,["title"]))]),_:1}),a(nt,{modelValue:P.value,"onUpdate:modelValue":s[4]||(s[4]=b=>P.value=b),roots:l.value,busy:r.value,error:$.value,onCreate:O},null,8,["modelValue","roots","busy","error"])]))}});export{Da as default};