@zhanguym/chatroom 1.0.0 → 1.1.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.
Files changed (150) hide show
  1. package/dist/app/application.d.ts +0 -1
  2. package/dist/app/application.js +8 -7
  3. package/dist/app/event-bus.d.ts +13 -10
  4. package/dist/app/git-access.d.ts +50 -0
  5. package/dist/app/git-access.js +2 -0
  6. package/dist/app/service-registry.d.ts +11 -0
  7. package/dist/app/service-registry.js +17 -0
  8. package/dist/app/workspace-access.d.ts +24 -0
  9. package/dist/app/workspace-access.js +2 -0
  10. package/dist/auth/ingress-policy.d.ts +2 -0
  11. package/dist/auth/ingress-policy.js +14 -2
  12. package/dist/auth/passkey-service.js +1 -1
  13. package/dist/cli/run-cli.js +1 -1
  14. package/dist/core/fs/safe-directory.d.ts +9 -0
  15. package/dist/core/fs/safe-directory.js +129 -0
  16. package/dist/core/operations/repository.d.ts +2 -0
  17. package/dist/core/runtime/line-process.d.ts +19 -0
  18. package/dist/core/runtime/line-process.js +51 -0
  19. package/dist/infrastructure/database/operation-repository.js +8 -2
  20. package/dist/infrastructure/database/schema.d.ts +1 -1
  21. package/dist/infrastructure/database/schema.js +62 -0
  22. package/dist/infrastructure/http/http-server.js +1 -1
  23. package/dist/native/linux/chatroom-computer-helper +0 -0
  24. package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
  25. package/dist/native/windows/chatroom-computer-helper.exe +0 -0
  26. package/dist/operations/operation-log.js +16 -4
  27. package/dist/plugins/agent/async-queue.d.ts +10 -0
  28. package/dist/plugins/agent/async-queue.js +49 -0
  29. package/dist/plugins/agent/mcp.d.ts +3 -0
  30. package/dist/plugins/agent/mcp.js +502 -0
  31. package/dist/plugins/agent/plugin.d.ts +4 -0
  32. package/dist/plugins/agent/plugin.js +35 -0
  33. package/dist/plugins/agent/provider.d.ts +132 -0
  34. package/dist/plugins/agent/providers/codex/mapping.d.ts +56 -0
  35. package/dist/plugins/agent/providers/codex/mapping.js +427 -0
  36. package/dist/plugins/agent/providers/codex/provider.d.ts +84 -0
  37. package/dist/plugins/agent/providers/codex/provider.js +828 -0
  38. package/dist/plugins/agent/providers/codex/rpc.d.ts +40 -0
  39. package/dist/plugins/agent/providers/codex/rpc.js +227 -0
  40. package/dist/plugins/agent/providers/common.d.ts +11 -0
  41. package/dist/plugins/agent/providers/common.js +75 -0
  42. package/dist/plugins/agent/providers/index.d.ts +3 -0
  43. package/dist/plugins/agent/providers/index.js +4 -0
  44. package/dist/plugins/agent/repository.d.ts +21 -0
  45. package/dist/plugins/agent/repository.js +226 -0
  46. package/dist/plugins/agent/runtime-config.d.ts +5 -0
  47. package/dist/plugins/agent/runtime-config.js +60 -0
  48. package/dist/plugins/agent/runtime-files.d.ts +8 -0
  49. package/dist/plugins/agent/runtime-files.js +170 -0
  50. package/dist/plugins/agent/runtime-state.d.ts +17 -0
  51. package/dist/plugins/agent/runtime-state.js +133 -0
  52. package/dist/plugins/agent/runtime.d.ts +60 -0
  53. package/dist/plugins/agent/runtime.js +928 -0
  54. package/dist/plugins/agent/store.d.ts +17 -0
  55. package/dist/plugins/agent/store.js +1 -0
  56. package/dist/plugins/agent/types.d.ts +320 -0
  57. package/dist/plugins/agent/types.js +13 -0
  58. package/dist/plugins/cloud/plugin.d.ts +1 -1
  59. package/dist/plugins/cloud/plugin.js +3 -3
  60. package/dist/plugins/cloud/tunnel-client.js +6 -7
  61. package/dist/plugins/computer/computer-schemas.d.ts +7 -7
  62. package/dist/plugins/computer/computer-service.d.ts +3 -0
  63. package/dist/plugins/computer/computer-service.js +33 -1
  64. package/dist/plugins/computer/plugin.d.ts +1 -1
  65. package/dist/plugins/computer/plugin.js +1 -1
  66. package/dist/plugins/git/git-service.d.ts +3 -2
  67. package/dist/plugins/git/git-service.js +37 -1
  68. package/dist/plugins/git/plugin.d.ts +0 -2
  69. package/dist/plugins/git/plugin.js +3 -3
  70. package/dist/plugins/process/plugin.d.ts +1 -1
  71. package/dist/plugins/process/plugin.js +3 -3
  72. package/dist/plugins/process/process-supervisor.d.ts +1 -0
  73. package/dist/plugins/process/process-supervisor.js +15 -4
  74. package/dist/plugins/types.d.ts +1 -11
  75. package/dist/plugins/types.js +1 -17
  76. package/dist/plugins/web/api-types.d.ts +20 -5
  77. package/dist/plugins/web/http/agent-api-router.d.ts +3 -0
  78. package/dist/plugins/web/http/agent-api-router.js +254 -0
  79. package/dist/plugins/web/http/api-router.js +9 -0
  80. package/dist/plugins/web/http/computer-api-router.js +21 -6
  81. package/dist/plugins/web/http/process-api-router.js +3 -0
  82. package/dist/plugins/web/http/workspace-api-router.js +79 -6
  83. package/dist/plugins/web/plugin.d.ts +1 -1
  84. package/dist/plugins/web/plugin.js +5 -4
  85. package/dist/plugins/web/runtime.d.ts +6 -3
  86. package/dist/plugins/web/runtime.js +6 -1
  87. package/dist/plugins/workspace/mcp.js +16 -0
  88. package/dist/plugins/workspace/metadata.d.ts +1 -1
  89. package/dist/plugins/workspace/plugin.d.ts +1 -1
  90. package/dist/plugins/workspace/plugin.js +5 -2
  91. package/dist/plugins/workspace/types.d.ts +1 -18
  92. package/dist/plugins/workspace/workspace-fs.d.ts +9 -3
  93. package/dist/plugins/workspace/workspace-fs.js +78 -125
  94. package/dist/plugins/workspace/workspace-root-policy.d.ts +9 -0
  95. package/dist/plugins/workspace/workspace-root-policy.js +56 -0
  96. package/dist/plugins/workspace/workspace-service.d.ts +11 -6
  97. package/dist/plugins/workspace/workspace-service.js +39 -49
  98. package/dist/web/assets/AgentView-DKuspiki.js +4 -0
  99. package/dist/web/assets/AgentView-DYJeMJLX.css +1 -0
  100. package/dist/web/assets/{CloudView-CHjVbp-5.css → CloudView-DVVvwuWW.css} +1 -1
  101. package/dist/web/assets/CloudView-PbREbJgz.js +1 -0
  102. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js +3 -0
  103. package/dist/web/assets/ComputerView-BM0u3wSF.css +1 -0
  104. package/dist/web/assets/ComputerView-BRb2sE0Z.js +1 -0
  105. package/dist/web/assets/McpToolsView-B8NSFdf4.js +1 -0
  106. package/dist/web/assets/McpToolsView-C22ZbSuV.css +1 -0
  107. package/dist/web/assets/OperationsView-BjTY2lIh.css +1 -0
  108. package/dist/web/assets/OperationsView-Cavi-6SZ.js +4 -0
  109. package/dist/web/assets/ProcessesView-Ce6iVwjA.css +1 -0
  110. package/dist/web/assets/ProcessesView-UO48Nh2q.js +4 -0
  111. package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js +1 -0
  112. package/dist/web/assets/SystemLogsView-BXmOrmu5.js +1 -0
  113. package/dist/web/assets/SystemLogsView-CofP4Jvi.css +1 -0
  114. package/dist/web/assets/VSelect-BPRXx8KM.js +1 -0
  115. package/dist/web/assets/VSpacer-Cl-QiwaM.js +1 -0
  116. package/dist/web/assets/VSwitch-C0XNj1lR.js +1 -0
  117. package/dist/web/assets/{VTabs-qBcuuXh3.js → VTabs-CHj39Ket.js} +1 -1
  118. package/dist/web/assets/VTextarea-BIcUWOU6.js +16 -0
  119. package/dist/web/assets/VTextarea-DG1zE1as.css +1 -0
  120. package/dist/web/assets/WorkspacesView-DPCt6kYy.css +1 -0
  121. package/dist/web/assets/WorkspacesView-rY6RXeiR.js +2 -0
  122. package/dist/web/assets/entity-refresh-queue-wQii8Dl5.js +1 -0
  123. package/dist/web/assets/{index-CkjqXRSj.css → index-BPpl3-sP.css} +1 -1
  124. package/dist/web/assets/index-Dt-pWiW1.js +19 -0
  125. package/dist/web/assets/{syntax-highlight-B5ArnyrC.js → syntax-highlight-C_fuMcwC.js} +1 -1
  126. package/dist/web/assets/useMasterDetailFocus-D0j-KcXv.js +1 -0
  127. package/dist/web/assets/useOperationLabels-DR8r6Vrl.js +1 -0
  128. package/dist/web/index.html +2 -2
  129. package/package.json +4 -2
  130. package/dist/plugins/git/types.d.ts +0 -32
  131. package/dist/web/assets/CloudView-CvX0dkgu.js +0 -1
  132. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js +0 -3
  133. package/dist/web/assets/ComputerView-91Z9Cefw.css +0 -1
  134. package/dist/web/assets/ComputerView-OOyEqWml.js +0 -1
  135. package/dist/web/assets/McpToolsView-BTnolyS6.css +0 -1
  136. package/dist/web/assets/McpToolsView-DjXWTKrZ.js +0 -1
  137. package/dist/web/assets/OperationsView-DqTY51Cr.js +0 -4
  138. package/dist/web/assets/ProcessesView-C13BykIa.js +0 -4
  139. package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-DyOhJmR6.js +0 -1
  140. package/dist/web/assets/SystemLogsView-Ci0u4BTb.js +0 -1
  141. package/dist/web/assets/VSelect-DrRpKyYI.js +0 -1
  142. package/dist/web/assets/VSpacer-C3wAY3F0.js +0 -1
  143. package/dist/web/assets/VSwitch-CxusR4iO.js +0 -1
  144. package/dist/web/assets/WorkspacesView-BzQ0aH74.css +0 -1
  145. package/dist/web/assets/WorkspacesView-CijIvfsp.js +0 -2
  146. package/dist/web/assets/index-BegKQ3Yd.js +0 -19
  147. package/dist/web/assets/useOperationLabels-BDjzGDkT.js +0 -1
  148. /package/dist/{plugins/process → core/runtime}/head-tail-buffer.d.ts +0 -0
  149. /package/dist/{plugins/process → core/runtime}/head-tail-buffer.js +0 -0
  150. /package/dist/plugins/{git/types.js → agent/provider.js} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhanguym/chatroom",
3
- "version": "1.0.0",
3
+ "version": "1.1.0-beta.0",
4
4
  "type": "module",
5
5
  "description": "Local MCP runtime for ChatGPT with workspace, process, Cloud, and WebUI controls.",
6
6
  "bin": {
@@ -42,15 +42,17 @@
42
42
  },
43
43
  "devDependencies": {
44
44
  "@mdi/js": "^7.4.47",
45
- "@modelcontextprotocol/client": "^2.0.0",
46
45
  "@simplewebauthn/browser": "^13.3.0",
47
46
  "@types/compression": "^1.8.1",
48
47
  "@types/express": "^5.0.3",
48
+ "@types/markdown-it": "^14.2.0",
49
49
  "@types/node": "^24.2.1",
50
50
  "@types/ws": "^8.18.1",
51
51
  "@vitejs/plugin-vue": "^6.0.8",
52
52
  "highlight.js": "^11.12.0",
53
+ "markdown-it": "^15.0.2",
53
54
  "prettier": "^3.9.6",
55
+ "simple-icons": "^15.22.0",
54
56
  "tsx": "^4.20.3",
55
57
  "typescript": "^5.9.2",
56
58
  "vite": "^7.1.2",
@@ -1,32 +0,0 @@
1
- export type GitChangeKind = "modified" | "added" | "deleted" | "renamed" | "copied" | "untracked" | "conflicted";
2
- export interface GitChange {
3
- path: string;
4
- originalPath: string | null;
5
- indexStatus: string;
6
- workingTreeStatus: string;
7
- kind: GitChangeKind;
8
- }
9
- export interface GitStatus {
10
- branch: string | null;
11
- head: string | null;
12
- upstream: string | null;
13
- ahead: number;
14
- behind: number;
15
- changes: GitChange[];
16
- }
17
- export interface GitDiff {
18
- diff: string;
19
- truncated: boolean;
20
- }
21
- export interface GitBranch {
22
- name: string;
23
- current: boolean;
24
- upstream: string | null;
25
- }
26
- export interface GitCommit {
27
- hash: string;
28
- shortHash: string;
29
- author: string;
30
- date: string;
31
- subject: string;
32
- }
@@ -1 +0,0 @@
1
- import{ax as ae,ay as fe,a9 as ye,w as M,az as he,z as w,A as be,a4 as _e,aA as ge,aB as we,B as ke,aC as pe,aD as Ve,aE as Se,aF as Ce,aG as Te,a7 as $e,a8 as le,aH as xe,ab as oe,E as Pe,aa as Ie,ah as j,aI as De,y as g,F as Be,I as Ae,ae as Ne,aJ as Oe,G as Ue,aK as Fe,aL as Me,aM as Re,aN as qe,aO as H,aP as ze,e as n,aQ as Ee,g as s,_ as Le,R as Ke,O as Q,L as F,au as ne,aR as We,N as Ge,am as X,P as W,d as je,a as Je,T as Ye,U,o as C,n as $,b as c,c as He,q as Qe,r as _,t as i,p as Z,h as d,a2 as Xe,i as D,j as G,l as Ze,m as et,V as ee,f as tt,k as at,s as lt,v as ot,a1 as nt,W as st}from"./index-BegKQ3Yd.js";import{V as te}from"./VSwitch-CxusR4iO.js";import{V as it}from"./VSpacer-C3wAY3F0.js";const rt=Symbol.for("vuetify:v-snackbar-queue");function ut(e,t){const a=ae(rt,null);if(!a)return null;const u=fe();a.register(u),ye(()=>a.unregister(u)),M(e,v=>!v&&a.unregister(u),{flush:"sync"});const{resizeRef:k,contentRect:h}=he();M(t,v=>{k.value=v??null}),M(h,v=>{v?.width&&a.setSize(u,v.height,v.width)});const p=w(()=>a.getOffset(u));return{id:u,offset:p}}function ct(e){const t=j(e());let a=-1;function u(){clearInterval(a)}function k(){u(),oe(()=>t.value=e())}function h(p){const v=p?getComputedStyle(p):{transitionDuration:.2},f=parseFloat(v.transitionDuration)*1e3||200;if(u(),t.value<=0)return;const y=performance.now();a=window.setInterval(()=>{const x=performance.now()-y+f;t.value=Math.max(e()-x,0),t.value<=0&&u()},f)}return De(u),{clear:u,time:t,start:h,reset:k}}const dt=Be({collapsed:Object,loading:Boolean,prependAvatar:String,prependIcon:Ae,queueGap:Number,queueIndex:Number,title:String,text:String,reverseTimer:Boolean,timer:{type:[Boolean,String],default:!1},timerColor:String,timeout:{type:[Number,String],default:5e3},vertical:Boolean,...qe({location:"bottom center"}),...Re(),...Me(),...Fe(),...Ue(),...Ne(Oe({closeOnBack:!1,locationStrategy:null,transition:"v-snackbar-transition"}),["persistent","noClickAnimation","offset","retainFocus","captureFocus","disableInitialFocus","location","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),vt=be()({name:"VSnackbar",props:dt(),emits:{"update:modelValue":e=>!0},setup(e,{slots:t}){const a=_e(e,"modelValue"),{positionClasses:u}=ge(e),{scopeId:k}=we(),{themeClasses:h}=ke(e),{colorClasses:p,colorStyles:v,variantClasses:f}=pe(e),{roundedClasses:y,roundedStyles:x}=Ve(e),T=ct(()=>Number(e.timeout)),P=g(),B=ut(a,()=>P.value?.contentEl);let R;const q=g(),V=j(!1),S=j(!1),z=j(0),E=g(),L=ae(Se,void 0);Ce(()=>!!L,()=>{const r=Te();$e(()=>{E.value=r.mainStyles.value})}),M(a,I),M(()=>e.timeout,I),le(()=>{a.value&&I()});let A=-1;function I(){T.clear(),window.clearTimeout(A);const r=Number(e.timeout);if(!a.value||r===-1)return;T.reset();const b=xe(q.value);oe(()=>T.start(b)),A=window.setTimeout(()=>{a.value=!1},r)}function N(){T.reset(),window.clearTimeout(A)}function K(){V.value=!0,N()}function l(){V.value=!1,S.value||I()}function o(){S.value=!0,N()}function m(r){P.value?.contentEl?.contains(r.relatedTarget)||(S.value=!1,V.value||I())}function se(r){z.value=r.touches[0].clientY}function ie(r){Math.abs(z.value-r.changedTouches[0].clientY)>50&&(a.value=!1)}function re(){V.value&&l(),S.value=!1}const ue=w(()=>e.location.split(" ").reduce((r,b)=>(r[`v-snackbar--${b}`]=!0,r),{})),ce=w(()=>{const[r,b]=e.location.split(" ");return r==="bottom"||["left","right"].includes(r)&&b==="end"?-1:1}),de=w(()=>e.collapsed?{"--v-snackbar-collapsed-height":W(e.collapsed.height),"--v-snackbar-collapsed-width":W(e.collapsed.width)}:null),ve=w(()=>{if(B)return B.offset.value===null?R:R=W(B.offset.value)}),me=w(()=>{if(typeof e.transition!="string"||!e.transition.endsWith("-auto"))return e.transition;const r=e.transition.replace("-auto",""),[b,O]=e.location.split(" "),J=["start","end","left","right"].includes(O)||["left","right"].includes(b)?"x":"y",Y=["end","right"].includes(O)||!["start","left"].includes(O)&&["bottom","right"].includes(b)?"-reverse":"";return`${r}-${J}${Y}-transition`});return Pe(()=>{const r=H.filterProps({...e,location:e.location,locationStrategy:e.locationStrategy??ze}),b=!!(e.prependAvatar||e.prependIcon),O=!!(b||e.loading||t.prepend),J=!!(t.default||t.text||t.title||e.text||e.title);return n(H,X({ref:P,class:["v-snackbar",{"v-snackbar--active":a.value,"v-snackbar--collapsed":!!e.collapsed,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},ue.value,u.value,e.class],style:[E.value,{"--v-snackbar-offset":ve.value,"--v-snackbar-gap":W(e.queueGap),"--v-snackbar-index":e.queueIndex,"--v-snackbar-direction":ce.value},de.value,e.style]},r,{transition:me.value,modelValue:a.value,"onUpdate:modelValue":Y=>a.value=Y,contentProps:X({class:["v-snackbar__wrapper",h.value,p.value,y.value,f.value],style:[v.value,x.value],onPointerenter:K,onPointerleave:l,onFocusin:o,onFocusout:m},r.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",onTouchstartPassive:se,onTouchend:ie,onAfterLeave:re},k),{default:()=>[Ee(!1,"v-snackbar"),t.header&&s("div",{class:"v-snackbar__header"},[t.header?.()]),e.timer&&Number(e.timeout)>0&&!V.value&&s("div",{key:"timer",class:Ke(["v-snackbar__timer",`v-snackbar__timer--${e.timer==="bottom"?"bottom":"top"}`])},[n(Le,{ref:q,color:e.timerColor??"info",max:e.timeout,modelValue:e.reverseTimer?Number(e.timeout)-T.time.value:T.time.value},null)]),O&&n(Q,{key:"prepend-defaults",disabled:!b&&!e.loading,defaults:{VAvatar:{image:e.prependAvatar},VIcon:{icon:e.prependIcon},VProgressCircular:{indeterminate:!0,size:24,width:3}}},{default:()=>[s("div",{class:"v-snackbar__prepend"},[t.prepend?t.prepend():s(F,null,[e.loading&&n(ne,null,null),!e.loading&&e.prependAvatar&&n(We,null,null),!e.loading&&e.prependIcon&&n(Ge,null,null)])])]}),J&&s("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[t.title?.()??(e.title?s("div",{class:"v-snackbar__title",key:"title"},[e.title]):""),t.text?.()??e.text,t.default?.()]),t.actions&&n(Q,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[s("div",{class:"v-snackbar__actions"},[t.actions({isActive:a})])]})],activator:t.activator})}),Ie({},P)}}),mt={class:"cloud-view"},ft={class:"cloud-row"},yt={class:"cloud-row-main"},ht={class:"cloud-row-title"},bt={class:"cloud-row-value"},_t={class:"cloud-row-actions"},gt={class:"cloud-row"},wt={class:"cloud-row-main"},kt={class:"cloud-row-title"},pt={key:0,class:"cloud-row-value mono"},Vt={key:1,class:"cloud-row-value"},St={class:"cloud-row"},Ct={class:"cloud-row-main"},Tt={class:"cloud-row-title"},$t={key:0,class:"cloud-row-value mono"},xt={key:1,class:"cloud-row-value"},Pt={class:"cloud-row"},It={class:"cloud-row-main"},Dt={class:"cloud-row-title"},Bt={class:"cloud-row-value"},At={class:"cloud-restore-row"},Nt={key:3,class:"cloud-loading"},Ot={class:"cloud-row cloud-installation-row"},Ut={class:"cloud-row-main"},Ft={class:"cloud-row-title"},Mt={class:"cloud-row-value mono installation-id"},Et=je({__name:"CloudView",setup(e){const t=Je(),a=g(null),u=g(""),k=g(!1),h=g(""),p=g(!1),v=g(!1),f=g(null),y=g(null),x=Ye(),T=w(()=>{const l=new Set(a.value?.entitlements.map(o=>o.service)??[]);return l.has("remote_mcp")&&l.has("remote_web")}),P=w(()=>{const l=(a.value?.entitlements??[]).map(o=>o.validUntil).filter(o=>!!o).map(o=>Date.parse(o)).filter(Number.isFinite);return l.length?Math.min(...l):null}),B=w(()=>T.value?P.value===null?t.t("$vuetify.chatroom.cloud.active"):`${t.t("$vuetify.chatroom.cloud.expires")} ${new Intl.DateTimeFormat(nt(t.current.value),{dateStyle:"medium",timeStyle:"short"}).format(new Date(P.value))}`:t.t("$vuetify.chatroom.cloud.inactiveDescription")),R=w(()=>f.value==="remote_web"?t.t("$vuetify.chatroom.cloud.disableWebTitle"):t.t("$vuetify.chatroom.cloud.disableMcpTitle")),q=w(()=>f.value==="remote_web"?t.t("$vuetify.chatroom.cloud.disableWebDescription"):t.t("$vuetify.chatroom.cloud.disableMcpDescription"));le(z);function V(l){a.value=l}function S(l){u.value=st(l),k.value=!0}async function z(){const l=x.begin();try{const o=await U("/cloud/status",{signal:l.signal});x.isCurrent(l)&&V(o)}catch(o){x.isCurrent(l)&&S(o)}}async function E(){v.value=!0;try{V(await U("/cloud/sync",{method:"POST"}))}catch(l){S(l)}finally{v.value=!1}}async function L(){try{const l=await U("/cloud/management",{method:"POST"});window.open(l.url,"_blank","noopener,noreferrer")}catch(l){S(l)}}function A(l,o){if(o){N(l,!0);return}f.value=l}async function I(){const l=f.value;l&&(await N(l,!1),y.value===null&&(f.value=null))}async function N(l,o){if(!(!a.value||y.value)){y.value=l;try{V(await U(`/cloud/services/${l}`,{method:"POST",body:JSON.stringify({enabled:o})}))}catch(m){S(m)}finally{y.value=null}}}async function K(){if(h.value.trim()){p.value=!0;try{const l=await U("/cloud/restore",{method:"POST",body:JSON.stringify({recoveryKey:h.value.trim()}),timeoutMs:12e4});V(l.status),h.value=""}catch(l){S(l)}finally{p.value=!1}}}return(l,o)=>(C(),$(F,null,[s("div",mt,[n(ee,{class:"panel-card cloud-panel"},{default:c(()=>[a.value?.lastError?(C(),He(Qe,{key:0,type:"error",variant:"tonal",density:"compact",class:"ma-3"},{default:c(()=>[_(i(a.value.lastError),1)]),_:1})):Z("",!0),a.value&&T.value?(C(),$(F,{key:1},[s("div",ft,[s("div",yt,[s("div",ht,i(d(t).t("$vuetify.chatroom.cloud.subscription")),1),s("div",bt,i(B.value),1)]),s("div",_t,[n(Xe,{color:"success",size:"small",variant:"tonal"},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.cloud.active")),1)]),_:1}),n(D,{icon:"$mdiRefresh",size:"small",variant:"text",loading:v.value,"aria-label":d(t).t("$vuetify.chatroom.cloud.refresh"),onClick:E},null,8,["loading","aria-label"]),n(D,{variant:"text",size:"small",disabled:!a.value.installationId,onClick:L},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.cloud.manage")),1)]),_:1},8,["disabled"])])]),n(G),s("div",gt,[s("div",wt,[s("div",kt,i(d(t).t("$vuetify.chatroom.cloud.remoteMcp")),1),a.value.mcpUrl?(C(),$("div",pt,i(a.value.mcpUrl),1)):(C(),$("div",Vt,i(d(t).t("$vuetify.chatroom.cloud.remoteMcpDescription")),1))]),n(te,{"model-value":a.value.desiredServices.remote_mcp,loading:y.value==="remote_mcp",disabled:y.value!==null,"onUpdate:modelValue":o[0]||(o[0]=m=>A("remote_mcp",!!m))},null,8,["model-value","loading","disabled"])]),n(G),s("div",St,[s("div",Ct,[s("div",Tt,i(d(t).t("$vuetify.chatroom.cloud.remoteWeb")),1),a.value.webUrl?(C(),$("div",$t,i(a.value.webUrl),1)):(C(),$("div",xt,i(d(t).t("$vuetify.chatroom.cloud.remoteWebDescription")),1))]),n(te,{"model-value":a.value.desiredServices.remote_web,loading:y.value==="remote_web",disabled:y.value!==null,"onUpdate:modelValue":o[1]||(o[1]=m=>A("remote_web",!!m))},null,8,["model-value","loading","disabled"])])],64)):a.value?(C(),$(F,{key:2},[s("div",Pt,[s("div",It,[s("div",Dt,i(d(t).t("$vuetify.chatroom.cloud.subscription")),1),s("div",Bt,i(B.value),1)]),n(D,{color:"primary",variant:"flat",size:"small",disabled:!a.value.installationId,onClick:L},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.cloud.purchase")),1)]),_:1},8,["disabled"])]),n(G),s("div",At,[n(Ze,{modelValue:h.value,"onUpdate:modelValue":o[2]||(o[2]=m=>h.value=m),placeholder:d(t).t("$vuetify.chatroom.cloud.recoveryKey"),type:"password",density:"compact",variant:"outlined","hide-details":"",autocomplete:"off",onKeyup:et(K,["enter"])},null,8,["modelValue","placeholder"]),n(D,{loading:p.value,disabled:!a.value.installationId||!h.value.trim(),variant:"tonal",size:"small",onClick:K},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.cloud.restoreAction")),1)]),_:1},8,["loading","disabled"])])],64)):(C(),$("div",Nt,[n(ne,{indeterminate:"",size:"20",width:"2"})])),a.value?(C(),$(F,{key:4},[n(G),s("div",Ot,[s("div",Ut,[s("div",Ft,i(d(t).t("$vuetify.chatroom.cloud.installationId")),1),s("div",Mt,i(a.value.installationId||"—"),1)])])],64)):Z("",!0)]),_:1})]),n(ot,{"model-value":f.value!==null,"max-width":"480","onUpdate:modelValue":o[4]||(o[4]=m=>!m&&(f.value=null))},{default:c(()=>[n(ee,null,{default:c(()=>[n(tt,null,{default:c(()=>[_(i(R.value),1)]),_:1}),n(at,null,{default:c(()=>[_(i(q.value),1)]),_:1}),n(lt,null,{default:c(()=>[n(it),n(D,{variant:"text",disabled:y.value!==null,onClick:o[3]||(o[3]=m=>f.value=null)},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),n(D,{color:"error",variant:"flat",loading:y.value===f.value,onClick:I},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.cloud.disableConfirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]),n(vt,{modelValue:k.value,"onUpdate:modelValue":o[6]||(o[6]=m=>k.value=m),color:"error",location:"top",timeout:6e3},{actions:c(()=>[n(D,{variant:"text",onClick:o[5]||(o[5]=m=>k.value=!1)},{default:c(()=>[_(i(d(t).t("$vuetify.chatroom.common.close")),1)]),_:1})]),default:c(()=>[_(i(u.value)+" ",1)]),_:1},8,["modelValue"])],64))}});export{Et as default};
@@ -1,3 +0,0 @@
1
- import{A as _,B as x,C as B,bN as R,bO as T,aA as $,aD as E,E as D,F as O,G as A,b7 as H,aL as N,aM as U,aN as j,bP as z,J as M,K as F,bQ as G,e as i,Q as I,R as w,S as Q,bR as W,d as J,a as q,w as S,bS as K,a9 as X,o as g,c as Y,b as Z,n as b,L as ee,g as p,l as ae,h as v,i as C,j as oe,p as te,t as le,y as k,ah as se,z as L}from"./index-BegKQ3Yd.js";import{V as ne}from"./VSpacer-C3wAY3F0.js";const ie=O({color:String,...G(),...F(),...M(),...z(),...j(),...U(),...N(),...H(),...A()},"VSheet"),re=_()({name:"VSheet",props:ie(),setup(e,{slots:o}){const{themeClasses:u}=x(e),{backgroundColorClasses:h,backgroundColorStyles:s}=B(()=>e.color),{borderClasses:r}=R(e),{dimensionStyles:n}=Q(e),{elevationClasses:l}=W(e),{locationStyles:d}=T(e),{positionClasses:c}=$(e),{roundedClasses:m,roundedStyles:y}=E(e);return D(()=>i(e.tag,{class:w(["v-sheet",u.value,h.value,r.value,l.value,c.value,m.value,e.class]),style:I([s.value,n.value,d.value,y.value,e.style])},o)),{}}}),ce={class:"code-toolbar"},ue={class:"code-actions"},de=["innerHTML"],me={key:1},ve=2e5,he=120,ye=J({__name:"CodeViewer",props:{value:{},text:{},filename:{default:"chatroom-output.txt"},language:{},toolbar:{type:Boolean,default:!0}},setup(e){const o=e,u=k(""),h=k(""),s=k(!0),r=se(null),n=q();let l=null,d=0;const c=L(()=>o.text??JSON.stringify(o.value??null,null,2)),m=L(()=>{const t=h.value.toLocaleLowerCase();return t?c.value.split(`
2
- `).filter(a=>a.toLocaleLowerCase().includes(t)).join(`
3
- `):c.value});S(u,t=>{l&&clearTimeout(l),l=setTimeout(()=>{h.value=t,l=null},he)}),S([m,()=>o.filename,()=>o.language,()=>o.value!==void 0],async()=>{const t=++d,a=m.value;if(!a||a.length>ve){r.value=null;return}const{highlightSource:f}=await K(async()=>{const{highlightSource:P}=await import("./syntax-highlight-B5ArnyrC.js");return{highlightSource:P}},[]);t===d&&(r.value=f(a,{filename:o.filename,language:o.language??(o.value!==void 0?"json":null)}))},{immediate:!0}),X(()=>{l&&clearTimeout(l),d+=1});async function y(){await navigator.clipboard.writeText(c.value)}function V(){const t=URL.createObjectURL(new Blob([c.value],{type:"text/plain;charset=utf-8"})),a=document.createElement("a");a.href=t,a.download=o.filename,a.click(),URL.revokeObjectURL(t)}return(t,a)=>(g(),Y(re,{border:e.toolbar,rounded:e.toolbar?"lg":0,"overflow-hidden":"",class:w(["code-viewer",{"code-viewer-plain":!e.toolbar}])},{default:Z(()=>[e.toolbar?(g(),b(ee,{key:0},[p("div",ce,[i(ae,{modelValue:u.value,"onUpdate:modelValue":a[0]||(a[0]=f=>u.value=f),placeholder:v(n).t("$vuetify.chatroom.code.search"),"prepend-inner-icon":"$mdiMagnify",density:"compact","hide-details":"",class:"code-search"},null,8,["modelValue","placeholder"]),i(ne),p("div",ue,[i(C,{icon:"$mdiContentCopy",size:"small",variant:"text","aria-label":v(n).t("$vuetify.chatroom.code.copy"),onClick:y},null,8,["aria-label"]),i(C,{icon:s.value?"$mdiWrap":"$mdiFormatAlignLeft",size:"small",variant:"text","aria-label":v(n).t(s.value?"$vuetify.chatroom.code.disableWrap":"$vuetify.chatroom.code.enableWrap"),onClick:a[1]||(a[1]=f=>s.value=!s.value)},null,8,["icon","aria-label"]),i(C,{icon:"$mdiDownloadOutline",size:"small",variant:"text","aria-label":v(n).t("$vuetify.chatroom.code.download"),onClick:V},null,8,["aria-label"])])]),i(oe)],64)):te("",!0),p("pre",{class:w(["code-block",{wrap:s.value}])},[r.value?(g(),b("code",{key:0,class:"hljs",innerHTML:r.value},null,8,de)):(g(),b("code",me,le(m.value||v(n).t("$vuetify.chatroom.code.noOutput")),1))],2)]),_:1},8,["border","rounded","class"]))}});export{re as V,ye as _};
@@ -1 +0,0 @@
1
- .computer-operation-scroll[data-v-5fb7b261]{max-height:min(280px,36dvh);overflow-y:auto;overscroll-behavior:contain}.computer-operation-list[data-v-5fb7b261]{padding-block:4px}.computer-operation-list[data-v-5fb7b261] .v-list-item{min-height:52px;padding-inline:18px}.computer-operation-list[data-v-5fb7b261] .v-list-item-title,.computer-operation-list[data-v-5fb7b261] .v-list-item-subtitle{font-size:12px}.computer-preview-heading[data-v-78483d0f]{min-width:0}.computer-preview-time[data-v-78483d0f]{margin-top:2px;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.computer-preview-content[data-v-78483d0f]{padding:14px}.computer-screen-shell[data-v-78483d0f]{overflow:hidden;border:1px solid rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface));line-height:0}.computer-screen-shell img[data-v-78483d0f]{display:block;width:100%;height:auto;max-height:62vh;object-fit:contain}.computer-screen-empty[data-v-78483d0f]{display:flex;min-height:250px;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;border:1px dashed rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface),.68);text-align:center}.computer-preview-meta[data-v-78483d0f]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:10px;margin-top:10px}.computer-preview-meta>div[data-v-78483d0f]{display:flex;min-width:0;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:rgb(var(--v-theme-on-surface),.04)}.computer-preview-meta span[data-v-78483d0f]{color:rgb(var(--v-theme-on-surface),.7);font-size:11px}.computer-preview-meta strong[data-v-78483d0f]{color:rgb(var(--v-theme-on-surface),.92);font-size:12px;font-weight:650}@media(max-width:900px){.computer-preview-meta[data-v-78483d0f]{grid-template-columns:1fr}.computer-screen-empty[data-v-78483d0f]{min-height:190px}}.computer-status-list[data-v-d7b81c3a]{display:flex;flex-direction:column;gap:2px;padding:12px 18px}.computer-status-row[data-v-d7b81c3a]{display:flex;min-height:36px;align-items:center;justify-content:space-between;gap:16px}.computer-status-label[data-v-d7b81c3a]{color:rgb(var(--v-theme-on-surface),.76);font-size:13px;font-weight:500}.computer-status-value[data-v-d7b81c3a]{color:rgb(var(--v-theme-on-surface),.94);font-size:13px;font-weight:600}.computer-permission-value[data-v-d7b81c3a]{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:10px}.computer-permission-state[data-v-d7b81c3a]{font-size:13px;font-weight:600;white-space:nowrap}.computer-permission-state.is-granted[data-v-d7b81c3a]{color:rgb(var(--v-theme-success))}.computer-permission-state.is-denied[data-v-d7b81c3a]{color:rgb(var(--v-theme-warning))}.computer-permission-state.is-muted[data-v-d7b81c3a]{color:rgb(var(--v-theme-on-surface),.72)}.computer-permission-btn[data-v-d7b81c3a]{min-width:64px;height:30px;font-size:12px;font-weight:650}.computer-permission-alert[data-v-d7b81c3a]{margin-top:8px}.computer-settings-list[data-v-d7b81c3a],.computer-display-list[data-v-d7b81c3a]{padding-block:4px}.computer-settings-list[data-v-d7b81c3a] .v-list-item,.computer-display-list[data-v-d7b81c3a] .v-list-item{min-height:48px;padding-inline:18px}.computer-settings-list[data-v-d7b81c3a] .v-list-item-title,.computer-display-list[data-v-d7b81c3a] .v-list-item-title,.computer-display-list[data-v-d7b81c3a] .v-list-item-subtitle{font-size:12px}@media(max-width:900px){.computer-status-row[data-v-d7b81c3a]{min-height:40px}}.computer-view[data-v-25e35a6d]{display:flex;flex-direction:column;gap:14px;font-size:14px}
@@ -1 +0,0 @@
1
- import{u as ae}from"./useOperationLabels-BDjzGDkT.js";import{d as I,a as E,o as p,c as g,b as d,g as r,t as n,h as s,e as m,i as V,j as x,Y as N,n as S,L as D,X,Z as P,$ as oe,r as B,a0 as re,a1 as Z,k as W,V as L,p as k,q as j,N as ie,z as U,R as H,T as z,w as ne,a8 as ce,a9 as ue,U as C,W as le,y as _,as as me}from"./index-BegKQ3Yd.js";import{d as K}from"./utils-rtPwWNel.js";import{_ as de}from"./StateChip.vue_vue_type_script_setup_true_lang-DyOhJmR6.js";import{_ as O}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{V as J}from"./VSwitch-CxusR4iO.js";const pe={class:"panel-header compact-header"},ve={class:"panel-title"},fe={class:"computer-operation-scroll"},ye=I({__name:"ComputerOperations",props:{operations:{},busy:{type:Boolean}},emits:["refresh"],setup(e,{emit:y}){const i=y,t=E(),{sourceLabel:l}=ae();function w(o){if(o.action==="snapshot")return t.t("$vuetify.chatroom.computer.log.snapshot");if(o.action==="settings.set")return t.t("$vuetify.chatroom.computer.log.settings");if(o.action!=="action")return o.action;const a=$(o.input),c=Array.isArray(a.actions)?a.actions:[];return c.length?c.map(b).join(" · "):t.t("$vuetify.chatroom.computer.log.action")}function b(o){const a=$(o),c=String(a.type??"action"),h=typeof a.elementId=="number"?` #${a.elementId}`:"";switch(c){case"activate_app":return t.t("$vuetify.chatroom.computer.log.activateApp",String(a.app??""));case"activate_window":return t.t("$vuetify.chatroom.computer.log.activateWindow",h.trim());case"click":return t.t("$vuetify.chatroom.computer.log.click",h.trim()||v(a));case"double_click":return t.t("$vuetify.chatroom.computer.log.doubleClick",h.trim()||v(a));case"right_click":return t.t("$vuetify.chatroom.computer.log.rightClick",h.trim()||v(a));case"move":return t.t("$vuetify.chatroom.computer.log.move",v(a));case"drag":return t.t("$vuetify.chatroom.computer.log.drag");case"scroll":return t.t("$vuetify.chatroom.computer.log.scroll",String(a.deltaY??0));case"keypress":return t.t("$vuetify.chatroom.computer.log.keypress",Array.isArray(a.keys)?a.keys.join("+"):"");case"type_text":case"set_value":return t.t("$vuetify.chatroom.computer.log.typeText",String(a.characters??0));case"invoke":return t.t("$vuetify.chatroom.computer.log.invoke",h.trim());case"select_text":return t.t("$vuetify.chatroom.computer.log.selectText",h.trim());case"move_window":return t.t("$vuetify.chatroom.computer.log.moveWindow",h.trim());case"resize_window":return t.t("$vuetify.chatroom.computer.log.resizeWindow",h.trim());case"wait":return t.t("$vuetify.chatroom.computer.log.wait",String(a.ms??0));default:return c}}function v(o){return`(${Math.round(Number(o.x??0))}, ${Math.round(Number(o.y??0))})`}function $(o){return o&&typeof o=="object"?o:{}}return(o,a)=>(p(),g(L,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[r("div",pe,[r("div",ve,n(s(t).t("$vuetify.chatroom.computer.recentOperations")),1),m(V,{size:"small",variant:"text",icon:"$mdiRefresh",loading:e.busy,"aria-label":s(t).t("$vuetify.chatroom.computer.refreshOperations"),onClick:a[0]||(a[0]=c=>i("refresh"))},null,8,["loading","aria-label"])]),m(x),r("div",fe,[e.operations.length?(p(),g(N,{key:0,lines:"two",density:"compact",class:"computer-operation-list"},{default:d(()=>[(p(!0),S(D,null,X(e.operations,c=>(p(),g(P,{key:c.operationId},{append:d(()=>[m(de,{value:c.status},null,8,["value"])]),default:d(()=>[m(oe,null,{default:d(()=>[B(n(w(c)),1)]),_:2},1024),m(re,null,{default:d(()=>[B(n(s(K)(c.startedAt,s(Z)(s(t).current.value)))+" · "+n(s(l)(c.source)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),g(W,{key:1,class:"muted"},{default:d(()=>[B(n(s(t).t("$vuetify.chatroom.computer.noOperations")),1)]),_:1}))])]),_:1}))}}),he=O(ye,[["__scopeId","data-v-5fb7b261"]]),ge={class:"panel-header compact-header"},be={class:"computer-preview-heading"},$e={class:"panel-title"},we={key:0,class:"computer-preview-time"},_e={key:1,class:"computer-screen-shell"},ke=["src","alt"],Be={key:2,class:"computer-screen-empty"},Se={key:3,class:"computer-preview-meta"},Ce={class:"text-truncate"},Re=I({__name:"ComputerPreview",props:{preview:{},enabled:{type:Boolean},busy:{type:Boolean},remotePreviewBlocked:{type:Boolean}},emits:["refresh"],setup(e,{emit:y}){const i=e,t=y,l=E(),w=U(()=>{const v=i.preview?.screenshot;return v?`data:${v.mimeType};base64,${v.data}`:""}),b=U(()=>{const v=i.preview?.capturedAt;return v?K(v,Z(l.current.value)):""});return(v,$)=>(p(),g(L,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[r("div",ge,[r("div",be,[r("div",$e,n(s(l).t("$vuetify.chatroom.computer.latestScreen")),1),b.value?(p(),S("div",we,n(s(l).t("$vuetify.chatroom.computer.capturedAt",b.value)),1)):k("",!0)]),m(V,{size:"small",variant:"tonal","prepend-icon":"$mdiRefresh",loading:e.busy,disabled:!e.enabled,onClick:$[0]||($[0]=o=>t("refresh"))},{default:d(()=>[B(n(s(l).t("$vuetify.chatroom.computer.refreshScreen")),1)]),_:1},8,["loading","disabled"])]),m(x),m(W,{class:"computer-preview-content"},{default:d(()=>[e.remotePreviewBlocked?(p(),g(j,{key:0,type:"info",variant:"tonal",density:"compact",class:"mb-3"},{default:d(()=>[B(n(s(l).t("$vuetify.chatroom.computer.remoteDisabled")),1)]),_:1})):k("",!0),w.value?(p(),S("div",_e,[r("img",{src:w.value,alt:s(l).t("$vuetify.chatroom.computer.latestScreen")},null,8,ke)])):(p(),S("div",Be,[m(ie,{icon:"$mdiMonitorScreenshot",size:"42"}),r("span",null,n(s(l).t("$vuetify.chatroom.computer.noSnapshot")),1)])),e.preview?(p(),S("div",Se,[r("div",null,[r("span",null,n(s(l).t("$vuetify.chatroom.computer.activeApp")),1),r("strong",null,n(e.preview.activeApp||"—"),1)]),r("div",null,[r("span",null,n(s(l).t("$vuetify.chatroom.computer.activeWindow")),1),r("strong",Ce,n(e.preview.activeWindow||"—"),1)]),r("div",null,[r("span",null,n(s(l).t("$vuetify.chatroom.computer.elements")),1),r("strong",null,n(e.preview.elementCount),1)])])):k("",!0)]),_:1})]),_:1}))}}),qe=O(Re,[["__scopeId","data-v-78483d0f"]]),xe={class:"panel-header compact-header"},Ae={class:"panel-title"},Pe={class:"computer-status-row"},Ve={class:"computer-status-label"},Le={class:"computer-status-value"},Ie={class:"computer-status-row"},Oe={class:"computer-status-label"},Te={class:"computer-status-value"},ze={class:"computer-status-row"},Ne={class:"computer-status-label"},De={class:"computer-permission-value"},Ue={class:"computer-status-row"},Ee={class:"computer-status-label"},We={class:"computer-permission-value"},je={class:"panel-header compact-header"},Me={class:"panel-title"},Fe=I({__name:"ComputerStatus",props:{status:{},settingsBusy:{type:Boolean},permissionBusy:{},permissionRequestsAllowed:{type:Boolean}},emits:["updateSetting","requestPermission"],setup(e,{emit:y}){const i=y,t=E();function l(o){return t.t(`$vuetify.chatroom.computer.platformStates.${o}`)}function w(o){return t.t(`$vuetify.chatroom.computer.helperStates.${o}`)}function b(o){return t.t(`$vuetify.chatroom.computer.permissionStates.${o}`)}function v(o){return o==="granted"?"is-granted":o==="denied"?"is-denied":"is-muted"}function $(o){const a=o.primary?` · ${t.t("$vuetify.chatroom.computer.primaryDisplay")}`:"";return`${o.width}×${o.height} · ${o.scale}x${a}`}return(o,a)=>e.status?(p(),S(D,{key:0},[m(L,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[r("div",xe,[r("div",Ae,n(s(t).t("$vuetify.chatroom.computer.title")),1)]),m(x),m(W,{class:"computer-status-list"},{default:d(()=>[r("div",Pe,[r("span",Ve,n(s(t).t("$vuetify.chatroom.computer.platform")),1),r("strong",Le,n(l(e.status.platform)),1)]),r("div",Ie,[r("span",Oe,n(s(t).t("$vuetify.chatroom.computer.helper")),1),r("strong",Te,n(w(e.status.helper)),1)]),r("div",ze,[r("span",Ne,n(s(t).t("$vuetify.chatroom.computer.accessibility")),1),r("div",De,[r("strong",{class:H(["computer-permission-state",v(e.status.permissions.accessibility)])},n(b(e.status.permissions.accessibility)),3),e.status.platform==="macos"&&e.status.permissions.accessibility!=="granted"?(p(),g(V,{key:0,class:"computer-permission-btn",color:"primary",size:"small",variant:"tonal",loading:e.permissionBusy==="accessibility",disabled:!e.permissionRequestsAllowed||e.permissionBusy!==null,onClick:a[0]||(a[0]=c=>i("requestPermission","accessibility"))},{default:d(()=>[B(n(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):k("",!0)])]),r("div",Ue,[r("span",Ee,n(s(t).t("$vuetify.chatroom.computer.screenRecording")),1),r("div",We,[r("strong",{class:H(["computer-permission-state",v(e.status.permissions.screenRecording)])},n(b(e.status.permissions.screenRecording)),3),e.status.platform==="macos"&&e.status.permissions.screenRecording!=="granted"?(p(),g(V,{key:0,class:"computer-permission-btn",color:"primary",size:"small",variant:"tonal",loading:e.permissionBusy==="screenRecording",disabled:!e.permissionRequestsAllowed||e.permissionBusy!==null,onClick:a[1]||(a[1]=c=>i("requestPermission","screenRecording"))},{default:d(()=>[B(n(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):k("",!0)])]),e.status.platform==="macos"&&!e.permissionRequestsAllowed&&(e.status.permissions.accessibility!=="granted"||e.status.permissions.screenRecording!=="granted")?(p(),g(j,{key:0,type:"info",variant:"tonal",density:"compact",class:"computer-permission-alert"},{default:d(()=>[B(n(s(t).t("$vuetify.chatroom.computer.permissionLocalOnly")),1)]),_:1})):k("",!0)]),_:1}),m(x),m(N,{density:"compact",class:"computer-settings-list"},{default:d(()=>[m(P,{title:s(t).t("$vuetify.chatroom.computer.enabled")},{append:d(()=>[m(J,{"model-value":e.status.settings.enabled,disabled:e.settingsBusy,"onUpdate:modelValue":a[2]||(a[2]=c=>i("updateSetting","enabled",!!c))},null,8,["model-value","disabled"])]),_:1},8,["title"]),m(P,{title:s(t).t("$vuetify.chatroom.computer.remoteAccess")},{append:d(()=>[m(J,{"model-value":e.status.settings.remoteAccess,disabled:e.settingsBusy,"onUpdate:modelValue":a[3]||(a[3]=c=>i("updateSetting","remoteAccess",!!c))},null,8,["model-value","disabled"])]),_:1},8,["title"])]),_:1})]),_:1}),e.status.displays.length?(p(),g(L,{key:0,rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[r("div",je,[r("div",Me,n(s(t).t("$vuetify.chatroom.computer.displays")),1)]),m(x),m(N,{density:"compact",class:"computer-display-list"},{default:d(()=>[(p(!0),S(D,null,X(e.status.displays,c=>(p(),g(P,{key:c.id,title:c.name,subtitle:$(c)},null,8,["title","subtitle"]))),128))]),_:1})]),_:1})):k("",!0)],64)):k("",!0)}}),Ye=O(Fe,[["__scopeId","data-v-d7b81c3a"]]);function Ge(e){const y=_(null),i=_(null),t=_([]),l=_(""),w=_(!1),b=_(!1),v=_(!1),$=_(!1),o=_(null),a=z(),c=z(),h=z(),M=U(()=>["localhost","127.0.0.1","::1","[::1]"].includes(window.location.hostname));ne(e,()=>{T()}),ce(()=>{window.addEventListener("focus",G),T()}),ue(()=>{window.removeEventListener("focus",G)});async function T(){l.value="",await Promise.all([F(),A(),Y()])}async function F(){const u=a.begin();try{const f=await C("/computer/status",{signal:u.signal});a.isCurrent(u)&&(y.value=f)}catch(f){a.isCurrent(u)&&R(f)}}async function A(){const u=h.begin();try{const f=await C("/operations?pluginId=computer&limit=50",{signal:u.signal});h.isCurrent(u)&&(t.value=f)}catch(f){h.isCurrent(u)&&R(f)}}async function Y(){const u=c.begin();w.value=!1;try{const f=await C("/computer/preview",{signal:u.signal});c.isCurrent(u)&&(i.value=f)}catch(f){if(!c.isCurrent(u))return;if(He(f)){i.value=null,w.value=!0;return}R(f)}}async function G(){if(y.value?.platform!=="macos"||y.value.permissions.accessibility==="granted"&&y.value.permissions.screenRecording==="granted")return;const u=a.begin();try{const f=await C("/computer/status",{signal:u.signal});a.isCurrent(u)&&(y.value=f)}catch{}}async function Q(u,f){v.value=!0,l.value="",a.invalidate(),c.invalidate(),h.invalidate();try{await C("/computer/settings",{method:"PATCH",body:JSON.stringify({[u]:f})}),await Promise.all([F(),Y(),A()])}catch(q){R(q)}finally{v.value=!1}}async function ee(u){if(!M.value)return;o.value=u,l.value="";const f=u==="accessibility"?"/computer/permissions/accessibility/request":"/computer/permissions/screen-recording/request";a.invalidate();try{const q=await C(f,{method:"POST"});y.value=q}catch(q){R(q)}finally{o.value=null}}async function te(){b.value=!0,l.value="",c.invalidate();try{const u=await C("/computer/snapshot",{method:"POST"});i.value=u,await A()}catch(u){R(u)}finally{b.value=!1}}async function se(){$.value=!0,l.value="",await A(),$.value=!1}function R(u){l.value||(l.value=le(u))}return{status:y,preview:i,operations:t,error:l,remotePreviewBlocked:w,snapshotBusy:b,settingsBusy:v,operationsBusy:$,permissionBusy:o,permissionRequestsAllowed:M,load:T,updateSetting:Q,requestPermission:ee,refreshSnapshot:te,refreshOperations:se}}function He(e){return!(e instanceof me)||e.code!=="FORBIDDEN"||!e.details||typeof e.details!="object"?!1:"reason"in e.details&&e.details.reason==="remote_computer_disabled"}const Je={class:"computer-view"},Xe=I({__name:"ComputerView",props:{revision:{}},setup(e){const y=e,i=Ge(()=>y.revision);return(t,l)=>(p(),S("div",Je,[s(i).error.value?(p(),g(j,{key:0,type:"error",variant:"tonal"},{default:d(()=>[B(n(s(i).error.value),1)]),_:1})):k("",!0),m(qe,{preview:s(i).preview.value,enabled:s(i).status.value?.settings.enabled??!1,busy:s(i).snapshotBusy.value,"remote-preview-blocked":s(i).remotePreviewBlocked.value,onRefresh:s(i).refreshSnapshot},null,8,["preview","enabled","busy","remote-preview-blocked","onRefresh"]),m(he,{operations:s(i).operations.value,busy:s(i).operationsBusy.value,onRefresh:s(i).refreshOperations},null,8,["operations","busy","onRefresh"]),m(Ye,{status:s(i).status.value,"settings-busy":s(i).settingsBusy.value,"permission-busy":s(i).permissionBusy.value,"permission-requests-allowed":s(i).permissionRequestsAllowed.value,onUpdateSetting:s(i).updateSetting,onRequestPermission:s(i).requestPermission},null,8,["status","settings-busy","permission-busy","permission-requests-allowed","onUpdateSetting","onRequestPermission"])]))}}),at=O(Xe,[["__scopeId","data-v-25e35a6d"]]);export{at as default};
@@ -1 +0,0 @@
1
- .mcp-tools-view[data-v-4147e542]{display:grid;gap:14px}.mcp-tools-refresh[data-v-4147e542]{flex:0 0 auto}.mcp-tool-group-header[data-v-4147e542],.mcp-tool-row[data-v-4147e542]{display:grid;grid-template-columns:minmax(0,1fr) 52px;align-items:center;column-gap:18px}.mcp-tool-group-header[data-v-4147e542]{min-height:56px;padding:10px 18px}.mcp-tool-list[data-v-4147e542]{display:grid}.mcp-tool-row[data-v-4147e542]{min-width:0;min-height:54px;padding:8px 18px;border-bottom:1px solid rgb(var(--v-theme-outline),.08)}.mcp-tool-row[data-v-4147e542]:last-child{border-bottom:0}.mcp-tool-copy[data-v-4147e542]{width:100%;min-width:0}.mcp-tool-heading[data-v-4147e542]{display:flex;min-width:0;align-items:baseline;gap:12px}.mcp-tool-heading strong[data-v-4147e542],.mcp-tool-heading code[data-v-4147e542]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mcp-tool-heading strong[data-v-4147e542]{flex:0 1 auto;font-size:13px;font-weight:650}.mcp-tool-heading code[data-v-4147e542]{flex:1 1 0;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.mcp-tool-switch[data-v-4147e542]{width:52px;min-width:52px;max-width:52px;justify-self:end}.mcp-tool-switch[data-v-4147e542] .v-input__control,.mcp-tool-switch[data-v-4147e542] .v-selection-control{width:52px;min-width:52px;max-width:52px}.mcp-tool-switch[data-v-4147e542] .v-selection-control{flex:0 0 52px}@media(max-width:640px){.mcp-tools-view[data-v-4147e542]{gap:12px}.mcp-tool-group-header[data-v-4147e542],.mcp-tool-row[data-v-4147e542]{column-gap:10px;padding-inline:14px}.mcp-tool-group-header[data-v-4147e542]{min-height:54px}.mcp-tool-row[data-v-4147e542]{min-height:52px;padding-block:7px}.mcp-tool-heading[data-v-4147e542]{gap:8px}}@media(max-width:380px){.mcp-tool-group-header[data-v-4147e542],.mcp-tool-row[data-v-4147e542]{column-gap:8px;padding-inline:12px}.mcp-tool-heading[data-v-4147e542]{gap:6px}}
@@ -1 +0,0 @@
1
- import{d as N,a as q,T as P,a8 as R,U as x,W as $,o as n,n as v,c as f,b as h,r as S,t as r,q as z,p as g,e as m,g as l,h as _,i as A,V as b,L as B,X as I,y as w,z as D,_ as G,j,aw as F}from"./index-BegKQ3Yd.js";import{V as U}from"./VSwitch-CxusR4iO.js";import{_ as H}from"./_plugin-vue_export-helper-DlAUqK2U.js";const J={class:"mcp-tools-view"},O={class:"panel-header"},W={class:"panel-title"},X={class:"mcp-tool-group-header"},K={class:"min-w-0"},Q={class:"panel-title"},Y={class:"mcp-tool-list"},Z=["title"],ee={class:"mcp-tool-heading"},ae={class:"empty-inline"},te=N({__name:"McpToolsView",setup(se){const d=q(),o=w([]),u=w(!1),i=w(""),c=F(new Set),p=P(),E=D(()=>{const e=new Map;for(const a of o.value){const t=e.get(a.pluginId)??[];t.push(a),e.set(a.pluginId,t)}return[...e.entries()].map(([a,t])=>({pluginId:a,tools:t}))});R(()=>{V()});async function V(){const e=p.begin();u.value=!0,i.value="";try{const a=await x("/mcp/tools",{signal:e.signal});p.isCurrent(e)&&(o.value=a)}catch(a){p.isCurrent(e)&&(i.value=$(a))}finally{p.isCurrent(e)&&(u.value=!1)}}async function k(e,a){if(!(c.has(e.name)||e.enabled===a)){c.add(e.name),i.value="";try{const t=await x(`/mcp/tools/${encodeURIComponent(e.name)}`,{method:"PATCH",body:JSON.stringify({enabled:a})}),s=o.value.findIndex(y=>y.name===t.name);s>=0&&(o.value[s]=t)}catch(t){i.value=$(t)}finally{c.delete(e.name)}}}async function L(e,a){const t=e.tools.filter(s=>s.enabled!==a&&!c.has(s.name));await Promise.all(t.map(s=>k(s,a)))}function C(e){return["workspace","process","computer"].includes(e)?d.t(`$vuetify.chatroom.mcpTools.plugins.${e}`):e}function M(e){return e.tools.some(a=>a.enabled)}function T(e){return e.tools.every(a=>a.enabled)}return(e,a)=>(n(),v("div",J,[i.value?(n(),f(z,{key:0,type:"error",variant:"tonal",density:"compact"},{default:h(()=>[S(r(i.value),1)]),_:1})):g("",!0),m(b,{class:"panel-card"},{default:h(()=>[l("div",O,[l("div",null,[l("div",W,r(_(d).t("$vuetify.chatroom.mcpTools.title")),1)]),m(A,{class:"mcp-tools-refresh",icon:"$mdiRefresh",size:"small",variant:"text",loading:u.value,"aria-label":_(d).t("$vuetify.chatroom.mcpTools.refresh"),onClick:V},null,8,["loading","aria-label"])])]),_:1}),u.value&&!o.value.length?(n(),f(G,{key:1,indeterminate:"",rounded:""})):g("",!0),(n(!0),v(B,null,I(E.value,t=>(n(),f(b,{key:t.pluginId,class:"panel-card mcp-tool-group"},{default:h(()=>[l("div",X,[l("div",K,[l("div",Q,r(C(t.pluginId)),1)]),m(U,{class:"mcp-tool-switch","model-value":T(t),indeterminate:M(t)&&!T(t),color:"primary",density:"compact","hide-details":"",inset:"",disabled:t.tools.some(s=>c.has(s.name)),"aria-label":_(d).t("$vuetify.chatroom.mcpTools.togglePlugin",C(t.pluginId)),"onUpdate:modelValue":s=>L(t,!!s)},null,8,["model-value","indeterminate","disabled","aria-label","onUpdate:modelValue"])]),m(j),l("div",Y,[(n(!0),v(B,null,I(t.tools,s=>(n(),v("div",{key:s.name,class:"mcp-tool-row"},[l("div",{class:"mcp-tool-copy",title:s.description},[l("div",ee,[l("strong",null,r(s.title),1),l("code",null,r(s.name),1)])],8,Z),m(U,{class:"mcp-tool-switch","model-value":s.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:c.has(s.name),"aria-label":s.name,"onUpdate:modelValue":y=>k(s,!!y)},null,8,["model-value","loading","aria-label","onUpdate:modelValue"])]))),128))])]),_:2},1024))),128)),!u.value&&!o.value.length?(n(),f(b,{key:2,class:"panel-card"},{default:h(()=>[l("div",ae,r(_(d).t("$vuetify.chatroom.mcpTools.empty")),1)]),_:1})):g("",!0)]))}}),ie=H(te,[["__scopeId","data-v-4147e542"]]);export{ie as default};
@@ -1,4 +0,0 @@
1
- import{d as P,a as Z,o as v,n as C,L as te,X as re,t as a,h as e,R as ue,g as s,e as l,c as _,b as o,i as I,p as k,a1 as ce,j as H,r as y,V as U,y as g,D as de,T as Q,w as z,a9 as ve,U as B,W as D,ab as Y,aZ as fe,q as ee,au as me,f as pe,k as ye,s as he,v as ge}from"./index-BegKQ3Yd.js";import{u as ae}from"./useOperationLabels-BDjzGDkT.js";import{c as $e,a as _e,d as ke}from"./utils-rtPwWNel.js";import{_ as le}from"./StateChip.vue_vue_type_script_setup_true_lang-DyOhJmR6.js";import{_ as O}from"./CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js";import{V as be,a as j,b as Ve,c as G}from"./VTabs-qBcuuXh3.js";import{V as we}from"./VSpacer-C3wAY3F0.js";const Ce={key:0,class:"responsive-record-list"},xe=["onClick"],Ie={class:"responsive-record-main"},Te={class:"responsive-record-title"},Le={class:"responsive-record-subtitle mono"},Be={class:"responsive-record-meta"},De={class:"responsive-record-side"},Me={key:1,class:"empty-inline"},Ae=P({__name:"OperationTable",props:{events:{},selected:{}},emits:["select"],setup(i){const b=Z(),{actionLabel:c,sourceLabel:m}=ae();return(V,w)=>i.events.length?(v(),C("div",Ce,[(v(!0),C(te,null,re(i.events,u=>(v(),C("button",{key:u.operationId,type:"button",class:ue(["responsive-record-row",{"selected-row":i.selected===u.operationId}]),onClick:d=>V.$emit("select",u)},[s("div",Ie,[s("div",Te,a(e(c)(u.action)),1),s("div",Le,a(u.pluginId),1)]),s("div",Be,[s("span",null,a(e($e)(u.startedAt)),1),s("span",null,a(e(m)(u.source)),1),s("span",null,a(u.durationMs===null?e(b).t("$vuetify.chatroom.statuses.running"):e(_e)(u.durationMs)),1)]),s("div",De,[l(le,{value:u.status},null,8,["value"])])],10,xe))),128))])):(v(),C("div",Me,a(e(b).t("$vuetify.chatroom.operations.empty")),1))}}),qe={class:"panel-header operation-detail-header"},ze={class:"min-w-0 detail-header-title"},Oe={class:"panel-title text-truncate"},Ue={class:"panel-subtitle"},Se={class:"detail-facts"},Ee={class:"mono"},Re={key:0},Ne={class:"mono"},We={class:"empty-panel"},je=P({__name:"OperationDetail",props:{event:{},showBack:{type:Boolean}},emits:["back"],setup(i){const b=g("input"),c=Z(),{actionLabel:m,sourceLabel:V}=ae();function w(u){if(!u||typeof u!="object"||Array.isArray(u))return null;const d=u;if(typeof d.stdout!="string"&&typeof d.stderr!="string")return null;const f=typeof d.stdout=="string"?d.stdout:"",x=typeof d.stderr=="string"&&d.stderr?`
2
-
3
- [stderr]
4
- ${d.stderr}`:"";return`${f}${x}`}return(u,d)=>i.event?(v(),_(U,{key:0,class:"panel-card"},{default:o(()=>[s("div",qe,[i.showBack?(v(),_(I,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":e(c).t("$vuetify.chatroom.operations.back"),onClick:d[0]||(d[0]=f=>u.$emit("back"))},null,8,["aria-label"])):k("",!0),s("div",ze,[s("div",Oe,a(e(m)(i.event.action)),1),s("div",Ue,a(e(V)(i.event.source))+" · "+a(e(ke)(i.event.startedAt,e(ce)(e(c).current.value))),1)]),l(le,{value:i.event.status},null,8,["value"])]),l(H),s("div",Se,[s("div",null,[s("span",null,a(e(c).t("$vuetify.chatroom.detail.plugin")),1),s("strong",Ee,a(i.event.pluginId),1)]),s("div",null,[s("span",null,a(e(c).t("$vuetify.chatroom.detail.duration")),1),s("strong",null,a(i.event.durationMs===null?e(c).t("$vuetify.chatroom.statuses.running"):`${i.event.durationMs} ms`),1)]),i.event.processId?(v(),C("div",Re,[s("span",null,a(e(c).t("$vuetify.chatroom.detail.process")),1),s("strong",Ne,a(i.event.processId.slice(0,16)),1)])):k("",!0)]),l(be,{modelValue:b.value,"onUpdate:modelValue":d[1]||(d[1]=f=>b.value=f),density:"compact",class:"detail-tabs"},{default:o(()=>[l(j,{value:"input"},{default:o(()=>[y(a(e(c).t("$vuetify.chatroom.detail.input")),1)]),_:1}),l(j,{value:"output"},{default:o(()=>[y(a(e(c).t("$vuetify.chatroom.detail.output")),1)]),_:1}),i.event.error?(v(),_(j,{key:0,value:"failure"},{default:o(()=>[y(a(e(c).t("$vuetify.chatroom.detail.error")),1)]),_:1})):k("",!0)]),_:1},8,["modelValue"]),l(H),l(Ve,{modelValue:b.value,"onUpdate:modelValue":d[2]||(d[2]=f=>b.value=f),touch:!1},{default:o(()=>[l(G,{value:"input",class:"pa-3"},{default:o(()=>[l(O,{value:i.event.input},null,8,["value"])]),_:1}),l(G,{value:"output",class:"pa-3"},{default:o(()=>[w(i.event.output)!==null?(v(),_(O,{key:0,text:w(i.event.output)??"",filename:"operation-terminal.txt"},null,8,["text"])):(v(),_(O,{key:1,value:i.event.output},null,8,["value"]))]),_:1}),i.event.error?(v(),_(G,{key:0,value:"failure",class:"pa-3"},{default:o(()=>[l(O,{value:i.event.error},null,8,["value"])]),_:1})):k("",!0)]),_:1},8,["modelValue"])]),_:1})):(v(),_(U,{key:1,class:"panel-card"},{default:o(()=>[s("div",We,a(e(c).t("$vuetify.chatroom.operations.select")),1)]),_:1}))}}),Ge={key:0,class:"master-pane"},He={class:"panel-header operations-header"},Pe={class:"panel-title"},Ze={class:"panel-subtitle"},Fe={class:"operations-controls"},Xe={key:1,class:"detail-pane"},M=50,lt=P({__name:"OperationsView",props:{revision:{}},setup(i){const b=i,c=g([]),m=g(null),V=g(null),w=g("all"),u=g(!1),d=g(!1),f=g(!1),x=g(!1),h=g(""),S=g(null),$=Z(),{mdAndDown:T}=de(),F=g(null),p=Q(),A=Q();let L=null;z(w,()=>{X()},{immediate:!0}),z(()=>b.revision,()=>{se()}),z(m,()=>{N()}),z(S,t=>{L?.disconnect(),L=null,t&&(L=new IntersectionObserver(n=>{n.some(r=>r.isIntersecting)&&J()},{rootMargin:"240px 0px"}),L.observe(t))},{flush:"post"}),ve(()=>L?.disconnect());function E(t,n=0){const r=w.value==="all"?"":`&status=${encodeURIComponent(w.value)}`;return`/operations?limit=${t}&offset=${n}${r}`}async function X(){const t=p.begin();f.value=!0,h.value="";try{const n=await B(E(M),{signal:t.signal});if(!p.isCurrent(t))return;c.value=n,x.value=n.length===M,m.value&&await N()}catch(n){p.isCurrent(t)&&(h.value=D(n))}finally{p.isCurrent(t)&&(f.value=!1)}await R()}async function J(){if(f.value||!x.value)return;const t=p.begin(),n=c.value.length;f.value=!0;try{const r=await B(E(M,n),{signal:t.signal});if(!p.isCurrent(t))return;c.value.push(...r),x.value=r.length===M}catch(r){p.isCurrent(t)&&(h.value=D(r))}finally{p.isCurrent(t)&&(f.value=!1)}await R()}async function se(){const t=p.begin();f.value=!0,h.value="";const n=Math.max(c.value.length,M),r=[];let K=0;try{for(;r.length<n;){const q=Math.min(500,n-r.length),W=await B(E(q,K),{signal:t.signal});if(!p.isCurrent(t))return;if(r.push(...W),W.length<q)break;K+=W.length}c.value=r,x.value=r.length>=n,m.value&&await N()}catch(q){p.isCurrent(t)&&(h.value=D(q))}finally{p.isCurrent(t)&&(f.value=!1)}p.isCurrent(t)&&await R()}async function R(){await Y();const t=S.value;!t||f.value||!x.value||t.getBoundingClientRect().top<=window.innerHeight+240&&J()}async function N(){const t=A.begin(),n=m.value;if(!n){V.value=null;return}try{const r=await B(`/operations/${n}`,{signal:t.signal});A.isCurrent(t)&&m.value===n&&(V.value=r)}catch(r){A.isCurrent(t)&&(h.value=D(r))}}function ne(t){m.value=t.operationId,T.value&&Y(()=>F.value?.scrollIntoView({behavior:"smooth",block:"start"}))}function oe(){m.value=null,V.value=null}async function ie(){d.value=!0,h.value="",p.invalidate(),A.invalidate(),f.value=!1;try{await B("/operations",{method:"DELETE"}),m.value=null,V.value=null,u.value=!1,await X()}catch(t){h.value=D(t)}finally{d.value=!1}}return(t,n)=>(v(),C(te,null,[s("div",{ref_key:"layout",ref:F,class:"master-detail-layout operations-layout"},[!e(T)||!m.value?(v(),C("div",Ge,[l(U,{class:"panel-card"},{default:o(()=>[s("div",He,[s("div",null,[s("div",Pe,a(e($).t("$vuetify.chatroom.operations.title")),1),s("div",Ze,a(e($).t("$vuetify.chatroom.operations.subtitle")),1)]),s("div",Fe,[l(fe,{modelValue:w.value,"onUpdate:modelValue":n[0]||(n[0]=r=>w.value=r),mandatory:"",variant:"text",class:"operation-filters"},{default:o(()=>[l(I,{value:"all",size:"small"},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.all")),1)]),_:1}),l(I,{value:"running",size:"small"},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.running")),1)]),_:1}),l(I,{value:"error",size:"small"},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.errors")),1)]),_:1}),l(I,{value:"success",size:"small"},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.success")),1)]),_:1})]),_:1},8,["modelValue"]),l(I,{"prepend-icon":"$mdiDeleteSweepOutline",variant:"text",size:"small",class:"operations-clear",disabled:!c.value.length,onClick:n[1]||(n[1]=r=>u.value=!0)},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.clear")),1)]),_:1},8,["disabled"])])]),l(H),h.value?(v(),_(ee,{key:0,type:"error",variant:"tonal",density:"compact"},{default:o(()=>[y(a(h.value),1)]),_:1})):k("",!0),l(Ae,{events:c.value,selected:m.value,onSelect:ne},null,8,["events","selected"]),x.value||f.value?(v(),C("div",{key:1,ref_key:"loadSentinel",ref:S,class:"operation-load-sentinel","aria-hidden":"true"},[f.value?(v(),_(me,{key:0,indeterminate:"",size:"20",width:"2"})):k("",!0)],512)):k("",!0)]),_:1})])):k("",!0),!e(T)||m.value?(v(),C("div",Xe,[e(T)&&m.value&&h.value?(v(),_(ee,{key:0,type:"error",variant:"tonal",density:"compact"},{default:o(()=>[y(a(h.value),1)]),_:1})):k("",!0),l(je,{event:V.value,"show-back":e(T),onBack:oe},null,8,["event","show-back"])])):k("",!0)],512),l(ge,{modelValue:u.value,"onUpdate:modelValue":n[3]||(n[3]=r=>u.value=r),"max-width":"430"},{default:o(()=>[l(U,null,{default:o(()=>[l(pe,null,{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.clearTitle")),1)]),_:1}),l(ye,null,{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.clearDescription")),1)]),_:1}),l(he,null,{default:o(()=>[l(we),l(I,{variant:"text",onClick:n[2]||(n[2]=r=>u.value=!1)},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),l(I,{color:"error",variant:"flat",loading:d.value,onClick:ie},{default:o(()=>[y(a(e($).t("$vuetify.chatroom.operations.clearConfirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}});export{lt as default};
@@ -1,4 +0,0 @@
1
- import{d as Q,a as ee,D as se,T as N,w as T,U as z,W as O,as as te,o as c,n as p,h as t,e as i,b as u,g as e,t as o,j as w,N as S,p as m,L as ae,X as oe,m as q,at as B,R as j,a1 as le,c as _,i as h,au as re,av as M,Y as R,Z as E,am as F,V as D,r as ne,y,z as K,ab as ie}from"./index-BegKQ3Yd.js";import{d as ce,a as de}from"./utils-rtPwWNel.js";import{_ as H}from"./CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js";import{_ as U}from"./StateChip.vue_vue_type_script_setup_true_lang-DyOhJmR6.js";import"./VSpacer-C3wAY3F0.js";const ue={key:0,class:"master-pane"},pe={class:"panel-header"},ve={class:"panel-title"},me={class:"panel-subtitle"},_e={key:0,class:"processes-error",role:"alert"},fe={key:1,class:"process-record-list",role:"grid"},he={class:"process-record-header",role:"row"},ye={role:"columnheader"},$e={role:"columnheader"},ge={role:"columnheader"},ke={class:"process-record-duration",role:"columnheader"},Ce={role:"columnheader"},be=["aria-selected","onClick","onKeydown"],we={class:"process-record-main"},xe=["title"],Ie=["title"],Ve={class:"process-record-meta"},ze={class:"process-record-started",role:"gridcell"},Oe={class:"process-record-duration",role:"gridcell"},De={class:"process-record-side",role:"gridcell"},Ae={key:2,class:"empty-inline"},Pe={key:1,class:"detail-pane"},Le={class:"panel-header process-detail-header"},Ne={class:"min-w-0 detail-header-title"},Te={class:"panel-title text-truncate"},Se={class:"panel-subtitle mono text-truncate"},qe={class:"process-detail-actions"},Be={class:"process-output"},je={class:"process-full-command"},Me={class:"process-full-command-label"},Re={class:"detail-facts"},Ee={class:"empty-panel"},Ge=Q({__name:"ProcessesView",props:{revision:{}},setup(Z){const G=Z,x=y([]),d=y(null),l=y(null),v=y(""),r=ee(),{mdAndDown:$}=se(),A=y(null),g=N(),k=N(),W=K(()=>{if(!l.value)return"";const a=l.value.stderr?`
2
-
3
- [stderr]
4
- ${l.value.stderr}`:"";return`${l.value.stdout}${a}`}),X=K(()=>l.value?[l.value.command,...l.value.args].map(Y).join(" "):"");function Y(a){return a?/^[A-Za-z0-9_@%+=:,./-]+$/.test(a)?a:`'${a.replaceAll("'","'\\''")}'`:"''"}T(()=>G.revision,()=>{C()},{immediate:!0}),T(d,()=>{P()});async function C(){const a=g.begin();v.value="";try{const n=await z("/processes",{signal:a.signal});if(!g.isCurrent(a))return;if(x.value=n,d.value&&!n.some(s=>s.processId===d.value)){V();return}d.value&&await P()}catch(n){g.isCurrent(a)&&(v.value=O(n))}}async function P(){const a=k.begin(),n=d.value;if(!n){l.value=null;return}try{const s=await z(`/processes/${n}`,{signal:a.signal});k.isCurrent(a)&&d.value===n&&(l.value=s)}catch(s){if(!k.isCurrent(a))return;if(L(s)){V(),C();return}v.value=O(s)}}function I(a){d.value=a,$.value&&ie(()=>A.value?.scrollIntoView({behavior:"smooth",block:"start"}))}function V(){d.value=null,l.value=null}function J(){V()}async function b(a,n){g.invalidate(),k.invalidate(),v.value="";try{await z(`/processes/${a}/${n?"kill":"terminate"}`,{method:"POST"}),await C()}catch(s){if(L(s)){await C();return}v.value=O(s)}}function L(a){return a instanceof te&&(a.code==="NOT_FOUND"||a.code==="CONFLICT")}return(a,n)=>(c(),p("div",{ref_key:"layout",ref:A,class:"master-detail-layout processes-layout"},[!t($)||!d.value?(c(),p("div",ue,[i(D,{class:"panel-card"},{default:u(()=>[e("div",pe,[e("div",null,[e("div",ve,o(t(r).t("$vuetify.chatroom.processes.title")),1),e("div",me,o(t(r).t("$vuetify.chatroom.processes.subtitle")),1)])]),i(w),v.value?(c(),p("div",_e,[i(S,{icon:"$mdiAlertCircleOutline",size:"18"}),e("span",null,o(v.value),1)])):m("",!0),x.value.length?(c(),p("div",fe,[e("div",he,[e("span",ye,o(t(r).t("$vuetify.chatroom.processes.command")),1),e("span",$e,o(t(r).t("$vuetify.chatroom.processes.arguments")),1),e("span",ge,o(t(r).t("$vuetify.chatroom.processes.started")),1),e("span",ke,o(t(r).t("$vuetify.chatroom.processes.duration")),1),e("span",Ce,o(t(r).t("$vuetify.chatroom.processes.state")),1)]),(c(!0),p(ae,null,oe(x.value,s=>(c(),p("div",{key:s.processId,role:"row",tabindex:"0",class:j(["process-record-row",{"selected-row":d.value===s.processId}]),"aria-selected":d.value===s.processId,onClick:f=>I(s.processId),onKeydown:[q(f=>I(s.processId),["enter"]),q(B(f=>I(s.processId),["prevent"]),["space"])]},[e("div",we,[e("div",{class:"process-record-command mono",role:"gridcell",title:s.command},o(s.command),9,xe),e("div",{class:j(["process-record-args mono",{muted:!s.args.length}]),role:"gridcell",title:s.args.join(" ")},o(s.args.length?s.args.join(" "):"—"),11,Ie)]),e("div",Ve,[e("div",ze,o(t(ce)(s.startedAt,t(le)(t(r).current.value))),1),e("div",Oe,o(t(de)(s.durationMs)),1)]),e("div",De,[s.state!=="running"?(c(),_(U,{key:0,value:s.state},null,8,["value"])):(c(),p("div",{key:1,class:"process-actions",onClick:n[0]||(n[0]=B(()=>{},["stop"]))},[i(h,{size:"x-small",variant:"text",class:"table-action-btn","aria-label":t(r).t("$vuetify.chatroom.processes.terminate"),onClick:f=>b(s.processId,!1)},{default:u(()=>[i(re,{indeterminate:"",color:"warning",size:22,width:2},{default:u(()=>[i(S,{icon:"$mdiStop",size:"12"})]),_:1})]),_:1},8,["aria-label","onClick"]),i(M,null,{activator:u(({props:f})=>[i(h,F({ref_for:!0},f,{icon:"$mdiDotsHorizontal",size:"x-small",variant:"text",class:"table-action-btn","aria-label":t(r).t("$vuetify.chatroom.processes.moreActions")}),null,16,["aria-label"])]),default:u(()=>[i(R,{density:"compact"},{default:u(()=>[i(E,{title:t(r).t("$vuetify.chatroom.processes.kill"),"prepend-icon":"$mdiCloseOctagonOutline",onClick:f=>b(s.processId,!0)},null,8,["title","onClick"])]),_:2},1024)]),_:2},1024)]))])],42,be))),128))])):(c(),p("div",Ae,o(t(r).t("$vuetify.chatroom.processes.empty")),1))]),_:1})])):m("",!0),!t($)||d.value?(c(),p("div",Pe,[l.value?(c(),_(D,{key:0,class:"panel-card process-detail-card"},{default:u(()=>[e("div",Le,[t($)?(c(),_(h,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":t(r).t("$vuetify.chatroom.processes.back"),onClick:J},null,8,["aria-label"])):m("",!0),e("div",Ne,[e("div",Te,o(l.value.command),1),e("div",Se,o(l.value.processId),1)]),e("div",qe,[l.value.state!=="running"?(c(),_(U,{key:0,value:l.value.state},null,8,["value"])):m("",!0),l.value.state==="running"?(c(),_(h,{key:1,"prepend-icon":"$mdiStopCircleOutline",size:"x-small",variant:"tonal",color:"warning",class:"detail-action-btn",onClick:n[1]||(n[1]=s=>b(l.value.processId,!1))},{default:u(()=>[ne(o(t(r).t("$vuetify.chatroom.processes.terminate")),1)]),_:1})):m("",!0),l.value.state==="running"?(c(),_(M,{key:2},{activator:u(({props:s})=>[i(h,F(s,{icon:"$mdiDotsHorizontal",size:"x-small",variant:"text",class:"detail-icon-btn","aria-label":t(r).t("$vuetify.chatroom.processes.moreActions")}),null,16,["aria-label"])]),default:u(()=>[i(R,{density:"compact"},{default:u(()=>[i(E,{title:t(r).t("$vuetify.chatroom.processes.kill"),"prepend-icon":"$mdiCloseOctagonOutline",onClick:n[2]||(n[2]=s=>b(l.value.processId,!0))},null,8,["title"])]),_:1})]),_:1})):m("",!0)])]),i(w),e("div",Be,[i(H,{text:W.value,filename:"output.txt"},null,8,["text"])]),i(w),e("div",je,[e("div",Me,o(t(r).t("$vuetify.chatroom.processes.fullCommand")),1),i(H,{text:X.value,filename:"command.sh",language:"bash",toolbar:!1},null,8,["text"])]),i(w),e("div",Re,[e("div",null,[n[3]||(n[3]=e("span",null,"PID",-1)),e("strong",null,o(l.value.pid??"—"),1)]),e("div",null,[e("span",null,o(t(r).t("$vuetify.chatroom.processes.exit")),1),e("strong",null,o(l.value.exitCode??"—"),1)]),e("div",null,[e("span",null,o(t(r).t("$vuetify.chatroom.processes.timeout")),1),e("strong",null,o(l.value.timedOut?t(r).t("$vuetify.chatroom.processes.yes"):t(r).t("$vuetify.chatroom.processes.no")),1)])])]),_:1})):(c(),_(D,{key:1,class:"panel-card"},{default:u(()=>[e("div",Ee,o(t(r).t("$vuetify.chatroom.processes.select")),1)]),_:1}))])):m("",!0)],512))}});export{Ge as default};
@@ -1 +0,0 @@
1
- import{d as n,a as i,o as u,c as d,b as p,r as v,t as m,a2 as f,z as s,br as C}from"./index-BegKQ3Yd.js";const h=n({__name:"StateChip",props:{value:{}},setup(l){const e=l,r=i(),t=s(()=>({running:"warning",success:"success",exited:"success",error:"error",failed:"error",cancelled:"default",killed:"default"})[e.value]??"default"),c=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?r.t(a):e.value});return(a,_)=>(u(),d(f,{class:"state-chip",color:t.value,"prepend-icon":c.value,size:"small",variant:"tonal"},{default:p(()=>[v(m(o.value),1)]),_:1},8,["color","prepend-icon"]))}});export{h as _};
@@ -1 +0,0 @@
1
- import{d as X,a as H,D as Q,T as I,w as Y,a8 as ee,a9 as te,U as O,W as q,o as u,n as r,h as o,e as c,b as y,g as e,t as a,i as b,aZ as le,L as E,X as A,c as x,r as R,j as U,N as se,p as g,R as ae,a2 as oe,V as z,a1 as ne,y as v,z as B}from"./index-BegKQ3Yd.js";import{c as ie,d as ue}from"./utils-rtPwWNel.js";import{_ as re}from"./CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js";import{V as ce}from"./VSelect-DrRpKyYI.js";import"./VSpacer-C3wAY3F0.js";const de={class:"master-detail-layout system-logs-layout"},me={key:0,class:"master-pane"},ve={class:"panel-header system-logs-header"},fe={class:"panel-title"},ye={class:"panel-subtitle"},ge={class:"system-log-controls"},pe={key:0,class:"processes-error",role:"alert"},_e={key:1,class:"system-log-list",role:"grid"},he={class:"system-log-header",role:"row"},Le={role:"columnheader"},Ce={role:"columnheader"},ke={role:"columnheader"},$e={role:"columnheader"},we=["aria-selected","onClick"],Ve=["title"],be={class:"system-log-level",role:"gridcell"},xe={class:"system-log-module mono",role:"gridcell"},Se={class:"system-log-message",role:"gridcell"},Ne={class:"mono"},Ee={key:2,class:"empty-inline"},Re={key:3,class:"system-log-load-more"},Ue={key:1,class:"detail-pane"},ze={class:"panel-header compact-header"},Be={class:"min-w-0 detail-header-title"},De={class:"panel-title text-truncate"},Me={class:"panel-subtitle mono text-truncate"},Ie={class:"detail-facts system-log-facts"},Oe={class:"system-log-detail-data"},qe={class:"process-full-command-label"},Ae={class:"empty-panel"},Te=100,Ze=X({__name:"SystemLogsView",setup(je){const T=["app","http","auth","cloud","plugin","mcp"],n=H(),{mdAndDown:S}=Q(),m=v([]),i=v(null),f=v("all"),d=v("all"),_=v(null),h=v(!1),L=v(!1),p=v(""),$=I(),C=I();let k=null,w=!1;const j=B(()=>[{title:n.t("$vuetify.chatroom.systemLogs.allLevels"),value:"all"},{title:"INFO",value:"info"},{title:"WARN",value:"warn"},{title:"ERROR",value:"error"},{title:"DEBUG",value:"debug"}]),F=B(()=>{const l=new Set(T);for(const t of m.value)l.add(t.module);return d.value!=="all"&&l.add(d.value),[{title:n.t("$vuetify.chatroom.systemLogs.allModules"),value:"all"},...[...l].sort((t,s)=>t.localeCompare(s)).map(t=>({title:t,value:t}))]}),D=B(()=>i.value?.data?JSON.stringify(i.value.data,null,2):"");Y([f,d],()=>{w&&N()}),ee(()=>{w=!0,N().finally(()=>{w&&W()})}),te(()=>{w=!1,k?.close(),k=null});async function N(){C.invalidate(),L.value=!1;const l=$.begin();h.value=!0,p.value="";try{const t=await O(M(),{signal:l.signal});if(!$.isCurrent(l))return;m.value=t.items,_.value=t.nextCursor,i.value&&(i.value=t.items.find(s=>s.id===i.value?.id)??null)}catch(t){$.isCurrent(l)&&(p.value=q(t))}finally{$.isCurrent(l)&&(h.value=!1)}}async function G(){if(h.value||!_.value||L.value)return;const l=C.begin();L.value=!0,p.value="";try{const t=await O(M(_.value),{signal:l.signal});if(!C.isCurrent(l))return;const s=new Set(m.value.map(V=>V.id));m.value.push(...t.items.filter(V=>!s.has(V.id))),_.value=t.nextCursor}catch(t){C.isCurrent(l)&&(p.value=q(t))}finally{C.isCurrent(l)&&(L.value=!1)}}function M(l){const t=new URLSearchParams({limit:String(Te)});return f.value!=="all"&&t.set("level",f.value),d.value!=="all"&&t.set("module",d.value),l&&t.set("cursor",l),`/logs?${t}`}function W(){k?.close(),k=new EventSource("/api/logs/stream"),k.addEventListener("log",l=>{const t=J(l);!t||!P(t)||m.value.some(s=>s.id===t.id)||m.value.unshift(t)})}function J(l){if(!(l instanceof MessageEvent)||typeof l.data!="string")return null;try{const t=JSON.parse(l.data);return typeof t?.id=="string"&&typeof t?.message=="string"?t:null}catch{return null}}function P(l){return(f.value==="all"||l.level===f.value)&&(d.value==="all"||l.module===d.value)}function Z(l){if(l==="error")return"error";if(l==="warn")return"warning";if(l==="info")return"primary"}function K(){i.value=null}return(l,t)=>(u(),r("div",de,[!o(S)||!i.value?(u(),r("div",me,[c(z,{class:"panel-card"},{default:y(()=>[e("div",ve,[e("div",null,[e("div",fe,a(o(n).t("$vuetify.chatroom.systemLogs.title")),1),e("div",ye,a(o(n).t("$vuetify.chatroom.systemLogs.subtitle")),1)]),c(b,{icon:"$mdiRefresh",size:"small",variant:"text",loading:h.value,"aria-label":o(n).t("$vuetify.chatroom.systemLogs.refresh"),onClick:N},null,8,["loading","aria-label"])]),e("div",ge,[c(le,{modelValue:f.value,"onUpdate:modelValue":t[0]||(t[0]=s=>f.value=s),mandatory:"",variant:"text",class:"operation-filters"},{default:y(()=>[(u(!0),r(E,null,A(j.value,s=>(u(),x(b,{key:s.value,value:s.value,size:"small"},{default:y(()=>[R(a(s.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"]),c(ce,{modelValue:d.value,"onUpdate:modelValue":t[1]||(t[1]=s=>d.value=s),items:F.value,"item-title":"title","item-value":"value",density:"compact",variant:"outlined","hide-details":"",class:"system-log-module-filter"},null,8,["modelValue","items"])]),c(U),p.value?(u(),r("div",pe,[c(se,{icon:"$mdiAlertCircleOutline",size:"18"}),e("span",null,a(p.value),1)])):g("",!0),m.value.length?(u(),r("div",_e,[e("div",he,[e("span",Le,a(o(n).t("$vuetify.chatroom.systemLogs.time")),1),e("span",Ce,a(o(n).t("$vuetify.chatroom.systemLogs.level")),1),e("span",ke,a(o(n).t("$vuetify.chatroom.systemLogs.module")),1),e("span",$e,a(o(n).t("$vuetify.chatroom.systemLogs.message")),1)]),(u(!0),r(E,null,A(m.value,s=>(u(),r("button",{key:s.id,type:"button",class:ae(["system-log-row",{"selected-row":i.value?.id===s.id}]),"aria-selected":i.value?.id===s.id,onClick:V=>i.value=s},[e("span",{class:"system-log-time mono",role:"gridcell",title:s.timestamp},a(o(ie)(s.timestamp)),9,Ve),e("span",be,[c(oe,{size:"x-small",variant:"tonal",color:Z(s.level)},{default:y(()=>[R(a(s.level.toUpperCase()),1)]),_:2},1032,["color"])]),e("span",xe,a(s.module),1),e("span",Se,[e("strong",null,a(s.message),1),e("small",Ne,a(s.event),1)])],10,we))),128))])):h.value?g("",!0):(u(),r("div",Ee,a(o(n).t("$vuetify.chatroom.systemLogs.empty")),1)),_.value?(u(),r("div",Re,[c(b,{variant:"text",size:"small",loading:L.value,onClick:G},{default:y(()=>[R(a(o(n).t("$vuetify.chatroom.systemLogs.loadMore")),1)]),_:1},8,["loading"])])):g("",!0)]),_:1})])):g("",!0),!o(S)||i.value?(u(),r("div",Ue,[i.value?(u(),x(z,{key:0,class:"panel-card"},{default:y(()=>[e("div",ze,[o(S)?(u(),x(b,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":o(n).t("$vuetify.chatroom.systemLogs.back"),onClick:K},null,8,["aria-label"])):g("",!0),e("div",Be,[e("div",De,a(i.value.message),1),e("div",Me,a(i.value.event),1)])]),c(U),e("div",Ie,[e("div",null,[e("span",null,a(o(n).t("$vuetify.chatroom.systemLogs.time")),1),e("strong",null,a(o(ue)(i.value.timestamp,o(ne)(o(n).current.value))),1)]),e("div",null,[e("span",null,a(o(n).t("$vuetify.chatroom.systemLogs.level")),1),e("strong",null,a(i.value.level.toUpperCase()),1)]),e("div",null,[e("span",null,a(o(n).t("$vuetify.chatroom.systemLogs.module")),1),e("strong",null,a(i.value.module),1)]),e("div",null,[e("span",null,a(o(n).t("$vuetify.chatroom.systemLogs.event")),1),e("strong",null,a(i.value.event),1)])]),D.value?(u(),r(E,{key:0},[c(U),e("div",Oe,[e("div",qe,a(o(n).t("$vuetify.chatroom.systemLogs.data")),1),c(re,{text:D.value,filename:"log.json",language:"json",toolbar:!1},null,8,["text"])])],64)):g("",!0)]),_:1})):(u(),x(z,{key:1,class:"panel-card"},{default:y(()=>[e("div",Ae,a(o(n).t("$vuetify.chatroom.systemLogs.select")),1)]),_:1}))])):g("",!0)]))}});export{Ze as default};
@@ -1 +0,0 @@
1
- import{A as Ae,az as Ee,w as ae,E as xe,g as x,L as fe,am as j,F as Z,K as Le,D as Qe,a7 as Ie,ah as G,aI as Be,ac as ce,y as Q,bs as Xe,z as B,ab as Ce,b5 as ge,bt as Ke,bu as Ze,aF as et,a8 as tt,b6 as lt,e as A,P as ve,Q as He,R as ze,aY as pe,S as nt,J as at,bv as X,bw as ye,bx as ot,a_ as rt,b7 as ut,by as Ne,h as me,ay as st,a as it,bz as ct,a4 as ke,bA as ft,a6 as dt,bB as vt,aa as mt,bC as Se,bD as ht,bE as gt,ae as pt,bF as yt,I as bt,bG as wt,l as Pe,N as Te,av as kt,Y as St,Z as Re,bH as Vt,j as It,bI as Ct,bJ as At,aR as xt,a2 as Me,bK as Ft,O as Pt,r as Tt,ar as Rt,bL as _e,bM as De}from"./index-BegKQ3Yd.js";import{V as Mt}from"./CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js";const _t=Z({renderless:Boolean,...Le()},"VVirtualScrollItem"),Dt=Ae()({name:"VVirtualScrollItem",inheritAttrs:!1,props:_t(),emits:{"update:height":e=>!0},setup(e,{attrs:t,emit:o,slots:l}){const{resizeRef:a,contentRect:s}=Ee(void 0,"border");ae(()=>s.value?.height,i=>{i!=null&&o("update:height",i)}),xe(()=>e.renderless?x(fe,null,[l.default?.({itemRef:a})]):x("div",j({ref:a,class:["v-virtual-scroll__item",e.class],style:e.style},t),[l.default?.()]))}}),Ot=-1,Et=1,he=100,Lt=Z({itemHeight:{type:[Number,String],default:null},itemKey:{type:[String,Array,Function],default:null},height:[Number,String]},"virtual");function Bt(e,t){const o=Qe(),l=G(0);Ie(()=>{l.value=parseFloat(e.itemHeight||0)});const a=G(0),s=G(Math.ceil((parseInt(e.height)||o.height.value)/(l.value||16))||1),i=G(0),r=G(0),u=Q(),c=Q();let w=0;const{resizeRef:g,contentRect:h}=Ee();Ie(()=>{g.value=u.value});const m=B(()=>u.value===document.documentElement?o.height.value:h.value?.height||parseInt(e.height)||0),d=B(()=>!!(u.value&&c.value&&m.value&&l.value));let S=Array.from({length:t.value.length}),p=Array.from({length:t.value.length});const q=G(0);let P=-1;function T(f){return S[f]||l.value}const K=Xe(()=>{const f=performance.now();p[0]=0;const b=t.value.length;for(let V=1;V<=b;V++)p[V]=(p[V-1]||0)+T(V-1);q.value=Math.max(q.value,performance.now()-f),H()},q),be=ae(d,f=>{f&&(be(),w=c.value.offsetTop,K.immediate(),H(),~P&&Ce(()=>{ge&&window.requestAnimationFrame(()=>{~P&&oe(P)})}))});Be(()=>{K.clear()});function N(f,b){const V=S[f],C=l.value;b>0&&(l.value=C?Math.min(C,b):b),(V!==b||C!==l.value)&&(S[f]=b,K())}function I(f){f=ce(f,0,t.value.length);const b=Math.floor(f),V=f%1,C=b+1,W=p[b]||0,R=p[C]||W;return W+(R-W)*V}function re(f){return Kt(p,f)}let $=0,O=0,_=0;ae(m,(f,b)=>{H(),f<b&&requestAnimationFrame(()=>{O=0,H()})});let ee=-1;function ue(){if(!u.value||!c.value)return;const f=u.value.scrollTop,b=performance.now();b-_>500?(O=Math.sign(f-$),w=c.value.offsetTop):O=f-$,$=f,_=b,window.clearTimeout(ee),ee=window.setTimeout(k,500),H()}function k(){!u.value||!c.value||(O=0,_=0,window.clearTimeout(ee),H())}let de=-1;function H(){cancelAnimationFrame(de),de=requestAnimationFrame(we)}function we(){if(!u.value||!m.value||!l.value)return;const f=$-w,b=Math.sign(O),V=Math.max(0,f-he),C=ce(re(V),0,t.value.length),W=f+m.value+he,R=ce(re(W)+1,C+1,t.value.length);if((b!==Ot||C<a.value)&&(b!==Et||R>s.value)){const te=I(a.value)-I(C),Y=I(R)-I(s.value);Math.max(te,Y)>he?(a.value=C,s.value=R):(C<=0&&(a.value=C),R>=t.value.length&&(s.value=R,a.value=C))}i.value=I(a.value),r.value=I(t.value.length)-I(s.value)}function oe(f){const b=I(f);if(!u.value||f&&!b){P=f;return}const V=l.value||16,C=Math.ceil(he/V),W=Math.max(1,Math.ceil((m.value||0)/V));a.value=ce(f-C,0,Math.max(0,t.value.length-1)),s.value=ce(f+W+C,a.value+1,t.value.length),i.value=I(a.value),r.value=I(t.value.length)-I(s.value),O=0,_=0,P=f,Ce(()=>{const R=u.value;if(!R||!~P||P!==f)return;const te=I(f);R.scrollTop=te,$=R.scrollTop;const Y=I(t.value.length)+w;f&&R.scrollTop<te-1&&R.scrollHeight<Y-1?ge&&requestAnimationFrame(()=>{P===f&&oe(f)}):(P=-1,H())})}const D=B(()=>t.value.slice(a.value,s.value).map((f,b)=>{const V=b+a.value;return{raw:f,index:V,key:Ke(f,e.itemKey,V)}}));return ae(t,()=>{S=Array.from({length:t.value.length}),p=Array.from({length:t.value.length}),K.immediate(),H()},{deep:1}),{calculateVisibleItems:H,containerRef:u,markerRef:c,computedItems:D,paddingTop:i,paddingBottom:r,scrollToIndex:oe,handleScroll:ue,handleScrollend:k,handleItemResize:N}}function Kt(e,t){let o=e.length-1,l=0,a=0,s=null,i=-1;if(e[o]<t)return o;for(;l<=o;)if(a=l+o>>1,s=e[a],s>t)o=a-1;else if(s<t)i=a,l=a+1;else return s===t?a:l;return i}const Ht=Z({items:{type:Array,default:()=>[]},renderless:Boolean,...Lt(),...Le(),...at()},"VVirtualScroll"),zt=Ae()({name:"VVirtualScroll",props:Ht(),setup(e,{slots:t}){const o=Ze("VVirtualScroll"),{dimensionStyles:l}=nt(e),{calculateVisibleItems:a,containerRef:s,markerRef:i,handleScroll:r,handleScrollend:u,handleItemResize:c,scrollToIndex:w,paddingTop:g,paddingBottom:h,computedItems:m}=Bt(e,pe(()=>e.items));return et(()=>e.renderless,()=>{function d(S=!1){const p=S?"addEventListener":"removeEventListener";ge&&(s.value===document.documentElement?(document[p]("scroll",r,{passive:!0}),document[p]("scrollend",u)):(s.value?.[p]("scroll",r,{passive:!0}),s.value?.[p]("scrollend",u)))}tt(()=>{s.value=lt(o.vnode.el,!0),d(!0)}),Be(d)}),xe(()=>{const d=m.value.map(S=>A(Dt,{key:S.key,renderless:e.renderless,"onUpdate:height":p=>c(S.index,p)},{default:p=>t.default?.({item:S.raw,index:S.index,...p})}));return e.renderless?x(fe,null,[x("div",{ref:i,class:"v-virtual-scroll__spacer",style:{paddingTop:ve(g.value)}},null),d,x("div",{class:"v-virtual-scroll__spacer",style:{paddingBottom:ve(h.value)}},null)]):x("div",{ref:s,class:ze(["v-virtual-scroll",e.class]),onScrollPassive:r,onScrollend:u,style:He([l.value,e.style])},[x("div",{ref:i,class:"v-virtual-scroll__container",style:{paddingTop:ve(g.value),paddingBottom:ve(h.value)}},[d])])}),{calculateVisibleItems:a,scrollToIndex:w}}});function $e(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,s]of t)l<a&&o.push({text:e.slice(l,a),match:!1}),o.push({text:e.slice(a,s),match:!0}),l=s;return l<e.length&&o.push({text:e.slice(l),match:!1}),o}function Nt(e,t,o,l){const a=ye(t).filter(Boolean),s=l?e.toLocaleLowerCase():e,i=[];for(const r of a){const u=l?r.toLocaleLowerCase():r;let c=s.indexOf(u);if(c!==-1&&(i.push([c,c+r.length]),o))for(c=s.indexOf(u,c+r.length);c!==-1;)i.push([c,c+r.length]),c=s.indexOf(u,c+r.length)}return $e(i)}function $t(e,t,o={}){const l=X(e),a=X(t),s=X(o.matches),i=X(o.matchAll)??!1,r=X(o.ignoreCase)??!1;if(s?.length)return Oe(l,$e(s));if(a){const u=Nt(l,a,i,r);return u.length>0?Oe(l,u):[{text:l,match:!1}]}return[{text:l,match:!1}]}const Ut=Z({text:{type:String,default:""},query:[String,Array],matches:Array,matchAll:Boolean,ignoreCase:Boolean,color:String,opacity:[String,Number],markClass:String,...ut({tag:"span"})},"VHighlight"),jt=ot({name:"VHighlight",props:Ut(),setup(e){const t=B(()=>$t(()=>e.text,()=>e.query,{matches:()=>e.matches,matchAll:()=>e.matchAll,ignoreCase:()=>e.ignoreCase})),{textColorClasses:o,textColorStyles:l}=rt(()=>e.color);return()=>A(e.tag,{class:"v-highlight"},{default:()=>[t.value.map((a,s)=>a.match?x("mark",{key:s,class:ze(["v-highlight__mark",o.value,e.markClass]),style:He([l.value,{"--v-highlight-opacity":e.opacity}])},[a.text]):x("span",{key:s},[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 s=t();((s&&Ne(s)[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 s(){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 u=ae(o,()=>{u(),r()})}else r()})}async function i(r){if(r.key==="Tab"&&t.value?.focus(),!["PageDown","PageUp","Home","End"].includes(r.key))return;const u=e.value?.$el;if(!u)return;(r.key==="Home"||r.key==="End")&&u.scrollTo({top:r.key==="Home"?0:u.scrollHeight,behavior:"smooth"}),await s();const c=u.querySelectorAll(":scope > :not(.v-virtual-scroll__spacer)");if(r.key==="PageDown"||r.key==="Home"){const w=u.getBoundingClientRect().top;for(const g of c)if(g.getBoundingClientRect().top>=w){g.focus();break}}else{const w=u.getBoundingClientRect().bottom;for(const g of[...c].reverse())if(g.getBoundingClientRect().bottom<=w){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?Ne(r):[]}function a(i){const r=i.target,u=i.shiftKey?"backward":"forward",c=e.map(l),w=e.map(h=>h.type==="list"?h.contentRef.value?.$el:h.contentRef.value).findIndex(h=>h?.contains(r)),g=s(c,w,u,r);if(g===null){const h=e[w],m=c[w];(h.type==="list"||(u==="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"&&X(h.displayItemsCount)>0)h.contentRef.value?.focus(0);else{const m=u==="forward";c[g].at(m?0:-1).focus()}}}function s(i,r,u,c){const w=e[r],g=i[r];if(w.type!=="list"&&!(u==="forward"?g.at(-1)===c:g.at(0)===c))return null;const h=u==="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"&&X(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 Ve(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 Jt=Z({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,s=o?.filterKeys?ye(o.filterKeys):!1,i=Object.keys(o?.customKeyFilter??{}).length;if(!e?.length)return l;let r=[];e:for(let u=0;u<e.length;u++){const[c,w=c]=ye(e[u]),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:u,matches:{},type:c.type});continue}const q=s||Object.keys(w);d=q.length===i;for(const P of q){const T=Ke(w,P),K=o?.customKeyFilter?.[P];if(m=K?K(T,t,c):a(T,t,c),m!==-1&&m!==!1)K?g[P]=Ve(m,t):h[P]=Ve(m,t);else if(o?.filterMode==="every")continue e}}else m=a(c,t,c),m!==-1&&m!==!1&&(h.title=Ve(m,t));const S=Object.keys(h).length,p=Object.keys(g).length;if(!S&&!p||o?.filterMode==="union"&&p!==i&&!S||o?.filterMode==="intersection"&&(p!==i||!S&&i>0&&!d))continue}r.length&&(l.push(...r),r=[]),l.push({index:u,matches:{...h,...g}})}return l}function Xt(e,t,o,l){const a=G([]),s=G(new Map),i=B(()=>me(t));Ie(()=>{const u=typeof o=="function"?o():me(o),c=typeof u!="string"&&typeof u!="number"?"":String(u),w=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;w.forEach(({index:d,matches:S})=>{const p=g[d];h.push(p),p.value!==void 0&&m.set(p.value,S)}),a.value=h,s.value=m});function r(u){return s.value.get(u.value)}return{filteredItems:a,filteredMatches:s,getMatches:r}}const Zt=Z({closeText:{type:String,default:"$vuetify.close"},openText:{type:String,default:"$vuetify.open"}},"autocomplete");function el(e,t){const o=st(),l=B(()=>`menu-${o}`),a=pe(()=>X(t)),s=pe(()=>l.value);return{menuId:l,ariaExpanded:a,ariaControls:s}}const tl=Z({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,...Zt(),...wt({itemChildren:!1})},"Select"),ll=Z({search:String,...Jt({filterKeys:["title"]}),...tl(),...pt(yt({modelValue:null,role:"combobox"}),["validationValue","dirty"]),...ht({transition:{component:gt}})},"VSelect"),ol=Ae()({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(),s=Q(),i=Q(),r=Q(),{items:u,transformIn:c,transformOut:w}=ct(e),g=ke(e,"search",""),{filteredItems:h,getMatches:m}=Xt(e,u,()=>g.value),d=ke(e,"modelValue",[],n=>c(n===null?[null]:ye(n)),n=>{const y=w(n);return e.multiple?y:y[0]??null}),S=B(()=>typeof e.counterValue=="function"?e.counterValue(d.value):typeof e.counterValue=="number"?e.counterValue:d.value.length),p=ft(e),q=dt(e),P=B(()=>d.value.map(n=>n.value)),T=G(!1),K=pe(()=>e.closableChips&&!p.isReadonly.value&&!p.isDisabled.value),{InputIcon:be}=vt(e);let N="",I=0,re,$=!1,O=null;const _=B(()=>{const n=g.value?h.value:u.value;return e.hideSelected?n.filter(y=>!d.value.some(M=>(e.valueComparator||Se)(M,y))):n}),ee=B(()=>e.hideNoData&&!_.value.length||p.isReadonly.value||p.isDisabled.value),ue=ke(e,"menu"),k=B({get:()=>ue.value,set:n=>{ue.value&&!n&&a.value?.ΨopenChildren.size||n&&ee.value||(ue.value=n)}}),{menuId:de,ariaExpanded:H,ariaControls:we}=el(e,k),oe=B(()=>({...e.menuProps,activatorProps:{...e.menuProps?.activatorProps||{},"aria-haspopup":"listbox"}})),D=Q(),f=Wt(D,l),b=Gt(k,()=>a.value?.contentEl,()=>l.value?.controlRef),{onTabKeydown:V}=qt({groups:[{type:"element",contentRef:s},{type:"list",contentRef:D,displayItemsCount:()=>_.value.length},{type:"element",contentRef:i}],onLeave:()=>{k.value=!1,l.value?.focus()}});function C(n){e.openOnClear&&(k.value=!0)}function W(){ee.value||($=!1,O=null,k.value=!k.value)}function R(n){n.key==="Tab"&&V(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)&&($=!0,k.value=!0),["Escape","Tab"].includes(n.key)&&(k.value=!1),e.clearable&&n.key==="Backspace"){n.preventDefault(),d.value=[],C();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&&(N="",I=0),N+=n.key.toLowerCase(),re=M;const le=_.value;function J(){let F=ne();return F||N.at(-1)===N.at(-2)&&(N=N.slice(0,-1),I++,F=ne(),F)||(I=0,F=ne(),F)?F:(N=n.key.toLowerCase(),ne())}function ne(){for(let F=I;F<le.length;F++){const U=le[F];if(U.title.toLowerCase().startsWith(N))return[U,F]}}const z=J();if(!z)return;const[v,E]=z;I=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(J=>(e.valueComparator||Se)(J.value,n.value)),le=y??!~M;if(~M){const J=le?[...d.value,n]:[...d.value];J.splice(M,1),d.value=J}else le&&(d.value=[...d.value,n])}else{const M=y!==!1;d.value=M?[n]:[],Ce(()=>{k.value=!1})}}function Fe(n){const y=n.target;l.value?.$el.contains(y)||(k.value=!1)}function Ue(){return _.value.findIndex(n=>d.value.some(y=>(e.valueComparator||Se)(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)||$&&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 Je(n){if(n==null)d.value=[];else if(De(l.value,":autofill")||De(l.value,":-webkit-autofill")){const y=u.value.find(M=>M.title===n);y&&Y(y)}else l.value&&(l.value.value="")}return ae(k,n=>{if(n||($=!1,O=null),!e.hideSelected&&k.value&&d.value.length){const y=Ue();ge&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{y>=0&&r.value?.scrollToIndex(y)})}}),ae(u,(n,y)=>{k.value||T.value&&e.hideNoData&&!y.length&&n.length&&(k.value=!0)}),xe(()=>{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),J=M||!T.value&&e.label&&!e.persistentPlaceholder?void 0:e.placeholder,ne={search:g,filteredItems:h.value};return A(Pe,j({ref:l},le,{modelValue:d.value.map(z=>z.props.title).join(", "),name:void 0,"onUpdate:modelValue":Je,focused:T.value,"onUpdate:focused":z=>T.value=z,validationValue:d.externalValue,counterValue:S.value,dirty:M,class:["v-select",{"v-select--active-menu":k.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:J,"onClick:clear":C,"onMousedown:control":W,onBlur:Fe,onKeydown:te,"aria-expanded":H.value,"aria-controls":we.value}),{...t,default:({id:z})=>x(fe,null,[x("select",{hidden:!0,multiple:e.multiple,name:q.fieldName.value},[u.value.map(v=>x("option",{key:v.value,value:v.value,selected:P.value.includes(v.value)},null))]),A(kt,j({id:de.value,ref:a,modelValue:k.value,"onUpdate:modelValue":v=>k.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:()=>[A(Mt,{elevation:e.menuElevation,onFocusin:qe,onFocusout:Ye,onKeydown:R},{default:()=>[t["menu-header"]&&x("header",{ref:s},[t["menu-header"](ne)]),y&&A(St,j({key:"select-list",ref:D,selected:P.value,selectStrategy:e.multiple?"independent":"single-independent",tabindex:"-1",selectable:!!_.value.length,"aria-live":"polite","aria-labelledby":`${z.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},f,e.listProps),{default:()=>[t["prepend-item"]?.(),!_.value.length&&!e.hideNoData&&(t["no-data"]?.()??A(Re,{key:"no-data",title:o(e.noDataText)},null)),A(zt,{ref:r,renderless:!0,items:_.value,itemKey:"value"},{default:({item:v,index:E,itemRef:F})=>{const U=Vt(v.props),se=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})??A(It,j(v.props,{key:`divider-${E}`}),null):v.type==="subheader"?t.subheader?.({props:v.raw,index:E})??A(Ct,j(v.props,{key:`subheader-${E}`}),null):t.item?.({item:v.raw,internalItem:v,index:E,props:se})??A(Re,j(se,{role:"option"}),{prepend:({isSelected:ie})=>x(fe,null,[e.multiple&&!e.hideSelected?A(At,{key:v.value,modelValue:ie,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:L=>L.preventDefault()},null):void 0,U.prependAvatar&&A(xt,{image:U.prependAvatar},null),U.prependIcon&&A(Te,{icon:U.prependIcon},null)]),title:()=>g.value?A(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"]&&x("footer",{ref:i},[t["menu-footer"](ne)])]})]}),d.value.map((v,E)=>{function F(L){L.stopPropagation(),L.preventDefault(),Y(v,!1)}const U=j(Me.filterProps(v.props),{"onClick:close":F,onKeydown(L){L.key!=="Enter"&&L.key!==" "||(L.preventDefault(),L.stopPropagation(),F(L))},onMousedown(L){L.preventDefault(),L.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),se=n?!!t.chip:!!t.selection,ie=se?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(!(se&&!ie))return x("div",{key:v.value,class:"v-select__selection"},[n?t.chip?A(Pt,{key:"chip-defaults",defaults:{VChip:{closable:K.value,size:"small",text:v.title}}},{default:()=>[ie]}):A(Me,j({key:"chip",closable:K.value,size:"small",text:v.title,disabled:v.props.disabled},U),null):ie??x("span",{class:"v-select__selection-text"},[v.title,e.multiple&&E<d.value.length-1&&x("span",{class:"v-select__selection-comma"},[Tt(",")])])])})]),"append-inner":(...z)=>x(fe,null,[t["append-inner"]?.(...z),e.menuIcon?A(Te,{class:"v-select__menu-icon",color:l.value?.fieldIconColor,icon:e.menuIcon,"aria-hidden":!0},null):void 0,e.appendInnerIcon&&A(be,{key:"append-icon",name:"appendInner",color:z[0].iconColor.value},null)])})}),mt({isFocused:T,menu:k,search:g,filteredItems:h,select:Y},l)}});export{ol as V};
@@ -1 +0,0 @@
1
- import{bT as a}from"./index-BegKQ3Yd.js";const r=a("v-spacer","div","VSpacer");export{r as V};
@@ -1 +0,0 @@
1
- import{A as K,a4 as _,aS as Z,a5 as p,C as ee,aT as ae,ay as te,E as le,aa as ne,F as ue,H as ie,aU as se,ae as oe,af as re,ai as de,aj as x,aV as A,e as n,am as F,g as s,Q as k,R as C,O as ce,aW as ve,N as fe,aX as me,au as he,L as ge,y as I,aY as d}from"./index-BegKQ3Yd.js";const we=ue({inset:{type:[Boolean,String],default:!1},flat:Boolean,thumbColor:String,loading:{type:[Boolean,String],default:!1},...oe(re(),["glow"]),...se(),...ie()},"VSwitch"),ke=["x-small","small","default","large","x-large"],Ce={"x-small":11,small:14,default:16,large:18,"x-large":22},Ve=K()({name:"VSwitch",inheritAttrs:!1,props:we(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:indeterminate":e=>!0},setup(e,{attrs:M,slots:a}){const o=_(e,"indeterminate"),u=_(e,"modelValue"),{loaderClasses:B}=Z(e),{isFocused:R,focus:T,blur:N}=p(e),{backgroundColorClasses:U,backgroundColorStyles:q}=ee(()=>e.thumbColor),S=I(),V=I(),c=ae&&window.matchMedia("(forced-colors: active)").matches,D=d(()=>typeof e.loading=="string"&&e.loading!==""?e.loading:e.color),L=te(),E=d(()=>e.id||`switch-${L}`),v=d(()=>ke.includes(e.size)),f=d(()=>v.value?Ce[e.size]:Math.round(16*Number(e.size)/32));function H(){o.value&&(o.value=!1)}function O(r){r.stopPropagation(),r.preventDefault(),S.value?.input?.click()}return le(()=>{const[r,$]=de(M),j=x.filterProps(e),Q=A.filterProps(e),l=["material","square"].includes(String(e.inset)),y=!c&&!!e.thumbColor;return n(x,F({ref:V,class:["v-switch",{"v-switch--flat":e.flat},{"v-switch--inset":!!e.inset},{"v-switch--inset-material":l},{"v-switch--inset-square":e.inset==="square"},{"v-switch--indeterminate":o.value},v.value?`v-switch--size-${e.size}`:void 0,B.value,e.class]},r,j,{modelValue:u.value,"onUpdate:modelValue":m=>u.value=m,id:E.value,focused:R.value,style:[{"--v-switch-scale":v.value?void 0:Number(e.size)/32},e.style]}),{...a,default:({id:m,messagesId:W,isDisabled:X,isReadonly:Y,isValid:b})=>{const h={model:u,isValid:b};return n(A,F({ref:S},Q,{modelValue:u.value,"onUpdate:modelValue":[i=>u.value=i,H],id:m.value,"aria-describedby":W.value,type:"checkbox","aria-checked":o.value?"mixed":void 0,disabled:X.value,readonly:Y.value,onFocus:T,onBlur:N},$),{...a,default:({backgroundColorClasses:i,backgroundColorStyles:t})=>s("div",{class:C(["v-switch__track",c?void 0:i.value]),style:k(t.value),onClick:O},[a["track-true"]&&s("div",{key:"prepend",class:"v-switch__track-true"},[a["track-true"](h)]),a["track-false"]&&s("div",{key:"append",class:"v-switch__track-false"},[a["track-false"](h)])]),input:({inputNode:i,icon:t,model:z,backgroundColorClasses:g,backgroundColorStyles:P,textColorClasses:G,textColorStyles:J})=>s(ge,null,[i,s("div",{class:C(["v-switch__thumb",{"v-switch__thumb--filled":t||e.loading},c?void 0:y&&z.value?U.value:l?g.value:e.inset?void 0:g.value]),style:k([y&&z.value?q.value:l?g.value.length||P.value.backgroundColor?{backgroundColor:"currentColor"}:void 0:e.inset?void 0:P.value])},[a.thumb?n(ce,{defaults:{VIcon:{icon:t,size:l?f.value:"x-small"}}},{default:()=>[a.thumb({...h,icon:t})]}):n(ve,null,{default:()=>[e.loading?n(me,{name:"v-switch",active:!0,color:b.value===!1?void 0:D.value},{default:w=>a.loader?a.loader(w):n(he,{active:w.isActive,color:w.color,indeterminate:!0,size:f.value,width:"2"},null)}):t&&n(fe,{key:String(t),class:C(l?G.value:void 0),style:k(l?J.value:void 0),icon:t,size:l?f.value:"x-small"},null)]})])])})}})}),ne({},V)}});export{Ve as V};
@@ -1 +0,0 @@
1
- @layer vuetify-components{.v-empty-state{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:100%;padding:16px}.v-empty-state--start{align-items:flex-start}.v-empty-state--center{align-items:center}.v-empty-state--end{align-items:flex-end}.v-empty-state__media{text-align:center;width:100%}.v-empty-state__media .v-icon{color:color-mix(in srgb,rgb(var(--v-theme-on-surface)) calc(var(--v-medium-emphasis-opacity) * 100%),transparent)}.v-empty-state__headline{color:color-mix(in srgb,rgb(var(--v-theme-on-surface)) calc(var(--v-medium-emphasis-opacity) * 100%),transparent);font-size:3.5625rem;font-weight:400;line-height:1.1228070175;text-align:center;margin-bottom:8px}.v-empty-state--mobile .v-empty-state__headline{font-size:2rem}.v-empty-state__title{font-size:1.375rem;font-weight:400;line-height:1.2727272727;margin-bottom:4px;text-align:center}.v-empty-state__text{font-size:.875rem;font-weight:400;line-height:1.4285714286;padding:0 16px;text-align:center}.v-empty-state__content{padding:24px 0}.v-empty-state__actions{display:flex;gap:8px;padding:16px}.v-empty-state__action-btn.v-btn{background-color:initial;color:initial}}@layer vuetify-components{.v-textarea{--v-textarea-max-height: initial}.v-textarea .v-field{--v-textarea-control-height: var(--v-input-control-height)}.v-textarea .v-field:not(.v-field--no-label,.v-field--active) textarea::placeholder{opacity:0}.v-textarea .v-field__field{--v-input-control-height: var(--v-textarea-control-height)}.v-textarea .v-field__input{max-height:var(--v-textarea-max-height);flex:1 1 auto;outline:none;-webkit-mask-image:linear-gradient(to bottom,transparent,transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px),black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px)),linear-gradient(to right,transparent,transparent calc(100% - var(--v-textarea-scroll-bar-width, 16px)),black calc(100% - var(--v-textarea-scroll-bar-width, 16px)));mask-image:linear-gradient(to bottom,transparent,transparent calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) - 6px),black calc(var(--v-field-padding-top, 0) + var(--v-input-padding-top, 0) + 4px)),linear-gradient(to right,transparent,transparent calc(100% - var(--v-textarea-scroll-bar-width, 16px)),black calc(100% - var(--v-textarea-scroll-bar-width, 16px)))}.v-textarea .v-field__input.v-textarea__sizer{visibility:hidden;position:absolute;top:0;left:0;pointer-events:none}}@layer vuetify-overrides{.v-textarea .v-field__input.v-textarea__sizer{height:0;min-height:0}}@layer vuetify-components{.v-textarea--no-resize .v-field__input{resize:none}.v-textarea textarea{flex:1;min-width:0;height:100%;transition:.15s opacity cubic-bezier(.4,0,.2,1)}.v-textarea textarea:focus,.v-textarea textarea:active{outline:none}.v-textarea textarea:invalid{box-shadow:none}}
@@ -1,2 +0,0 @@
1
- import{d as ue,u as Xe,a as ce,w as G,o as u,c as P,b as n,e as a,V as ve,f as pe,g as i,t as s,h as t,i as F,j as xe,k as ge,l as Ie,m as ze,n as O,p as A,q as ne,r as _,s as ye,v as ke,x as Ue,y as p,z as K,A as He,B as Ze,C as et,D as Me,E as je,F as Ee,I as tt,G as at,H as lt,J as ot,K as nt,L as E,M as it,N as Ge,O as Fe,P as _e,Q as st,R as Ce,S as rt,T as ie,U as J,W as te,X as se,Y as we,Z as $e,_ as be,$ as Se,a0 as Pe,a1 as ut,a2 as Ke,a3 as Le,a4 as ct,a5 as dt,a6 as vt,a7 as ft,a8 as Je,a9 as mt,aa as ht,ab as fe,ac as pt,ad as gt,ae as yt,af as kt,ag as _t,ah as wt,ai as $t,aj as Oe,ak as We,al as xt,am as Re,an as Ae,ao as bt,ap as Ct,aq as Vt,ar as St}from"./index-BegKQ3Yd.js";import{V as Qe}from"./VSelect-DrRpKyYI.js";import{b as Pt}from"./utils-rtPwWNel.js";import{_ as Rt,V as Tt}from"./CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js";import{V as Te}from"./VSpacer-C3wAY3F0.js";import{V as It,a as me,b as zt,c as he}from"./VTabs-qBcuuXh3.js";const Bt={key:1,class:"workspace-create-location"},Ut={key:2,class:"workspace-create-location"},Ft=ue({__name:"WorkspaceCreateDialog",props:Ue({roots:{},busy:{type:Boolean},error:{}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:Ue(["create"],["update:modelValue"]),setup(e,{emit:$}){const l=e,c=$,o=Xe(e,"modelValue"),m=p(""),h=p(""),r=ce();G(()=>[o.value,l.roots],()=>{o.value&&(l.roots.includes(h.value)||(h.value=l.roots[0]??""))},{immediate:!0,deep:!0}),G(o,k=>{k&&(m.value="")});const b=K(()=>{const k=h.value.replace(/[\\/]+$/,""),d=k.includes("\\")&&!k.includes("/")?"\\":"/";return m.value.trim()?`${k}${d}${m.value.trim()}`:k});function y(){!h.value||!m.value.trim()||c("create",h.value,m.value.trim())}return(k,d)=>(u(),P(ke,{modelValue:o.value,"onUpdate:modelValue":d[4]||(d[4]=x=>o.value=x),"max-width":"560"},{default:n(()=>[a(ve,null,{default:n(()=>[a(pe,{class:"d-flex align-center justify-space-between"},{default:n(()=>[i("span",null,s(t(r).t("$vuetify.chatroom.workspaces.createTitle")),1),a(F,{icon:"$mdiClose",variant:"text",size:"small","aria-label":t(r).t("$vuetify.chatroom.common.close"),onClick:d[0]||(d[0]=x=>o.value=!1)},null,8,["aria-label"])]),_:1}),a(xe),a(ge,{class:"workspace-create-form"},{default:n(()=>[a(Ie,{modelValue:m.value,"onUpdate:modelValue":d[1]||(d[1]=x=>m.value=x),label:t(r).t("$vuetify.chatroom.workspaces.projectName"),autofocus:"","hide-details":"auto",onKeyup:ze(y,["enter"])},null,8,["modelValue","label"]),e.roots.length>1?(u(),P(Qe,{key:0,modelValue:h.value,"onUpdate:modelValue":d[2]||(d[2]=x=>h.value=x),items:e.roots,label:t(r).t("$vuetify.chatroom.workspaces.createLocation"),"hide-details":"auto"},null,8,["modelValue","items","label"])):h.value?(u(),O("div",Bt,[i("span",null,s(t(r).t("$vuetify.chatroom.workspaces.createLocation")),1),i("code",null,s(h.value),1)])):A("",!0),h.value?(u(),O("div",Ut,[i("span",null,s(t(r).t("$vuetify.chatroom.workspaces.projectPath")),1),i("code",null,s(b.value),1)])):A("",!0),e.error?(u(),P(ne,{key:3,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(e.error),1)]),_:1})):A("",!0)]),_:1}),a(xe),a(ye,{class:"justify-end"},{default:n(()=>[a(F,{variant:"text",onClick:d[3]||(d[3]=x=>o.value=!1)},{default:n(()=>[_(s(t(r).t("$vuetify.chatroom.workspaces.cancel")),1)]),_:1}),a(F,{color:"primary",variant:"flat",loading:e.busy,disabled:!h.value||!m.value.trim(),onClick:y},{default:n(()=>[_(s(t(r).t("$vuetify.chatroom.workspaces.create")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"]))}}),Lt=Ee({actionText:String,bgColor:String,color:String,icon:tt,image:String,justify:{type:String,default:"center"},headline:String,title:String,text:String,textWidth:{type:[Number,String],default:500},href:String,to:String,...nt(),...ot(),...lt({size:void 0}),...at()},"VEmptyState"),re=He()({name:"VEmptyState",props:Lt(),emits:{"click:action":e=>!0},setup(e,{emit:$,slots:l}){const{themeClasses:c}=Ze(e),{backgroundColorClasses:o,backgroundColorStyles:m}=et(()=>e.bgColor),{dimensionStyles:h}=rt(e),{displayClasses:r}=Me();function b(y){$("click:action",y)}return je(()=>{const y=!!(l.actions||e.actionText),k=!!(l.headline||e.headline),d=!!(l.title||e.title),x=!!(l.text||e.text),R=!!(l.media||e.image||e.icon),g=e.size||(e.image?200:96);return i("div",{class:Ce(["v-empty-state",{[`v-empty-state--${e.justify}`]:!0},c.value,o.value,r.value,e.class]),style:st([m.value,h.value,e.style])},[R&&i("div",{key:"media",class:"v-empty-state__media"},[l.media?a(Fe,{key:"media-defaults",defaults:{VImg:{src:e.image,height:g},VIcon:{size:g,icon:e.icon}}},{default:()=>[l.media()]}):i(E,null,[e.image?a(it,{key:"image",src:e.image,height:g},null):e.icon?a(Ge,{key:"icon",color:e.color,size:g,icon:e.icon},null):void 0])]),k&&i("div",{key:"headline",class:"v-empty-state__headline"},[l.headline?.()??e.headline]),d&&i("div",{key:"title",class:"v-empty-state__title"},[l.title?.()??e.title]),x&&i("div",{key:"text",class:"v-empty-state__text",style:{maxWidth:_e(e.textWidth)}},[l.text?.()??e.text]),l.default&&i("div",{key:"content",class:"v-empty-state__content"},[l.default()]),y&&i("div",{key:"actions",class:"v-empty-state__actions"},[a(Fe,{defaults:{VBtn:{class:"v-empty-state__action-btn",color:e.color??"surface-variant",href:e.href,text:e.actionText,to:e.to}}},{default:()=>[l.actions?.({props:{onClick:b}})??a(F,{onClick:b},null)]})])])}),{}}}),Ot={class:"workspace-files-pane"},Wt={class:"workspace-files-layout"},At={class:"workspace-file-browser"},Dt={class:"workspace-file-breadcrumbs"},Nt={class:"workspace-breadcrumb-items"},qt={key:0,class:"workspace-breadcrumb-separator"},Ht=["onClick"],Mt={class:"workspace-file-preview"},jt={class:"workspace-image-header mono"},Et={class:"workspace-image-stage"},Gt=["src","alt"],Kt=ue({__name:"WorkspaceFilesPane",props:{root:{}},setup(e){const $=e,l=p([]),c=p("."),o=p(null),m=p(!1),h=p(""),r=ce(),b=ie(),y=ie(),k=K(()=>[...l.value].sort((v,C)=>v.type==="directory"&&C.type!=="directory"?-1:v.type!=="directory"&&C.type==="directory"?1:B(v.path).localeCompare(B(C.path)))),d=K(()=>{const v=c.value==="."?[]:c.value.split("/");return[{title:"/",path:"."},...v.map((C,I)=>({title:C,path:v.slice(0,I+1).join("/")}))]}),x=K(()=>{if(c.value===".")return null;const v=c.value.split("/");return v.pop(),v.join("/")||"."});G(()=>$.root,()=>{b.invalidate(),y.invalidate(),c.value=".",o.value=null,R()},{immediate:!0});async function R(){const v=b.begin(),C=$.root,I=c.value;m.value=!0,h.value="";try{const M=await J(`/workspace/files?root=${encodeURIComponent(C)}&path=${encodeURIComponent(I)}`,{signal:v.signal});if(!b.isCurrent(v)||$.root!==C||c.value!==I)return;l.value=M}catch(M){b.isCurrent(v)&&(h.value=te(M))}finally{b.isCurrent(v)&&(m.value=!1)}}async function g(v){c.value=v||".",o.value=null,await R()}async function V(v){const C=y.begin(),I=$.root;if(v.type==="directory"){await g(v.path);return}if(v.type!=="file"){o.value={kind:"unsupported",path:v.path};return}if(D(v.path)){o.value={kind:"image",path:v.path,url:`/api/workspace/file/image?root=${encodeURIComponent(I)}&path=${encodeURIComponent(v.path)}`};return}if(!W(v.path)){o.value={kind:"unsupported",path:v.path};return}h.value="";try{const M=await J(`/workspace/file?root=${encodeURIComponent(I)}&path=${encodeURIComponent(v.path)}`,{signal:C.signal});if(!y.isCurrent(C)||$.root!==I)return;o.value={kind:"text",path:v.path,content:M.content}}catch(M){y.isCurrent(C)&&(h.value=te(M))}}function B(v){return v.split("/").pop()??v}function L(v){return v==="file"?r.t("$vuetify.chatroom.files.file"):v==="directory"?r.t("$vuetify.chatroom.files.directory"):v==="symlink"?r.t("$vuetify.chatroom.files.symlink"):v}function D(v){return/\.(png|jpe?g|gif|webp|avif|bmp|ico)$/i.test(v)}function W(v){const C=v.split("/").pop()?.toLowerCase()??"";return["dockerfile","makefile","license","readme",".gitignore",".gitattributes",".editorconfig",".env"].includes(C)?!0:/\.(txt|md|markdown|json|jsonc|ya?ml|toml|ini|conf|config|xml|html?|css|scss|less|vue|[cm]?[jt]sx?|py|rs|go|java|kt|kts|c|cc|cpp|cxx|h|hpp|sh|bash|zsh|fish|ps1|sql|graphql|gql|proto|diff|patch|csv|tsv|log)$/i.test(v)}return(v,C)=>(u(),O("div",Ot,[h.value?(u(),P(ne,{key:0,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(h.value),1)]),_:1})):A("",!0),i("div",Wt,[i("div",At,[i("div",Dt,[a(F,{icon:"$mdiArrowUp",size:"x-small",variant:"text",disabled:x.value===null,"aria-label":t(r).t("$vuetify.chatroom.files.parentDirectory"),onClick:C[0]||(C[0]=I=>x.value&&g(x.value))},null,8,["disabled","aria-label"]),i("div",Nt,[(u(!0),O(E,null,se(d.value,(I,M)=>(u(),O(E,{key:I.path},[M?(u(),O("span",qt,"/")):A("",!0),i("button",{type:"button",class:Ce(["workspace-breadcrumb",{active:M===d.value.length-1}]),onClick:Y=>g(I.path)},s(I.title),11,Ht)],64))),128))]),a(F,{icon:"$mdiRefresh",size:"x-small",variant:"text",loading:m.value,"aria-label":t(r).t("$vuetify.chatroom.files.refresh"),onClick:R},null,8,["loading","aria-label"])]),a(we,{density:"compact",border:"",rounded:"lg",class:"workspace-file-list"},{default:n(()=>[(u(!0),O(E,null,se(k.value.slice(0,500),I=>(u(),P($e,{key:I.path,active:o.value?.path===I.path,title:B(I.path),subtitle:I.type==="file"?`${L(I.type)} · ${t(Pt)(I.size)}`:L(I.type),"prepend-icon":I.type==="directory"?"$mdiFolderOutline":I.type==="symlink"?"$mdiLinkVariant":"$mdiFileOutline","append-icon":I.type==="directory"?"$mdiChevronRight":void 0,onClick:M=>V(I)},null,8,["active","title","subtitle","prepend-icon","append-icon","onClick"]))),128))]),_:1})]),i("div",Mt,[o.value?.kind==="text"?(u(),P(Rt,{key:0,text:o.value.content,filename:o.value.path},null,8,["text","filename"])):o.value?.kind==="image"?(u(),P(Tt,{key:1,border:"",rounded:"lg",class:"workspace-image-preview"},{default:n(()=>[i("div",jt,s(o.value.path),1),a(xe),i("div",Et,[i("img",{src:o.value.url,alt:o.value.path},null,8,Gt)])]),_:1})):o.value?.kind==="unsupported"?(u(),P(re,{key:2,icon:"$mdiFileQuestionOutline",title:t(r).t("$vuetify.chatroom.files.previewUnavailable"),text:o.value.path},null,8,["title","text"])):(u(),P(re,{key:3,icon:"$mdiFileEyeOutline",title:t(r).t("$vuetify.chatroom.files.select"),text:t(r).t("$vuetify.chatroom.files.readOnly")},null,8,["title","text"]))])])]))}});function Jt(e){const $=p(null),l=p([]),c=p([]),o=p(null),m=p(null),h=p(!1),r=p(!1),b=p(null),y=p("");let k=0;const d=ie(),x=ie(),R=()=>typeof e=="function"?e():String(e.value??""),g=K(()=>$.value?.changes??[]),V=K(()=>g.value.find(f=>f.path===o.value)??null),B=K(()=>g.value.filter(De).map(f=>f.path)),L=K(()=>g.value.filter(Ne).map(f=>f.path));G(e,()=>{k+=1,d.invalidate(),x.invalidate(),b.value=null,o.value=null,m.value=null,D()},{immediate:!0}),G(o,()=>{v()});async function D(){const f=++k,T=d.begin(),z=R();h.value=!0,y.value="";try{const q=await J(`/git/status?root=${encodeURIComponent(z)}`,{signal:T.signal});if(f!==k||!d.isCurrent(T)||R()!==z)return;if($.value=q,!q){l.value=[],c.value=[],o.value=null,m.value=null;return}if(await W(f,z,T.signal),f!==k||!d.isCurrent(T)||R()!==z)return;N(),await v()}catch(q){f===k&&d.isCurrent(T)&&R()===z&&(y.value=te(q))}finally{f===k&&d.isCurrent(T)&&R()===z&&(h.value=!1)}}async function W(f,T,z){const q=encodeURIComponent(T),ee=z?{signal:z}:{},[H,Q]=await Promise.all([J(`/git/branches?root=${q}`,ee),J(`/git/log?root=${q}&limit=20`,ee)]);f!==k||R()!==T||(l.value=H,c.value=Q)}async function v(){const f=o.value,T=R();if(!f||!$.value?.head){x.invalidate(),r.value=!1,m.value=null;return}const z=x.begin();r.value=!0;try{const q=await J(`/git/diff?root=${encodeURIComponent(T)}&path=${encodeURIComponent(f)}`,{signal:z.signal});x.isCurrent(z)&&R()===T&&o.value===f&&(m.value=q)}catch(q){x.isCurrent(z)&&R()===T&&(m.value=null,y.value=te(q))}finally{x.isCurrent(z)&&R()===T&&(r.value=!1)}}async function C(f,T,z,q,ee=6e4){if(b.value)return!1;const H=R(),Q=++k;d.invalidate(),x.invalidate(),h.value=!1,r.value=!1,b.value=f,y.value="";try{const oe=await J(T,{method:z,body:JSON.stringify({root:H,...q}),timeoutMs:ee});return Q!==k||R()!==H||($.value=oe,N(),await W(Q,H),Q!==k||R()!==H)?!1:(await v(),!0)}catch(oe){return Q===k&&R()===H&&(y.value=te(oe)),!1}finally{Q===k&&R()===H&&(b.value=null)}}async function I(f){return f.length?C("stage","/git/stage","POST",{paths:f}):!1}async function M(f){return f.length?C("unstage","/git/unstage","POST",{paths:f}):!1}function Y(f){return C("restore","/git/restore","POST",{path:f})}function X(f){return C("commit","/git/commit","POST",{message:f})}function ae(f){return C("branch","/git/branches","POST",{name:f})}function Z(f){return C("branch","/git/switch","POST",{name:f})}function le(f){return C("branch","/git/branches","DELETE",{name:f})}function U(f){return C(f,`/git/${f}`,"POST",{},5*6e4)}function N(){g.value.some(f=>f.path===o.value)||(o.value=g.value[0]?.path??null)}return{status:$,branches:l,commits:c,selectedPath:o,diff:m,loading:h,diffLoading:r,busy:b,error:y,changes:g,selectedChange:V,stagedPaths:B,unstagedPaths:L,load:D,stage:I,unstage:M,restore:Y,commit:X,createBranch:ae,switchBranch:Z,deleteBranch:le,remote:U,isStaged:De,isUnstaged:Ne,statusCode:Qt}}function De(e){return e.indexStatus!==" "&&e.indexStatus!=="?"}function Ne(e){return e.indexStatus==="?"||e.workingTreeStatus!==" "&&e.workingTreeStatus!=="?"}function Qt(e){return`${e.indexStatus}${e.workingTreeStatus}`.replaceAll(" ","·")}const Yt={class:"git-diff-viewer"},Xt={class:"git-diff-content"},Zt={class:"git-diff-line-number"},ea={class:"git-diff-line-number"},ta={class:"git-diff-line"},aa=ue({__name:"GitDiffViewer",props:{text:{}},setup(e){const $=e,l=K(()=>{const c=[];let o=0,m=0,h=!1;for(const r of $.text.split(`
2
- `)){const b=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@/.exec(r);if(b){o=Number(b[1]),m=Number(b[2]),h=!0,c.push({text:r,kind:"hunk",oldLine:null,newLine:null});continue}if(!h||r.startsWith("diff --git ")||r.startsWith("index ")||r.startsWith("--- ")||r.startsWith("+++ ")||r.startsWith("new file mode ")||r.startsWith("deleted file mode ")||r.startsWith("Binary files ")||r.startsWith("GIT binary patch")||r.startsWith("\\ No newline")){c.push({text:r,kind:"meta",oldLine:null,newLine:null});continue}r.startsWith("+")?(c.push({text:r,kind:"add",oldLine:null,newLine:m}),m+=1):r.startsWith("-")?(c.push({text:r,kind:"delete",oldLine:o,newLine:null}),o+=1):(c.push({text:r,kind:"context",oldLine:o,newLine:m}),o+=1,m+=1)}return c});return(c,o)=>(u(),O("div",Yt,[i("div",Xt,[(u(!0),O(E,null,se(l.value,(m,h)=>(u(),O("div",{key:h,class:Ce(["git-diff-row",`git-diff-row-${m.kind}`])},[i("span",Zt,s(m.oldLine??""),1),i("span",ea,s(m.newLine??""),1),i("code",ta,s(m.text),1)],2))),128))])]))}}),la={class:"workspace-git-pane"},oa={class:"git-toolbar"},na={class:"git-facts"},ia={class:"mono"},sa={class:"mono"},ra={class:"mono"},ua={key:0},ca={class:"git-toolbar-actions"},da={class:"git-section-header"},va={class:"git-section-actions"},fa={key:0,class:"git-workbench"},ma={class:"git-change-code mono"},ha={class:"git-diff-pane"},pa={class:"git-file-toolbar"},ga={class:"mono git-selected-path"},ya={class:"git-file-actions"},ka={class:"git-commit-bar"},_a={class:"git-history"},wa={class:"git-section-header"},$a={class:"git-commit-hash mono"},xa={class:"git-new-branch"},ba={class:"mono mt-2"},Ca={class:"mono mt-2"},Va=ue({__name:"WorkspaceGitPane",props:{root:{}},setup(e){const $=e,l=ce(),c=Jt(()=>$.root),{status:o,branches:m,commits:h,selectedPath:r,diff:b,loading:y,diffLoading:k,busy:d,error:x,changes:R,selectedChange:g,stagedPaths:V,unstagedPaths:B,load:L,stage:D,unstage:W,restore:v,commit:C,createBranch:I,switchBranch:M,deleteBranch:Y,remote:X,isStaged:ae,isUnstaged:Z,statusCode:le}=c,U=p(""),N=p(!1),f=p(""),T=p(null),z=p(null);async function q(){const j=T.value;j&&await v(j.path)&&(T.value=null)}async function ee(){const j=U.value.trim();j&&await C(j)&&(U.value="")}async function H(){const j=f.value.trim();j&&await I(j)&&(f.value="",N.value=!1)}async function Q(j){j.current||await M(j.name)&&(N.value=!1)}async function oe(){const j=z.value;j&&await Y(j.name)&&(z.value=null)}return(j,S)=>(u(),O("div",la,[t(y)?(u(),P(be,{key:0,indeterminate:""})):A("",!0),t(x)?(u(),P(ne,{key:1,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(t(x)),1)]),_:1})):A("",!0),!t(y)&&!t(o)?(u(),P(re,{key:2,icon:"$mdiSourceBranch",title:t(l).t("$vuetify.chatroom.git.notRepository")},null,8,["title"])):t(o)?(u(),O(E,{key:3},[i("div",oa,[i("div",na,[i("div",null,[i("span",null,s(t(l).t("$vuetify.chatroom.git.branch")),1),i("strong",ia,s(t(o).branch??"—"),1)]),i("div",null,[S[15]||(S[15]=i("span",null,"HEAD",-1)),i("strong",sa,s(t(o).head?.slice(0,12)??"—"),1)]),i("div",null,[i("span",null,s(t(l).t("$vuetify.chatroom.git.upstream")),1),i("strong",ra,s(t(o).upstream??"—"),1)]),t(o).upstream?(u(),O("div",ua,[i("span",null,s(t(l).t("$vuetify.chatroom.git.sync")),1),i("strong",null,"↑ "+s(t(o).ahead)+" · ↓ "+s(t(o).behind),1)])):A("",!0)]),i("div",ca,[a(F,{icon:"$mdiRefresh",size:"small",variant:"text",loading:t(y),"aria-label":t(l).t("$vuetify.chatroom.git.refresh"),onClick:t(L)},null,8,["loading","aria-label","onClick"]),a(F,{"prepend-icon":"$mdiSourceBranch",size:"small",variant:"tonal",onClick:S[0]||(S[0]=w=>N.value=!0)},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.branches")),1)]),_:1}),a(F,{size:"small",variant:"text",loading:t(d)==="fetch",onClick:S[1]||(S[1]=w=>t(X)("fetch"))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.fetch")),1)]),_:1},8,["loading"]),a(F,{size:"small",variant:"text",disabled:!t(o).upstream,loading:t(d)==="pull",onClick:S[2]||(S[2]=w=>t(X)("pull"))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.pull")),1)]),_:1},8,["disabled","loading"]),a(F,{size:"small",variant:"text",loading:t(d)==="push",onClick:S[3]||(S[3]=w=>t(X)("push"))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.push")),1)]),_:1},8,["loading"])])]),i("div",da,[i("div",null,[i("strong",null,s(t(l).t("$vuetify.chatroom.git.changes")),1),i("span",null,s(t(R).length),1)]),i("div",va,[a(F,{size:"small",variant:"text",disabled:!t(B).length,loading:t(d)==="stage",onClick:S[4]||(S[4]=w=>t(D)(t(B)))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.stageAll")),1)]),_:1},8,["disabled","loading"]),a(F,{size:"small",variant:"text",disabled:!t(V).length,loading:t(d)==="unstage",onClick:S[5]||(S[5]=w=>t(W)(t(V)))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.unstageAll")),1)]),_:1},8,["disabled","loading"])])]),t(R).length?(u(),O("div",fa,[a(we,{density:"compact",class:"git-change-list"},{default:n(()=>[(u(!0),O(E,null,se(t(R),w=>(u(),P($e,{key:w.path,active:t(r)===w.path,onClick:de=>r.value=w.path},{prepend:n(()=>[i("span",ma,s(t(le)(w)),1)]),default:n(()=>[a(Se,{class:"mono"},{default:n(()=>[_(s(w.path),1)]),_:2},1024),w.originalPath?(u(),P(Pe,{key:0,class:"mono"},{default:n(()=>[_(s(w.originalPath)+" → "+s(w.path),1)]),_:2},1024)):A("",!0)]),_:2},1032,["active","onClick"]))),128))]),_:1}),i("div",ha,[t(g)?(u(),O(E,{key:0},[i("div",pa,[i("div",ga,s(t(g).path),1),i("div",ya,[t(Z)(t(g))?(u(),P(F,{key:0,size:"small",variant:"text",loading:t(d)==="stage",onClick:S[6]||(S[6]=w=>t(D)([t(g).path]))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.stage")),1)]),_:1},8,["loading"])):A("",!0),t(ae)(t(g))?(u(),P(F,{key:1,size:"small",variant:"text",loading:t(d)==="unstage",onClick:S[7]||(S[7]=w=>t(W)([t(g).path]))},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.unstage")),1)]),_:1},8,["loading"])):A("",!0),a(F,{color:"error",size:"small",variant:"text",disabled:!t(o).head&&t(g).kind!=="untracked",onClick:S[8]||(S[8]=w=>T.value=t(g))},{default:n(()=>[_(s(t(g).kind==="untracked"?t(l).t("$vuetify.chatroom.git.deleteFile"):t(l).t("$vuetify.chatroom.git.restore")),1)]),_:1},8,["disabled"])])]),t(k)?(u(),P(be,{key:0,indeterminate:""})):A("",!0),t(b)?.truncated?(u(),P(ne,{key:1,type:"info",variant:"tonal",density:"compact"},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.diffTruncated")),1)]),_:1})):A("",!0),t(b)?.diff?(u(),P(aa,{key:2,text:t(b).diff},null,8,["text"])):t(k)?A("",!0):(u(),P(re,{key:3,icon:"$mdiFileCompare",title:t(o).head?t(l).t("$vuetify.chatroom.git.noDiff"):t(l).t("$vuetify.chatroom.git.noHead")},null,8,["title"]))],64)):A("",!0)])])):(u(),P(re,{key:1,icon:"$mdiCheckCircleOutline",title:t(l).t("$vuetify.chatroom.git.clean")},null,8,["title"])),i("div",ka,[a(Ie,{modelValue:U.value,"onUpdate:modelValue":S[9]||(S[9]=w=>U.value=w),label:t(l).t("$vuetify.chatroom.git.commitMessage"),density:"compact",variant:"outlined","hide-details":"",disabled:!t(V).length,onKeyup:ze(ee,["enter"])},null,8,["modelValue","label","disabled"]),a(F,{color:"primary",variant:"flat",disabled:!t(V).length||!U.value.trim(),loading:t(d)==="commit",onClick:ee},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.commit")),1)]),_:1},8,["disabled","loading"])]),i("div",_a,[i("div",wa,[i("strong",null,s(t(l).t("$vuetify.chatroom.git.recentCommits")),1)]),t(h).length?(u(),P(we,{key:0,density:"compact"},{default:n(()=>[(u(!0),O(E,null,se(t(h),w=>(u(),P($e,{key:w.hash},{prepend:n(()=>[i("span",$a,s(w.shortHash),1)]),default:n(()=>[a(Se,null,{default:n(()=>[_(s(w.subject),1)]),_:2},1024),a(Pe,null,{default:n(()=>[_(s(w.author)+" · "+s(new Date(w.date).toLocaleString(t(ut)(t(l).current.value))),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):A("",!0)])],64)):A("",!0),a(ke,{modelValue:N.value,"onUpdate:modelValue":S[12]||(S[12]=w=>N.value=w),"max-width":"560"},{default:n(()=>[a(ve,null,{default:n(()=>[a(pe,null,{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.branches")),1)]),_:1}),a(ge,null,{default:n(()=>[i("div",xa,[a(Ie,{modelValue:f.value,"onUpdate:modelValue":S[10]||(S[10]=w=>f.value=w),label:t(l).t("$vuetify.chatroom.git.newBranch"),density:"compact",variant:"outlined","hide-details":"",onKeyup:ze(H,["enter"])},null,8,["modelValue","label"]),a(F,{color:"primary",variant:"flat",disabled:!f.value.trim(),loading:t(d)==="branch",onClick:H},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.create")),1)]),_:1},8,["disabled","loading"])]),a(we,{class:"mt-3",density:"compact",border:"",rounded:"lg"},{default:n(()=>[(u(!0),O(E,null,se(t(m),w=>(u(),P($e,{key:w.name},{append:n(()=>[w.current?(u(),P(Ke,{key:0,size:"x-small",variant:"tonal"},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.current")),1)]),_:1})):(u(),O(E,{key:1},[a(F,{size:"x-small",variant:"text",onClick:de=>Q(w)},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.switch")),1)]),_:1},8,["onClick"]),a(F,{icon:"$mdiDeleteOutline",size:"x-small",color:"error",variant:"text","aria-label":t(l).t("$vuetify.chatroom.git.deleteBranch"),onClick:de=>z.value=w},null,8,["aria-label","onClick"])],64))]),default:n(()=>[a(Se,{class:"mono"},{default:n(()=>[_(s(w.name),1)]),_:2},1024),w.upstream?(u(),P(Pe,{key:0,class:"mono"},{default:n(()=>[_(s(w.upstream),1)]),_:2},1024)):A("",!0)]),_:2},1024))),128))]),_:1})]),_:1}),a(ye,null,{default:n(()=>[a(Te),a(F,{variant:"text",onClick:S[11]||(S[11]=w=>N.value=!1)},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.common.close")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["modelValue"]),a(ke,{"model-value":T.value!==null,"max-width":"500"},{default:n(()=>[a(ve,null,{default:n(()=>[a(pe,null,{default:n(()=>[_(s(T.value?.kind==="untracked"?t(l).t("$vuetify.chatroom.git.deleteTitle"):t(l).t("$vuetify.chatroom.git.restoreTitle")),1)]),_:1}),a(ge,null,{default:n(()=>[_(s(T.value?.kind==="untracked"?t(l).t("$vuetify.chatroom.git.deleteDescription"):t(l).t("$vuetify.chatroom.git.restoreDescription"))+" ",1),i("div",ba,s(T.value?.path),1)]),_:1}),a(ye,null,{default:n(()=>[a(Te),a(F,{variant:"text",onClick:S[13]||(S[13]=w=>T.value=null)},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),a(F,{color:"error",variant:"flat",loading:t(d)==="restore",onClick:q},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"]),a(ke,{"model-value":z.value!==null,"max-width":"460"},{default:n(()=>[a(ve,null,{default:n(()=>[a(pe,null,{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.deleteBranchTitle")),1)]),_:1}),a(ge,null,{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.deleteBranchDescription"))+" ",1),i("div",Ca,s(z.value?.name),1)]),_:1}),a(ye,null,{default:n(()=>[a(Te),a(F,{variant:"text",onClick:S[14]||(S[14]=w=>z.value=null)},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),a(F,{color:"error",variant:"flat",loading:t(d)==="branch",onClick:oe},{default:n(()=>[_(s(t(l).t("$vuetify.chatroom.git.confirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["model-value"])]))}}),Sa=Ee({autoGrow:Boolean,autofocus:Boolean,counter:[Boolean,Number,String],counterValue:Function,prefix:String,placeholder:String,persistentPlaceholder:Boolean,persistentCounter:Boolean,noResize:Boolean,rows:{type:[Number,String],default:5,validator:e=>!isNaN(parseFloat(e))},maxHeight:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},maxRows:{type:[Number,String],validator:e=>!isNaN(parseFloat(e))},suffix:String,modelModifiers:Object,..._t(),...yt(kt(),["direction"]),...gt()},"VTextarea"),qe=He()({name:"VTextarea",directives:{vIntersect:Le},inheritAttrs:!1,props:Sa(),emits:{"click:control":e=>!0,"mousedown:control":e=>!0,"update:focused":e=>!0,"update:modelValue":e=>!0,"update:rows":e=>!0},setup(e,{attrs:$,emit:l,slots:c}){const o=ct(e,"modelValue"),{isFocused:m,focus:h,blur:r}=dt(e),{onIntersect:b}=Vt(e),y=K(()=>typeof e.counterValue=="function"?e.counterValue(o.value):(o.value||"").toString().length),k=K(()=>{if($.maxlength)return $.maxlength;if(!(!e.counter||typeof e.counter!="number"&&typeof e.counter!="string"))return e.counter}),d=p(),x=p(),R=wt(""),g=p(),V=p(0),{platform:B}=Me(),L=vt(e),D=K(()=>e.persistentPlaceholder||m.value||e.active);function W(){L.isSuppressing.value&&L.update(),g.value!==St()&&g.value?.focus(),m.value||h()}function v(U){W(),l("click:control",U)}function C(U){l("mousedown:control",U)}function I(U){U.stopPropagation(),W(),fe(()=>{o.value="",Ct(e["onClick:clear"],U)})}function M(U){const N=U.target;if(!e.modelModifiers?.trim){o.value=N.value;return}const f=N.value,T=N.selectionStart,z=N.selectionEnd;o.value=f,fe(()=>{let q=0;f.trimStart().length===N.value.length&&(q=f.length-N.value.length),T!=null&&(N.selectionStart=T-q),z!=null&&(N.selectionEnd=z-q)})}const Y=p(),X=p(Number(e.rows)),ae=K(()=>["plain","underlined"].includes(e.variant));ft(()=>{e.autoGrow||(X.value=Number(e.rows))});function Z(){fe(()=>{if(!g.value)return;if(B.value.firefox){V.value=12;return}const{offsetWidth:U,clientWidth:N}=g.value;V.value=Math.max(0,U-N)}),e.autoGrow&&fe(()=>{if(!Y.value||!x.value)return;const U=getComputedStyle(Y.value),N=getComputedStyle(x.value.$el),f=parseFloat(U.getPropertyValue("--v-field-padding-top"))+parseFloat(U.getPropertyValue("--v-input-padding-top"))+parseFloat(U.getPropertyValue("--v-field-padding-bottom")),T=Y.value.scrollHeight,z=parseFloat(U.lineHeight),q=Math.max(parseFloat(e.rows)*z+f,parseFloat(N.getPropertyValue("--v-input-control-height"))),ee=e.maxHeight?parseFloat(e.maxHeight):parseFloat(e.maxRows)*z+f||1/0,H=pt(T??0,q,ee);X.value=Math.floor((H-f)/z),R.value=_e(H)})}Je(Z),G(o,Z),G(()=>e.rows,Z),G(()=>e.maxHeight,Z),G(()=>e.maxRows,Z),G(()=>e.density,Z),G(X,U=>{l("update:rows",U)});let le;return G(Y,U=>{U?(le=new ResizeObserver(Z),le.observe(Y.value)):le?.disconnect()}),mt(()=>{le?.disconnect()}),je(()=>{const U=!!(c.counter||e.counter||e.counterValue),N=e.hideDetails!==!0&&!!(c.details||U&&(e.persistentCounter||e.hideDetails===!1||m.value)),[f,T]=$t($),{modelValue:z,...q}=Oe.filterProps(e),ee={...We.filterProps(e),"onClick:clear":I};return a(Oe,Re({ref:d,modelValue:o.value,"onUpdate:modelValue":H=>o.value=H,class:["v-textarea v-text-field",{"v-textarea--prefixed":e.prefix,"v-textarea--suffixed":e.suffix,"v-text-field--prefixed":e.prefix,"v-text-field--suffixed":e.suffix,"v-textarea--auto-grow":e.autoGrow,"v-textarea--no-resize":e.noResize||e.autoGrow,"v-input--plain-underlined":ae.value},e.class],style:[{"--v-textarea-max-height":e.maxHeight?_e(e.maxHeight):void 0,"--v-textarea-scroll-bar-width":_e(V.value)},e.style]},f,q,{centerAffix:X.value===1&&!ae.value,focused:m.value,indentDetails:e.indentDetails??!ae.value}),{...c,default:({id:H,isDisabled:Q,isDirty:oe,isReadonly:j,isValid:S,hasDetails:w})=>a(We,Re({ref:x,style:{"--v-textarea-control-height":R.value},onClick:v,onMousedown:C,"onClick:prependInner":e["onClick:prependInner"],"onClick:appendInner":e["onClick:appendInner"]},ee,{id:H.value,active:D.value||oe.value,labelId:`${H.value}-label`,centerAffix:X.value===1&&!ae.value,dirty:oe.value||e.dirty,disabled:Q.value,focused:m.value,details:w.value,error:S.value===!1}),{...c,default:({props:{class:de,...Be},controlRef:Ye})=>i(E,null,[e.prefix&&i("span",{class:"v-text-field__prefix"},[e.prefix]),Ae(i("textarea",Re({ref:Ve=>g.value=Ye.value=Ve,class:de,value:o.value,onInput:M,autofocus:e.autofocus,readonly:j.value,disabled:Q.value,placeholder:e.placeholder,rows:e.rows,name:L.fieldName.value,autocomplete:L.fieldAutocomplete.value,onFocus:W,onBlur:r,"aria-labelledby":`${H.value}-label`},Be,T),null),[[Le,{handler:b},null,{once:!0}]]),e.autoGrow&&Ae(i("textarea",{class:Ce([de,"v-textarea__sizer"]),id:`${Be.id}-sizer`,"onUpdate:modelValue":Ve=>o.value=Ve,ref:Y,readonly:!0,"aria-hidden":"true"},null),[[bt,o.value]]),e.suffix&&i("span",{class:"v-text-field__suffix"},[e.suffix])])}),details:N?H=>i(E,null,[c.details?.(H),U&&i(E,null,[i("span",null,null),a(xt,{active:e.persistentCounter||m.value,value:y.value,max:k.value,disabled:e.disabled},c.counter)])]):void 0})}),ht({},d,x,g)}}),Pa={class:"workspace-prompt-pane"},Ra={class:"workspace-prompt-form"},Ta={class:"workspace-prompt-actions"},Ia=".chatroom/summary.md",za=".chatroom/prompt.md",Ba=ue({__name:"WorkspacePromptPane",props:{root:{}},setup(e){const $=e,l=p(""),c=p(""),o=p(""),m=p(""),h=p(!1),r=p(!1),b=p(!1),y=p(""),k=ce(),d=ie(),x=ie(),R=K(()=>l.value!==o.value||c.value!==m.value);G(()=>$.root,()=>{x.invalidate(),r.value=!1,g()},{immediate:!0});async function g(){const L=d.begin(),D=$.root;h.value=!0,y.value="",b.value=!1;try{const W=await J(`/workspace?root=${encodeURIComponent(D)}`,{signal:L.signal});if(!d.isCurrent(L)||$.root!==D)return;l.value=W.summary??"",c.value=W.presetPrompt??"",o.value=l.value,m.value=c.value}catch(W){d.isCurrent(L)&&(y.value=te(W))}finally{d.isCurrent(L)&&(h.value=!1)}}async function V(L,D,W,v){await J("/workspace/file",{method:"PUT",body:JSON.stringify({root:L,path:D,content:W}),signal:v})}async function B(){if(!R.value||r.value)return;const L=x.begin(),D=$.root,W=l.value,v=c.value;r.value=!0,y.value="",b.value=!1;try{const C=[];if(W!==o.value&&C.push(V(D,Ia,W,L.signal)),v!==m.value&&C.push(V(D,za,v,L.signal)),await Promise.all(C),!x.isCurrent(L)||$.root!==D)return;o.value=W,m.value=v,b.value=!0}catch(C){x.isCurrent(L)&&$.root===D&&(y.value=te(C))}finally{x.isCurrent(L)&&$.root===D&&(r.value=!1)}}return(L,D)=>(u(),O("div",Pa,[h.value?(u(),P(be,{key:0,indeterminate:""})):A("",!0),i("div",Ra,[a(qe,{modelValue:l.value,"onUpdate:modelValue":D[0]||(D[0]=W=>l.value=W),label:t(k).t("$vuetify.chatroom.workspaces.summary"),rows:"3","auto-grow":"",maxlength:"2048",counter:"",disabled:h.value},null,8,["modelValue","label","disabled"]),a(qe,{modelValue:c.value,"onUpdate:modelValue":D[1]||(D[1]=W=>c.value=W),label:t(k).t("$vuetify.chatroom.workspaces.presetPrompt"),rows:"10","auto-grow":"",maxlength:"16384",counter:"",disabled:h.value},null,8,["modelValue","label","disabled"]),y.value?(u(),P(ne,{key:0,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(y.value),1)]),_:1})):b.value?(u(),P(ne,{key:1,type:"success",variant:"tonal",density:"compact"},{default:n(()=>[_(s(t(k).t("$vuetify.chatroom.workspaces.saved")),1)]),_:1})):A("",!0),i("div",Ta,[a(F,{color:"primary",variant:"flat",loading:r.value,disabled:h.value||!R.value,onClick:B},{default:n(()=>[_(s(t(k).t("$vuetify.chatroom.workspaces.save")),1)]),_:1},8,["loading","disabled"])])])]))}}),Ua={class:"workspace-skills-pane"},Fa={key:2,class:"workspace-skill-grid"},La={class:"workspace-skill-header"},Oa={class:"workspace-skill-title"},Wa={class:"workspace-skill-description"},Aa={class:"workspace-skill-path"},Da=ue({__name:"WorkspaceSkillsPane",props:{root:{}},setup(e){const $=e,l=p(null),c=p(!1),o=p(""),m=ce(),h=ie();G(()=>$.root,()=>{r()},{immediate:!0});async function r(){const y=h.begin(),k=$.root;c.value=!0,o.value="";try{const d=await J(`/workspace?root=${encodeURIComponent(k)}`,{signal:y.signal});if(!h.isCurrent(y)||$.root!==k)return;l.value=d}catch(d){h.isCurrent(y)&&(o.value=te(d))}finally{h.isCurrent(y)&&(c.value=!1)}}function b(y){return y.path.startsWith(".claude/skills/")?"Claude":y.path.startsWith(".chatroom/skills/")?"ChatRoom":"Agent"}return(y,k)=>(u(),O("div",Ua,[c.value?(u(),P(be,{key:0,indeterminate:""})):A("",!0),o.value?(u(),P(ne,{key:1,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(o.value),1)]),_:1})):A("",!0),l.value?.skills.length?(u(),O("div",Fa,[(u(!0),O(E,null,se(l.value.skills,d=>(u(),O("div",{key:d.path,class:"workspace-skill-card"},[i("div",La,[i("div",Oa,[a(Ge,{icon:"$mdiPuzzleOutline",size:"18"}),i("strong",null,s(d.name),1)]),a(Ke,{size:"x-small",variant:"tonal"},{default:n(()=>[_(s(b(d)),1)]),_:2},1024)]),i("div",Wa,s(d.description||t(m).t("$vuetify.chatroom.skills.noDescription")),1),i("div",Aa,s(d.path),1)]))),128))])):!c.value&&!o.value?(u(),P(re,{key:3,icon:"$mdiPuzzleOutline",title:t(m).t("$vuetify.chatroom.skills.empty")},null,8,["title"])):A("",!0)]))}}),Na={class:"workspace-layout"},qa={class:"workspace-header"},Ha={class:"workspace-identity min-w-0"},Ma={class:"workspace-meta-row"},ja=["title"],Ea={class:"workspace-actions"},Za=ue({__name:"WorkspacesView",setup(e){const $=p([]),l=p([]),c=p(window.localStorage.getItem("chatroom.workspace.root")),o=p("git"),m=p(!1),h=p(""),r=p(!1),b=p(!1),y=p(""),k=ce(),d=ie();Je(()=>{x()}),G(c,g=>{g?window.localStorage.setItem("chatroom.workspace.root",g):window.localStorage.removeItem("chatroom.workspace.root")});async function x(){const g=d.begin();m.value=!0,h.value="";try{const[V,B]=await Promise.all([J("/workspaces",{signal:g.signal}),J("/workspace/roots",{signal:g.signal})]);if(!d.isCurrent(g))return;$.value=V,l.value=B,$.value.some(L=>L.root===c.value)||(c.value=$.value[0]?.root??null)}catch(V){d.isCurrent(g)&&(h.value=te(V))}finally{d.isCurrent(g)&&(m.value=!1)}}async function R(g,V){b.value=!0,y.value="";try{const B=await J("/workspaces",{method:"POST",body:JSON.stringify({parent:g,name:V})});await x(),c.value=B.root,r.value=!1}catch(B){y.value=te(B)}finally{b.value=!1}}return(g,V)=>(u(),O("div",Na,[a(ve,{class:"workspace-detail panel-card"},{default:n(()=>[i("div",qa,[i("div",Ha,[a(Qe,{modelValue:c.value,"onUpdate:modelValue":V[0]||(V[0]=B=>c.value=B),items:$.value.map(B=>({title:B.name,value:B.root})),loading:m.value,density:"compact",variant:"outlined","hide-details":"","prepend-inner-icon":"$mdiFolderOutline",class:"workspace-switcher"},null,8,["modelValue","items","loading"]),i("div",Ma,[c.value?(u(),O("div",{key:0,class:"workspace-path",title:c.value},s(c.value),9,ja)):A("",!0),i("div",Ea,[a(F,{icon:"$mdiPlus",size:"small",variant:"text","aria-label":t(k).t("$vuetify.chatroom.workspaces.createTitle"),onClick:V[1]||(V[1]=B=>{y.value="",r.value=!0})},null,8,["aria-label"]),a(F,{icon:"$mdiRefresh",size:"small",variant:"text",loading:m.value,"aria-label":t(k).t("$vuetify.chatroom.workspaces.refresh"),onClick:x},null,8,["loading","aria-label"])])])])]),h.value?(u(),P(ne,{key:0,type:"error",variant:"tonal",density:"compact"},{default:n(()=>[_(s(h.value),1)]),_:1})):A("",!0),c.value?(u(),O(E,{key:1},[a(It,{modelValue:o.value,"onUpdate:modelValue":V[2]||(V[2]=B=>o.value=B),density:"compact",class:"workspace-tabs"},{default:n(()=>[a(me,{value:"git"},{default:n(()=>[...V[5]||(V[5]=[_("Git",-1)])]),_:1}),a(me,{value:"prompt"},{default:n(()=>[_(s(t(k).t("$vuetify.chatroom.workspaces.prompt")),1)]),_:1}),a(me,{value:"files"},{default:n(()=>[_(s(t(k).t("$vuetify.chatroom.workspaces.files")),1)]),_:1}),a(me,{value:"skills"},{default:n(()=>[_(s(t(k).t("$vuetify.chatroom.workspaces.skills")),1)]),_:1})]),_:1},8,["modelValue"]),a(xe),a(zt,{modelValue:o.value,"onUpdate:modelValue":V[3]||(V[3]=B=>o.value=B),touch:!1},{default:n(()=>[a(he,{value:"git"},{default:n(()=>[a(Va,{root:c.value},null,8,["root"])]),_:1}),a(he,{value:"prompt"},{default:n(()=>[a(Ba,{root:c.value},null,8,["root"])]),_:1}),a(he,{value:"files"},{default:n(()=>[a(Kt,{root:c.value},null,8,["root"])]),_:1}),a(he,{value:"skills"},{default:n(()=>[a(Da,{root:c.value},null,8,["root"])]),_:1})]),_:1},8,["modelValue"])],64)):m.value?A("",!0):(u(),P(re,{key:2,icon:"$mdiFolderOutline",title:t(k).t("$vuetify.chatroom.workspaces.empty")},null,8,["title"]))]),_:1}),a(Ft,{modelValue:r.value,"onUpdate:modelValue":V[4]||(V[4]=B=>r.value=B),roots:l.value,busy:b.value,error:y.value,onCreate:R},null,8,["modelValue","roots","busy","error"])]))}});export{Za as default};