@zhanguym/chatroom 1.1.0-beta.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/app/external-access-registry.d.ts +1 -0
  2. package/dist/app/external-access-registry.js +3 -0
  3. package/dist/infrastructure/logging/system-log.js +2 -1
  4. package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
  5. package/dist/native/windows/chatroom-computer-helper.exe +0 -0
  6. package/dist/plugins/computer/computer-native-backend.js +9 -1
  7. package/dist/plugins/computer/computer-native-host.js +21 -5
  8. package/dist/plugins/computer/types.d.ts +1 -0
  9. package/dist/plugins/web/http/workspace-api-router.js +119 -2
  10. package/dist/plugins/workspace/mcp.d.ts +1 -1
  11. package/dist/plugins/workspace/mcp.js +109 -1
  12. package/dist/plugins/workspace/plugin.js +4 -1
  13. package/dist/plugins/workspace/workspace-fs.d.ts +10 -0
  14. package/dist/plugins/workspace/workspace-fs.js +39 -0
  15. package/dist/plugins/workspace/workspace-service.d.ts +2 -0
  16. package/dist/plugins/workspace/workspace-service.js +18 -0
  17. package/dist/web/assets/{AgentView-DYJeMJLX.css → AgentView-BGLIBoxF.css} +1 -1
  18. package/dist/web/assets/AgentView-Dd6zCbr-.js +4 -0
  19. package/dist/web/assets/CloudView-DquY1HDZ.js +1 -0
  20. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-ekOImmBP.js +3 -0
  21. package/dist/web/assets/{ComputerView-BM0u3wSF.css → ComputerView-DWzfSYJ7.css} +1 -1
  22. package/dist/web/assets/ComputerView-RD2gMxJZ.js +1 -0
  23. package/dist/web/assets/{VTextarea-DG1zE1as.css → MarkdownContent-B_5zTG8c.css} +1 -1
  24. package/dist/web/assets/MarkdownContent-CkjR5fs7.js +16 -0
  25. package/dist/web/assets/McpToolsView-Dg2-iaDP.js +1 -0
  26. package/dist/web/assets/McpToolsView-DjxPbTHj.css +1 -0
  27. package/dist/web/assets/OperationsView-C8yCX7WZ.js +4 -0
  28. package/dist/web/assets/ProcessesView-C834LC-f.js +4 -0
  29. package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-By2gilBw.js +1 -0
  30. package/dist/web/assets/SystemLogsView-B6KcZv1J.js +1 -0
  31. package/dist/web/assets/VSelect-BtAJX-XJ.js +1 -0
  32. package/dist/web/assets/VSpacer-M8bpkhTH.js +1 -0
  33. package/dist/web/assets/VSwitch-C0VTnwLJ.js +1 -0
  34. package/dist/web/assets/VTabs-g61mykvY.js +1 -0
  35. package/dist/web/assets/VTextarea-CRYQYRqg.js +1 -0
  36. package/dist/web/assets/VTextarea-xiMOHEu-.css +1 -0
  37. package/dist/web/assets/WorkspaceDownloadPreview-BrESF-82.js +1 -0
  38. package/dist/web/assets/WorkspaceDownloadPreview-DnxhH5Q7.css +1 -0
  39. package/dist/web/assets/WorkspaceMediaPreview-CwtP9xWT.css +1 -0
  40. package/dist/web/assets/WorkspaceMediaPreview-HYajqgZ3.js +4 -0
  41. package/dist/web/assets/WorkspacePdfPreview-BtZkUHzV.css +1 -0
  42. package/dist/web/assets/WorkspacePdfPreview-CO-ZtDHG.js +55 -0
  43. package/dist/web/assets/WorkspacesView-BJCnzBLj.js +2 -0
  44. package/dist/web/assets/WorkspacesView-ClA6xcjn.css +1 -0
  45. package/dist/web/assets/index-CZ-4tJlF.css +1 -0
  46. package/dist/web/assets/index-u-aADQP-.js +19 -0
  47. package/dist/web/assets/pdf.worker.min-CjEcRF4W.mjs +28 -0
  48. package/dist/web/assets/{useMasterDetailFocus-D0j-KcXv.js → useMasterDetailFocus-D1mQ8Qjk.js} +1 -1
  49. package/dist/web/assets/{useOperationLabels-DR8r6Vrl.js → useOperationLabels-BjPIVnJW.js} +1 -1
  50. package/dist/web/index.html +2 -2
  51. package/package.json +2 -1
  52. package/dist/web/assets/AgentView-DKuspiki.js +0 -4
  53. package/dist/web/assets/CloudView-PbREbJgz.js +0 -1
  54. package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js +0 -3
  55. package/dist/web/assets/ComputerView-BRb2sE0Z.js +0 -1
  56. package/dist/web/assets/McpToolsView-B8NSFdf4.js +0 -1
  57. package/dist/web/assets/McpToolsView-C22ZbSuV.css +0 -1
  58. package/dist/web/assets/OperationsView-Cavi-6SZ.js +0 -4
  59. package/dist/web/assets/ProcessesView-UO48Nh2q.js +0 -4
  60. package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js +0 -1
  61. package/dist/web/assets/SystemLogsView-BXmOrmu5.js +0 -1
  62. package/dist/web/assets/VSelect-BPRXx8KM.js +0 -1
  63. package/dist/web/assets/VSpacer-Cl-QiwaM.js +0 -1
  64. package/dist/web/assets/VSwitch-C0XNj1lR.js +0 -1
  65. package/dist/web/assets/VTabs-CHj39Ket.js +0 -1
  66. package/dist/web/assets/VTextarea-BIcUWOU6.js +0 -16
  67. package/dist/web/assets/WorkspacesView-DPCt6kYy.css +0 -1
  68. package/dist/web/assets/WorkspacesView-rY6RXeiR.js +0 -2
  69. package/dist/web/assets/index-BPpl3-sP.css +0 -1
  70. package/dist/web/assets/index-Dt-pWiW1.js +0 -19
@@ -1 +1 @@
1
- import{a9 as o,ae as u}from"./index-Dt-pWiW1.js";function i(e){const t=o("layout"),a=o("detailPane");function r(){e.value&&u(()=>{t.value?.scrollIntoView({behavior:"smooth",block:"start"}),a.value?.focus({preventScroll:!0})})}function l(n){e.value&&u(()=>{t.value?.querySelector(n)?.focus({preventScroll:!0})})}return{focusDetail:r,focusMaster:l}}export{i as u};
1
+ import{a5 as o,aa as u}from"./index-u-aADQP-.js";function i(e){const t=o("layout"),a=o("detailPane");function r(){e.value&&u(()=>{t.value?.scrollIntoView({behavior:"smooth",block:"start"}),a.value?.focus({preventScroll:!0})})}function l(n){e.value&&u(()=>{t.value?.querySelector(n)?.focus({preventScroll:!0})})}return{focusDetail:r,focusMaster:l}}export{i as u};
@@ -1 +1 @@
1
- import{a as c,bO as r,bP as u,bQ as i}from"./index-Dt-pWiW1.js";function l(){const n=c();function t(a,e){const s=r(a,e);return s?n.t(s):u(e)}function o(a){const e=i(a);return e?n.t(e):a}return{actionLabel:t,sourceLabel:o}}export{l as u};
1
+ import{a as c,bW as r,bX as u,bY as i}from"./index-u-aADQP-.js";function l(){const n=c();function t(a,e){const s=r(a,e);return s?n.t(s):u(e)}function o(a){const e=i(a);return e?n.t(e):a}return{actionLabel:t,sourceLabel:o}}export{l as u};
@@ -10,8 +10,8 @@
10
10
  href="/assets/chatroom-B5p-5n3y.svg"
11
11
  />
12
12
  <title>ChatRoom Runtime</title>
13
- <script type="module" crossorigin src="/assets/index-Dt-pWiW1.js"></script>
14
- <link rel="stylesheet" crossorigin href="/assets/index-BPpl3-sP.css">
13
+ <script type="module" crossorigin src="/assets/index-u-aADQP-.js"></script>
14
+ <link rel="stylesheet" crossorigin href="/assets/index-CZ-4tJlF.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="app"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhanguym/chatroom",
3
- "version": "1.1.0-beta.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "description": "Local MCP runtime for ChatGPT with workspace, process, Cloud, and WebUI controls.",
6
6
  "bin": {
@@ -34,6 +34,7 @@
34
34
  "@simplewebauthn/server": "13.3.2",
35
35
  "compression": "^1.8.2",
36
36
  "express": "^5.1.0",
37
+ "pdfjs-dist": "6.4.299",
37
38
  "ws": "^8.18.3",
38
39
  "zod": "^4.0.17"
39
40
  },
@@ -1,4 +0,0 @@
1
- import{A as mt,a0 as xt,w as ie,B as Ue,a6 as Kt,y as U,C as qe,a as ke,z as I,d as Ce,u as ye,o as i,c as q,a7 as yt,b as B,e as g,V as Ye,g as h,t as M,h as d,l as ut,q as ea,r as le,p as O,n as S,O as oe,X as Se,i as ce,a8 as ue,x as Ze,T as tt,Q as Pe,U as Ee,a9 as dt,aa as Vt,m as ot,ab as lt,ac as ha,ad as Re,ae as He,a4 as ft,f as Ot,k as Mt,s as It,v as ht,af as Tt,D as At,ag as ba,ah as ta,ai as wa,aj as Ut,ak as ka,al as aa,am as ct,an as Wt,ao as na,H as Rt,ap as $a,Y as bt,$ as Me,aq as Sa,j as rt,ar as Ca,as as xa,at as Va,au as Ma,R as Ia,av as la,aw as Ht,ax as Je,ay as Ta,I as wt,az as Aa,aA as Ra,aB as Pa,_ as Fa,aC as Bt,aD as Et,aE as Ua,aF as Ea,aG as za,aH as Gt,aI as Da,aJ as Jt,aK as sa,F as zt,aL as Oa,S as nt,aM as Xt,aN as Ba,aO as La,aP as _a,N as ia,aQ as Na,aR as qa,aS as ja,aT as Ka,aU as Qt,aV as Wa,aW as Ha,a5 as oa,aX as Ga,a1 as Ja,a2 as Xa,G as Qa,aY as Be,a3 as Ya}from"./index-Dt-pWiW1.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{V as Za,M as Dt}from"./VTextarea-BIcUWOU6.js";import{V as Pt}from"./VSpacer-Cl-QiwaM.js";import{_ as it,V as en}from"./CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js";import{u as tn,a as an,b as nn,c as ln,d as sn,m as on,e as rn,f as un,g as dn,V as Ge}from"./VSelect-BPRXx8KM.js";import{V as cn}from"./VSwitch-C0XNj1lR.js";import"./syntax-highlight-C_fuMcwC.js";function Ct(){return{sandbox_approval:!0,rules:!0,skill_approval:!0,request_permissions:!0,mcp_elicitations:!0}}function Qe(e,a,t){return e.find(o=>o.id===a)?.nativeSettings.find(o=>o.id===t)??null}function Lt(e,a=null){if(e&&typeof e=="object")return"granular";const t=e??a;return t==="untrusted"||t==="on-request"||t==="granular"||t==="never"?t:null}function _t(e,a){const t=e??a;return t==="user"||t==="auto_review"||t==="guardian_subagent"?t:null}function Nt(e,a){const t=e??a;return t==="read-only"||t==="workspace-write"||t==="danger-full-access"?t:null}function ra(e,a,t,o,n,s){const c=Qe(e,a,"approvalPolicy"),f=Qe(e,a,"approvalsReviewer"),m=Qe(e,a,"permissionMode"),l=Lt(t,c?.defaultValue??null),v=m?.options.some(r=>r.id===s)?s:null;return{approvalPolicy:c?l==="granular"?{granular:{...o}}:l:null,approvalsReviewer:f?_t(n,f.defaultValue):null,permissionMode:m?Nt(v,m.defaultValue):null}}function ua(e,a,t){const o=e[a]??[];return t?o.find(n=>n.id===t)??null:o.find(n=>n.isDefault)??o[0]??null}function vn(e,a,t){return t||((e[a]??[]).find(o=>o.isDefault)?.id??null)}function da(e,a){return e.find(t=>t.id===a)??null}function gt(e,a){return da(e,a)?.displayName??a}function ca(e,a){return da(e,a)?.icon??null}function va(e,a,t,o){const n=vn(e,a,t);return n?(e[a]??[]).find(s=>s.id===n)?.displayName??n:o}function qt(e,a){return a?`${e} (${a})`:e}function $t(e){return e.split("/").pop()??e}function mn(e,a){const t=a.request??Ue,o=U([]),n=U(null),s=mt(),c=new Map,f=new Map;let m=!1,l=null,v=null,r=!1;xt(()=>{r=!0,s.invalidate(),c.clear(),f.clear()}),ie(e,z=>{s.invalidate(),n.value=null,l=z,w()},{flush:"sync"});function k(z){const x=c.get(z.sessionId);c.set(z.sessionId,{sessionId:z.sessionId,turnIds:[...new Set([...x?.turnIds??[],...z.turnIds])],itemIds:[...new Set([...x?.itemIds??[],...z.itemIds])],deleted:!!(x?.deleted||z.deleted)})}function A(z){const x=new Map(o.value.map(R=>[R.id,R]));o.value=z.map(R=>St(x.get(R.id),R)).sort((R,T)=>T.updatedAt.localeCompare(R.updatedAt)),a.onSessionsChanged?.(x,o.value),e.value&&!z.some(R=>R.id===e.value)&&(e.value=z[0]?.id??null)}function D(z){const x=new Map(o.value.map(T=>[T.id,T])),R=St(x.get(z.id),z);return x.set(z.id,R),A([...x.values()]),R}function y(z){return z===void 0?Promise.resolve():(z===null?m=!0:z.forEach(k),w())}function w(){return v||(r?Promise.resolve():(v=Promise.resolve().then(async()=>{for(;!r&&(m||l||c.size);){const z=m;m=!1;const x=l;l=null;const R=z||x?[]:[...c.values()];!z&&!x&&c.clear();const T=s.begin();try{if(z){const $=await t("/agents/sessions",{signal:T.signal});if(!s.isCurrent(T))continue;A($),l=e.value}else if(x){const $=await t(`/agents/sessions/${encodeURIComponent(x)}/history`,{signal:T.signal});if(!s.isCurrent(T)||e.value!==x)continue;n.value=$,D($.session)}else for(const $ of R){if(!s.isCurrent(T))break;if($.deleted){A(o.value.filter(C=>C.id!==$.sessionId));continue}const L=Math.max(1,Math.ceil($.turnIds.length/64),Math.ceil($.itemIds.length/64));let b=!0;for(let C=0;C<L;C++){const E=new URLSearchParams;E.set("turnIds",$.turnIds.slice(C*64,(C+1)*64).join(",")),E.set("itemIds",$.itemIds.slice(C*64,(C+1)*64).join(","));try{const J=await t(`/agents/sessions/${encodeURIComponent($.sessionId)}/update?${E}`,{signal:T.signal});if(!s.isCurrent(T))break;D(J.session),n.value?.session.id===J.session.id&&(n.value=Yt(n.value,J))}catch(J){if(!s.isCurrent(T))break;if(J instanceof Kt&&J.status===404)f.delete($.sessionId),A(o.value.filter(de=>de.id!==$.sessionId));else{const de=(f.get($.sessionId)??0)+1;de<=1?(f.set($.sessionId,de),k($)):(f.delete($.sessionId),a.onError(J))}b=!1;break}}b&&f.delete($.sessionId)}}catch($){s.isCurrent(T)&&($ instanceof Kt&&$.status===404&&x?A(o.value.filter(L=>L.id!==x)):a.onError($))}finally{!r&&!s.isCurrent(T)&&(z?m=!0:x&&e.value===x&&(l=x),R.forEach(k))}}}).finally(()=>{v=null,!r&&(m||l||c.size)&&w()}),v))}function u(){const z=e.value;return z?(l=z,w()):Promise.resolve()}function p(z){s.invalidate();const x=D(z);n.value?.session.id===z.id&&(n.value={...n.value,session:St(n.value.session,x)})}function F(z){s.invalidate(),A(o.value.filter(x=>x.id!==z)),k({sessionId:z,turnIds:[],itemIds:[],deleted:!0}),w()}function ee(z,x){s.invalidate();const R=n.value;if(!R||R.session.id!==z)return;const T=Yt(R,{session:R.session,turns:[],items:[x]}),$=T.turns.flatMap(b=>b.items).filter(b=>b.type==="interaction"&&b.status==="waiting"),L={...T.session,status:T.session.status==="waiting_input"?$.length?"waiting_input":"running":T.session.status,attention:$.length?{kind:$.some(b=>b.interaction.kind==="approval")?"approval":"input",count:$.length}:null};n.value={...T,session:L},D(L)}return{sessions:o,history:n,refresh:y,reloadSelected:u,reconcileSession:p,reconcileInteraction:ee,removeSession:F}}function Yt(e,a){const t=new Map(e.turns.map(n=>[n.turn.id,n]));for(const n of a.turns){const s=t.get(n.id);t.set(n.id,{turn:n,items:s?.items??[]})}const o=new Map;for(const n of a.items){const s=o.get(n.turnId)??[];s.push(n),o.set(n.turnId,s)}for(const[n,s]of o){const c=t.get(n);if(!c)throw new Error("Agent update is missing the item's turn");const f=new Map(c.items.map(m=>[m.id,m]));for(const m of s)f.set(m.id,m);t.set(n,{...c,items:[...f.values()].sort((m,l)=>m.sequence-l.sequence)})}return{session:St(e.session,a.session),turns:[...t.values()].sort((n,s)=>n.turn.startedAt.localeCompare(s.turn.startedAt))}}function St(e,a){return e&&e.updatedAt.localeCompare(a.updatedAt)>=0?e:a}function fn(e){const a=U({}),t=U(new Set),o=new Map;let n=0;ie(e.selectedId,()=>{n+=1,a.value={},t.value=new Set(e.selectedId.value?o.get(e.selectedId.value)??[]:[])},{flush:"sync"}),xt(()=>o.clear());async function s(k,A){k.type!=="interaction"||!e.selected.value||await f(k,{type:"approval",decision:A})}async function c(k){if(k.type!=="interaction"||!e.selected.value)return;const A={};for(const D of k.interaction.questions){const y=l(k)[D.id]??[];A[D.id]=D.multiSelect?y:y.slice(0,1)}await f(k,{type:"input",answers:A})}async function f(k,A){const D=e.selected.value,y=D?o.get(D.id):void 0;if(!D||k.status!=="waiting"||y?.has(k.id))return;const w={sessionId:D.id,generation:n},u=new Set(y??[]);u.add(k.id),o.set(D.id,u),t.value=new Set(u),e.error.value="";try{const p=await Ue("/agents/sessions/"+encodeURIComponent(D.id)+"/interactions/"+encodeURIComponent(k.id),{method:"POST",body:JSON.stringify(A)});e.reconcileInteraction(D.id,p)}catch(p){r(w)&&(e.error.value=qe(p))}finally{const p=new Set(o.get(D.id)??[]);p.delete(k.id),p.size?o.set(D.id,p):o.delete(D.id),e.selectedId.value===D.id&&(t.value=p)}}const m=Object.freeze({});function l(k){return a.value[k.id]??m}function v(k,A,D){a.value={...a.value,[k.id]:{...a.value[k.id]??{},[A]:D}}}function r(k){return e.selectedId.value===k.sessionId&&n===k.generation}return{respondingInteractions:t,respondApproval:s,submitInput:c,interactionAnswers:l,setInteractionAnswer:v}}function gn(e){const a=ke(),t=U(!1),o=U(null),n=U(null),s=U(null),c=U(null),f=U(null),m=U(Ct()),l=U(null),v=U(null),r=U(!1),k=U("uncommittedChanges"),A=U(""),D=U(""),y=U(!1),w=U(""),u=U(!1),p=U(!1),F=U(!1),ee=U(!1),z=U(null),x=U(!1);let R=!1,T=0;const $=new Map,L=new Map,b=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"approvalPolicy"):null),C=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"approvalsReviewer"):null),E=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"permissionMode"):null),J=I(()=>e.selected.value?e.providerModels.value[e.selected.value.provider]??[]:[]),de=I(()=>e.selected.value?ua(e.providerModels.value,e.selected.value.provider,e.selected.value.model):null),Y=I(()=>e.selected.value?e.providers.value.find(P=>P.id===e.selected.value?.provider)??null:null),$e=I(()=>["uncommittedChanges","baseBranch","commit","custom"].map(P=>({value:P,title:a.t(`$vuetify.chatroom.agents.reviewTargets.${P}`)}))),fe=I(()=>a.t(`$vuetify.chatroom.agents.reviewFields.${k.value}`)),be=I(()=>e.selected.value?.status==="idle"&&!!Y.value?.features.nativeReview&&!y.value&&!e.composerBusy.value&&!u.value&&!p.value&&(k.value==="uncommittedChanges"||!!A.value.trim())),xe=I(()=>e.selected.value?e.providers.value.filter(P=>P.id!==e.selected.value?.provider&&P.installed&&P.authenticated):[]);ie(k,()=>{A.value="",D.value="",w.value=""}),ie(e.selectedId,()=>{T+=1,u.value=!1,p.value=!1,F.value=!1,y.value=!1,t.value=!1,r.value=!1,ee.value=!1,z.value=null,x.value=!1},{flush:"sync"}),ie(e.sessions,P=>{const X=z.value;X&&!P.some(ae=>ae.id===X)&&(ee.value=!1,z.value=null)}),xt(()=>{R=!0,$.clear(),L.clear()});async function se(P,X=null){const ae=e.providers.value.find(me=>me.id===P);if(ae&&(!ae.installed||!ae.authenticated)){e.providerModels.value={...e.providerModels.value,[P]:[]};return}const ge=($.get(P)??0)+1;$.set(P,ge);try{const me=await Ue("/agents/providers/"+P+"/models",{timeoutMs:15e3});if(R||$.get(P)!==ge)return;e.providerModels.value={...e.providerModels.value,[P]:me}}catch(me){if(R||$.get(P)!==ge)return;e.providerModels.value={...e.providerModels.value,[P]:[]},(X===null||e.selectedId.value===X)&&(e.error.value=qe(me))}}async function Te(){const P=e.selected.value;if(!P||!be.value)return;const X=Ae(P.id),ae=A.value.trim();let ge;switch(k.value){case"uncommittedChanges":ge={type:"uncommittedChanges"};break;case"baseBranch":ge={type:"baseBranch",branch:ae};break;case"commit":ge={type:"commit",sha:ae,title:D.value.trim()||null};break;case"custom":ge={type:"custom",instructions:ae};break}y.value=!0,w.value="";try{await Ue(`/agents/sessions/${encodeURIComponent(P.id)}/review`,{method:"POST",body:JSON.stringify({target:ge}),timeoutMs:3e4}),he(X)&&(r.value=!1)}catch(me){he(X)&&(w.value=qe(me))}finally{he(X)&&(y.value=!1)}}async function we(){const P=e.selected.value;if(!P||F.value)return;const X=Ae(P.id);F.value=!0,e.error.value="";try{await Ue("/agents/sessions/"+encodeURIComponent(P.id)+"/interrupt",{method:"POST"})}catch(ae){he(X)&&(e.error.value=qe(ae))}finally{he(X)&&(F.value=!1)}}async function je(P){const X=e.selected.value;if(!X||P===X.provider||p.value)return;const ae=e.providers.value.find(Ne=>Ne.id===P);if(!ae?.installed||!ae.authenticated)return;const ge=Ae(X.id),me=Le(X.id);p.value=!0,e.error.value="";try{const Ne=await Ue("/agents/sessions/"+encodeURIComponent(X.id)+"/provider",{method:"POST",body:JSON.stringify({provider:P,model:null,reasoningEffort:null,reasoningSummary:null,serviceTier:null}),timeoutMs:3e4});_e(me)?(e.reconcileSession(Ne),await se(Ne.provider,X.id)):Ke(X.id)}catch(Ne){he(ge)&&(e.error.value=qe(Ne))}finally{he(ge)&&(p.value=!1)}}function ze(){const P=e.selected.value;P&&(z.value=P.id,ee.value=!0)}async function _(){const P=z.value;if(!(!P||x.value)){x.value=!0,e.error.value="";try{await Ue("/agents/sessions/"+encodeURIComponent(P),{method:"DELETE"}),e.removeSession(P),z.value===P&&(x.value=!1,ee.value=!1,z.value=null)}catch(X){z.value===P&&(x.value=!1,e.error.value=qe(X))}}}function H(){const P=e.selected.value;P&&(o.value=P.model,n.value=P.reasoningEffort,s.value=P.reasoningSummary,c.value=P.serviceTier,f.value=Lt(P.approvalPolicy,b.value?.defaultValue??null),m.value=P.approvalPolicy&&typeof P.approvalPolicy=="object"&&"granular"in P.approvalPolicy?{...P.approvalPolicy.granular}:Ct(),l.value=_t(P.approvalsReviewer,C.value?.defaultValue??null),v.value=Nt(P.permissionMode,E.value?.defaultValue??null),t.value=!0)}async function Ve(){const P=e.selected.value;if(!P)return;await De({model:o.value,reasoningEffort:n.value,reasoningSummary:s.value,serviceTier:c.value,...ra(e.providers.value,P.provider,f.value,m.value,l.value,v.value)})&&(t.value=!1)}async function De(P){const X=e.selected.value;if(!X||X.status!=="idle"||u.value||p.value)return!1;const ae=Ae(X.id),ge=Le(X.id);u.value=!0,e.error.value="";try{const me=await Ue(`/agents/sessions/${encodeURIComponent(X.id)}/config`,{method:"PUT",body:JSON.stringify(P),timeoutMs:3e4});return _e(ge)?(e.reconcileSession(me),he(ae)):(Ke(X.id),!1)}catch(me){return he(ae)&&(e.error.value=qe(me)),!1}finally{he(ae)&&(u.value=!1)}}function Ae(P){return{sessionId:P,generation:T}}function he(P){return e.selectedId.value===P.sessionId&&T===P.generation}function Le(P){const X=(L.get(P)??0)+1;return L.set(P,X),{sessionId:P,generation:X}}function _e(P){return L.get(P.sessionId)===P.generation}function Ke(P){e.refresh([{sessionId:P,turnIds:[],itemIds:[],deleted:!1}])}return{modelSettingsOpen:t,settingsModel:o,settingsReasoningEffort:n,settingsReasoningSummary:s,settingsServiceTier:c,settingsApprovalPolicyMode:f,settingsGranularApproval:m,settingsApprovalsReviewer:l,settingsPermissionMode:v,reviewOpen:r,reviewType:k,reviewValue:A,reviewTitle:D,reviewStarting:y,reviewError:w,modelSwitching:u,switchingProvider:p,interrupting:F,deleteDialog:ee,deletingSession:x,selectedApprovalPolicySetting:b,selectedApprovalsReviewerSetting:C,selectedPermissionModeSetting:E,selectedProviderModels:J,selectedModelMetadata:de,selectedProviderStatus:Y,reviewTypes:$e,reviewFieldLabel:fe,canStartReview:be,switchTargets:xe,loadModels:se,startReview:Te,interrupt:we,switchProvider:je,openDeleteDialog:ze,deleteSession:_,openModelSettings:H,saveModelSettings:Ve}}const pn={class:"agent-file-picker-caption"},yn={class:"agent-file-picker-list"},hn=["data-type","data-selected","aria-expanded","aria-pressed","onClick"],bn={key:1,class:"agent-tree-spacer"},wn={class:"agent-tree-name"},kn={key:2,class:"agent-tree-path"},$n={key:0,class:"agent-file-picker-empty"},Sn=Ce({__name:"AgentProjectFilePicker",props:Ze({rows:{},truncated:{type:Boolean},selectedPaths:{},expandedDirectories:{},disabled:{type:Boolean}},{open:{type:Boolean,required:!0},openModifiers:{},search:{required:!0},searchModifiers:{}}),emits:Ze(["toggleDirectory","toggleFile"],["update:open","update:search"]),setup(e,{emit:a}){const t=e,o=a,n=ye(e,"open"),s=ye(e,"search"),c=ke();function f(m){return t.selectedPaths.includes(m)}return(m,l)=>(i(),q(yt,{modelValue:n.value,"onUpdate:modelValue":l[1]||(l[1]=v=>n.value=v),"close-on-content-click":!1,location:"top start",offset:"8","content-class":"agent-overlay-menu"},{activator:B(({props:v})=>[g(ce,ue(v,{size:"x-small",density:"comfortable",variant:"text",icon:"",class:"agent-compose-tool-button agent-workspace-reference-button",disabled:e.disabled,"aria-label":d(c).t("$vuetify.chatroom.agents.projectFiles")}),{default:B(()=>[...l[2]||(l[2]=[le(" @ ",-1)])]),_:1},16,["disabled","aria-label"])]),default:B(()=>[g(Ye,{class:"agent-file-picker",elevation:"8"},{default:B(()=>[h("div",pn,M(d(c).t("$vuetify.chatroom.agents.projectFiles")),1),g(ut,{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=v=>s.value=v),"prepend-inner-icon":"$mdiMagnify","aria-label":d(c).t("$vuetify.chatroom.agents.searchFiles"),placeholder:d(c).t("$vuetify.chatroom.agents.searchFiles"),density:"compact",variant:"outlined","hide-details":"",autofocus:""},null,8,["modelValue","aria-label","placeholder"]),e.truncated?(i(),q(ea,{key:0,type:"warning",variant:"tonal",density:"compact",class:"agent-project-files-truncated"},{default:B(()=>[le(M(d(c).t("$vuetify.chatroom.agents.projectFilesTruncated")),1)]),_:1})):O("",!0),h("div",yn,[(i(!0),S(oe,null,Se(e.rows,v=>(i(),S("button",{key:v.path,type:"button",class:"agent-tree-row","data-type":v.type,"data-selected":v.type==="file"&&f(v.path)?"true":"false","aria-expanded":v.type==="directory"?e.expandedDirectories.has(v.path):void 0,"aria-pressed":v.type==="file"?f(v.path):void 0,style:tt({paddingInlineStart:String(8+v.depth*18)+"px"}),onClick:r=>v.type==="directory"?o("toggleDirectory",v.path):o("toggleFile",v.path)},[v.type==="directory"?(i(),q(Pe,{key:0,icon:"$mdiChevronRight",size:"16",class:Ee(["agent-tree-chevron",{"agent-tree-chevron-open":e.expandedDirectories.has(v.path)}])},null,8,["class"])):(i(),S("span",bn)),h("span",wn,M(v.name),1),s.value.trim()&&v.type==="file"?(i(),S("span",kn,M(v.path),1)):O("",!0)],12,hn))),128)),e.rows.length?O("",!0):(i(),S("div",$n,M(d(c).t("$vuetify.chatroom.agents.noMatchingFiles")),1))])]),_:1})]),_:1},8,["modelValue"]))}}),Cn=Ie(Sn,[["__scopeId","data-v-024d9876"]]);function xn(e){return e.map(a=>({path:a,lowerPath:a.toLowerCase()}))}function Zt(e,a,t){const o=t.trim().toLowerCase();if(!o)return[...e];const n=o.split(/[\/\s]+/).filter(Boolean);return a.filter(s=>n.every(c=>s.lowerPath.includes(c))).sort((s,c)=>{const f=s.lowerPath.startsWith(o)?0:1,m=c.lowerPath.startsWith(o)?0:1;return f-m||s.path.length-c.path.length||s.path.localeCompare(c.path)}).map(s=>s.path)}function Vn(e){const a=new Map;for(const t of e){const o=t.split("/");for(let n=1;n<o.length;n+=1)a.set(o.slice(0,n).join("/"),"directory");a.set(t,"file")}return[...a].map(([t,o])=>{const n=t.split("/"),s=[];let c="";for(const f of n.slice(0,-1))c=c?c+"/"+f:f,s.push(c);return{path:t,name:n.at(-1)??t,type:o,depth:Math.max(0,n.length-1),ancestors:s}}).sort((t,o)=>{const n=t.ancestors.at(-1)??"",s=o.ancestors.at(-1)??"";return n===s&&t.type!==o.type?t.type==="directory"?-1:1:t.path.localeCompare(o.path)})}function Mn(e,a){const t=new Set,o=/@"([^"]+)"|@([^\s]+)/g;for(const n of e.matchAll(o)){const s=(n[1]??n[2]??"").replace(/[),.;!?]+$/,"");a.has(s)&&t.add(s)}return[...t]}function Ft(e){const a=e.toLowerCase();return a.endsWith(".png")?"image/png":a.endsWith(".jpg")||a.endsWith(".jpeg")?"image/jpeg":a.endsWith(".gif")?"image/gif":a.endsWith(".webp")?"image/webp":a.endsWith(".avif")?"image/avif":null}const In={key:0,class:"agent-composer-caption"},Tn={key:1,class:"agent-inline-error agent-attachment-error",role:"alert"},An=["accept"],Rn={key:2,class:"agent-selected-attachments"},Pn={class:"agent-compose-row"},Fn={key:0,class:"agent-compose-tools"},Un={key:0,class:"agent-mention-popup"},En=["onMousedown","onClick"],zn={class:"agent-file-suggestion-name"},Dn={class:"agent-file-suggestion-path"},On={class:"agent-compose-actions"},Bn=Ce({__name:"AgentComposer",props:{session:{},model:{},steeringSupported:{type:Boolean},disabled:{type:Boolean}},emits:["error","busy"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(""),c=Re([]),f=Re({}),m=Re({}),l=U([]),v=U(!1),r=U([]),k=U([]),A=U(new Set),D=U(!1),y=U(""),w=U(""),u=U(!1),p=U(""),F=U(""),ee=U(0),z=U(0),x=dt("composerInputHost"),R=dt("localFileInput"),T=U(!1),$=U(!1),L=mt(),b=mt(),C=mt();let E=null,J=null;ie(y,(N,G,te)=>{E&&clearTimeout(E),E=setTimeout(()=>{w.value=N,E=null},120),te(()=>{E&&clearTimeout(E),E=null})}),ie(p,(N,G,te)=>{J&&clearTimeout(J),J=setTimeout(()=>{F.value=N,J=null},100),te(()=>{J&&clearTimeout(J),J=null})});const de=I(()=>new Set(l.value)),Y=I(()=>Mn(s.value,de.value)),$e=I(()=>[...new Set([...c.value,...Y.value])]),fe=I(()=>t.session.status==="running"&&t.steeringSupported),be=I(()=>t.session.status==="idle"||fe.value),xe=I(()=>[".txt",".md",".json",".csv",".pdf",".doc",".docx",".xls",".xlsx",".zip",".yaml",".yml",".xml",".html",".css",".js",".ts",".py",".rs",".go",".java",".c",".cpp",".sh",".log",".toml",".sql",...me("image")?["image/*"]:[],...me("audio")?["audio/*"]:[]].join(",")),se=I(()=>$e.value.filter(N=>!me(ge(N)))),Te=I(()=>se.value.length?n.t("$vuetify.chatroom.agents.unsupportedAttachment",se.value.map(_e).join(", ")):""),we=I(()=>Zt(l.value,r.value,F.value).slice(0,12)),je=I(()=>w.value.trim()?Zt(l.value,r.value,w.value).slice(0,80).map(N=>({path:N,name:$t(N),type:"file",depth:0,ancestors:[]})):k.value.filter(N=>N.ancestors.every(G=>A.value.has(G)))),ze=I(()=>be.value&&!t.disabled&&!T.value&&!$.value&&!se.value.length&&!!(s.value.trim()||$e.value.length));ie(()=>[t.session.id,t.session.workspaceRoot],()=>{ae(),_()},{immediate:!0}),ie(()=>T.value||$.value,N=>o("busy",N),{immediate:!0}),Vt(()=>{E&&clearTimeout(E),J&&clearTimeout(J),o("busy",!1)});async function _(){const N=L.begin(),G=t.session.id,te=t.session.workspaceRoot;try{const ve=await Ue("/workspace/project-files?root="+encodeURIComponent(te),{timeoutMs:2e4,signal:N.signal});if(!L.isCurrent(N)||t.session.id!==G||t.session.workspaceRoot!==te)return;l.value=ve.paths,v.value=ve.truncated,r.value=xn(ve.paths),k.value=Vn(ve.paths)}catch(ve){if(!L.isCurrent(N))return;l.value=[],v.value=!1,r.value=[],k.value=[],o("error",qe(ve))}}async function H(){if(!ze.value)return;if(se.value.length){o("error",Te.value);return}const N=t.session.id,G=fe.value,te=s.value,ve=$e.value.map(j=>({kind:ge(j),name:_e(j),path:j,mimeType:m.value[j]??Ft(j)})),V=b.begin();T.value=!0;try{if(await Ue("/agents/sessions/"+encodeURIComponent(N)+"/"+(G?"steer":"turns"),{method:"POST",body:JSON.stringify({text:te,attachments:ve}),timeoutMs:3e4,signal:V.signal}),!b.isCurrent(V)||t.session.id!==N)return;s.value="",c.value=[],f.value={},m.value={},u.value=!1}catch(j){b.isCurrent(V)&&o("error",qe(j))}finally{b.isCurrent(V)&&(T.value=!1)}}function Ve(){R.value?.click()}async function De(N){const G=N.target,te=[...G.files??[]];if(G.value="",!te.length)return;const ve=t.session.id,V=t.session.workspaceRoot,j=C.begin();$.value=!0;try{for(const ne of te){if(!C.isCurrent(j)||t.session.id!==ve)return;const re=ne.type.startsWith("audio/")?"audio":ne.type.startsWith("image/")||Ne(ne.name)?"image":"file";if(!me(re)){o("error",n.t("$vuetify.chatroom.agents.unsupportedAttachment",ne.name));continue}const pe=await Ue("/workspace/attachment?root="+encodeURIComponent(V)+"&sessionId="+encodeURIComponent(ve)+"&name="+encodeURIComponent(ne.name),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-ChatRoom-Mime-Type":ne.type||"application/octet-stream"},body:ne,timeoutMs:6e4,signal:j.signal});if(!C.isCurrent(j)||t.session.id!==ve)return;c.value.includes(pe.path)||c.value.push(pe.path),f.value[pe.path]=pe.name,m.value[pe.path]=pe.mimeType&&pe.mimeType!=="application/octet-stream"?pe.mimeType:ne.type||Ft(ne.name)}}catch(ne){C.isCurrent(j)&&o("error",qe(ne))}finally{C.isCurrent(j)&&($.value=!1)}}function Ae(N){const G=new Set(A.value);G.has(N)?G.delete(N):G.add(N),A.value=G}function he(N){const G=c.value.indexOf(N);G>=0?c.value.splice(G,1):c.value.push(N)}function Le(N){c.value=c.value.filter(G=>G!==N),delete f.value[N],delete m.value[N]}function _e(N){return f.value[N]??$t(N)}function Ke(){He(()=>{const N=X();if(!N){u.value=!1;return}const G=N.selectionStart??s.value.length,ve=s.value.slice(0,G).match(/(?:^|\s)@([^\s"@]*)$/);if(!ve){u.value=!1;return}const V=ve[1]??"";p.value=V,ee.value=G-V.length-1,z.value=G,u.value=!0})}function P(N){const G=/\s/.test(N)?'@"'+N+'"':"@"+N,te=s.value.slice(0,ee.value),ve=s.value.slice(z.value);s.value=te+G+" "+ve,c.value.includes(N)||c.value.push(N),u.value=!1,He(()=>{const V=X();if(!V)return;const j=te.length+G.length+1;V.focus(),V.setSelectionRange(j,j)})}function X(){return x.value?.querySelector("textarea")??null}function ae(){L.invalidate(),b.invalidate(),C.invalidate(),T.value=!1,$.value=!1,s.value="",c.value=[],f.value={},m.value={},l.value=[],v.value=!1,r.value=[],k.value=[],A.value=new Set,D.value=!1,y.value="",w.value="",p.value="",F.value="",u.value=!1}function ge(N){if(/(?:^|\/)(?:\.agents|\.claude|\.chatroom)\/skills\/(?:.*\/)?SKILL\.md$/.test(N.replaceAll("\\","/")))return"skill";if(!(N in f.value))return"file";const G=m.value[N];return G?.startsWith("audio/")?"audio":G?.startsWith("image/")||Ne(_e(N))?"image":"file"}function me(N){return N!=="image"&&N!=="audio"||!!t.model?.inputModalities?.includes(N)}function Ne(N){return Ft(N)!==null}return(N,G)=>(i(),S("div",{class:Ee(["agent-composer",{"agent-composer--waiting":e.session.status==="waiting_input"}])},[fe.value?(i(),S("div",In,M(d(n).t("$vuetify.chatroom.agents.steerHint")),1)):O("",!0),Te.value?(i(),S("div",Tn,M(Te.value),1)):O("",!0),h("input",{ref_key:"localFileInput",ref:R,class:"agent-hidden-file-input",type:"file",multiple:"",accept:xe.value,onChange:De},null,40,An),c.value.length?(i(),S("div",Rn,[(i(!0),S(oe,null,Se(c.value,te=>(i(),q(ft,{key:te,size:"small",closable:"",variant:"tonal",title:te,"onClick:close":ve=>Le(te)},{default:B(()=>[le(M(_e(te)),1)]),_:2},1032,["title","onClick:close"]))),128))])):O("",!0),h("div",Pn,[e.session.status!=="waiting_input"?(i(),S("div",Fn,[g(ce,{icon:"$mdiPaperclip",size:"x-small",density:"comfortable",variant:"text",class:"agent-compose-tool-button agent-attachment-button",loading:$.value,disabled:!be.value||e.disabled||T.value,"aria-label":d(n).t("$vuetify.chatroom.agents.attachFile"),onClick:Ve},null,8,["loading","disabled","aria-label"]),g(Cn,{open:D.value,"onUpdate:open":G[0]||(G[0]=te=>D.value=te),search:y.value,"onUpdate:search":G[1]||(G[1]=te=>y.value=te),rows:je.value,truncated:v.value,"selected-paths":c.value,"expanded-directories":A.value,disabled:!be.value||e.disabled||T.value,onToggleDirectory:Ae,onToggleFile:he},null,8,["open","search","rows","truncated","selected-paths","expanded-directories","disabled"])])):O("",!0),e.session.status!=="waiting_input"?(i(),S("div",{key:1,ref_key:"composerInputHost",ref:x,class:"agent-compose-input-wrap"},[u.value&&we.value.length?(i(),S("div",Un,[(i(!0),S(oe,null,Se(we.value,te=>(i(),S("button",{key:te,type:"button",class:"agent-file-suggestion",onMousedown:lt(ve=>P(te),["prevent"]),onClick:ve=>P(te)},[h("span",zn,M(d($t)(te)),1),h("span",Dn,M(te),1)],40,En))),128))])):O("",!0),g(Za,{modelValue:s.value,"onUpdate:modelValue":G[2]||(G[2]=te=>s.value=te),placeholder:d(n).t(fe.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"aria-label":d(n).t(fe.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"auto-grow":"",rows:"2","max-rows":"8","hide-details":"",disabled:!be.value||e.disabled||T.value,onInput:Ke,onKeyup:Ke,onClick:Ke,onKeydown:[G[3]||(G[3]=ot(te=>u.value=!1,["escape"])),ot(lt(H,["ctrl","prevent"]),["enter"]),ot(lt(H,["meta","prevent"]),["enter"])]},null,8,["modelValue","placeholder","aria-label","disabled","onKeydown"])],512)):O("",!0),h("div",On,[ha(N.$slots,"controls",{busy:T.value||$.value},void 0),e.session.status!=="waiting_input"?(i(),q(ce,{key:0,icon:"$mdiArrowUp",color:"primary",size:"small",variant:"tonal",loading:T.value,disabled:!ze.value,"aria-label":d(n).t(fe.value?"$vuetify.chatroom.agents.steer":"$vuetify.chatroom.agents.send"),onClick:H},null,8,["loading","disabled","aria-label"])):O("",!0)])])],2))}}),Ln=Ie(Bn,[["__scopeId","data-v-c20ba904"]]),_n=Ce({__name:"AgentDeleteDialog",props:Ze({busy:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:Ze(["confirm"],["update:modelValue"]),setup(e){const a=ye(e,"modelValue"),t=ke();return(o,n)=>(i(),q(ht,{modelValue:a.value,"onUpdate:modelValue":n[2]||(n[2]=s=>a.value=s),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.deleteTitle")),1)]),_:1}),g(Mt,null,{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.deleteDescription")),1)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:n[0]||(n[0]=s=>a.value=!1)},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"error",variant:"tonal",loading:e.busy,onClick:n[1]||(n[1]=s=>o.$emit("confirm"))},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.delete")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}});function Nn(e,a){const t=U(!0);let o=null,n=0;function s(l=72){const v=e.value;return v?v.scrollHeight-v.scrollTop-v.clientHeight<l:!0}function c(){const l=e.value?.scrollTop??0;s()?t.value=!0:l<n&&(t.value=!1),n=l}function f(){t.value&&o===null&&(o=requestAnimationFrame(()=>{o=null;const l=e.value;l&&t.value&&(l.scrollTop=l.scrollHeight,n=l.scrollTop)}))}function m(){t.value=!0,f()}return ie([e,a],([l,v],r,k)=>{if(!l||!v)return;const A=new ResizeObserver(()=>f());A.observe(l),A.observe(v),f(),k(()=>{A.disconnect()})},{flush:"post"}),Vt(()=>{o!==null&&cancelAnimationFrame(o)}),{autoFollow:t,isNearBottom:s,onConversationScroll:c,scheduleScrollToBottom:f,scrollToBottom:m}}const qn={class:"agent-artifact-group"},jn={class:"agent-artifact-group-heading"},Kn=["data-count"],Wn={class:"agent-artifact-media"},Hn=["aria-label","disabled","onClick"],Gn=["src","alt","onLoad","onError"],Jn={key:1,class:"agent-artifact-placeholder agent-artifact-overlay"},Xn={key:2,class:"agent-artifact-placeholder agent-artifact-overlay error"},Qn={key:0,class:"agent-artifact-error-detail"},Yn={class:"agent-artifact-footer"},Zn=["title"],el={class:"agent-artifact-preview-header"},tl={class:"text-truncate"},al={class:"agent-artifact-preview-body"},nl=["src","alt"],ll=Ce({__name:"AgentArtifactGallery",props:{items:{},workspaceRoot:{}},setup(e){const a=e,t=ke(),o=Re({}),n=Re({}),s=Re({}),c=U(null);function f(w){return`${a.workspaceRoot}:${w.artifact.path}:${w.id}:${w.updatedAt}:${s.value[w.id]??""}`}function m(w){const u=`${w.id}:${w.updatedAt}`;return"/api/workspace/file/image?root="+encodeURIComponent(a.workspaceRoot)+"&path="+encodeURIComponent(w.artifact.path)+"&v="+encodeURIComponent(u)+(s.value[w.id]?"&retry="+encodeURIComponent(s.value[w.id]):"")}function l(w){return!!o.value[f(w)]}function v(w){return n.value[f(w)]??""}function r(w){const u=f(w);o.value[u]=!0,delete n.value[u]}function k(w){const u=f(w);o.value[u]=!1,n.value[u]=t.t("$vuetify.chatroom.agents.imageDecodeFailed")}function A(w){s.value[w.id]=crypto.randomUUID()}function D(w){l(w)&&(c.value=w)}function y(w){if(!l(w))return;const u=document.createElement("a");u.href=m(w),u.download=w.artifact.name,u.click()}return(w,u)=>(i(),S("div",qn,[h("div",jn,[g(Pe,{icon:"$mdiFileEyeOutline",size:"17"}),h("span",null,M(e.items.length===1?d(t).t("$vuetify.chatroom.agents.generatedImage"):d(t).t("$vuetify.chatroom.agents.generatedImages",e.items.length)),1)]),h("div",{class:"agent-artifact-grid","data-count":e.items.length},[(i(!0),S(oe,null,Se(e.items,p=>(i(),S("div",{key:p.id,class:"agent-artifact-tile"},[h("div",Wn,[p.status==="completed"?(i(),S("button",{key:0,type:"button",class:"agent-artifact-image-button","aria-label":p.artifact.name,disabled:!l(p),onClick:F=>D(p)},[(i(),S("img",{key:f(p),class:"agent-artifact-image",src:m(p),alt:p.artifact.name,loading:"lazy",decoding:"async",onLoad:F=>r(p),onError:F=>k(p)},null,40,Gn))],8,Hn)):O("",!0),p.status==="running"||p.status==="waiting"||p.status==="completed"&&!l(p)&&!v(p)?(i(),S("div",Jn,[g(Tt,{indeterminate:"",size:"24",width:"2"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.imageLoading")),1)])):p.status==="failed"||p.status==="interrupted"||v(p)?(i(),S("div",Xn,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"22"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.imageLoadFailed")),1),v(p)?(i(),S("span",Qn,M(v(p)),1)):O("",!0),p.status==="completed"?(i(),q(ce,{key:1,size:"small",variant:"tonal",onClick:F=>A(p)},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.retry")),1)]),_:1},8,["onClick"])):O("",!0)])):O("",!0)]),h("div",Yn,[h("span",{class:"agent-artifact-name",title:p.artifact.path},M(p.artifact.name),9,Zn),g(ce,{icon:"$mdiDownloadOutline",size:"x-small",variant:"text",disabled:!l(p),"aria-label":d(t).t("$vuetify.chatroom.code.download"),onClick:F=>y(p)},null,8,["disabled","aria-label","onClick"])])]))),128))],8,Kn),g(ht,{"model-value":!!c.value,"max-width":"90vw","onUpdate:modelValue":u[1]||(u[1]=p=>c.value=p?c.value:null)},{default:B(()=>[c.value?(i(),q(Ye,{key:0,class:"agent-artifact-preview-dialog"},{default:B(()=>[h("div",el,[h("span",tl,M(c.value.artifact.name),1),g(ce,{icon:"$mdiClose",size:"small",variant:"text","aria-label":d(t).t("$vuetify.chatroom.common.close"),onClick:u[0]||(u[0]=p=>c.value=null)},null,8,["aria-label"])]),h("div",al,[h("img",{src:m(c.value),alt:c.value.artifact.name,decoding:"async"},null,8,nl)])]),_:1})):O("",!0)]),_:1},8,["model-value"])]))}}),sl=Ie(ll,[["__scopeId","data-v-e957f066"]]),il=["data-state","open"],ol=["aria-label"],rl={class:"agent-command-label"},ul={class:"agent-command-status"},dl={class:"agent-command-line"},cl=["title"],vl={key:0,class:"agent-command-copy-error",role:"alert"},ml={key:0,class:"agent-command-details"},fl={class:"agent-command-full"},gl={key:0,class:"agent-command-meta"},pl=["title"],yl={key:1,class:"agent-command-exit"},hl={class:"agent-command-output-label"},bl={class:"agent-command-code output"},wl={key:0,class:"agent-command-output-plain mono"},kl=Ce({__name:"AgentCommandItem",props:{command:{},cwd:{},output:{},exitCode:{},status:{}},setup(e){const a=e,t=ke(),o=U(""),n=U(a.status!=="completed"||a.exitCode!==null&&a.exitCode!==0);ie(()=>[a.status,a.exitCode],([l,v])=>{(l==="running"||l==="failed"||v!==null&&v!==0)&&(n.value=!0)});const s=I(()=>{let l=a.command.trim();return l=l.replace(/^(?:\/usr\/bin\/|\/bin\/)?(?:zsh|bash|sh)\s+-l?c\s+/,""),l.length>=2&&(l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'"))&&(l=l.slice(1,-1)),l.replace(/\\"/g,'"').replace(/\s+/g," ").trim()||t.t("$vuetify.chatroom.agents.command")}),c=I(()=>a.status==="running"||a.status==="waiting"?"running":a.status==="failed"||a.exitCode!==null&&a.exitCode!==0?"error":a.status==="completed"&&a.exitCode===0?"success":"neutral"),f=I(()=>c.value==="running"?t.t("$vuetify.chatroom.agents.commandRunning"):c.value==="error"?a.exitCode===null?t.t("$vuetify.chatroom.agents.commandFailed"):t.t("$vuetify.chatroom.agents.exitCode",a.exitCode):c.value==="success"?t.t("$vuetify.chatroom.agents.commandSucceeded"):t.t("$vuetify.chatroom.agents.command"));async function m(){o.value="";try{await navigator.clipboard.writeText(a.command)}catch{o.value=t.t("$vuetify.chatroom.code.copyFailed")}}return(l,v)=>(i(),S("details",{class:"agent-command","data-state":c.value,open:n.value,onToggle:v[0]||(v[0]=r=>n.value=r.target.open)},[h("summary",{class:"agent-command-main","aria-label":d(t).t("$vuetify.chatroom.agents.commandDetails")},[h("div",rl,[g(Pe,{icon:"$mdiConsoleLine",size:"16"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.command")),1),h("span",ul,[v[1]||(v[1]=h("span",{class:"agent-command-status-dot"},null,-1)),le(" "+M(f.value),1)])]),h("div",dl,[h("code",{class:"mono",title:e.command},M(s.value),9,cl),g(ce,{icon:"$mdiContentCopy",size:"x-small",variant:"text",class:"agent-command-copy","aria-label":d(t).t("$vuetify.chatroom.code.copy"),onClick:lt(m,["stop"])},null,8,["aria-label"]),g(Pe,{icon:"$mdiChevronDown",size:"18",class:Ee(["agent-command-toggle",{"agent-command-toggle-open":n.value}])},null,8,["class"])]),o.value?(i(),S("div",vl,M(o.value),1)):O("",!0)],8,ol),n.value?(i(),S("div",ml,[h("div",fl,[g(it,{text:e.command,filename:"command.sh",language:"bash",toolbar:!1},null,8,["text"])]),e.cwd||e.exitCode!==null?(i(),S("div",gl,[e.cwd?(i(),S("span",{key:0,class:"agent-command-cwd mono",title:e.cwd},M(e.cwd),9,pl)):O("",!0),e.exitCode!==null?(i(),S("span",yl,M(d(t).t("$vuetify.chatroom.agents.exitCode",e.exitCode)),1)):O("",!0)])):O("",!0),e.output?(i(),S(oe,{key:1},[h("div",hl,M(d(t).t("$vuetify.chatroom.agents.commandOutput")),1),h("div",bl,[c.value==="running"?(i(),S("pre",wl,M(e.output),1)):(i(),q(it,{key:1,text:e.output,filename:"output.txt",toolbar:!1},null,8,["text"]))])],64)):O("",!0)])):O("",!0)],40,il))}}),$l=Ie(kl,[["__scopeId","data-v-7c2e41e4"]]),Sl=wt({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...rn({filterKeys:["title"]}),...on({hideNoData:!0,returnObject:!0}),...Aa(Ra({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),Cl=At()({name:"VCombobox",props:Sl(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,{emit:a,slots:t}){const{t:o}=ke(),n=Re(),s=U(!1),c=U(!0),f=U(!1),m=Re(),l=Re(),v=U(-1);let r=!1;const{items:k,transformIn:A,transformOut:D}=ba(e),{textColorClasses:y,textColorStyles:w}=ta(()=>n.value?.color),{InputIcon:u}=wa(e),p=Ut(e,"modelValue",[],V=>A(ka(V)),V=>{const j=D(V);return e.multiple?j:j[0]??null}),F=aa(e),ee=Je(()=>e.closableChips&&!F.isReadonly.value&&!F.isDisabled.value),z=I(()=>!!(e.chips||t.chip)),x=I(()=>z.value||!!t.selection),R=U(!e.multiple&&!x.value?p.value[0]?.title??"":""),T=U(null),$=I({get:()=>R.value,set:async V=>{if(R.value=V??"",V===null||V===""&&!e.multiple&&!x.value?p.value=[]:!e.multiple&&!x.value&&(p.value=[ct(e,V)],He(()=>l.value?.scrollToIndex(0))),V&&e.multiple&&e.delimiters?.length){const j=ge(V);j.length>1&&(me(j),R.value="")}V||(v.value=-1),c.value=!V}}),L=I(()=>typeof e.counterValue=="function"?e.counterValue(p.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?p.value.length:$.value.length),{filteredItems:b,getMatches:C}=tn(e,k,()=>T.value??(e.alwaysFilter||!c.value?$.value:"")),E=I(()=>e.hideSelected&&T.value===null?b.value.filter(V=>!p.value.some(j=>j.value===V.value)):b.value),J=I(()=>e.hideNoData&&!E.value.length||F.isReadonly.value||F.isDisabled.value),de=Ut(e,"menu"),Y=I({get:()=>de.value,set:V=>{de.value&&!V&&m.value?.ΨopenChildren.size||V&&J.value||(de.value=V)}}),{menuId:$e,ariaExpanded:fe,ariaControls:be}=an(e,Y);ie(R,V=>{r?He(()=>r=!1):s.value&&!Y.value&&(Y.value=!0),a("update:search",V)}),ie(p,V=>{!e.multiple&&!x.value&&(R.value=V[0]?.title??"")});const xe=I(()=>p.value.map(V=>V.value)),se=I(()=>E.value.find(V=>V.type==="item"&&!V.props.disabled)),Te=I(()=>(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&$.value===se.value?.title)&&E.value.length>0&&!c.value&&!f.value),we=Re(),je=Re(),ze=Re(),_=sn(we,n),H=dn(Y,()=>m.value?.contentEl,()=>n.value?.controlRef),{onTabKeydown:Ve}=un({groups:[{type:"element",contentRef:je},{type:"list",contentRef:we,displayItemsCount:()=>E.value.length},{type:"element",contentRef:ze}],onLeave:()=>{Y.value=!1,n.value?.focus()}});function De(V){r=!0,He(()=>r=!1),e.openOnClear&&(Y.value=!0)}function Ae(){J.value||(Y.value=!0)}function he(V){J.value||(s.value&&(V.preventDefault(),V.stopPropagation()),Y.value=!Y.value)}function Le(V){V.key==="Tab"&&Ve(V),we.value?.$el.contains(V.target)&&(Ht(V)||V.key==="Backspace")&&n.value?.focus()}function _e(V){if(Ta(V)||F.isReadonly.value)return;const j=n.value?.selectionStart,ne=p.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(V.key)&&V.preventDefault(),["Enter","ArrowDown"].includes(V.key)&&(Y.value=!0),["Escape"].includes(V.key)&&(Y.value=!1),Te.value&&["Enter","Tab"].includes(V.key)&&se.value&&!p.value.some(({value:re})=>re===se.value.value)&&ae(se.value),V.key==="ArrowDown"&&Te.value&&we.value?.focus("next"),V.key==="Enter"&&$.value&&(ae(ct(e,$.value),!0,!0),x.value&&(R.value="")),["Backspace","Delete"].includes(V.key)){if(!e.multiple&&x.value&&p.value.length>0&&!$.value)return ae(p.value[0],!1);if(~v.value){V.preventDefault();const re=v.value;ae(p.value[v.value],!1),v.value=re>=ne-1?ne-2:re}else V.key==="Backspace"&&!$.value&&(v.value=ne-1);return}if(e.multiple)if(V.key==="ArrowLeft"){if(v.value<0&&j&&j>0)return;const re=v.value>-1?v.value-1:ne-1;p.value[re]?v.value=re:(v.value=-1,n.value?.setSelectionRange($.value.length,$.value.length))}else if(V.key==="ArrowRight"){if(v.value<0)return;const re=v.value+1;p.value[re]?v.value=re:(v.value=-1,n.value?.setSelectionRange(0,0))}else~v.value&&Ht(V)&&(v.value=-1)}function Ke(V){const j=V?.clipboardData?.getData("Text")??"",ne=ge(j);ne.length>1&&e.multiple&&(V.preventDefault(),me(ne))}function P(){e.eager&&l.value?.calculateVisibleItems()}function X(){s.value&&(m.value?.contentEl?._clickOutside?.lastMousedownWasOutside?s.value=!1:n.value?.focus()),c.value=!0,T.value=null}function ae(V,j=!0,ne=!1){if(!(!V||V.props.disabled))if(e.multiple){const re=p.value.findIndex(Q=>(e.valueComparator||Wt)(Q.value,V.value)),pe=j??!~re;if(~re){const Q=pe?[...p.value,V]:[...p.value];Q.splice(re,1),p.value=Q}else pe&&(p.value=[...p.value,V]);e.clearOnSelect&&($.value="")}else{const re=j!==!1;p.value=re?[V]:[],(!c.value||e.alwaysFilter)&&R.value&&(T.value=R.value),R.value=re&&!x.value?V.title:"",He(()=>{Y.value=ne,c.value=!0})}}function ge(V){const ne=[`
2
- `,...e.delimiters??[]].map(Pa).join("|");return V.split(new RegExp(`(?:${ne})+`))}async function me(V){for(let j of V)j=j.trim(),j&&(ae(ct(e,j)),await He())}function Ne(V){s.value=!0,setTimeout(()=>{f.value=!0})}function N(V){if(f.value=!1,!n.value?.$el.contains(V.relatedTarget)){if(H(V))return;s.value=!1}}let G=0;function te(){G=performance.now()}function ve(V){const j=V.relatedTarget;(m.value?.contentEl?.contains(j)||!j&&performance.now()-G<10)&&(s.value=!0)}return ie(s,(V,j)=>{if(!(V||V===j)&&(v.value=-1,Y.value=!1,$.value)){if(e.multiple){ae(ct(e,$.value));return}if(!x.value)return;p.value.some(({title:ne})=>ne===$.value)?R.value="":ae(ct(e,$.value))}}),ie(Y,V=>{if(!e.hideSelected&&V&&p.value.length&&c.value){const j=E.value.findIndex(ne=>p.value.some(re=>(e.valueComparator||Wt)(re.value,ne.value)));na&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{j>=0&&l.value?.scrollToIndex(j)})}V&&(T.value=null)}),ie(k,(V,j)=>{Y.value||s.value&&!j.length&&V.length&&(Y.value=!0)}),Rt(()=>{const V=!!(!e.hideNoData||E.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),j=p.value.length>0,ne=ut.filterProps(e),re={search:$,filteredItems:b.value};return g(ut,ue({ref:n},ne,{modelValue:$.value,"onUpdate:modelValue":pe=>$.value=pe,focused:s.value,"onUpdate:focused":pe=>s.value=pe,validationValue:p.externalValue,counterValue:L.value,dirty:j,class:["v-combobox",{"v-combobox--active-menu":Y.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!x.value,"v-combobox--selecting-index":v.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:F.isReadonly.value,placeholder:j?void 0:e.placeholder,"onClick:clear":De,"onMousedown:control":Ae,onKeydown:_e,onPaste:Ke,onBlur:ve,"aria-expanded":fe.value,"aria-controls":be.value}),{...t,default:({id:pe})=>h(oe,null,[g(yt,ue({id:$e.value,ref:m,modelValue:Y.value,"onUpdate:modelValue":Q=>Y.value=Q,activator:"parent",disabled:J.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:P,onAfterLeave:X},e.menuProps,{contentClass:["v-combobox__content",e.menuProps?.contentClass]}),{default:()=>[g(en,{elevation:e.menuElevation,onFocusin:Ne,onKeydown:Le,onMousedown:te},{default:()=>[t["menu-header"]&&h("header",{ref:je},[t["menu-header"](re)]),V&&g(bt,ue({key:"combobox-list",ref:we,filterable:!0,selected:xe.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:Q=>Q.preventDefault(),selectable:!!E.value.length,onFocusout:N,tabindex:"-1","aria-live":"polite","aria-labelledby":`${pe.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},_,e.listProps),{default:()=>[t["prepend-item"]?.(),!E.value.length&&!e.hideNoData&&(t["no-data"]?.()??g(Me,{key:"no-data",title:o(e.noDataText)},null)),g(nn,{ref:l,renderless:!0,items:E.value,itemKey:"value"},{default:({item:Q,index:Oe,itemRef:st})=>{const Xe=Sa(Q.props),at=ue(Q.props,{ref:st,key:Q.value,active:Te.value&&Q===se.value?!0:void 0,onClick:()=>ae(Q,null),"aria-posinset":Oe+1,"aria-setsize":E.value.length});return Q.type==="divider"?t.divider?.({props:Q.raw,index:Oe})??g(rt,ue(Q.props,{key:`divider-${Oe}`}),null):Q.type==="subheader"?t.subheader?.({props:Q.raw,index:Oe})??g(Ca,ue(Q.props,{key:`subheader-${Oe}`}),null):t.item?.({item:Q.raw,internalItem:Q,index:Oe,props:at})??g(Me,ue(at,{role:"option"}),{prepend:({isSelected:et})=>h(oe,null,[e.multiple&&!e.hideSelected?g(xa,{key:Q.value,modelValue:et,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Fe=>Fe.preventDefault()},null):void 0,Xe.prependAvatar&&g(Va,{image:Xe.prependAvatar},null),Xe.prependIcon&&g(Pe,{icon:Xe.prependIcon},null)]),title:()=>c.value?Q.title:g(ln,{text:Q.title,matches:C(Q)?.title,markClass:"v-combobox__mask",matchAll:!0,ignoreCase:!0},null)})}}),t["append-item"]?.()]}),t["menu-footer"]&&h("footer",{ref:ze},[t["menu-footer"](re)])]})]}),p.value.map((Q,Oe)=>{function st(Fe){Fe.stopPropagation(),Fe.preventDefault(),ae(Q,!1)}const Xe=ue(ft.filterProps(Q.props),{"onClick:close":st,onKeydown(Fe){Fe.key!=="Enter"&&Fe.key!==" "||(Fe.preventDefault(),Fe.stopPropagation(),st(Fe))},onMousedown(Fe){Fe.preventDefault(),Fe.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),at=z.value?!!t.chip:!!t.selection,et=at?Ma(z.value?t.chip({item:Q.raw,internalItem:Q,index:Oe,props:Xe}):t.selection({item:Q.raw,internalItem:Q,index:Oe})):void 0;if(!(at&&!et))return h("div",{key:Q.value,class:Ee(["v-combobox__selection",Oe===v.value&&["v-combobox__selection--selected",y.value]]),style:tt(Oe===v.value?w.value:{})},[z.value?t.chip?g(Ia,{key:"chip-defaults",defaults:{VChip:{closable:ee.value,size:"small",text:Q.title}}},{default:()=>[et]}):g(ft,ue({key:"chip",closable:ee.value,size:"small",text:Q.title,disabled:Q.props.disabled},Xe),null):et??h("span",{class:"v-combobox__selection-text"},[Q.title,e.multiple&&Oe<p.value.length-1&&h("span",{class:"v-combobox__selection-comma"},[le(",")])])])})]),"append-inner":(...pe)=>h(oe,null,[t["append-inner"]?.(...pe),(!e.hideNoData||e.items.length)&&e.menuIcon?g(Pe,{class:"v-combobox__menu-icon",color:n.value?.fieldIconColor,icon:e.menuIcon,onMousedown:he,onClick:$a,"aria-hidden":!0,tabindex:"-1"},null):void 0,e.appendInnerIcon&&g(u,{key:"append-icon",name:"appendInner",color:pe[0].iconColor.value},null)])})}),la({isFocused:s,isPristine:c,menu:Y,search:$,selectionIndex:v,filteredItems:b,select:ae},n)}}),xl=["aria-label","aria-busy"],Vl={class:"agent-interaction-heading"},Ml={class:"agent-interaction-content"},Il={class:"agent-interaction-title"},Tl={key:1},Al={key:0,class:"agent-input-questions"},Rl={class:"agent-question-label"},Pl={class:"agent-question-text"},Fl={key:2,class:"agent-interaction-resolved"},Ul={key:0,class:"agent-interaction-footer"},El={key:0,class:"agent-interaction-actions"},zl=Ce({__name:"AgentInteractionCard",props:{item:{},answers:{default:()=>({})},pinned:{type:Boolean,default:!1},responding:{type:Boolean,default:!1}},emits:["approve","submit","update-answer"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=I(()=>Object.fromEntries(t.item.interaction.questions.map(y=>[y.id,y.options.map(w=>({title:w.label,value:w.id}))]))),c=I(()=>{const y=t.item.interaction.approvalOptions,w=y[0],u=y.find(F=>F.id==="decline"||F.id==="deny"),p=w?[w]:[];return u&&u!==w&&p.push(u),p}),f=I(()=>t.item.interaction.approvalOptions.filter(y=>!c.value.includes(y))),m={accept:"accept",allow:"accept",acceptForSession:"session",decline:"deny",deny:"deny",cancel:"cancel",acceptWithExecpolicyAmendment:"similar"};function l(y,w){const u=m[y];return u?n.t("$vuetify.chatroom.agents.approvalChoices."+u):w}function v(y){return y==="cancel"?"$mdiStopCircleOutline":y==="decline"||y==="deny"?"$mdiCloseOctagonOutline":"$mdiCheckCircleOutline"}const r=I(()=>{const y=t.item.interaction.response;if(!y)return n.t(t.item.status==="completed"?"$vuetify.chatroom.agents.resolvedExternally":"$vuetify.chatroom.agents.statuses."+t.item.status);if(y.type==="approval"){const w=t.item.interaction.approvalOptions.find(u=>u.id===y.decision);return l(y.decision,w?.label??y.decision)}return t.item.interaction.questions.map(w=>w.label+": "+(w.secret?"••••":(y.answers[w.id]??[]).join(", "))).join(`
3
- `)});function k(y){return t.answers[y]??[]}function A(y){return Array.isArray(y)?y.filter(w=>typeof w=="string"):typeof y=="string"&&y?[y]:[]}function D(y,w){o("update-answer",y,A(w))}return(y,w)=>(i(),S("section",{class:Ee(["agent-interaction-card",{"agent-interaction-card--pinned":e.pinned}]),"aria-label":e.item.interaction.title,"aria-busy":e.responding},[h("header",Vl,[g(Pe,{icon:e.item.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),h("span",null,M(d(n).t(e.item.status==="waiting"?e.item.interaction.kind==="approval"?"$vuetify.chatroom.agents.waitingApproval":"$vuetify.chatroom.agents.waitingAnswer":e.item.status==="completed"?"$vuetify.chatroom.agents.interactionResolved":"$vuetify.chatroom.agents.statuses."+e.item.status)),1),e.responding?(i(),q(Tt,{key:0,indeterminate:"",size:"15",width:"2"})):O("",!0)]),h("div",Ml,[h("div",Il,M(e.item.interaction.title),1),e.item.interaction.description?(i(),S("pre",{key:0,class:Ee(["agent-interaction-description",{mono:e.item.interaction.kind==="approval"}])},M(e.item.interaction.description),3)):O("",!0),e.item.status==="waiting"?(i(),S("div",Tl,[e.item.interaction.kind!=="approval"?(i(),S("div",Al,[(i(!0),S(oe,null,Se(e.item.interaction.questions,u=>(i(),S("div",{key:u.id,class:"agent-question"},[h("div",Rl,M(u.label),1),h("div",Pl,M(u.question),1),u.options.length&&u.allowFreeText?(i(),q(Cl,{key:0,"model-value":u.multiSelect?k(u.id):k(u.id)[0]??null,items:s.value[u.id]??[],"aria-label":u.label+": "+u.question,"return-object":!1,multiple:u.multiSelect,chips:u.multiSelect,"closable-chips":u.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):u.options.length?(i(),q(Ge,{key:1,"model-value":u.multiSelect?k(u.id):k(u.id)[0]??null,items:s.value[u.id]??[],"aria-label":u.label+": "+u.question,"return-object":!1,multiple:u.multiSelect,chips:u.multiSelect,"closable-chips":u.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):(i(),q(ut,{key:2,"model-value":k(u.id)[0]??"",type:u.secret?"password":"text","aria-label":u.label+": "+u.question,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","type","aria-label","disabled","onUpdate:modelValue"]))]))),128))])):O("",!0)])):(i(),S("div",Fl,M(r.value),1))]),e.item.status==="waiting"?(i(),S("footer",Ul,[e.item.interaction.kind==="approval"?(i(),S("div",El,[(i(!0),S(oe,null,Se(c.value,u=>(i(),q(ce,{key:u.id,color:u.id==="decline"||u.id==="deny"||u.id==="cancel"?"error":"primary","prepend-icon":v(u.id),variant:"tonal",size:"small",title:u.description??void 0,disabled:e.responding,onClick:p=>o("approve",u.id)},{default:B(()=>[le(M(l(u.id,u.label)),1)]),_:2},1032,["color","prepend-icon","title","disabled","onClick"]))),128)),f.value.length?(i(),q(yt,{key:0,location:"top end",offset:"8"},{activator:B(({props:u})=>[g(ce,ue(u,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",disabled:e.responding,"aria-label":d(n).t("$vuetify.chatroom.agents.moreApprovalOptions"),title:d(n).t("$vuetify.chatroom.agents.moreApprovalOptions")}),null,16,["disabled","aria-label","title"])]),default:B(()=>[g(bt,{density:"compact",class:"agent-approval-more-menu"},{default:B(()=>[(i(!0),S(oe,null,Se(f.value,u=>(i(),q(Me,{key:u.id,title:l(u.id,u.label),subtitle:u.description??"","prepend-icon":v(u.id),disabled:e.responding,onClick:p=>o("approve",u.id)},null,8,["title","subtitle","prepend-icon","disabled","onClick"]))),128))]),_:1})]),_:1})):O("",!0)])):O("",!0),e.item.interaction.kind!=="approval"?(i(),q(ce,{key:1,color:"primary",variant:"tonal",size:"small",loading:e.responding,disabled:e.responding,onClick:w[0]||(w[0]=u=>o("submit"))},{default:B(()=>[le(M(d(n).t("$vuetify.chatroom.agents.submit")),1)]),_:1},8,["loading","disabled"])):O("",!0)])):O("",!0)],10,xl))}}),ma=Ie(zl,[["__scopeId","data-v-45060adf"]]),Dl={path:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"},Ol=["width","height"],Bl=["d"],Ll={key:1,fill:"none",stroke:"currentColor","stroke-width":"1.8"},_l=Ce({__name:"AgentProviderIcon",props:{icon:{default:null},size:{default:16}},setup(e){const a=e,t={openai:Dl.path},o=I(()=>a.icon?t[a.icon]??null:null);return(n,s)=>(i(),S("svg",{class:"agent-provider-icon",width:e.size,height:e.size,viewBox:"0 0 24 24","aria-hidden":"true"},[o.value?(i(),S("path",{key:0,d:o.value,fill:"currentColor"},null,8,Bl)):(i(),S("g",Ll,[...s[0]||(s[0]=[h("circle",{cx:"12",cy:"12",r:"8.5"},null,-1),h("path",{d:"m8.5 16 3.5-8 3.5 8M10 13h4"},null,-1)])]))],8,Ol))}}),pt=Ie(_l,[["__scopeId","data-v-9209bf7a"]]),Nl=["open","data-status"],ql=["title"],jl={class:"agent-activity-title"},Kl={key:0,class:"agent-activity-body"},Wl={key:0,class:"agent-tool-progress",role:"status"},Hl={key:3,class:"agent-inline-error"},Gl={class:"agent-file-change-name"},Jl={class:"mono"},Xl={key:3,class:"agent-plan"},Ql={key:1,class:"agent-plan-steps"},Yl=["data-status"],Zl={class:"agent-plan-step-text"},es={class:"agent-plan-step-status"},ts={key:4,class:"agent-artifact-path mono"},as=Ce({__name:"AgentActivity",props:{item:{}},setup(e){const a=e,t=ke(),o=U(a.item.status==="running"||a.item.status==="failed");ie(()=>a.item.status,f=>{(f==="running"||f==="failed")&&(o.value=!0)});const n=I(()=>{const f=a.item;if(f.type==="tool")return[f.server,f.name].filter(Boolean).join(" / ");const m={file_change:"fileChanges",turn_diff:"turnDiff",plan:"plan",artifact:"artifact"}[f.type];return t.t("$vuetify.chatroom.agents."+m)}),s=I(()=>a.item.type==="tool"?"$mdiTuneVariant":a.item.type==="file_change"||a.item.type==="turn_diff"?"$mdiFileCompare":a.item.type==="plan"?"$mdiTextBoxOutline":"$mdiFileOutline");function c(f,m){const l=f.steps[m];let v=0;for(let r=0;r<m;r++)f.steps[r]?.step===l.step&&v++;return f.id+":"+l.step+":"+v}return(f,m)=>(i(),S("details",{class:"agent-activity",open:o.value,"data-status":e.item.status,onToggle:m[0]||(m[0]=l=>o.value=l.target.open)},[h("summary",{class:"agent-activity-heading",title:n.value},[g(Pe,{icon:s.value,size:"18"},null,8,["icon"]),h("span",jl,M(n.value),1),e.item.status==="running"?(i(),q(Tt,{key:0,indeterminate:"",size:"14",width:"2"})):e.item.status==="failed"?(i(),q(Pe,{key:1,icon:"$mdiAlertCircleOutline",size:"16",color:"error"})):O("",!0),g(Pe,{class:"agent-activity-chevron",icon:"$mdiChevronRight",size:"16"})],8,ql),o.value?(i(),S("div",Kl,[e.item.type==="tool"?(i(),S(oe,{key:0},[e.item.progress?(i(),S("div",Wl,M(e.item.progress),1)):O("",!0),e.item.input!=null?(i(),q(it,{key:1,value:e.item.input,highlight:e.item.status!=="running",filename:"input.json",language:"json",toolbar:!1},null,8,["value","highlight"])):O("",!0),e.item.output!=null?(i(),q(it,{key:2,value:e.item.output,highlight:e.item.status!=="running",filename:"output.json",language:"json",toolbar:!1},null,8,["value","highlight"])):O("",!0),e.item.error?(i(),S("div",Hl,M(e.item.error),1)):O("",!0)],64)):e.item.type==="turn_diff"?(i(),q(it,{key:1,text:e.item.diff,highlight:e.item.status!=="running",filename:"turn.diff",language:"diff",toolbar:!1},null,8,["text","highlight"])):e.item.type==="file_change"?(i(!0),S(oe,{key:2},Se(e.item.changes,l=>(i(),S("div",{key:l.path+":"+l.kind+":"+(l.movePath??""),class:"agent-file-change"},[h("div",Gl,[g(ft,{size:"x-small",variant:"tonal"},{default:B(()=>[le(M(l.kind),1)]),_:2},1024),h("span",Jl,M(l.path),1)]),l.diff?(i(),q(it,{key:0,text:l.diff,filename:l.path,highlight:e.item.status!=="running",language:"diff",toolbar:!1},null,8,["text","filename","highlight"])):O("",!0)]))),128)):e.item.type==="plan"?(i(),S("div",Xl,[e.item.text?(i(),q(Dt,{key:0,text:e.item.text,streaming:e.item.status==="running"},null,8,["text","streaming"])):O("",!0),e.item.steps.length?(i(),S("ol",Ql,[(i(!0),S(oe,null,Se(e.item.steps,(l,v)=>(i(),S("li",{key:c(e.item,v),"data-status":l.status},[h("span",Zl,M(l.step),1),h("span",es,M(d(t).t(`$vuetify.chatroom.agents.planStatuses.${l.status}`)),1)],8,Yl))),128))])):O("",!0)])):e.item.type==="artifact"?(i(),S("div",ts,M(e.item.artifact.path),1)):O("",!0)])):O("",!0)],40,Nl))}}),ns=Ie(as,[["__scopeId","data-v-63e4d047"]]),ls={class:"agent-turn"},ss={key:0,class:"agent-message-row user"},is={class:"agent-message user-message"},os={class:"agent-message-text agent-plain-text"},rs=["data-source"],us={key:0,class:"agent-message-attachments"},ds=["title"],cs=["data-status"],vs={key:0},ms=["data-phase"],fs={key:4,class:"agent-reasoning-summary"},gs={class:"agent-summary-label"},ps={key:5,class:"agent-response-command"},ys={key:7,class:"agent-resolved-interaction"},hs=["data-status"],bs={key:2},ws=["data-level"],ks=Ce({__name:"AgentTurn",props:{entry:{},workspaceRoot:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=ke(),o=I(()=>{const l=[],v=a.entry.items;let r=!1;for(let k=0;k<v.length;k+=1){const A=v[k];if(A.type!=="user_message"&&!r&&(l.push({id:"provider-marker:"+a.entry.turn.id,type:"provider_marker",provider:a.entry.turn.provider,model:a.entry.turn.model}),r=!0),A.type!=="artifact"||A.artifact.kind!=="image"){l.push(A);continue}const D=[A];for(;k+1<v.length;){const y=v[k+1];if(y.type!=="artifact"||y.artifact.kind!=="image")break;D.push(y),k+=1}l.push({id:"image-gallery:"+D[0].id,type:"image_gallery",items:D})}return!r&&v.length===0&&a.entry.turn.status!=="completed"&&l.push({id:"provider-marker:"+a.entry.turn.id,type:"provider_marker",provider:a.entry.turn.provider,model:a.entry.turn.model}),(a.entry.turn.status==="failed"||a.entry.turn.status==="interrupted")&&l.push({id:"turn-status:"+a.entry.turn.id,type:"turn_status",status:a.entry.turn.status,error:m()}),l});function n(l){return a.providerNames[l]??l}function s(l){return a.providerIcons[l]??null}function c(l){return l==="mcp"?"$mdiConnection":"$mdiAccountOutline"}function f(l){return t.t(l==="mcp"?"$vuetify.chatroom.agents.sources.mcp":"$vuetify.chatroom.agents.sources.human")}function m(){const l=a.entry.turn.error;return l?[l.message,l.details,l.providerData?JSON.stringify(l.providerData,null,2):null].filter(Boolean).join(`
4
- `):null}return(l,v)=>(i(),S("div",ls,[(i(!0),S(oe,null,Se(o.value,r=>(i(),S(oe,{key:r.id},[r.type==="user_message"?(i(),S("div",ss,[h("div",is,[h("div",os,M(r.text),1),h("div",{class:"agent-message-source","data-source":r.source??e.entry.turn.source},[g(Pe,{icon:c(r.source??e.entry.turn.source),size:"13"},null,8,["icon"]),h("span",null,M(f(r.source??e.entry.turn.source)),1)],8,rs),r.attachments.length?(i(),S("div",us,[(i(!0),S(oe,null,Se(r.attachments,k=>(i(),q(ft,{key:k.path,size:"x-small",variant:"tonal","prepend-icon":"$mdiFileOutline"},{default:B(()=>[le(M(k.name),1)]),_:2},1024))),128))])):O("",!0)])])):r.type==="provider_marker"?(i(),S("div",{key:1,class:"agent-turn-provider",title:r.model?n(r.provider)+" · "+r.model:n(r.provider)},[g(pt,{icon:s(r.provider),size:13},null,8,["icon"]),h("span",null,M(n(r.provider)),1)],8,ds)):r.type==="turn_status"?(i(),S("div",{key:2,class:"agent-turn-status","data-status":r.status},[h("span",null,M(d(t).t(`$vuetify.chatroom.agents.statuses.${r.status}`)),1),r.error?(i(),S("span",vs," · "+M(r.error),1)):O("",!0)],8,cs)):r.type==="assistant_message"?(i(),S("div",{key:3,class:"agent-response-text","data-phase":r.phase},[g(Dt,{class:"agent-message-markdown",text:r.text,streaming:r.status==="running"},null,8,["text","streaming"]),r.status==="running"?(i(),q(Fa,{key:0,indeterminate:"",height:"2",class:"agent-item-progress"})):O("",!0)],8,ms)):r.type==="reasoning_summary"?(i(),S("div",fs,[h("div",gs,M(d(t).t("$vuetify.chatroom.agents.reasoningSummary")),1),g(Dt,{text:r.text,streaming:r.status==="running"},null,8,["text","streaming"])])):r.type==="command"?(i(),S("div",ps,[g($l,{command:r.command,cwd:r.cwd,output:r.output,"exit-code":r.exitCode,status:r.status},null,8,["command","cwd","output","exit-code","status"])])):r.type==="image_gallery"?(i(),q(sl,{key:6,items:r.items,"workspace-root":e.workspaceRoot},null,8,["items","workspace-root"])):r.type==="interaction"&&r.status!=="waiting"?(i(),S("details",ys,[h("summary",null,[g(Pe,{icon:r.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),le(" "+M(r.interaction.title),1)]),g(ma,{item:r},null,8,["item"])])):r.type==="tool"||r.type==="file_change"||r.type==="turn_diff"||r.type==="plan"||r.type==="artifact"?(i(),q(ns,{key:8,item:r},null,8,["item"])):r.type==="context_compaction"?(i(),S("div",{key:9,class:"agent-compaction","data-status":r.status,role:"status","aria-live":"polite"},[r.status==="running"?(i(),q(Tt,{key:0,indeterminate:"",size:"14",width:"2"})):(i(),q(Pe,{key:1,icon:r.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"16"},null,8,["icon"])),h("span",null,M(d(t).t("$vuetify.chatroom.agents.compaction."+(r.status==="running"?"running":r.status==="completed"?"completed":"failed"))),1),r.error?(i(),S("span",bs,M(r.error),1)):O("",!0)],8,hs)):r.type==="notice"?(i(),S("div",{key:10,class:"agent-notice","data-level":r.level},M(r.text),9,ws)):O("",!0)],64))),128))]))}}),$s=Ie(ks,[["__scopeId","data-v-d9c9ba96"]]),Ss={class:"agent-conversation-shell"},Cs={key:1,class:"empty-panel"},vt=100,xs=Ce({__name:"AgentConversation",props:{history:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=ke(),o=U(vt),n=dt("conversation"),s=dt("conversationContent"),{autoFollow:c,onConversationScroll:f,scrollToBottom:m}=Nn(n,s),l=I(()=>{const k=a.history?.turns??[];return k.slice(Math.max(0,k.length-o.value))}),v=I(()=>Math.max(0,(a.history?.turns.length??0)-l.value.length));ie(()=>a.history?.session.id??null,()=>{o.value=vt,m()},{flush:"post"}),ie(()=>a.history?.turns.length??0,(k,A)=>{A>0&&k>A&&o.value>vt&&(o.value+=k-A)});async function r(){const k=n.value,A=k?.scrollHeight??0,D=k?.scrollTop??0;o.value+=vt,await He(),k&&(k.scrollTop=D+(k.scrollHeight-A))}return(k,A)=>(i(),S("div",Ss,[h("div",{ref_key:"conversation",ref:n,class:"agent-conversation",onScrollPassive:A[0]||(A[0]=(...D)=>d(f)&&d(f)(...D))},[h("div",{ref_key:"conversationContent",ref:s,class:"agent-conversation-content"},[v.value?(i(),q(ce,{key:0,class:"agent-show-older-turns",size:"small",variant:"text",onClick:r},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.showOlderTurns",String(Math.min(vt,v.value)))),1)]),_:1})):O("",!0),e.history?.turns.length?O("",!0):(i(),S("div",Cs,M(d(t).t("$vuetify.chatroom.agents.noHistory")),1)),(i(!0),S(oe,null,Se(l.value,D=>(i(),q($s,{key:D.turn.id,entry:D,"workspace-root":e.history?.session.workspaceRoot??"","provider-names":e.providerNames,"provider-icons":e.providerIcons},null,8,["entry","workspace-root","provider-names","provider-icons"]))),128))],512)],544),d(c)?O("",!0):(i(),q(ce,{key:0,class:"agent-back-to-latest",icon:"$mdiArrowDown",size:"small",variant:"tonal",title:d(t).t("$vuetify.chatroom.agents.backToLatest"),"aria-label":d(t).t("$vuetify.chatroom.agents.backToLatest"),onClick:d(m)},null,8,["title","aria-label","onClick"]))]))}}),Vs=Ie(xs,[["__scopeId","data-v-f2a2b510"]]),Ms={key:3,class:"agent-native-granular"},Is={class:"agent-setting-heading"},Ts=Ce({__name:"AgentSessionConfigFields",props:Ze({model:{},approvalSetting:{},reviewerSetting:{},permissionSetting:{},disabled:{type:Boolean,default:!1},outlined:{type:Boolean,default:!1}},{reasoningSummary:{required:!0},reasoningSummaryModifiers:{},serviceTier:{required:!0},serviceTierModifiers:{},approvalMode:{required:!0},approvalModeModifiers:{},granular:{required:!0},granularModifiers:{},reviewer:{required:!0},reviewerModifiers:{},permissionMode:{required:!0},permissionModeModifiers:{}}),emits:["update:reasoningSummary","update:serviceTier","update:approvalMode","update:granular","update:reviewer","update:permissionMode"],setup(e){const a=e,t=ye(e,"reasoningSummary"),o=ye(e,"serviceTier"),n=ye(e,"approvalMode"),s=ye(e,"granular"),c=ye(e,"reviewer"),f=ye(e,"permissionMode"),m=ke(),l=U(null),v=I(()=>a.outlined?{variant:"outlined"}:{}),r=I(()=>[{title:F(a.model?.defaultReasoningSummary?p(a.model.defaultReasoningSummary):null),value:null,subtitle:""},...(a.model?.reasoningSummaries??[]).map(x=>({title:p(x),value:x,subtitle:""}))]),k=I(()=>{const x=a.model?.serviceTiers??[];return[{title:F(x.find(R=>R.id===a.model?.defaultServiceTier)?.name??a.model?.defaultServiceTier),value:null,subtitle:""},...x.map(R=>({title:R.name,value:R.id,subtitle:R.description}))]});function A(x){return(x?.options??[]).map(R=>({title:`${y(R.id,"title")} (${R.id})`,value:R.id,subtitle:y(R.id,"description",R.description??"")}))}const D={untrusted:"untrusted","on-request":"onRequest",granular:"granular",never:"never",user:"user",auto_review:"autoReview",guardian_subagent:"autoReview","read-only":"readOnly","workspace-write":"workspaceWrite","danger-full-access":"fullAccessCodex"};function y(x,R,T=x){const $=D[x];return $?m.t(`$vuetify.chatroom.agents.nativeOptions.${$}.${R}`):T}function w(x){if(x!==f.value){if(x==="danger-full-access"){l.value=x;return}f.value=x}}function u(){const x=l.value;l.value=null,x&&(x==="danger-full-access"&&(n.value="never"),f.value=x)}function p(x){return m.t(`$vuetify.chatroom.agents.summaries.${x}`)}function F(x){return qt(m.t("$vuetify.chatroom.agents.defaultModel"),x)}function ee(x){return x in s.value?s.value[x]:!1}function z(x,R){x in s.value&&(s.value={...s.value,[x]:R})}return(x,R)=>(i(),S(oe,null,[e.model?.reasoningSummaries?.length?(i(),q(Ge,ue({key:0,modelValue:t.value,"onUpdate:modelValue":R[0]||(R[0]=T=>t.value=T),items:r.value,label:d(m).t("$vuetify.chatroom.agents.reasoningSummary"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.model?.serviceTiers?.length?(i(),q(Ge,ue({key:1,modelValue:o.value,"onUpdate:modelValue":R[1]||(R[1]=T=>o.value=T),items:k.value,label:d(m).t("$vuetify.chatroom.agents.serviceTier"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting?(i(),q(Ge,ue({key:2,modelValue:n.value,"onUpdate:modelValue":R[2]||(R[2]=T=>n.value=T),items:A(e.approvalSetting),label:d(m).t("$vuetify.chatroom.agents.approvalPolicy"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting&&n.value==="granular"?(i(),S("div",Ms,[h("div",Is,M(d(m).t("$vuetify.chatroom.agents.granularApprovals")),1),(i(!0),S(oe,null,Se(e.approvalSetting.granularFields,T=>(i(),q(cn,{key:T.id,"model-value":ee(T.id),label:T.id,title:T.description??void 0,density:"compact",color:"primary","hide-details":"",disabled:e.disabled,"onUpdate:modelValue":$=>z(T.id,!!$)},null,8,["model-value","label","title","disabled","onUpdate:modelValue"]))),128))])):O("",!0),e.reviewerSetting?(i(),q(Ge,ue({key:4,modelValue:c.value,"onUpdate:modelValue":R[3]||(R[3]=T=>c.value=T),items:A(e.reviewerSetting),label:d(m).t("$vuetify.chatroom.agents.approvalsReviewer"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.permissionSetting?(i(),q(Ge,ue({key:5,"model-value":f.value,items:A(e.permissionSetting),label:d(m).t("$vuetify.chatroom.agents.permissionMode"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled,"onUpdate:modelValue":w}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["model-value","items","label","disabled"])):O("",!0),g(ht,{"model-value":l.value!==null,"max-width":"90vw","onUpdate:modelValue":R[5]||(R[5]=T=>{T||(l.value=null)})},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Mt,null,{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.agents.fullAccessConfirm")),1)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",onClick:R[4]||(R[4]=T=>l.value=null)},{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),g(ce,{color:"primary",variant:"tonal",onClick:u},{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.common.confirm")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["model-value"])],64))}}),fa=Ie(Ts,[["__scopeId","data-v-e9075aa2"]]),jt=Symbol.for("vuetify:v-slider");function As(e,a,t){const o=t==="vertical",n=a.getBoundingClientRect(),s="touches"in e?e.touches[0]:e;return o?s.clientY-(n.top+n.height/2):s.clientX-(n.left+n.width/2)}function Rs(e,a){return"touches"in e&&e.touches.length?e.touches[0][a]:"changedTouches"in e&&e.changedTouches.length?e.changedTouches[0][a]:e[a]}const Ps=wt({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:e=>typeof e=="boolean"||e==="always"||e==="hover"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:e=>typeof e=="boolean"||e==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:e=>["vertical","horizontal"].includes(e)},reverse:Boolean,noKeyboard:Boolean,...za(),...Ea({elevation:1}),ripple:{type:Boolean,default:!0}},"Slider"),Fs=e=>{const a=I(()=>parseFloat(e.min)),t=I(()=>parseFloat(e.max)),o=I(()=>Number(e.step)>0?parseFloat(e.step):0),n=I(()=>Math.max(Gt(o.value),Gt(a.value)));function s(c){if(c=parseFloat(c),o.value<=0)return c;const f=Et(c,a.value,t.value),m=a.value%o.value;let l=Math.round((f-m)/o.value)*o.value+m;return f>l&&l+o.value>t.value&&(l=t.value),parseFloat(Math.min(l,t.value).toFixed(n.value))}return{min:a,max:t,step:o,decimals:n,roundValue:s}},Us=({props:e,steps:a,onSliderStart:t,onSliderMove:o,onSliderEnd:n,getActiveThumb:s})=>{const c=aa(e),{isRtl:f}=Bt(),m=Je(()=>e.reverse),l=I(()=>e.direction==="vertical"),v=I(()=>l.value!==m.value),{min:r,max:k,step:A,decimals:D,roundValue:y}=a,w=I(()=>parseInt(e.thumbSize,10)),u=I(()=>parseInt(e.tickSize,10)),p=I(()=>parseInt(e.trackSize,10)),F=I(()=>(k.value-r.value)/A.value),ee=I(()=>e.error||c.isDisabled.value?void 0:e.thumbColor??e.color),z=I(()=>e.error||c.isDisabled.value?void 0:e.thumbColor),x=I(()=>e.error||c.isDisabled.value?void 0:e.trackColor??e.color),R=I(()=>e.error||c.isDisabled.value?void 0:e.trackFillColor??e.color),T=U(!1),$=U(0),L=Re(),b=Re();function C(_){const H=L.value?.$el;if(!H)return;const Ve=e.direction==="vertical",De=Ve?"top":"left",Ae=Ve?"height":"width",he=Ve?"clientY":"clientX",{[De]:Le,[Ae]:_e}=H.getBoundingClientRect(),Ke=Rs(_,he);let P=Et((Ke-Le-$.value)/_e)||0;return(Ve?v.value:v.value!==f.value)&&(P=1-P),y(r.value+P*(k.value-r.value))}const E=_=>{const H=C(_);H!=null&&n({value:H}),T.value=!1,$.value=0},J=_=>{const H=C(_);b.value=s(_),b.value&&(T.value=!0,b.value.contains(_.target)?$.value=As(_,b.value,e.direction):($.value=0,H!=null&&o({value:H})),H!=null&&t({value:H}),He(()=>b.value?.focus()))},de={passive:!0,capture:!0};function Y(_){const H=C(_);H!=null&&o({value:H})}function $e(_){_.stopPropagation(),_.preventDefault(),E(_),window.removeEventListener("mousemove",Y,de),window.removeEventListener("mouseup",$e)}function fe(_){E(_),window.removeEventListener("touchmove",Y,de),_.target?.removeEventListener("touchend",fe)}function be(_){J(_),window.addEventListener("touchmove",Y,de),_.target?.addEventListener("touchend",fe,{passive:!1})}function xe(_){_.button===0&&(_.preventDefault(),J(_),window.addEventListener("mousemove",Y,de),window.addEventListener("mouseup",$e,{passive:!1}))}xt(()=>{na&&(window.removeEventListener("touchmove",Y),window.removeEventListener("mousemove",Y),window.removeEventListener("mouseup",$e))});const se=_=>{const H=(_-r.value)/(k.value-r.value)*100;return Et(isNaN(H)?0:H,0,100)},Te=Je(()=>e.showTicks),we=I(()=>Te.value?e.ticks?Array.isArray(e.ticks)?e.ticks.map(_=>({value:_,position:se(_),label:_.toString()})):Object.keys(e.ticks).map(_=>({value:parseFloat(_),position:se(parseFloat(_)),label:e.ticks[_]})):F.value!==1/0?Ua(F.value+1).map(_=>{const H=r.value+_*A.value;return{value:H,position:se(H)}}):[]:[]),je=I(()=>we.value.some(({label:_})=>!!_)),ze={activeThumbRef:b,color:Je(()=>e.color),decimals:D,disabled:c.isDisabled,direction:Je(()=>e.direction),elevation:Je(()=>e.elevation),hasLabels:je,isReversed:m,indexFromEnd:v,min:r,max:k,mousePressed:T,noKeyboard:Je(()=>e.noKeyboard),numTicks:F,onSliderMousedown:xe,onSliderTouchstart:be,parsedTicks:we,parseMouseMove:C,position:se,readonly:c.isReadonly,rounded:Je(()=>e.rounded),roundValue:y,showTicks:Te,startOffset:$,step:A,thumbSize:w,thumbColor:ee,thumbLabelColor:z,thumbLabel:Je(()=>e.thumbLabel),ticks:Je(()=>e.ticks),tickSize:u,trackColor:x,trackContainerRef:L,trackFillColor:R,trackSize:p,vertical:l};return Da(jt,ze),ze},Es=wt({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,noKeyboard:Boolean,...ia()},"VSliderThumb"),zs=At()({name:"VSliderThumb",directives:{vRipple:Jt},props:Es(),emits:{"update:modelValue":e=>!0},setup(e,{slots:a,emit:t}){const o=sa(jt),{isRtl:n,rtlClasses:s}=Bt();if(!o)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{min:c,max:f,thumbColor:m,thumbLabelColor:l,step:v,disabled:r,thumbSize:k,thumbLabel:A,direction:D,isReversed:y,vertical:w,readonly:u,elevation:p,mousePressed:F,decimals:ee,indexFromEnd:z}=o,x=U(!1),R=U(!1),T=I(()=>r.value?void 0:p.value),{elevationClasses:$}=_a(T),{textColorClasses:L,textColorStyles:b}=ta(m),{backgroundColorClasses:C,backgroundColorStyles:E}=zt(l),{pageup:J,pagedown:de,end:Y,home:$e,left:fe,right:be,down:xe,up:se}=Oa,Te=[J,de,Y,$e,fe,be,xe,se],we=I(()=>v.value?[1,2,3]:[1,5,10]);function je(_,H){if(e.noKeyboard||r.value||!Te.includes(_.key))return;_.preventDefault();const Ve=v.value||.1,De=(f.value-c.value)/Ve;if([fe,be,xe,se].includes(_.key)){const he=(w.value?[n.value?fe:be,y.value?xe:se]:z.value!==n.value?[fe,se]:[be,se]).includes(_.key)?1:-1,Le=_.shiftKey?2:_.ctrlKey?1:0;he===-1&&H===f.value&&!Le&&!Number.isInteger(De)?H=H-De%1*Ve:H=H+he*Ve*we.value[Le]}else if(_.key===$e)H=c.value;else if(_.key===Y)H=f.value;else{const Ae=_.key===de?1:-1;H=H-Ae*Ve*(De>100?De/10:10)}return Math.max(e.min,Math.min(e.max,H))}function ze(_){const H=je(_,e.modelValue);H!=null&&(R.value=!1,t("update:modelValue",H))}return ie(()=>e.focused,_=>{_&&(R.value=!1)}),Rt(()=>{const _=nt(z.value?100-e.position:e.position,"%"),H=A.value==="always"||A.value===!0&&e.focused||A.value==="hover"&&(x.value||e.focused&&!R.value);return h("div",{class:Ee(["v-slider-thumb",{"v-slider-thumb--focused":e.focused,"v-slider-thumb--pressed":e.focused&&F.value},e.class,s.value]),style:tt([{"--v-slider-thumb-position":_,"--v-slider-thumb-size":nt(k.value)},e.style]),role:"slider",tabindex:r.value?-1:0,"aria-label":e.name,"aria-valuemin":c.value,"aria-valuemax":f.value,"aria-valuenow":e.modelValue,"aria-readonly":!!u.value,"aria-orientation":D.value,onKeydown:u.value?void 0:ze,onMouseenter:()=>{x.value=!0},onMouseleave:()=>{x.value=!1,R.value=!0}},[h("div",{class:Ee(["v-slider-thumb__surface",L.value,$.value]),style:tt(b.value)},null),Xt(h("div",{class:Ee(["v-slider-thumb__ripple",L.value]),style:tt(b.value)},null),[[Jt,e.ripple,null,{circle:!0,center:!0}]]),g(La,{origin:"bottom center"},{default:()=>[Xt(h("div",{class:"v-slider-thumb__label-container"},[h("div",{class:Ee(["v-slider-thumb__label",C.value]),style:tt(E.value)},[h("div",null,[a["thumb-label"]?.({modelValue:e.modelValue})??e.modelValue.toFixed(v.value?ee.value:1)]),h("div",{class:"v-slider-thumb__label-wedge"},null)])]),[[Ba,H]])]})])}),{}}}),Ds=wt({start:{type:Number,required:!0},stop:{type:Number,required:!0},...ia()},"VSliderTrack"),Os=At()({name:"VSliderTrack",props:Ds(),emits:{},setup(e,{slots:a}){const t=sa(jt);if(!t)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:o,parsedTicks:n,rounded:s,showTicks:c,tickSize:f,trackColor:m,trackFillColor:l,trackSize:v,vertical:r,min:k,max:A,indexFromEnd:D}=t,{roundedClasses:y,roundedStyles:w}=Na(s),{backgroundColorClasses:u,backgroundColorStyles:p}=zt(l),{backgroundColorClasses:F,backgroundColorStyles:ee}=zt(m),z=I(()=>`inset-${r.value?"block":"inline"}-${D.value?"end":"start"}`),x=I(()=>r.value?"height":"width"),R=I(()=>({[z.value]:"0%",[x.value]:"100%"})),T=I(()=>e.stop-e.start),$=I(()=>({[z.value]:nt(e.start,"%"),[x.value]:nt(T.value,"%")})),L=I(()=>c.value?(r.value?n.value.slice().reverse():n.value).map((C,E)=>{const J=C.value!==k.value&&C.value!==A.value?nt(C.position,"%"):void 0;return h("div",{key:C.value,class:Ee(["v-slider-track__tick",{"v-slider-track__tick--filled":C.position>=e.start&&C.position<=e.stop,"v-slider-track__tick--first":C.value===k.value,"v-slider-track__tick--last":C.value===A.value}]),style:{[z.value]:J}},[(C.label||a["tick-label"])&&h("div",{class:"v-slider-track__tick-label"},[a["tick-label"]?.({tick:C,index:E})??C.label])])}):[]);return Rt(()=>h("div",{class:Ee(["v-slider-track",y.value,e.class]),style:tt([{"--v-slider-track-size":nt(v.value),"--v-slider-tick-size":nt(f.value)},w.value,e.style])},[h("div",{class:Ee(["v-slider-track__background",F.value,{"v-slider-track__background--opacity":!!o.value||!l.value}]),style:{...R.value,...ee.value}},null),h("div",{class:Ee(["v-slider-track__fill",u.value]),style:{...$.value,...p.value}},null),c.value&&h("div",{class:Ee(["v-slider-track__ticks",{"v-slider-track__ticks--always-show":c.value==="always"}])},[L.value])])),{}}}),Bs=wt({...Ka(),...Ps(),...ja(),modelValue:{type:[Number,String],default:0}},"VSlider"),Ls=At()({name:"VSlider",inheritAttrs:!1,props:Bs(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,start:e=>!0,end:e=>!0},setup(e,{slots:a,emit:t,attrs:o}){const n=Re(),s=Re(),{rtlClasses:c}=Bt(),f=Fs(e),m=Ut(e,"modelValue",void 0,$=>f.roundValue($??f.min.value)),{min:l,max:v,mousePressed:r,roundValue:k,onSliderMousedown:A,onSliderTouchstart:D,trackContainerRef:y,position:w,hasLabels:u,disabled:p,readonly:F,noKeyboard:ee}=Us({props:e,steps:f,onSliderStart:()=>{!p.value&&!F.value&&t("start",m.value)},onSliderEnd:({value:$})=>{const L=k($);!p.value&&!F.value&&(m.value=L),t("end",L)},onSliderMove:({value:$})=>{!p.value&&!F.value&&(m.value=k($))},getActiveThumb:()=>n.value?.$el}),{isFocused:z,focus:x,blur:R}=qa(e),T=I(()=>w(m.value));return Rt(()=>{const $=Qt.filterProps(e),[L,b]=Wa(o),C=!!(e.label||a.label||a.prepend);return g(Qt,ue({ref:s,class:["v-slider",{"v-slider--has-labels":!!a["tick-label"]||u.value,"v-slider--focused":z.value,"v-slider--pressed":r.value,"v-slider--disabled":p.value},c.value,e.class],style:e.style},$,L,{focused:z.value}),{...a,prepend:C?E=>h(oe,null,[a.label?.(E)??(e.label?g(Ha,{id:E.id.value,class:"v-slider__label",text:e.label},null):void 0),a.prepend?.(E)]):void 0,default:({id:E,messagesId:J})=>h("div",{class:"v-slider__container",onMousedown:F.value?void 0:A,onTouchstartPassive:F.value?void 0:D},[h("input",{id:E.value,name:e.name||E.value,disabled:p.value,readonly:F.value,tabindex:"-1",value:m.value},null),g(Os,{ref:y,start:0,stop:T.value},{"tick-label":a["tick-label"]}),g(zs,ue({ref:n,"aria-describedby":J.value,focused:z.value,noKeyboard:ee.value,min:l.value,max:v.value,modelValue:m.value,"onUpdate:modelValue":de=>m.value=de,position:T.value,elevation:e.elevation,onFocus:x,onBlur:R,ripple:e.ripple,name:e.name},b),{"thumb-label":a["thumb-label"]})])})}),la({focus:()=>n.value?.$el.focus()},s)}}),_s={key:0,class:"agent-reasoning-slider"},Ns={class:"agent-setting-heading"},qs={key:0,class:"agent-setting-description"},js=Ce({__name:"AgentModelSettingsDialog",props:Ze({models:{},approvalSetting:{},reviewerSetting:{},permissionSetting:{},busy:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{},modelId:{required:!0},modelIdModifiers:{},reasoningEffort:{required:!0},reasoningEffortModifiers:{},reasoningSummary:{required:!0},reasoningSummaryModifiers:{},serviceTier:{required:!0},serviceTierModifiers:{},approvalMode:{required:!0},approvalModeModifiers:{},granular:{required:!0},granularModifiers:{},reviewer:{required:!0},reviewerModifiers:{},permissionMode:{required:!0},permissionModeModifiers:{}}),emits:Ze(["save"],["update:modelValue","update:modelId","update:reasoningEffort","update:reasoningSummary","update:serviceTier","update:approvalMode","update:granular","update:reviewer","update:permissionMode"]),setup(e,{emit:a}){const t=e,o=a,n=ye(e,"modelValue"),s=ye(e,"modelId"),c=ye(e,"reasoningEffort"),f=ye(e,"reasoningSummary"),m=ye(e,"serviceTier"),l=ye(e,"approvalMode"),v=ye(e,"granular"),r=ye(e,"reviewer"),k=ye(e,"permissionMode"),A=ke(),D=dt("modelSelectHost");let y=null;const w=U(null),u=I(()=>s.value?t.models.find(L=>L.id===s.value)??null:t.models.find(L=>L.isDefault)??t.models[0]??null),p=I(()=>[{title:A.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...t.models.map(L=>({title:L.displayName,value:L.id,subtitle:L.description}))]),F=I(()=>{const L=w.value;return{contentClass:"agent-model-select-menu",...L===null?{}:{width:L,minWidth:L,maxWidth:L}}}),ee=I(()=>{const L=u.value?.reasoningEfforts.find(b=>b.id===u.value?.defaultReasoningEffort);return[{title:R(u.value?.defaultReasoningEffort),value:null,subtitle:L?.description??""},...(u.value?.reasoningEfforts??[]).map(b=>({title:b.id,value:b.id,subtitle:b.description}))]}),z=I({get(){const L=ee.value.findIndex(b=>b.value===c.value);return L<0?0:L},set(L){c.value=ee.value[Math.round(L)]?.value??null}}),x=I(()=>ee.value[z.value]??null);ie(u,L=>{L?.reasoningEfforts?.some(b=>b.id===c.value)||(c.value=null),L?.reasoningSummaries?.includes(f.value??"none")||(f.value=null),L?.serviceTiers?.some(b=>b.id===m.value)||(m.value=null)}),ie(n,async L=>{if(!L){$(),w.value=null;return}await He(),T()}),Vt($);function R(L){return qt(A.t("$vuetify.chatroom.agents.defaultModel"),L)}function T(){$();const L=D.value;if(!L){w.value=null;return}const b=()=>{const C=L.clientWidth;w.value=C>0?C:null};b(),y=new ResizeObserver(b),y.observe(L)}function $(){y?.disconnect(),y=null}return(L,b)=>(i(),q(ht,{modelValue:n.value,"onUpdate:modelValue":b[10]||(b[10]=C=>n.value=C),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.agents.modelSettings")),1)]),_:1}),g(Mt,{class:"agent-model-settings-dialog"},{default:B(()=>[h("div",{ref_key:"modelSelectHost",ref:D,class:"agent-model-select-host"},[g(Ge,{modelValue:s.value,"onUpdate:modelValue":b[0]||(b[0]=C=>s.value=C),items:p.value,"menu-props":F.value,label:d(A).t("$vuetify.chatroom.agents.model"),density:"compact",variant:"outlined","hide-details":"",disabled:e.busy},{item:B(({props:C,item:E})=>[g(Me,ue(C,{subtitle:E.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","menu-props","label","disabled"])],512),u.value?.reasoningEfforts?.length?(i(),S("div",_s,[h("div",Ns,[h("span",null,M(d(A).t("$vuetify.chatroom.agents.reasoningEffort")),1),h("strong",null,M(x.value?.title),1)]),g(Ls,{modelValue:z.value,"onUpdate:modelValue":b[1]||(b[1]=C=>z.value=C),min:0,max:Math.max(0,ee.value.length-1),step:1,color:"primary","show-ticks":"always","aria-label":d(A).t("$vuetify.chatroom.agents.reasoningEffort"),"hide-details":"",disabled:e.busy},null,8,["modelValue","max","aria-label","disabled"]),x.value?.subtitle?(i(),S("div",qs,M(x.value.subtitle),1)):O("",!0)])):O("",!0),g(fa,{"reasoning-summary":f.value,"onUpdate:reasoningSummary":b[2]||(b[2]=C=>f.value=C),"service-tier":m.value,"onUpdate:serviceTier":b[3]||(b[3]=C=>m.value=C),"approval-mode":l.value,"onUpdate:approvalMode":b[4]||(b[4]=C=>l.value=C),granular:v.value,"onUpdate:granular":b[5]||(b[5]=C=>v.value=C),reviewer:r.value,"onUpdate:reviewer":b[6]||(b[6]=C=>r.value=C),"permission-mode":k.value,"onUpdate:permissionMode":b[7]||(b[7]=C=>k.value=C),model:u.value,"approval-setting":e.approvalSetting,"reviewer-setting":e.reviewerSetting,"permission-setting":e.permissionSetting,disabled:e.busy,outlined:""},null,8,["reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","model","approval-setting","reviewer-setting","permission-setting","disabled"])]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:b[8]||(b[8]=C=>n.value=!1)},{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"primary",variant:"tonal",loading:e.busy,onClick:b[9]||(b[9]=C=>o("save"))},{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.common.save")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),Ks=Ie(js,[["__scopeId","data-v-33309823"]]),Ws={key:2,class:"agent-review-error",role:"alert"},Hs=Ce({__name:"AgentReviewDialog",props:Ze({types:{},fieldLabel:{},busy:{type:Boolean},error:{},canStart:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{},reviewType:{required:!0},reviewTypeModifiers:{},reviewValue:{required:!0},reviewValueModifiers:{},reviewTitle:{required:!0},reviewTitleModifiers:{}}),emits:Ze(["start"],["update:modelValue","update:reviewType","update:reviewValue","update:reviewTitle"]),setup(e){const a=ye(e,"modelValue"),t=ye(e,"reviewType"),o=ye(e,"reviewValue"),n=ye(e,"reviewTitle"),s=ke();return(c,f)=>(i(),q(ht,{modelValue:a.value,"onUpdate:modelValue":f[6]||(f[6]=m=>a.value=m),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.agents.review")),1)]),_:1}),g(Mt,{class:"agent-review-fields"},{default:B(()=>[g(Ge,{modelValue:t.value,"onUpdate:modelValue":f[0]||(f[0]=m=>t.value=m),items:e.types,label:d(s).t("$vuetify.chatroom.agents.reviewTarget"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","items","label","disabled"]),t.value!=="uncommittedChanges"?(i(),q(ut,{key:0,modelValue:o.value,"onUpdate:modelValue":f[1]||(f[1]=m=>o.value=m),label:e.fieldLabel,disabled:e.busy,density:"compact","hide-details":"",onKeydown:f[2]||(f[2]=ot(lt(m=>c.$emit("start"),["prevent"]),["enter"]))},null,8,["modelValue","label","disabled"])):O("",!0),t.value==="commit"?(i(),q(ut,{key:1,modelValue:n.value,"onUpdate:modelValue":f[3]||(f[3]=m=>n.value=m),label:d(s).t("$vuetify.chatroom.agents.reviewCommitTitle"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","label","disabled"])):O("",!0),e.error?(i(),S("div",Ws,M(e.error),1)):O("",!0)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:f[4]||(f[4]=m=>a.value=!1)},{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"primary",variant:"tonal",loading:e.busy,disabled:!e.canStart,onClick:f[5]||(f[5]=m=>c.$emit("start"))},{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.agents.startReview")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),Gs=Ie(Hs,[["__scopeId","data-v-c141bca2"]]),Js={class:"panel-header agent-session-header"},Xs={class:"agent-session-header-info min-w-0"},Qs={class:"panel-title agent-session-provider-title"},Ys={class:"agent-session-model-label"},Zs={class:"panel-subtitle text-truncate"},ei={key:0,class:"agent-session-token-usage"},ti=["data-status"],ai=["data-status","data-attention"],ni={class:"agent-session-header-status-text"},li={class:"agent-session-switch-provider-icon"},si=Ce({__name:"AgentSessionHeader",props:{session:{},providerName:{},providerIcon:{},modelName:{},statusText:{},usage:{},compact:{type:Boolean},switchTargets:{},switching:{type:Boolean},disabled:{type:Boolean}},emits:["back","switchProvider"],setup(e){const a=ke();return(t,o)=>(i(),S("div",Js,[e.compact?(i(),q(ce,{key:0,icon:"$mdiArrowLeft",size:"small","aria-label":d(a).t("$vuetify.chatroom.agents.backToSessions"),variant:"text",onClick:o[0]||(o[0]=n=>t.$emit("back"))},null,8,["aria-label"])):O("",!0),h("div",Xs,[h("div",Qs,[g(pt,{icon:e.providerIcon,size:16},null,8,["icon"]),h("span",null,M(e.providerName),1),h("span",Ys,"· "+M(e.modelName),1)]),h("div",Zs,M(e.session.workspaceRoot),1),e.usage?(i(),S("div",ei,M(e.usage),1)):O("",!0)]),h("div",{class:"agent-session-header-status","data-status":e.session.status},[h("span",{class:"agent-session-status-dot","data-status":e.session.status,"data-attention":e.session.attention?.kind??void 0},null,8,ai),h("span",ni,M(e.statusText),1)],8,ti),e.switchTargets.length?(i(),q(yt,{key:1,location:"bottom end",offset:"6","content-class":"agent-overlay-menu"},{activator:B(({props:n})=>[g(ce,ue(n,{class:"agent-session-header-switch",size:"small",variant:"text","prepend-icon":"$mdiSwapHorizontal","append-icon":"$mdiChevronDown",loading:e.switching,disabled:e.disabled,"aria-label":d(a).t("$vuetify.chatroom.agents.switchAgent")}),{default:B(()=>[le(M(d(a).t("$vuetify.chatroom.agents.switchAgent")),1)]),_:1},16,["loading","disabled","aria-label"])]),default:B(()=>[g(bt,{class:"agent-session-switch-menu",density:"compact"},{default:B(()=>[(i(!0),S(oe,null,Se(e.switchTargets,n=>(i(),q(Me,{key:n.id,title:n.displayName,onClick:s=>t.$emit("switchProvider",n.id)},{prepend:B(()=>[h("span",li,[g(pt,{icon:n.icon,size:15},null,8,["icon"])])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})):O("",!0)]))}}),ii=Ie(si,[["__scopeId","data-v-1cae8321"]]),oi={class:"agent-create"},ri=Ce({__name:"AgentCreateSessionPanel",props:{providers:{},providerModels:{},workspaces:{}},emits:["created"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(null),c=U(""),f=U(null),m=U(null),l=U(null),v=U(null),r=U(null),k=U(Ct()),A=U(null),D=U(null),y=U(!1),w=U(""),u=I(()=>t.providers.map(b=>({title:gt(t.providers,b.id),value:b.id,disabled:!b.installed||!b.authenticated}))),p=I(()=>[{title:n.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...(t.providerModels[c.value]??[]).map(b=>({title:b.displayName,value:b.id,subtitle:b.description}))]),F=I(()=>ua(t.providerModels,c.value,f.value)),ee=I(()=>Qe(t.providers,c.value,"approvalPolicy")),z=I(()=>Qe(t.providers,c.value,"approvalsReviewer")),x=I(()=>Qe(t.providers,c.value,"permissionMode")),R=I(()=>{const b=t.providers.find(C=>C.id===c.value);return!!(s.value&&b?.installed&&b.authenticated&&!y.value)});ie(()=>t.workspaces,b=>{(!s.value||!b.some(C=>C.root===s.value))&&(s.value=b[0]?.root??null)},{immediate:!0}),ie(()=>t.providers,b=>{const C=b.find(E=>E.id===c.value);C?.installed&&C.authenticated||(c.value=b.find(E=>E.installed&&E.authenticated)?.id??b[0]?.id??"")},{immediate:!0}),ie(c,()=>{f.value=null,m.value=null,l.value=null,v.value=null,$()}),ie(F,b=>{b?.reasoningEfforts?.some(C=>C.id===m.value)||(m.value=null),b?.reasoningSummaries?.includes(l.value??"none")||(l.value=null),b?.serviceTiers?.some(C=>C.id===v.value)||(v.value=null)});async function T(){if(!(!s.value||!R.value)){y.value=!0,w.value="";try{const b=await Ue("/agents/sessions",{method:"POST",body:JSON.stringify({workspaceRoot:s.value,provider:c.value,model:f.value,reasoningEffort:m.value,reasoningSummary:l.value,serviceTier:v.value,...ra(t.providers,c.value,r.value,k.value,A.value,D.value)}),timeoutMs:3e4});o("created",b)}catch(b){w.value=qe(b)}finally{y.value=!1}}}function $(){r.value=Lt(null,ee.value?.defaultValue??null),k.value=Ct(),A.value=_t(null,z.value?.defaultValue??null),D.value=Nt(null,x.value?.defaultValue??null)}function L(b){const C=b?.reasoningEfforts.find(E=>E.id===b.defaultReasoningEffort);return[{title:qt(n.t("$vuetify.chatroom.agents.defaultModel"),b?.defaultReasoningEffort),value:null,subtitle:C?.description??""},...(b?.reasoningEfforts??[]).map(E=>({title:E.id,value:E.id,subtitle:E.description}))]}return(b,C)=>(i(),S("div",oi,[g(Ge,{modelValue:s.value,"onUpdate:modelValue":C[0]||(C[0]=E=>s.value=E),items:e.workspaces,"item-title":"name","item-value":"root",label:d(n).t("$vuetify.chatroom.agents.workspace"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),g(Ge,{modelValue:c.value,"onUpdate:modelValue":C[1]||(C[1]=E=>c.value=E),items:u.value,label:d(n).t("$vuetify.chatroom.agents.provider"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),g(Ge,{modelValue:f.value,"onUpdate:modelValue":C[2]||(C[2]=E=>f.value=E),items:p.value,label:d(n).t("$vuetify.chatroom.agents.model"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),F.value?.reasoningEfforts?.length?(i(),q(Ge,{key:0,modelValue:m.value,"onUpdate:modelValue":C[3]||(C[3]=E=>m.value=E),items:L(F.value),label:d(n).t("$vuetify.chatroom.agents.reasoningEffort"),density:"compact","hide-details":""},{item:B(({props:E,item:J})=>[g(Me,ue(E,{subtitle:J.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","label"])):O("",!0),g(fa,{"reasoning-summary":l.value,"onUpdate:reasoningSummary":C[4]||(C[4]=E=>l.value=E),"service-tier":v.value,"onUpdate:serviceTier":C[5]||(C[5]=E=>v.value=E),"approval-mode":r.value,"onUpdate:approvalMode":C[6]||(C[6]=E=>r.value=E),granular:k.value,"onUpdate:granular":C[7]||(C[7]=E=>k.value=E),reviewer:A.value,"onUpdate:reviewer":C[8]||(C[8]=E=>A.value=E),"permission-mode":D.value,"onUpdate:permissionMode":C[9]||(C[9]=E=>D.value=E),model:F.value,"approval-setting":ee.value,"reviewer-setting":z.value,"permission-setting":x.value,disabled:y.value},null,8,["reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","model","approval-setting","reviewer-setting","permission-setting","disabled"]),w.value?(i(),q(ea,{key:1,type:"error",variant:"tonal",density:"compact"},{default:B(()=>[le(M(w.value),1)]),_:1})):O("",!0),g(ce,{color:"primary",variant:"tonal",loading:y.value,disabled:!R.value,onClick:T},{default:B(()=>[le(M(d(n).t("$vuetify.chatroom.agents.create")),1)]),_:1},8,["loading","disabled"])]))}}),ui=Ie(ri,[["__scopeId","data-v-8cdd509d"]]),di={class:"agent-provider-strip"},ci=["data-state","title","aria-label","aria-expanded","data-expanded","onClick","onKeydown"],vi={class:"agent-provider-pill-name"},mi={key:0,class:"agent-provider-quota"},fi={class:"agent-provider-quota-header"},gi={key:0},pi={key:0,class:"agent-provider-quota-unavailable"},yi={key:1,class:"agent-provider-quota-unavailable"},hi=["title"],bi={class:"agent-provider-quota-label"},wi={class:"agent-provider-quota-track","aria-hidden":"true"},ki={class:"agent-provider-quota-value"},$i={class:"agent-provider-quota-reset"},Si={key:0,class:"agent-provider-quota-extra"},Ci=Ce({__name:"AgentProviderStatus",props:{providers:{}},setup(e){const a=ke(),t=U({}),o=U(null),n=U(!1),s=mt();let c=null;const f=I(()=>o.value?t.value[o.value]?.accountUsage??null:null);oa(()=>{c=setInterval(()=>{o.value&&l(o.value)},6e4)}),Vt(()=>{c&&clearInterval(c)});async function m(y){if(o.value===y){s.invalidate(),o.value=null,n.value=!1;return}o.value=y,await l(y)}async function l(y){const w=s.begin();n.value=!0;try{const u=await Ue(`/agents/providers/${y}/details`,{timeoutMs:15e3,signal:w.signal});if(!s.isCurrent(w))return;t.value={...t.value,[y]:u}}catch{}finally{s.isCurrent(w)&&(n.value=!1)}}function v(y){if(!y.installed)return a.t("$vuetify.chatroom.agents.providerUnavailable");if(!y.authenticated)return a.t("$vuetify.chatroom.agents.providerNotAuthenticated");const w=t.value[y.id];return[a.t("$vuetify.chatroom.agents.providerAvailable"),w?.configRequirements!=null?a.t("$vuetify.chatroom.agents.managedRequirementsAvailable"):null,w?.rateLimits!=null?a.t("$vuetify.chatroom.agents.rateLimitsAvailable"):null,y.capabilities?.webSearch?a.t("$vuetify.chatroom.agents.webSearch"):null,y.capabilities?.imageGeneration?a.t("$vuetify.chatroom.agents.imageGeneration"):null,y.version?y.displayName+" "+y.version:null].filter(Boolean).join(" · ")}function r(y,w){if(w)return w;const u={five_hour:"$vuetify.chatroom.agents.quotaFiveHour",seven_day:"$vuetify.chatroom.agents.quotaSevenDay",seven_day_oauth_apps:"$vuetify.chatroom.agents.quotaOauthApps",seven_day_opus:"$vuetify.chatroom.agents.quotaOpus",seven_day_sonnet:"$vuetify.chatroom.agents.quotaSonnet"};return u[y]?a.t(u[y]):y}function k(y){return y===null?"—":a.t("$vuetify.chatroom.agents.quotaPercent",String(Math.round(y)))}function A(y){return y===null?"0%":Math.min(100,Math.max(0,y))+"%"}function D(y){if(!y)return"";const w=new Date(y).getTime()-Date.now();if(!Number.isFinite(w)||w<=0)return a.t("$vuetify.chatroom.agents.quotaResetSoon");const u=Math.ceil(w/6e4);let p;if(u<60)p=u+"m";else{const F=Math.floor(u/60),ee=u%60;p=F<48?F+"h"+(ee?" "+ee+"m":""):Math.ceil(F/24)+"d"}return a.t("$vuetify.chatroom.agents.quotaResetsIn",p)}return(y,w)=>(i(),S(oe,null,[h("div",di,[(i(!0),S(oe,null,Se(e.providers,u=>(i(),S("div",{key:u.id,class:"agent-provider-pill","data-state":u.installed?u.authenticated?"ready":"warning":"unavailable",title:v(u),"aria-label":v(u),"aria-expanded":o.value===u.id,"data-expanded":o.value===u.id,role:"button",tabindex:"0",onClick:p=>m(u.id),onKeydown:[ot(lt(p=>m(u.id),["prevent"]),["enter"]),ot(lt(p=>m(u.id),["prevent"]),["space"])]},[g(pt,{icon:u.icon,size:14},null,8,["icon"]),h("span",vi,M(d(gt)(e.providers,u.id)),1),w[0]||(w[0]=h("span",{class:"agent-provider-pill-dot"},null,-1))],40,ci))),128))]),o.value?(i(),S("div",mi,[h("div",fi,[h("span",null,M(d(gt)(e.providers,o.value)),1),f.value?.subscriptionType?(i(),S("span",gi,M(f.value.subscriptionType),1)):O("",!0)]),n.value?(i(),S("div",pi,M(d(a).t("$vuetify.chatroom.agents.loading")),1)):f.value?.windows.length??0?(i(),S(oe,{key:2},[(i(!0),S(oe,null,Se(f.value?.windows??[],u=>(i(),S("div",{key:u.id,class:"agent-provider-quota-row",title:D(u.resetsAt)},[h("span",bi,M(r(u.id,u.label)),1),h("div",wi,[h("span",{class:"agent-provider-quota-fill",style:tt({width:A(u.utilization)})},null,4)]),h("span",ki,M(k(u.utilization)),1),h("span",$i,M(D(u.resetsAt)),1)],8,hi))),128)),f.value?.extraUsage?.enabled?(i(),S("div",Si,[h("span",null,M(d(a).t("$vuetify.chatroom.agents.quotaExtraUsage")),1),h("span",null,M(k(f.value.extraUsage.utilization)),1)])):O("",!0)],64)):(i(),S("div",yi,M(d(a).t("$vuetify.chatroom.agents.quotaUnavailable")),1))])):O("",!0)],64))}}),xi=Ie(Ci,[["__scopeId","data-v-5b1c74e5"]]),Vi={class:"panel-header"},Mi={class:"panel-title"},Ii={key:0,class:"agent-error",role:"alert"},Ti={class:"agent-session-list"},Ai=["data-status","data-attention","title"],Ri={key:1,class:"empty-inline"},Pi=Ce({__name:"AgentSidebar",props:{providers:{},providerModels:{},workspaces:{},sessions:{},selectedId:{},loading:{type:Boolean},error:{}},emits:["update:selectedId","created"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(!1);function c(l){s.value=!1,o("created",l)}function f(l,v){return va(t.providerModels,l,v,n.t("$vuetify.chatroom.agents.defaultModel"))}function m(l){if(l.status==="waiting_input"){if(l.attention?.kind==="approval")return n.t("$vuetify.chatroom.agents.waitingApproval");if(l.attention?.kind==="input")return n.t("$vuetify.chatroom.agents.waitingAnswer")}return n.t("$vuetify.chatroom.agents.statuses."+l.status)}return(l,v)=>(i(),q(Ye,{class:"agent-sidebar panel-card"},{default:B(()=>[h("div",Vi,[h("div",Mi,M(d(n).t("$vuetify.chatroom.agents.title")),1),g(ce,{icon:"$mdiPlus",size:"small",variant:"text","aria-label":d(n).t("$vuetify.chatroom.agents.newSession"),onClick:v[0]||(v[0]=r=>s.value=!s.value)},null,8,["aria-label"])]),g(rt),g(Ga,null,{default:B(()=>[s.value?(i(),q(ui,{key:0,providers:e.providers,"provider-models":e.providerModels,workspaces:e.workspaces,onCreated:c},null,8,["providers","provider-models","workspaces"])):O("",!0)]),_:1}),e.error?(i(),S("div",Ii,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"18"}),h("span",null,M(e.error),1)])):O("",!0),h("div",Ti,[e.sessions.length?(i(),q(bt,{key:0,nav:"",density:"compact"},{default:B(()=>[(i(!0),S(oe,null,Se(e.sessions,r=>(i(),q(Me,{key:r.id,active:e.selectedId===r.id,"data-agent-session-id":r.id,rounded:"lg",onClick:k=>o("update:selectedId",r.id)},{prepend:B(()=>[g(pt,{class:"agent-session-provider-icon",icon:d(ca)(e.providers,r.provider),size:15},null,8,["icon"])]),append:B(()=>[h("span",{class:"agent-status-dot","data-status":r.status,"data-attention":r.attention?.kind??void 0,title:m(r)},null,8,Ai)]),default:B(()=>[g(Ja,null,{default:B(()=>[le(M(d(gt)(e.providers,r.provider)),1)]),_:2},1024),g(Xa,null,{default:B(()=>[le(M(d($t)(r.workspaceRoot))+" ",1),r.model?(i(),S(oe,{key:0},[le(" · "+M(f(r.provider,r.model)),1)],64)):O("",!0)]),_:2},1024)]),_:2},1032,["active","data-agent-session-id","onClick"]))),128))]),_:1})):(i(),S("div",Ri,M(e.loading?d(n).t("$vuetify.chatroom.agents.loading"):d(n).t("$vuetify.chatroom.agents.noSessions")),1))]),g(rt),g(xi,{providers:e.providers},null,8,["providers"])]),_:1}))}}),Fi=Ie(Pi,[["__scopeId","data-v-e6bcf543"]]),Ui={key:0,class:"agent-error agent-main-error",role:"alert"},Ei=["aria-label"],zi={class:"empty-panel"},Di=Ce({__name:"AgentView",props:{revision:{},changes:{}},setup(e){const a=e,t=ke(),{mdAndDown:o}=Qa(),n=dt("layout"),s=U([]),c=U([]),f=U({}),m=U(null),l=U(!1),v=U(!1),r=U(""),{sessions:k,history:A,refresh:D,reloadSelected:y,reconcileSession:w,reconcileInteraction:u,removeSession:p}=mn(m,{onError:Z=>{r.value=qe(Z)}}),F=I(()=>k.value.find(Z=>Z.id===m.value)??null),ee=I(()=>(A.value?.turns.at(-1)?.items??[]).filter(W=>W.type==="interaction"&&W.status==="waiting")),{modelSettingsOpen:z,settingsModel:x,settingsReasoningEffort:R,settingsReasoningSummary:T,settingsServiceTier:$,settingsApprovalPolicyMode:L,settingsGranularApproval:b,settingsApprovalsReviewer:C,settingsPermissionMode:E,reviewOpen:J,reviewType:de,reviewValue:Y,reviewTitle:$e,reviewStarting:fe,reviewError:be,modelSwitching:xe,switchingProvider:se,interrupting:Te,deleteDialog:we,deletingSession:je,selectedApprovalPolicySetting:ze,selectedApprovalsReviewerSetting:_,selectedPermissionModeSetting:H,selectedProviderModels:Ve,selectedModelMetadata:De,selectedProviderStatus:Ae,reviewTypes:he,reviewFieldLabel:Le,canStartReview:_e,switchTargets:Ke,loadModels:P,startReview:X,interrupt:ae,switchProvider:ge,openDeleteDialog:me,deleteSession:Ne,openModelSettings:N,saveModelSettings:G}=gn({selectedId:m,selected:F,sessions:k,providers:s,providerModels:f,composerBusy:v,error:r,refresh:D,reconcileSession:w,removeSession:p}),{respondingInteractions:te,respondApproval:ve,submitInput:V,interactionAnswers:j,setInteractionAnswer:ne}=fn({selectedId:m,selected:F,error:r,reconcileInteraction:u}),re=I(()=>F.value?F.value.status!=="waiting_input"?t.t("$vuetify.chatroom.agents.statuses."+F.value.status):F.value.attention?.kind==="approval"?t.t("$vuetify.chatroom.agents.waitingApproval"):F.value.attention?.kind==="input"?t.t("$vuetify.chatroom.agents.waitingAnswer"):t.t("$vuetify.chatroom.agents.statuses.waiting_input"):""),pe=I(()=>{const Z=F.value?.tokenUsage;return Z?at(Z):""}),Q=I(()=>Object.fromEntries(s.value.map(Z=>[Z.id,Z.displayName]))),Oe=I(()=>Object.fromEntries(s.value.map(Z=>[Z.id,Z.icon])));oa(()=>{st()}),ie(()=>a.revision,()=>{D(a.changes)}),ie(m,()=>{v.value=!1},{flush:"sync"}),ie(m,(Z,W)=>{!o.value||!Z||Z===W||He(()=>{n.value?.querySelector(".agent-main")?.focus({preventScroll:!0})})},{flush:"post"});async function st(){l.value=!0,r.value="";try{const[Z,,W]=await Promise.all([Ue("/agents/providers",{timeoutMs:15e3}),D(null),Ue("/workspaces")]);s.value=Z,c.value=W,!o.value&&!m.value&&k.value[0]&&(m.value=k.value[0].id),await Promise.all(Z.filter(K=>K.installed&&K.authenticated).map(K=>P(K.id)))}catch(Z){r.value=qe(Z)}finally{l.value=!1}}function Xe(Z){w(Z),m.value=Z.id}function at(Z){const W=ya=>new Intl.NumberFormat(Ya(t.current.value),{notation:"compact",maximumFractionDigits:1}).format(ya),K=t.t("$vuetify.chatroom.agents.tokenUsage",W(Z.total.totalTokens)),We=Z.modelContextWindow;if(!We||We<=0)return K;const kt=Z.last.totalTokens;return K+" · "+t.t("$vuetify.chatroom.agents.contextUsage",W(kt),W(We),String(Math.round(kt/We*100)))}function et(Z,W){return va(f.value,Z,W,t.t("$vuetify.chatroom.agents.defaultModel"))}function Fe(){const Z=m.value;m.value=null,A.value=null,!(!o.value||!Z)&&He(()=>{n.value?.querySelector(`[data-agent-session-id="${CSS.escape(Z)}"]`)?.focus({preventScroll:!0})})}function ga(Z){return gt(s.value,Z)}function pa(Z){return ca(s.value,Z)}return(Z,W)=>(i(),S("div",{ref_key:"layout",ref:n,class:"agent-layout"},[!d(o)||!F.value?(i(),q(Fi,{key:0,"selected-id":m.value,"onUpdate:selectedId":W[0]||(W[0]=K=>m.value=K),providers:s.value,"provider-models":f.value,workspaces:c.value,sessions:d(k),loading:l.value,error:r.value,onCreated:Xe},null,8,["selected-id","providers","provider-models","workspaces","sessions","loading","error"])):O("",!0),F.value?(i(),q(Ye,{key:1,class:"agent-main panel-card",tabindex:"-1"},{default:B(()=>[g(ii,{session:F.value,"provider-name":ga(F.value.provider),"provider-icon":pa(F.value.provider),"model-name":et(F.value.provider,F.value.model),"status-text":re.value,usage:pe.value,compact:d(o),"switch-targets":d(Ke),switching:d(se),disabled:F.value.status!=="idle"||d(xe),onBack:Fe,onSwitchProvider:d(ge)},null,8,["session","provider-name","provider-icon","model-name","status-text","usage","compact","switch-targets","switching","disabled","onSwitchProvider"]),g(rt),r.value&&d(o)?(i(),S("div",Ui,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"18"}),h("span",null,M(r.value),1)])):O("",!0),g(Vs,{history:d(A),"provider-names":Q.value,"provider-icons":Oe.value},null,8,["history","provider-names","provider-icons"]),ee.value.length?(i(),S("div",{key:1,class:"agent-pending-interactions",role:"region","aria-label":re.value},[(i(!0),S(oe,null,Se(ee.value,K=>(i(),q(ma,{key:"pending:"+K.id,item:K,answers:d(j)(K),responding:d(te).has(K.id),pinned:"",onApprove:We=>d(ve)(K,We),onSubmit:We=>d(V)(K),onUpdateAnswer:(We,kt)=>d(ne)(K,We,kt)},null,8,["item","answers","responding","onApprove","onSubmit","onUpdateAnswer"]))),128))],8,Ei)):O("",!0),g(rt),(i(),q(Ln,{key:F.value.id,session:F.value,model:d(De),"steering-supported":!!d(Ae)?.features.steering,disabled:d(fe)||d(xe)||d(se),onError:W[2]||(W[2]=K=>r.value=K),onBusy:W[3]||(W[3]=K=>v.value=K)},{controls:B(({busy:K})=>[g(yt,{location:"top end",offset:"8","content-class":"agent-overlay-menu"},{activator:B(({props:We})=>[g(ce,ue(We,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",class:"agent-session-controls-button",color:F.value.status==="error"?"error":F.value.status==="idle"?void 0:"warning","aria-label":d(t).t("$vuetify.chatroom.agents.sessionControls"),title:d(t).t("$vuetify.chatroom.agents.sessionControls")}),null,16,["color","aria-label","title"])]),default:B(()=>[g(bt,{class:"agent-session-controls-menu",density:"compact"},{default:B(()=>[g(Me,{title:d(t).t("$vuetify.chatroom.agents.model"),subtitle:et(F.value.provider,F.value.model),"prepend-icon":"$mdiTuneVariant",disabled:F.value.status!=="idle"||d(xe)||d(se),onClick:d(N)},null,8,["title","subtitle","disabled","onClick"]),F.value.status==="running"||F.value.status==="waiting_input"?(i(),q(Me,{key:0,title:d(t).t("$vuetify.chatroom.agents.stop"),"prepend-icon":"$mdiStop","base-color":"warning",disabled:d(Te),onClick:d(ae)},null,8,["title","disabled","onClick"])):O("",!0),g(rt),F.value.status==="idle"&&d(Ae)?.features.nativeReview?(i(),q(Me,{key:1,title:d(t).t("$vuetify.chatroom.agents.review"),"prepend-icon":"$mdiFileCompare",disabled:K||d(xe)||d(se)||d(fe),onClick:W[1]||(W[1]=We=>{be.value="",J.value=!0})},null,8,["title","disabled"])):O("",!0),g(Me,{title:d(t).t("$vuetify.chatroom.agents.refresh"),"prepend-icon":"$mdiRefresh",onClick:d(y)},null,8,["title","onClick"]),g(Me,{title:d(t).t("$vuetify.chatroom.agents.delete"),"prepend-icon":"$mdiDeleteOutline",onClick:d(me)},null,8,["title","onClick"])]),_:2},1024)]),_:2},1024)]),_:1},8,["session","model","steering-supported","disabled"]))]),_:1})):d(o)?O("",!0):(i(),q(Ye,{key:2,class:"agent-main panel-card"},{default:B(()=>[h("div",zi,M(d(t).t("$vuetify.chatroom.agents.selectSession")),1)]),_:1})),g(Ks,{modelValue:d(z),"onUpdate:modelValue":W[4]||(W[4]=K=>Be(z)?z.value=K:null),"model-id":d(x),"onUpdate:modelId":W[5]||(W[5]=K=>Be(x)?x.value=K:null),"reasoning-effort":d(R),"onUpdate:reasoningEffort":W[6]||(W[6]=K=>Be(R)?R.value=K:null),"reasoning-summary":d(T),"onUpdate:reasoningSummary":W[7]||(W[7]=K=>Be(T)?T.value=K:null),"service-tier":d($),"onUpdate:serviceTier":W[8]||(W[8]=K=>Be($)?$.value=K:null),"approval-mode":d(L),"onUpdate:approvalMode":W[9]||(W[9]=K=>Be(L)?L.value=K:null),granular:d(b),"onUpdate:granular":W[10]||(W[10]=K=>Be(b)?b.value=K:null),reviewer:d(C),"onUpdate:reviewer":W[11]||(W[11]=K=>Be(C)?C.value=K:null),"permission-mode":d(E),"onUpdate:permissionMode":W[12]||(W[12]=K=>Be(E)?E.value=K:null),models:d(Ve),"approval-setting":d(ze),"reviewer-setting":d(_),"permission-setting":d(H),busy:d(xe),onSave:d(G)},null,8,["modelValue","model-id","reasoning-effort","reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","models","approval-setting","reviewer-setting","permission-setting","busy","onSave"]),g(Gs,{modelValue:d(J),"onUpdate:modelValue":W[13]||(W[13]=K=>Be(J)?J.value=K:null),"review-type":d(de),"onUpdate:reviewType":W[14]||(W[14]=K=>Be(de)?de.value=K:null),"review-value":d(Y),"onUpdate:reviewValue":W[15]||(W[15]=K=>Be(Y)?Y.value=K:null),"review-title":d($e),"onUpdate:reviewTitle":W[16]||(W[16]=K=>Be($e)?$e.value=K:null),types:d(he),"field-label":d(Le),busy:d(fe),error:d(be),"can-start":d(_e),onStart:d(X)},null,8,["modelValue","review-type","review-value","review-title","types","field-label","busy","error","can-start","onStart"]),g(_n,{modelValue:d(we),"onUpdate:modelValue":W[17]||(W[17]=K=>Be(we)?we.value=K:null),busy:d(je),onConfirm:d(Ne)},null,8,["modelValue","busy","onConfirm"])],512))}}),Wi=Ie(Di,[["__scopeId","data-v-3189043d"]]);export{Wi as default};
@@ -1 +0,0 @@
1
- import{A as be,a5 as te,B as z,z as C,y as w,C as ye,aK as ae,b9 as he,aa as ge,w as F,ba as _e,D as we,aj as ke,bb as pe,bc as Ve,E as Ce,bd as Se,aQ as $e,be as Te,bf as xe,bg as Pe,a$ as Ie,bh as De,ae as oe,H as qe,av as Be,a0 as Ue,ad as G,I as Ae,J as Oe,az as Me,bi as Ne,K as Re,bj as ze,aG as Ee,bk as Fe,bl as Ke,bm as Y,ap as Le,e as i,bn as We,g as s,_ as je,U as Ge,R as J,O as E,af as le,at as Ye,Q as Je,a8 as Q,S as K,d as Qe,a as He,o as I,n as q,b as y,h as t,c as Xe,q as Ze,r as T,t as u,p as H,a4 as et,i as A,j as L,l as tt,m as at,aY as X,V as Z,f as ot,k as lt,s as nt,v as it,a3 as st}from"./index-Dt-pWiW1.js";import{V as ee}from"./VSwitch-C0XNj1lR.js";import{V as rt}from"./VSpacer-Cl-QiwaM.js";function ut(){const e=w(null),a=w(""),r=w(!1),l=w(""),k=w(!1),h=w(!1),b=w(null),d=w(null),m=be(),S=w(!1),f=C(()=>h.value||k.value||d.value!==null),g=C(()=>{const o=new Set(e.value?.entitlements.map(n=>n.service)??[]);return o.has("remote_mcp")&&o.has("remote_web")}),x=C(()=>{const o=(e.value?.entitlements??[]).map(n=>n.validUntil).filter(n=>!!n).map(n=>Date.parse(n)).filter(Number.isFinite);return o.length?Math.min(...o):null});te(()=>{B()});function p(o){a.value=ye(o),r.value=!0}async function B(){if(f.value)return;const o=m.begin();try{const n=await z("/cloud/status",{signal:o.signal});m.isCurrent(o)&&(e.value=n)}catch(n){m.isCurrent(o)&&p(n)}}async function O(){if(f.value)return;const o=m.begin();h.value=!0;try{const n=await z("/cloud/sync",{method:"POST",signal:o.signal});m.isCurrent(o)&&(e.value=n)}catch(n){m.isCurrent(o)&&p(n)}finally{h.value=!1}}async function P(){if(S.value)return;S.value=!0;const o=window.open("","_blank");o&&(o.opener=null);try{const n=await z("/cloud/management",{method:"POST"});o?o.location.href=n.url:window.location.assign(n.url)}catch(n){o?.close(),p(n)}finally{S.value=!1}}function D(o,n){if(!f.value){if(n){U(o,!0);return}b.value=o}}async function M(){const o=b.value;o&&(await U(o,!1),d.value===null&&(b.value=null))}async function U(o,n){if(!e.value||f.value)return;const $=m.begin();d.value=o;try{const v=await z(`/cloud/services/${o}`,{method:"POST",body:JSON.stringify({enabled:n}),signal:$.signal});m.isCurrent($)&&(e.value=v)}catch(v){m.isCurrent($)&&p(v)}finally{d.value===o&&(d.value=null)}}async function N(){if(!l.value.trim()||f.value)return;const o=m.begin(),n=l.value.trim();k.value=!0;try{const $=await z("/cloud/restore",{method:"POST",body:JSON.stringify({recoveryKey:n}),timeoutMs:12e4,signal:o.signal});if(!m.isCurrent(o))return;e.value=$.status,l.value=""}catch($){m.isCurrent(o)&&p($)}finally{k.value=!1}}return{status:e,error:a,errorVisible:r,recoveryKey:l,restoring:k,refreshing:h,managing:S,busy:f,confirmationService:b,serviceUpdating:d,subscribed:g,subscriptionExpiry:x,load:B,refresh:O,manage:P,requestServiceChange:D,confirmDisableService:M,restore:N}}const ct=Symbol.for("vuetify:v-snackbar-queue");function dt(e,a){const r=ae(ct,null);if(!r)return null;const l=he();r.register(l),ge(()=>r.unregister(l)),F(e,d=>!d&&r.unregister(l),{flush:"sync"});const{resizeRef:k,contentRect:h}=_e();F(a,d=>{k.value=d??null}),F(h,d=>{d?.width&&r.setSize(l,d.height,d.width)});const b=C(()=>r.getOffset(l));return{id:l,offset:b}}function vt(e){const a=w(e());let r=-1;function l(){clearInterval(r)}function k(){l(),oe(()=>a.value=e())}function h(b){const d=b?getComputedStyle(b):{transitionDuration:.2},m=parseFloat(d.transitionDuration)*1e3||200;if(l(),a.value<=0)return;const S=performance.now();r=window.setInterval(()=>{const f=performance.now()-S+m;a.value=Math.max(e()-f,0),a.value<=0&&l()},m)}return Ue(l),{clear:l,time:a,start:h,reset:k}}const mt=Ae({collapsed:Object,loading:Boolean,prependAvatar:String,prependIcon:Oe,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,...Ke({location:"bottom center"}),...Fe(),...Ee(),...ze(),...Re(),...Me(Ne({closeOnBack:!1,locationStrategy:null,transition:"v-snackbar-transition"}),["persistent","noClickAnimation","offset","retainFocus","captureFocus","disableInitialFocus","location","scrim","scrollStrategy","stickToTarget","viewportMargin"])},"VSnackbar"),ft=we()({name:"VSnackbar",props:mt(),emits:{"update:modelValue":e=>!0},setup(e,{slots:a}){const r=ke(e,"modelValue"),{positionClasses:l}=pe(e),{scopeId:k}=Ve(),{themeClasses:h}=Ce(e),{colorClasses:b,colorStyles:d,variantClasses:m}=Se(e),{roundedClasses:S,roundedStyles:f}=$e(e),g=vt(()=>Number(e.timeout)),x=G(),p=dt(r,()=>x.value?.contentEl);let B;const O=G(),P=w(!1),D=w(!1),M=w(0),U=G(),N=ae(Te,void 0);xe(()=>!!N,()=>{const c=Pe();Ie(()=>{U.value=c.mainStyles.value})}),F(r,n),F(()=>e.timeout,n),te(()=>{r.value&&n()});let o=-1;function n(){g.clear(),window.clearTimeout(o);const c=Number(e.timeout);if(!r.value||c===-1)return;g.reset();const V=De(O.value);oe(()=>g.start(V)),o=window.setTimeout(()=>{r.value=!1},c)}function $(){g.reset(),window.clearTimeout(o)}function v(){P.value=!0,$()}function _(){P.value=!1,D.value||n()}function ne(){D.value=!0,$()}function ie(c){x.value?.contentEl?.contains(c.relatedTarget)||(D.value=!1,P.value||n())}function se(c){M.value=c.touches[0].clientY}function re(c){Math.abs(M.value-c.changedTouches[0].clientY)>50&&(r.value=!1)}function ue(){P.value&&_(),D.value=!1}const ce=C(()=>e.location.split(" ").reduce((c,V)=>(c[`v-snackbar--${V}`]=!0,c),{})),de=C(()=>{const[c,V]=e.location.split(" ");return c==="bottom"||["left","right"].includes(c)&&V==="end"?-1:1}),ve=C(()=>e.collapsed?{"--v-snackbar-collapsed-height":K(e.collapsed.height),"--v-snackbar-collapsed-width":K(e.collapsed.width)}:null),me=C(()=>{if(p)return p.offset.value===null?B:B=K(p.offset.value)}),fe=C(()=>{if(typeof e.transition!="string"||!e.transition.endsWith("-auto"))return e.transition;const c=e.transition.replace("-auto",""),[V,R]=e.location.split(" "),W=["start","end","left","right"].includes(R)||["left","right"].includes(V)?"x":"y",j=["end","right"].includes(R)||!["start","left"].includes(R)&&["bottom","right"].includes(V)?"-reverse":"";return`${c}-${W}${j}-transition`});return qe(()=>{const c=Y.filterProps({...e,location:e.location,locationStrategy:e.locationStrategy??Le}),V=!!(e.prependAvatar||e.prependIcon),R=!!(V||e.loading||a.prepend),W=!!(a.default||a.text||a.title||e.text||e.title);return i(Y,Q({ref:x,class:["v-snackbar",{"v-snackbar--active":r.value,"v-snackbar--collapsed":!!e.collapsed,"v-snackbar--timer":!!e.timer,"v-snackbar--vertical":e.vertical},ce.value,l.value,e.class],style:[U.value,{"--v-snackbar-offset":me.value,"--v-snackbar-gap":K(e.queueGap),"--v-snackbar-index":e.queueIndex,"--v-snackbar-direction":de.value},ve.value,e.style]},c,{transition:fe.value,modelValue:r.value,"onUpdate:modelValue":j=>r.value=j,contentProps:Q({class:["v-snackbar__wrapper",h.value,b.value,S.value,m.value],style:[d.value,f.value],onPointerenter:v,onPointerleave:_,onFocusin:ne,onFocusout:ie},c.contentProps),persistent:!0,noClickAnimation:!0,scrim:!1,scrollStrategy:"none",onTouchstartPassive:se,onTouchend:re,onAfterLeave:ue},k),{default:()=>[We(!1,"v-snackbar"),a.header&&s("div",{class:"v-snackbar__header"},[a.header?.()]),e.timer&&Number(e.timeout)>0&&!P.value&&s("div",{key:"timer",class:Ge(["v-snackbar__timer",`v-snackbar__timer--${e.timer==="bottom"?"bottom":"top"}`])},[i(je,{ref:O,color:e.timerColor??"info",max:e.timeout,modelValue:e.reverseTimer?Number(e.timeout)-g.time.value:g.time.value},null)]),R&&i(J,{key:"prepend-defaults",disabled:!V&&!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"},[a.prepend?a.prepend():s(E,null,[e.loading&&i(le,null,null),!e.loading&&e.prependAvatar&&i(Ye,null,null),!e.loading&&e.prependIcon&&i(Je,null,null)])])]}),W&&s("div",{key:"content",class:"v-snackbar__content",role:"status","aria-live":"polite"},[a.title?.()??(e.title?s("div",{class:"v-snackbar__title",key:"title"},[e.title]):""),a.text?.()??e.text,a.default?.()]),a.actions&&i(J,{defaults:{VBtn:{variant:"text",ripple:!1,slim:!0}}},{default:()=>[s("div",{class:"v-snackbar__actions"},[a.actions({isActive:r})])]})],activator:a.activator})}),Be({},x)}}),bt={class:"cloud-view"},yt={class:"cloud-row"},ht={class:"cloud-row-main"},gt={class:"cloud-row-title"},_t={class:"cloud-row-value"},wt={class:"cloud-row-actions"},kt={class:"cloud-row"},pt={class:"cloud-row-main"},Vt={class:"cloud-row-title"},Ct={key:0,class:"cloud-row-value mono"},St={key:1,class:"cloud-row-value"},$t={class:"cloud-row"},Tt={class:"cloud-row-main"},xt={class:"cloud-row-title"},Pt={key:0,class:"cloud-row-value mono"},It={key:1,class:"cloud-row-value"},Dt={class:"cloud-row"},qt={class:"cloud-row-main"},Bt={class:"cloud-row-title"},Ut={class:"cloud-row-value"},At={class:"cloud-restore-row"},Ot={key:3,class:"cloud-loading"},Mt={class:"cloud-row cloud-installation-row"},Nt={class:"cloud-row-main"},Rt={class:"cloud-row-title"},zt={class:"cloud-row-value mono installation-id"},Lt=Qe({__name:"CloudView",setup(e){const a=He(),r=ut(),{status:l,error:k,errorVisible:h,recoveryKey:b,restoring:d,refreshing:m,managing:S,busy:f,confirmationService:g,serviceUpdating:x,subscribed:p,subscriptionExpiry:B,refresh:O,manage:P,requestServiceChange:D,confirmDisableService:M,restore:U}=r,N=C(()=>p.value?B.value===null?a.t("$vuetify.chatroom.cloud.active"):`${a.t("$vuetify.chatroom.cloud.expires")} ${new Intl.DateTimeFormat(st(a.current.value),{dateStyle:"medium",timeStyle:"short"}).format(new Date(B.value))}`:a.t("$vuetify.chatroom.cloud.inactiveDescription")),o=C(()=>g.value==="remote_web"?a.t("$vuetify.chatroom.cloud.disableWebTitle"):a.t("$vuetify.chatroom.cloud.disableMcpTitle")),n=C(()=>g.value==="remote_web"?a.t("$vuetify.chatroom.cloud.disableWebDescription"):a.t("$vuetify.chatroom.cloud.disableMcpDescription"));return($,v)=>(I(),q(E,null,[s("div",bt,[i(Z,{class:"panel-card cloud-panel"},{default:y(()=>[t(l)?.lastError?(I(),Xe(Ze,{key:0,type:"error",variant:"tonal",density:"compact",class:"ma-3"},{default:y(()=>[T(u(t(l).lastError),1)]),_:1})):H("",!0),t(l)&&t(p)?(I(),q(E,{key:1},[s("div",yt,[s("div",ht,[s("div",gt,u(t(a).t("$vuetify.chatroom.cloud.subscription")),1),s("div",_t,u(N.value),1)]),s("div",wt,[i(et,{color:"success",size:"small",variant:"tonal"},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.cloud.active")),1)]),_:1}),i(A,{icon:"$mdiRefresh",size:"small",variant:"text",loading:t(m),disabled:t(f),"aria-label":t(a).t("$vuetify.chatroom.cloud.refresh"),onClick:t(O)},null,8,["loading","disabled","aria-label","onClick"]),i(A,{variant:"text",size:"small",disabled:!t(l).installationId||t(f),loading:t(S),onClick:t(P)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.cloud.manage")),1)]),_:1},8,["disabled","loading","onClick"])])]),i(L),s("div",kt,[s("div",pt,[s("div",Vt,u(t(a).t("$vuetify.chatroom.cloud.remoteMcp")),1),t(l).mcpUrl?(I(),q("div",Ct,u(t(l).mcpUrl),1)):(I(),q("div",St,u(t(a).t("$vuetify.chatroom.cloud.remoteMcpDescription")),1))]),i(ee,{"model-value":t(l).desiredServices.remote_mcp,loading:t(x)==="remote_mcp",disabled:t(f),"aria-label":t(a).t("$vuetify.chatroom.cloud.remoteMcp"),"onUpdate:modelValue":v[0]||(v[0]=_=>t(D)("remote_mcp",!!_))},null,8,["model-value","loading","disabled","aria-label"])]),i(L),s("div",$t,[s("div",Tt,[s("div",xt,u(t(a).t("$vuetify.chatroom.cloud.remoteWeb")),1),t(l).webUrl?(I(),q("div",Pt,u(t(l).webUrl),1)):(I(),q("div",It,u(t(a).t("$vuetify.chatroom.cloud.remoteWebDescription")),1))]),i(ee,{"model-value":t(l).desiredServices.remote_web,loading:t(x)==="remote_web",disabled:t(f),"aria-label":t(a).t("$vuetify.chatroom.cloud.remoteWeb"),"onUpdate:modelValue":v[1]||(v[1]=_=>t(D)("remote_web",!!_))},null,8,["model-value","loading","disabled","aria-label"])])],64)):t(l)?(I(),q(E,{key:2},[s("div",Dt,[s("div",qt,[s("div",Bt,u(t(a).t("$vuetify.chatroom.cloud.subscription")),1),s("div",Ut,u(N.value),1)]),i(A,{color:"primary",variant:"flat",size:"small",disabled:!t(l).installationId||t(f),loading:t(S),onClick:t(P)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.cloud.purchase")),1)]),_:1},8,["disabled","loading","onClick"])]),i(L),s("div",At,[i(tt,{modelValue:t(b),"onUpdate:modelValue":v[2]||(v[2]=_=>X(b)?b.value=_:null),placeholder:t(a).t("$vuetify.chatroom.cloud.recoveryKey"),"aria-label":t(a).t("$vuetify.chatroom.cloud.recoveryKey"),type:"password",density:"compact",variant:"outlined","hide-details":"",autocomplete:"off",onKeyup:at(t(U),["enter"])},null,8,["modelValue","placeholder","aria-label","onKeyup"]),i(A,{loading:t(d),disabled:!t(l).installationId||!t(b).trim()||t(f),variant:"tonal",size:"small",onClick:t(U)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.cloud.restoreAction")),1)]),_:1},8,["loading","disabled","onClick"])])],64)):(I(),q("div",Ot,[i(le,{indeterminate:"",size:"20",width:"2"})])),t(l)?(I(),q(E,{key:4},[i(L),s("div",Mt,[s("div",Nt,[s("div",Rt,u(t(a).t("$vuetify.chatroom.cloud.installationId")),1),s("div",zt,u(t(l).installationId||"—"),1)])])],64)):H("",!0)]),_:1})]),i(it,{"model-value":t(g)!==null,width:"auto","max-width":"90vw","onUpdate:modelValue":v[4]||(v[4]=_=>!_&&(g.value=null))},{default:y(()=>[i(Z,null,{default:y(()=>[i(ot,null,{default:y(()=>[T(u(o.value),1)]),_:1}),i(lt,null,{default:y(()=>[T(u(n.value),1)]),_:1}),i(nt,null,{default:y(()=>[i(rt),i(A,{variant:"text",disabled:t(f),onClick:v[3]||(v[3]=_=>g.value=null)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),i(A,{color:"error",variant:"flat",loading:t(x)===t(g),onClick:t(M)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.cloud.disableConfirm")),1)]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["model-value"]),i(ft,{modelValue:t(h),"onUpdate:modelValue":v[6]||(v[6]=_=>X(h)?h.value=_:null),color:"error",location:"top",timeout:6e3},{actions:y(()=>[i(A,{variant:"text",onClick:v[5]||(v[5]=_=>h.value=!1)},{default:y(()=>[T(u(t(a).t("$vuetify.chatroom.common.close")),1)]),_:1})]),default:y(()=>[T(u(t(k))+" ",1)]),_:1},8,["modelValue"])],64))}});export{Lt as default};
@@ -1,3 +0,0 @@
1
- import{D,E as H,F as O,c0 as U,c1 as z,bb as F,aQ as j,H as M,I as N,K as A,bz as G,aG as I,bk as W,bl as Q,aF as q,M as J,N as K,c2 as X,e as i,T as Y,U as _,W as Z,aP as ee,d as ae,a as oe,w as S,c3 as te,aa as le,o as y,c as se,b as ne,n as b,O as ie,g as C,l as re,h as m,i as w,j as ce,p as V,t as L,y as f,z as P}from"./index-Dt-pWiW1.js";import{V as ue}from"./VSpacer-Cl-QiwaM.js";const de=N({color:String,...X(),...K(),...J(),...q(),...Q(),...W(),...I(),...G(),...A()},"VSheet"),me=D()({name:"VSheet",props:de(),setup(e,{slots:a}){const{themeClasses:v}=H(e),{backgroundColorClasses:g,backgroundColorStyles:n}=O(()=>e.color),{borderClasses:r}=U(e),{dimensionStyles:t}=Z(e),{elevationClasses:c}=ee(e),{locationStyles:s}=z(e),{positionClasses:u}=F(e),{roundedClasses:d,roundedStyles:h}=j(e);return M(()=>i(e.tag,{class:_(["v-sheet",v.value,g.value,r.value,c.value,u.value,d.value,e.class]),style:Y([n.value,t.value,s.value,h.value,e.style])},a)),{}}}),ve={class:"code-toolbar"},he={class:"code-actions"},ye={key:1,class:"code-copy-error",role:"alert"},fe=["innerHTML"],ge={key:1},pe=2e5,be=120,we=ae({__name:"CodeViewer",props:{value:{},text:{},filename:{default:"chatroom-output.txt"},language:{},toolbar:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0}},setup(e){const a=e,v=f(""),g=f(""),n=f(!0),r=f(null),t=oe(),c=f("");let s=null,u=0;const d=P(()=>a.text??JSON.stringify(a.value??null,null,2)),h=P(()=>{const l=g.value.toLocaleLowerCase();return l?d.value.split(`
2
- `).filter(o=>o.toLocaleLowerCase().includes(l)).join(`
3
- `):d.value});S(v,l=>{s&&clearTimeout(s),s=setTimeout(()=>{g.value=l,s=null},be)}),S([h,()=>a.filename,()=>a.language,()=>a.value!==void 0,()=>a.highlight],async(l,o,p)=>{const x=++u;p(()=>{u+=1}),r.value=null;const k=h.value;if(!a.highlight||!k||k.length>pe)return;const B={filename:a.filename,language:a.language??(a.value!==void 0?"json":null)};try{const{highlightSource:E}=await te(async()=>{const{highlightSource:R}=await import("./syntax-highlight-C_fuMcwC.js");return{highlightSource:R}},[]);if(x!==u)return;r.value=E(k,B)}catch{}},{immediate:!0}),le(()=>{s&&clearTimeout(s),u+=1});async function T(){c.value="";try{await navigator.clipboard.writeText(d.value)}catch{c.value=t.t("$vuetify.chatroom.code.copyFailed")}}function $(){const l=URL.createObjectURL(new Blob([d.value],{type:"text/plain;charset=utf-8"})),o=document.createElement("a");o.href=l,o.download=a.filename,o.click(),URL.revokeObjectURL(l)}return(l,o)=>(y(),se(me,{border:e.toolbar,rounded:e.toolbar?"lg":0,"overflow-hidden":"",class:_(["code-viewer",{"code-viewer-plain":!e.toolbar}])},{default:ne(()=>[e.toolbar?(y(),b(ie,{key:0},[C("div",ve,[i(re,{modelValue:v.value,"onUpdate:modelValue":o[0]||(o[0]=p=>v.value=p),placeholder:m(t).t("$vuetify.chatroom.code.search"),"aria-label":m(t).t("$vuetify.chatroom.code.search"),"prepend-inner-icon":"$mdiMagnify",density:"compact","hide-details":"",class:"code-search"},null,8,["modelValue","placeholder","aria-label"]),i(ue),C("div",he,[i(w,{icon:"$mdiContentCopy",size:"small",variant:"text","aria-label":m(t).t("$vuetify.chatroom.code.copy"),onClick:T},null,8,["aria-label"]),i(w,{icon:n.value?"$mdiWrap":"$mdiFormatAlignLeft",size:"small",variant:"text","aria-label":m(t).t(n.value?"$vuetify.chatroom.code.disableWrap":"$vuetify.chatroom.code.enableWrap"),onClick:o[1]||(o[1]=p=>n.value=!n.value)},null,8,["icon","aria-label"]),i(w,{icon:"$mdiDownloadOutline",size:"small",variant:"text","aria-label":m(t).t("$vuetify.chatroom.code.download"),onClick:$},null,8,["aria-label"])])]),i(ce)],64)):V("",!0),c.value?(y(),b("div",ye,L(c.value),1)):V("",!0),C("pre",{class:_(["code-block",{wrap:n.value}])},[r.value?(y(),b("code",{key:0,class:"hljs",innerHTML:r.value},null,8,fe)):(y(),b("code",ge,L(h.value||m(t).t("$vuetify.chatroom.code.noOutput")),1))],2)]),_:1},8,["border","rounded","class"]))}});export{me as V,we as _};
@@ -1 +0,0 @@
1
- import{u as Ce}from"./useOperationLabels-DR8r6Vrl.js";import{d as Q,a as re,o as p,c as w,b as d,g as l,t as c,h as s,e as m,i as G,j,Y as se,n as x,O as ae,X as de,$ as Y,a1 as _e,r as R,a2 as Se,a3 as pe,k as ie,V as H,w as ve,p as S,q as J,_ as Re,Q as Be,z as oe,y as k,U as ce,A as F,a0 as qe,B as A,C as xe,a6 as fe}from"./index-Dt-pWiW1.js";import{d as ye}from"./utils-rtPwWNel.js";import{_ as Pe}from"./StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js";import{_ as X}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{V as me}from"./VSwitch-C0XNj1lR.js";const Ie={class:"panel-header compact-header"},Ae={class:"panel-title"},Ve={class:"computer-operation-scroll"},Le=Q({__name:"ComputerOperations",props:{operations:{},busy:{type:Boolean}},emits:["refresh"],setup(e,{emit:C}){const n=C,t=re(),{sourceLabel:v}=Ce();function f(a){if(a.action==="snapshot")return t.t("$vuetify.chatroom.computer.log.snapshot");if(a.action==="settings.set")return t.t("$vuetify.chatroom.computer.log.settings");if(a.action!=="action")return a.action;const o=b(a.input),i=Array.isArray(o.actions)?o.actions:[];return i.length?i.map(g).join(" · "):t.t("$vuetify.chatroom.computer.log.action")}function g(a){const o=b(a),i=String(o.type??"action"),h=typeof o.elementId=="number"?` #${o.elementId}`:"";switch(i){case"activate_app":return t.t("$vuetify.chatroom.computer.log.activateApp",String(o.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()||y(o));case"double_click":return t.t("$vuetify.chatroom.computer.log.doubleClick",h.trim()||y(o));case"right_click":return t.t("$vuetify.chatroom.computer.log.rightClick",h.trim()||y(o));case"move":return t.t("$vuetify.chatroom.computer.log.move",y(o));case"drag":return t.t("$vuetify.chatroom.computer.log.drag");case"scroll":return t.t("$vuetify.chatroom.computer.log.scroll",String(o.deltaY??0));case"keypress":return t.t("$vuetify.chatroom.computer.log.keypress",Array.isArray(o.keys)?o.keys.join("+"):"");case"type_text":case"set_value":return t.t("$vuetify.chatroom.computer.log.typeText",String(o.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(o.ms??0));default:return i}}function y(a){return`(${Math.round(Number(a.x??0))}, ${Math.round(Number(a.y??0))})`}function b(a){return a&&typeof a=="object"?a:{}}return(a,o)=>(p(),w(H,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[l("div",Ie,[l("div",Ae,c(s(t).t("$vuetify.chatroom.computer.recentOperations")),1),m(G,{size:"small",variant:"text",icon:"$mdiRefresh",loading:e.busy,"aria-label":s(t).t("$vuetify.chatroom.computer.refreshOperations"),onClick:o[0]||(o[0]=i=>n("refresh"))},null,8,["loading","aria-label"])]),m(j),l("div",Ve,[e.operations.length?(p(),w(se,{key:0,lines:"two",density:"compact",class:"computer-operation-list"},{default:d(()=>[(p(!0),x(ae,null,de(e.operations,i=>(p(),w(Y,{key:i.operationId},{append:d(()=>[m(Pe,{value:i.status},null,8,["value"])]),default:d(()=>[m(_e,null,{default:d(()=>[R(c(f(i)),1)]),_:2},1024),m(Se,null,{default:d(()=>[R(c(s(ye)(i.startedAt,s(pe)(s(t).current.value)))+" · "+c(s(v)(i.source)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(p(),w(ie,{key:1,class:"muted"},{default:d(()=>[R(c(s(t).t("$vuetify.chatroom.computer.noOperations")),1)]),_:1}))])]),_:1}))}}),Oe=X(Le,[["__scopeId","data-v-e1119403"]]),ze={class:"panel-header compact-header"},Te={class:"computer-preview-heading"},Ue={class:"panel-title"},De={key:0,class:"computer-preview-time"},Ne=["aria-busy"],Ee=["src","alt"],je={key:2,class:"computer-screen-empty"},We={key:3,class:"computer-preview-meta"},Me={class:"text-truncate"},Fe=Q({__name:"ComputerPreview",props:{preview:{},enabled:{type:Boolean},busy:{type:Boolean},remotePreviewBlocked:{type:Boolean}},emits:["refresh"],setup(e,{emit:C}){const n=e,t=C,v=re(),f=oe(()=>{const a=n.preview;return a?.screenshot?"/api/computer/preview/image?snapshotId="+encodeURIComponent(a.snapshotId)+"&v="+encodeURIComponent(String(a.revision)):""}),g=k(!1),y=k(!1);ve(f,a=>{g.value=!!a,y.value=!1},{immediate:!0});const b=oe(()=>{const a=n.preview?.capturedAt;return a?ye(a,pe(v.current.value)):""});return(a,o)=>(p(),w(H,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[l("div",ze,[l("div",Te,[l("div",Ue,c(s(v).t("$vuetify.chatroom.computer.latestScreen")),1),b.value?(p(),x("div",De,c(s(v).t("$vuetify.chatroom.computer.capturedAt",b.value)),1)):S("",!0)]),m(G,{size:"small",variant:"tonal","prepend-icon":"$mdiRefresh",loading:e.busy,disabled:!e.enabled,onClick:o[0]||(o[0]=i=>t("refresh"))},{default:d(()=>[R(c(s(v).t("$vuetify.chatroom.computer.refreshScreen")),1)]),_:1},8,["loading","disabled"])]),m(j),m(ie,{class:"computer-preview-content"},{default:d(()=>[e.remotePreviewBlocked?(p(),w(J,{key:0,type:"info",variant:"tonal",density:"compact",class:"mb-3"},{default:d(()=>[R(c(s(v).t("$vuetify.chatroom.computer.remoteDisabled")),1)]),_:1})):S("",!0),f.value?(p(),x("div",{key:1,class:"computer-screen-shell","aria-busy":g.value},[g.value?(p(),w(Re,{key:0,indeterminate:""})):S("",!0),y.value?(p(),w(J,{key:1,type:"error",variant:"tonal"},{default:d(()=>[R(c(s(v).t("$vuetify.chatroom.common.imageLoadFailed")),1)]),_:1})):(p(),x("img",{key:f.value,decoding:"async",onLoad:o[1]||(o[1]=i=>g.value=!1),onError:o[2]||(o[2]=i=>{g.value=!1,y.value=!0}),src:f.value,alt:s(v).t("$vuetify.chatroom.computer.latestScreen")},null,40,Ee))],8,Ne)):(p(),x("div",je,[m(Be,{icon:"$mdiMonitorScreenshot",size:"42"}),l("span",null,c(s(v).t("$vuetify.chatroom.computer.noSnapshot")),1)])),e.preview?(p(),x("div",We,[l("div",null,[l("span",null,c(s(v).t("$vuetify.chatroom.computer.activeApp")),1),l("strong",null,c(e.preview.activeApp||"—"),1)]),l("div",null,[l("span",null,c(s(v).t("$vuetify.chatroom.computer.activeWindow")),1),l("strong",Me,c(e.preview.activeWindow||"—"),1)]),l("div",null,[l("span",null,c(s(v).t("$vuetify.chatroom.computer.elements")),1),l("strong",null,c(e.preview.elementCount),1)])])):S("",!0)]),_:1})]),_:1}))}}),Ye=X(Fe,[["__scopeId","data-v-f2938466"]]),Ge={class:"panel-header compact-header"},He={class:"panel-title"},Je={class:"computer-status-row"},Qe={class:"computer-status-label"},Xe={class:"computer-status-value"},Ke={class:"computer-status-row"},Ze={class:"computer-status-label"},et={class:"computer-status-value"},tt={class:"computer-status-row"},st={class:"computer-status-label"},at={class:"computer-permission-value"},ot={class:"computer-status-row"},rt={class:"computer-status-label"},it={class:"computer-permission-value"},nt={class:"panel-header compact-header"},lt={class:"panel-title"},ut=Q({__name:"ComputerStatus",props:{status:{},settingsBusy:{type:Boolean},permissionBusy:{},permissionRequestsAllowed:{type:Boolean}},emits:["updateSetting","requestPermission"],setup(e,{emit:C}){const n=C,t=re();function v(a){return t.t(`$vuetify.chatroom.computer.platformStates.${a}`)}function f(a){return t.t(`$vuetify.chatroom.computer.helperStates.${a}`)}function g(a){return t.t(`$vuetify.chatroom.computer.permissionStates.${a}`)}function y(a){return a==="granted"?"is-granted":a==="denied"?"is-denied":"is-muted"}function b(a){const o=a.primary?` · ${t.t("$vuetify.chatroom.computer.primaryDisplay")}`:"";return`${a.width}×${a.height} · ${a.scale}x${o}`}return(a,o)=>e.status?(p(),x(ae,{key:0},[m(H,{rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[l("div",Ge,[l("div",He,c(s(t).t("$vuetify.chatroom.computer.title")),1)]),m(j),m(ie,{class:"computer-status-list"},{default:d(()=>[l("div",Je,[l("span",Qe,c(s(t).t("$vuetify.chatroom.computer.platform")),1),l("strong",Xe,c(v(e.status.platform)),1)]),l("div",Ke,[l("span",Ze,c(s(t).t("$vuetify.chatroom.computer.helper")),1),l("strong",et,c(f(e.status.helper)),1)]),l("div",tt,[l("span",st,c(s(t).t("$vuetify.chatroom.computer.accessibility")),1),l("div",at,[l("strong",{class:ce(["computer-permission-state",y(e.status.permissions.accessibility)])},c(g(e.status.permissions.accessibility)),3),e.status.platform==="macos"&&e.status.permissions.accessibility!=="granted"?(p(),w(G,{key:0,class:"computer-permission-btn",color:"primary",size:"small",variant:"tonal",loading:e.permissionBusy==="accessibility",disabled:!e.permissionRequestsAllowed||e.permissionBusy!==null,onClick:o[0]||(o[0]=i=>n("requestPermission","accessibility"))},{default:d(()=>[R(c(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):S("",!0)])]),l("div",ot,[l("span",rt,c(s(t).t("$vuetify.chatroom.computer.screenRecording")),1),l("div",it,[l("strong",{class:ce(["computer-permission-state",y(e.status.permissions.screenRecording)])},c(g(e.status.permissions.screenRecording)),3),e.status.platform==="macos"&&e.status.permissions.screenRecording!=="granted"?(p(),w(G,{key:0,class:"computer-permission-btn",color:"primary",size:"small",variant:"tonal",loading:e.permissionBusy==="screenRecording",disabled:!e.permissionRequestsAllowed||e.permissionBusy!==null,onClick:o[1]||(o[1]=i=>n("requestPermission","screenRecording"))},{default:d(()=>[R(c(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):S("",!0)])]),e.status.platform==="macos"&&!e.permissionRequestsAllowed&&(e.status.permissions.accessibility!=="granted"||e.status.permissions.screenRecording!=="granted")?(p(),w(J,{key:0,type:"info",variant:"tonal",density:"compact",class:"computer-permission-alert"},{default:d(()=>[R(c(s(t).t("$vuetify.chatroom.computer.permissionLocalOnly")),1)]),_:1})):S("",!0)]),_:1}),m(j),m(se,{density:"compact",class:"computer-settings-list"},{default:d(()=>[m(Y,{title:s(t).t("$vuetify.chatroom.computer.enabled")},{append:d(()=>[m(me,{"model-value":e.status.settings.enabled,"aria-label":s(t).t("$vuetify.chatroom.computer.enabled"),disabled:e.settingsBusy,"onUpdate:modelValue":o[2]||(o[2]=i=>n("updateSetting","enabled",!!i))},null,8,["model-value","aria-label","disabled"])]),_:1},8,["title"]),m(Y,{title:s(t).t("$vuetify.chatroom.computer.remoteAccess")},{append:d(()=>[m(me,{"model-value":e.status.settings.remoteAccess,"aria-label":s(t).t("$vuetify.chatroom.computer.remoteAccess"),disabled:e.settingsBusy,"onUpdate:modelValue":o[3]||(o[3]=i=>n("updateSetting","remoteAccess",!!i))},null,8,["model-value","aria-label","disabled"])]),_:1},8,["title"])]),_:1})]),_:1}),e.status.displays.length?(p(),w(H,{key:0,rounded:"xl",variant:"flat",border:"",class:"panel-card"},{default:d(()=>[l("div",nt,[l("div",lt,c(s(t).t("$vuetify.chatroom.computer.displays")),1)]),m(j),m(se,{density:"compact",class:"computer-display-list"},{default:d(()=>[(p(!0),x(ae,null,de(e.status.displays,i=>(p(),w(Y,{key:i.id,title:i.name,subtitle:b(i)},null,8,["title","subtitle"]))),128))]),_:1})]),_:1})):S("",!0)],64)):S("",!0)}}),ct=X(ut,[["__scopeId","data-v-5071a817"]]);function mt(e,C){const n=k(null),t=k(null),v=k([]),f=k(""),g=k(!1),y=k(!1),b=k(!1),a=k(!1),o=k(null),i=F(),h=F(),L=F(),O=F(),$=new Set,U=new Map;let P=!1,z=!1,D=null,T=!1;window.addEventListener("focus",le),K(),qe(()=>{window.removeEventListener("focus",le),T=!0,P=!1,$.clear(),U.clear(),i.invalidate(),h.invalidate(),L.invalidate(),O.invalidate()});const ne=oe(()=>["localhost","127.0.0.1","::1","[::1]"].includes(window.location.hostname));ve(e,()=>{he(C())});async function K(){f.value="",P=!1,$.clear(),O.invalidate(),await Promise.all([Z(),W(),te()])}async function he(r){if(r===null){await K();return}const u=[];if(r.status&&u.push(Z()),r.preview&&(!r.previewSnapshotId||t.value?.snapshotId!==r.previewSnapshotId)&&u.push(te()),r.operationsReset)P=!1,$.clear(),O.invalidate(),u.push(W());else if(r.operationIds.length){for(const _ of r.operationIds)$.add(_);P&&!z?u.push(ee()):z||u.push(W())}await Promise.all(u)}async function Z(){const r=i.begin();try{const u=await A("/computer/status",{signal:r.signal});i.isCurrent(r)&&(n.value=u)}catch(u){i.isCurrent(r)&&V(u)}}async function W(){const r=L.begin();z=!0,a.value=!0;try{const u=await A("/operations?pluginId=computer&limit=50",{signal:r.signal});if(T||!L.isCurrent(r))return;v.value=u,P=!0}catch(u){L.isCurrent(r)&&V(u)}finally{L.isCurrent(r)&&(z=!1,a.value=!1)}L.isCurrent(r)&&$.size&&await ee()}async function ge(r){if(T||!r.length)return;const u=O.begin(),_=await Promise.allSettled(r.map(async I=>{try{return await A("/operations/"+encodeURIComponent(I),{signal:u.signal})}catch(q){if(q instanceof fe&&q.status===404)return null;throw q}}));if(T||!O.isCurrent(u))return;const B=[...v.value];for(let I=0;I<_.length;I+=1){const q=_[I],N=r[I];if(q.status==="rejected"){const M=(U.get(N)??0)+1;M<=1?(U.set(N,M),$.add(N)):(U.delete(N),V(q.reason));continue}U.delete(N);const E=q.value;if(!E||E.pluginId!=="computer")continue;const ue=B.findIndex(M=>M.operationId===E.operationId);ue>=0?B[ue]=E:B.push(E)}B.sort((I,q)=>q.startedAt.localeCompare(I.startedAt)),v.value=B.slice(0,50)}function ee(){return D||(D=Promise.resolve().then(async()=>{for(;!T&&P&&!z&&$.size;){const r=[...$];$.clear(),await ge(r)}}).finally(()=>{D=null,!T&&P&&!z&&$.size&&ee()}),D)}async function te(){const r=h.begin();g.value=!1;try{const u=await A("/computer/preview",{signal:r.signal});h.isCurrent(r)&&(t.value=u)}catch(u){if(!h.isCurrent(r))return;if(dt(u)){t.value=null,g.value=!0;return}V(u)}}async function le(){if(n.value?.platform!=="macos"||n.value.permissions.accessibility==="granted"&&n.value.permissions.screenRecording==="granted")return;const r=i.begin();try{const u=await A("/computer/status",{signal:r.signal});i.isCurrent(r)&&(n.value=u)}catch{}}async function we(r,u){if(!b.value){b.value=!0,f.value="";try{await A("/computer/settings",{method:"PATCH",body:JSON.stringify({[r]:u})}),await Promise.all([Z(),te()])}catch(_){V(_)}finally{b.value=!1}}}async function be(r){if(!ne.value||o.value)return;o.value=r,f.value="";const u=r==="accessibility"?"/computer/permissions/accessibility/request":"/computer/permissions/screen-recording/request",_=i.begin();try{const B=await A(u,{method:"POST",signal:_.signal});i.isCurrent(_)&&(n.value=B)}catch(B){i.isCurrent(_)&&V(B)}finally{o.value=null}}async function $e(){if(y.value)return;const r=h.begin();y.value=!0,f.value="";try{const u=await A("/computer/snapshot",{method:"POST",signal:r.signal});if(!h.isCurrent(r))return;t.value=u,g.value=!1}catch(u){h.isCurrent(r)&&V(u)}finally{y.value=!1}}async function ke(){f.value="",P=!1,$.clear(),O.invalidate(),await W()}function V(r){f.value||(f.value=xe(r))}return{status:n,preview:t,operations:v,error:f,remotePreviewBlocked:g,snapshotBusy:y,settingsBusy:b,operationsBusy:a,permissionBusy:o,permissionRequestsAllowed:ne,load:K,updateSetting:we,requestPermission:be,refreshSnapshot:$e,refreshOperations:ke}}function dt(e){return!(e instanceof fe)||e.code!=="FORBIDDEN"||!e.details||typeof e.details!="object"?!1:"reason"in e.details&&e.details.reason==="remote_computer_disabled"}const pt={class:"computer-view"},vt=Q({__name:"ComputerView",props:{revision:{},changes:{}},setup(e){const C=e,n=mt(()=>C.revision,()=>C.changes);return(t,v)=>(p(),x("div",pt,[s(n).error.value?(p(),w(J,{key:0,type:"error",variant:"tonal"},{default:d(()=>[R(c(s(n).error.value),1)]),_:1})):S("",!0),m(Ye,{preview:s(n).preview.value,enabled:s(n).status.value?.settings.enabled??!1,busy:s(n).snapshotBusy.value,"remote-preview-blocked":s(n).remotePreviewBlocked.value,onRefresh:s(n).refreshSnapshot},null,8,["preview","enabled","busy","remote-preview-blocked","onRefresh"]),m(Oe,{operations:s(n).operations.value,busy:s(n).operationsBusy.value,onRefresh:s(n).refreshOperations},null,8,["operations","busy","onRefresh"]),m(ct,{status:s(n).status.value,"settings-busy":s(n).settingsBusy.value,"permission-busy":s(n).permissionBusy.value,"permission-requests-allowed":s(n).permissionRequestsAllowed.value,onUpdateSetting:s(n).updateSetting,onRequestPermission:s(n).requestPermission},null,8,["status","settings-busy","permission-busy","permission-requests-allowed","onUpdateSetting","onRequestPermission"])]))}}),$t=X(vt,[["__scopeId","data-v-2084f1f6"]]);export{$t as default};
@@ -1 +0,0 @@
1
- import{d as q,a as L,A as P,a5 as A,B,C as x,o as l,n as _,c as v,b as f,r as D,t as u,q as G,p as g,e as p,g as o,h,i as O,V as y,O as z,X as E,y as b,b8 as j,z as F,_ as H,j as J}from"./index-Dt-pWiW1.js";import{V as I}from"./VSwitch-C0XNj1lR.js";import{_ as X}from"./_plugin-vue_export-helper-DlAUqK2U.js";const K={class:"mcp-tools-view"},Q={class:"panel-header"},W={class:"panel-title"},Y={class:"mcp-tool-group-header"},Z={class:"min-w-0"},ee={class:"panel-title"},ae={class:"mcp-tool-list"},te=["title"],se={class:"mcp-tool-heading"},oe={class:"empty-inline"},ne=q({__name:"McpToolsView",setup(le){const i=L(),c=b([]),r=b(!1),d=b(""),n=j(new Set),m=P(),M=F(()=>{const e=new Map;for(const a of c.value){const t=e.get(a.pluginId)??[];t.push(a),e.set(a.pluginId,t)}return[...e.entries()].map(([a,t])=>({pluginId:a,tools:t}))});A(()=>{w()});async function w(){if(n.size)return;const e=m.begin();r.value=!0,d.value="";try{const a=await B("/mcp/tools",{signal:e.signal});m.isCurrent(e)&&(c.value=a)}catch(a){m.isCurrent(e)&&(d.value=x(a))}finally{m.isCurrent(e)&&(r.value=!1)}}async function V(e,a){if(!(n.has(e.name)||e.enabled===a)){m.invalidate(),r.value=!1,n.add(e.name),d.value="";try{const t=await B(`/mcp/tools/${encodeURIComponent(e.name)}`,{method:"PATCH",body:JSON.stringify({enabled:a})});c.value=c.value.map(s=>s.name===t.name?t:s)}catch(t){d.value=x(t)}finally{n.delete(e.name)}}}async function N(e,a){const t=e.tools.filter(s=>s.enabled!==a&&!n.has(s.name));await Promise.all(t.map(s=>V(s,a)))}function k(e){return["workspace","process","computer","agent"].includes(e)?i.t(`$vuetify.chatroom.mcpTools.plugins.${e}`):e}const T=new Set(["workspace_list","workspace_info","process_start","process_read","process_write","process_kill","computer_snapshot","computer_action","agent_providers","agent_provider_details","agent_models","agent_sessions","agent_create","agent_send","agent_steer","agent_review","agent_history","agent_configure","agent_respond","agent_interrupt","agent_switch_provider"]);function C(e){return T.has(e.name)?i.t("$vuetify.chatroom.mcpTools.tools."+e.name+".title"):e.title}function R(e){return T.has(e.name)?i.t("$vuetify.chatroom.mcpTools.tools."+e.name+".description"):e.description}function S(e){return e.tools.some(a=>a.enabled)}function $(e){return e.tools.every(a=>a.enabled)}return(e,a)=>(l(),_("div",K,[d.value?(l(),v(G,{key:0,type:"error",variant:"tonal",density:"compact"},{default:f(()=>[D(u(d.value),1)]),_:1})):g("",!0),p(y,{class:"panel-card"},{default:f(()=>[o("div",Q,[o("div",null,[o("div",W,u(h(i).t("$vuetify.chatroom.mcpTools.title")),1)]),p(O,{class:"mcp-tools-refresh",icon:"$mdiRefresh",size:"small",variant:"text",loading:r.value,disabled:n.size>0,"aria-label":h(i).t("$vuetify.chatroom.mcpTools.refresh"),onClick:w},null,8,["loading","disabled","aria-label"])])]),_:1}),r.value&&!c.value.length?(l(),v(H,{key:1,indeterminate:"",rounded:""})):g("",!0),(l(!0),_(z,null,E(M.value,t=>(l(),v(y,{key:t.pluginId,class:"panel-card mcp-tool-group"},{default:f(()=>[o("div",Y,[o("div",Z,[o("div",ee,u(k(t.pluginId)),1)]),p(I,{class:"mcp-tool-switch","model-value":$(t),indeterminate:S(t)&&!$(t),color:"primary",density:"compact","hide-details":"",inset:"",disabled:t.tools.some(s=>n.has(s.name)),"aria-label":h(i).t("$vuetify.chatroom.mcpTools.togglePlugin",k(t.pluginId)),"onUpdate:modelValue":s=>N(t,!!s)},null,8,["model-value","indeterminate","disabled","aria-label","onUpdate:modelValue"])]),p(J),o("div",ae,[(l(!0),_(z,null,E(t.tools,s=>(l(),_("div",{key:s.name,class:"mcp-tool-row"},[o("div",{class:"mcp-tool-copy",title:R(s)},[o("div",se,[o("strong",null,u(C(s)),1),o("code",null,u(s.name),1)])],8,te),p(I,{class:"mcp-tool-switch","model-value":s.enabled,color:"primary",density:"compact","hide-details":"",inset:"",loading:n.has(s.name),"aria-label":C(s),"onUpdate:modelValue":U=>V(s,!!U)},null,8,["model-value","loading","aria-label","onUpdate:modelValue"])]))),128))])]),_:2},1024))),128)),!r.value&&!c.value.length?(l(),v(y,{key:2,class:"panel-card"},{default:f(()=>[o("div",oe,u(h(i).t("$vuetify.chatroom.mcpTools.empty")),1)]),_:1})):g("",!0)]))}}),de=X(ne,[["__scopeId","data-v-448db2d1"]]);export{de as default};
@@ -1 +0,0 @@
1
- .mcp-tools-view[data-v-448db2d1]{display:grid;gap:14px}.mcp-tools-refresh[data-v-448db2d1]{flex:0 0 auto}.mcp-tool-group-header[data-v-448db2d1],.mcp-tool-row[data-v-448db2d1]{display:grid;grid-template-columns:minmax(0,1fr) 52px;align-items:center;column-gap:18px}.mcp-tool-group-header[data-v-448db2d1]{min-height:56px;padding:10px 18px}.mcp-tool-list[data-v-448db2d1]{display:grid}.mcp-tool-row[data-v-448db2d1]{min-width:0;min-height:54px;padding:8px 18px;border-bottom:1px solid rgb(var(--v-theme-outline),.08)}.mcp-tool-row[data-v-448db2d1]:last-child{border-bottom:0}.mcp-tool-copy[data-v-448db2d1]{width:100%;min-width:0}.mcp-tool-heading[data-v-448db2d1]{display:flex;min-width:0;align-items:baseline;gap:12px}.mcp-tool-heading strong[data-v-448db2d1],.mcp-tool-heading code[data-v-448db2d1]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mcp-tool-heading strong[data-v-448db2d1]{flex:0 1 auto;font-size:13px;font-weight:650}.mcp-tool-heading code[data-v-448db2d1]{flex:1 1 0;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.mcp-tool-switch[data-v-448db2d1]{justify-self:end}.mcp-tool-switch[data-v-448db2d1] .v-input__control,.mcp-tool-switch[data-v-448db2d1] .v-selection-control{inline-size:max-content}.mcp-tool-switch[data-v-448db2d1] .v-selection-control{flex:0 0 auto}@media(max-width:640px){.mcp-tools-view[data-v-448db2d1]{gap:12px}.mcp-tool-group-header[data-v-448db2d1],.mcp-tool-row[data-v-448db2d1]{column-gap:10px;padding-inline:14px}.mcp-tool-group-header[data-v-448db2d1]{min-height:54px}.mcp-tool-row[data-v-448db2d1]{min-height:52px;padding-block:7px}.mcp-tool-heading[data-v-448db2d1]{gap:8px}}@media(max-width:380px){.mcp-tool-group-header[data-v-448db2d1],.mcp-tool-row[data-v-448db2d1]{column-gap:8px;padding-inline:12px}.mcp-tool-heading[data-v-448db2d1]{gap:6px}}
@@ -1,4 +0,0 @@
1
- import{A as te,a0 as Ie,w as Z,B as Q,C as W,a6 as de,y as V,d as oe,a as ie,o as m,c as M,b as r,g as i,i as F,h as e,p as O,t as n,a3 as _e,e as s,j as se,n as U,r as g,V as ee,z as ke,O as fe,X as we,U as be,G as Ce,a9 as Ve,aa as Ae,ae as Se,Z as xe,aY as Me,q as ae,af as Oe,f as Be,k as Le,s as Re,v as De}from"./index-Dt-pWiW1.js";import{c as Te}from"./entity-refresh-queue-wQii8Dl5.js";import{u as qe}from"./useMasterDetailFocus-D0j-KcXv.js";import{u as pe}from"./useOperationLabels-DR8r6Vrl.js";import{d as Ee,c as Ue,a as ze}from"./utils-rtPwWNel.js";import{_ as K}from"./CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js";import{_ as me}from"./StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js";import{V as Pe,a as ne,b as Ne,c as le}from"./VTabs-CHj39Ket.js";import{V as Fe}from"./VSpacer-Cl-QiwaM.js";const X=50,H=1e3;function Ge(a,y){const o=V([]),l=V(null),h=V(null),$=V("all"),u=V(!1),B=V(!1),p=V(!1),v=V(!1),f=V(""),L=V(!1),I=te(),_=te(),R=te(),z=new Map;let w=!1,P=null,k=0,A=!1;const T=Te({keyOf:t=>t.operationId,merge:(t,c)=>c,isReady:()=>w,isLoading:()=>u.value,isDisposed:()=>A,refreshAll:G,applyBatch:C});Ie(()=>{A=!0,w=!1,T.reset(),z.clear(),I.invalidate(),_.invalidate(),R.invalidate()}),Z($,()=>{w=!1,P=null,T.reset(),R.invalidate(),G()},{immediate:!0}),Z(a,()=>{ge(y())}),Z(l,()=>{k+=1,re(k)});function Y(t,c=null){const d=new URLSearchParams({limit:String(t)});return $.value!=="all"&&d.set("status",$.value),c&&(d.set("beforeStartedAt",c.startedAt),d.set("beforeOperationId",c.operationId)),`/operations?${d}`}async function G(){if(A)return;w=!1;const t=I.begin();u.value=!0,B.value=!1,f.value="";try{const c=await Q(Y(X),{signal:t.signal});if(A||!I.isCurrent(t))return;if(o.value=c.slice(0,H),L.value=!1,P=ve(c),p.value=c.length===X,w=!0,l.value){const d=c.find(S=>S.operationId===l.value);d?(_.invalidate(),h.value=d):re(k)}}catch(c){I.isCurrent(t)&&(f.value=W(c))}finally{I.isCurrent(t)&&(u.value=!1,w&&T.drain())}}async function b(){if(u.value||B.value||!p.value)return;const t=I.begin(),c=P;B.value=!0;try{const d=await Q(Y(X,c),{signal:t.signal});if(A||!I.isCurrent(t))return;d.length&&(P=ve(d));const S=new Set(o.value.map(x=>x.operationId)),j=[...o.value,...d.filter(x=>!S.has(x.operationId))];o.value=j.slice(0,H),L.value=j.length>H||o.value.length>=H&&d.length===X,p.value=!L.value&&d.length===X}catch(d){I.isCurrent(t)&&(f.value=W(d))}finally{I.isCurrent(t)&&(B.value=!1)}}async function C(t){if(A||!t.length)return;const c=R.begin(),d=l.value,S=k,j=await Promise.allSettled(t.map(async E=>{try{return await Q(`/operations/${encodeURIComponent(E.operationId)}`,{signal:c.signal})}catch(D){if(D instanceof de&&D.status===404)return null;throw D}}));if(A||!R.isCurrent(c))return;let x=[...o.value];for(let E=0;E<j.length;E+=1){const D=j[E],ce=t[E];if(D.status==="rejected"){q(ce,D.reason);continue}z.delete(ce.operationId);const N=D.value;if(!N)continue;const J=x.findIndex($e=>$e.operationId===N.operationId);He(N,$.value)?J>=0?x[J]=N:x.push(N):J>=0&&x.splice(J,1),l.value===N.operationId&&d===N.operationId&&k===S&&(_.invalidate(),h.value=N)}x.sort((E,D)=>D.startedAt.localeCompare(E.startedAt)||D.operationId.localeCompare(E.operationId)),x.length>H&&(L.value=!0,p.value=!1),o.value=x.slice(0,H)}function q(t,c){const d=(z.get(t.operationId)??0)+1;if(d<=1&&!A){z.set(t.operationId,d),T.enqueue([t]);return}z.delete(t.operationId),f.value=W(c)}async function re(t=k){const c=l.value,d=_.begin();if(!c){h.value=null;return}try{const S=await Q(`/operations/${encodeURIComponent(c)}`,{signal:d.signal});_.isCurrent(d)&&l.value===c&&k===t&&(h.value=S)}catch(S){if(!_.isCurrent(d))return;if(S instanceof de&&S.status===404){l.value===c&&k===t&&ue();return}f.value=W(S)}}async function he(){if(v.value)return!1;v.value=!0,f.value="",I.invalidate(),R.invalidate(),_.invalidate();try{return await Q("/operations",{method:"DELETE"}),l.value=null,h.value=null,w=!1,P=null,await G(),!0}catch(t){return f.value=W(t),!1}finally{v.value=!1}}function ye(t){l.value=t.operationId,h.value=t}function ue(){l.value=null,h.value=null,_.invalidate()}function ge(t){if(!A){if(t===null){T.enqueue(null);return}if(!t.clearAll){T.enqueue(t.changes);return}R.invalidate(),z.clear(),T.reset(),l.value=null,h.value=null,_.invalidate(),o.value=[],P=null,p.value=!1,L.value=!1,w=!1,G()}}return{events:o,selected:l,detail:h,filter:$,loading:u,loadingMore:B,hasMore:p,clearing:v,error:f,limitReached:L,loadInitial:G,loadMore:b,select:ye,clearSelection:ue,clearHistory:he}}function ve(a){const y=a.at(-1);return y?{startedAt:y.startedAt,operationId:y.operationId}:null}function He(a,y){return y==="all"||a.status===y}const je={class:"panel-header operation-detail-header"},Qe={class:"min-w-0 detail-header-title"},We={class:"panel-title text-truncate"},Xe={class:"panel-subtitle"},Ze={class:"detail-facts"},Ye={class:"mono"},Je={key:0},Ke={class:"mono"},et={class:"empty-panel"},tt=oe({__name:"OperationDetail",props:{event:{},showBack:{type:Boolean}},emits:["back"],setup(a){const y=a,o=V("input"),l=ie(),{actionLabel:h,sourceLabel:$}=pe(),u=ke(()=>B(y.event?.output));function B(p){if(!p||typeof p!="object"||Array.isArray(p))return null;const v=p;if(typeof v.stdout!="string"&&typeof v.stderr!="string")return null;const f=typeof v.stdout=="string"?v.stdout:"",L=typeof v.stderr=="string"&&v.stderr?`
2
-
3
- [stderr]
4
- ${v.stderr}`:"";return`${f}${L}`}return(p,v)=>a.event?(m(),M(ee,{key:0,class:"panel-card"},{default:r(()=>[i("div",je,[a.showBack?(m(),M(F,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":e(l).t("$vuetify.chatroom.operations.back"),onClick:v[0]||(v[0]=f=>p.$emit("back"))},null,8,["aria-label"])):O("",!0),i("div",Qe,[i("div",We,n(e(h)(a.event.pluginId,a.event.action)),1),i("div",Xe,n(e($)(a.event.source))+" · "+n(e(Ee)(a.event.startedAt,e(_e)(e(l).current.value))),1)]),s(me,{value:a.event.status},null,8,["value"])]),s(se),i("div",Ze,[i("div",null,[i("span",null,n(e(l).t("$vuetify.chatroom.detail.plugin")),1),i("strong",Ye,n(a.event.pluginId),1)]),i("div",null,[i("span",null,n(e(l).t("$vuetify.chatroom.detail.duration")),1),i("strong",null,n(a.event.durationMs===null?e(l).t("$vuetify.chatroom.statuses.running"):`${a.event.durationMs} ms`),1)]),a.event.processId?(m(),U("div",Je,[i("span",null,n(e(l).t("$vuetify.chatroom.detail.process")),1),i("strong",Ke,n(a.event.processId.slice(0,16)),1)])):O("",!0)]),s(Pe,{modelValue:o.value,"onUpdate:modelValue":v[1]||(v[1]=f=>o.value=f),density:"compact",class:"detail-tabs"},{default:r(()=>[s(ne,{value:"input"},{default:r(()=>[g(n(e(l).t("$vuetify.chatroom.detail.input")),1)]),_:1}),s(ne,{value:"output"},{default:r(()=>[g(n(e(l).t("$vuetify.chatroom.detail.output")),1)]),_:1}),a.event.error?(m(),M(ne,{key:0,value:"failure"},{default:r(()=>[g(n(e(l).t("$vuetify.chatroom.detail.error")),1)]),_:1})):O("",!0)]),_:1},8,["modelValue"]),s(se),s(Ne,{modelValue:o.value,"onUpdate:modelValue":v[2]||(v[2]=f=>o.value=f),touch:!1},{default:r(()=>[s(le,{value:"input",class:"pa-3"},{default:r(()=>[s(K,{value:a.event.input},null,8,["value"])]),_:1}),s(le,{value:"output",class:"pa-3"},{default:r(()=>[u.value!==null?(m(),M(K,{key:0,text:u.value??"",filename:"operation-terminal.txt",highlight:a.event.status!=="running"},null,8,["text","highlight"])):(m(),M(K,{key:1,value:a.event.output,highlight:a.event.status!=="running"},null,8,["value","highlight"]))]),_:1}),a.event.error?(m(),M(le,{key:0,value:"failure",class:"pa-3"},{default:r(()=>[s(K,{value:a.event.error},null,8,["value"])]),_:1})):O("",!0)]),_:1},8,["modelValue"])]),_:1})):(m(),M(ee,{key:1,class:"panel-card"},{default:r(()=>[i("div",et,n(e(l).t("$vuetify.chatroom.operations.select")),1)]),_:1}))}}),at={key:0,class:"responsive-record-list"},nt=["aria-current","data-operation-id","onClick"],lt={class:"responsive-record-main"},st={class:"responsive-record-title"},ot={class:"responsive-record-subtitle mono"},it={class:"responsive-record-meta"},rt={class:"responsive-record-side"},ut={key:1,class:"empty-inline"},ct=oe({__name:"OperationTable",props:{events:{},selected:{}},emits:["select"],setup(a){const y=ie(),{actionLabel:o,sourceLabel:l}=pe();return(h,$)=>a.events.length?(m(),U("div",at,[(m(!0),U(fe,null,we(a.events,u=>(m(),U("button",{key:u.operationId,type:"button",class:be(["responsive-record-row",{"selected-row":a.selected===u.operationId}]),"aria-current":a.selected===u.operationId?"true":void 0,"data-operation-id":u.operationId,onClick:B=>h.$emit("select",u)},[i("div",lt,[i("div",st,n(e(o)(u.pluginId,u.action)),1),i("div",ot,n(u.pluginId),1)]),i("div",it,[i("span",null,n(e(Ue)(u.startedAt)),1),i("span",null,n(e(l)(u.source)),1),i("span",null,n(u.durationMs===null?e(y).t("$vuetify.chatroom.statuses.running"):e(ze)(u.durationMs)),1)]),i("div",rt,[s(me,{value:u.status},null,8,["value"])])],10,nt))),128))])):(m(),U("div",ut,n(e(y).t("$vuetify.chatroom.operations.empty")),1))}}),dt={ref:"layout",class:"master-detail-layout operations-layout"},vt={key:0,class:"master-pane"},ft={class:"panel-header operations-header"},pt={class:"panel-title"},mt={class:"panel-subtitle"},ht={class:"operations-controls"},yt={key:1,ref:"detailPane",class:"detail-pane",tabindex:"-1"},At=oe({__name:"OperationsView",props:{revision:{},changes:{}},setup(a){const y=a,o=ie(),{mdAndDown:l}=Ce(),h=Ve("loadSentinel"),$=V(!1),{focusDetail:u,focusMaster:B}=qe(l),p=Ge(()=>y.revision,()=>y.changes),{events:v,selected:f,detail:L,filter:I,loadingMore:_,hasMore:R,clearing:z,error:w,limitReached:P}=p;let k=null;Z(h,b=>{k?.disconnect(),k=null,b&&(k=new IntersectionObserver(C=>{C.some(q=>q.isIntersecting)&&p.loadMore()},{rootMargin:"240px 0px"}),k.observe(b))},{flush:"post"}),Z(()=>[v.value.length,R.value,_.value],()=>{A()},{flush:"post"}),Ae(()=>k?.disconnect());async function A(){await Se();const b=h.value;!b||_.value||!R.value||b.getBoundingClientRect().top<=window.innerHeight+240&&p.loadMore()}function T(b){p.select(b),u()}function Y(){const b=f.value;p.clearSelection(),b&&B(`[data-operation-id="${CSS.escape(b)}"]`)}async function G(){await p.clearHistory()&&($.value=!1)}return(b,C)=>(m(),U(fe,null,[i("div",dt,[!e(l)||!e(f)?(m(),U("div",vt,[s(ee,{class:"panel-card"},{default:r(()=>[i("div",ft,[i("div",null,[i("div",pt,n(e(o).t("$vuetify.chatroom.operations.title")),1),i("div",mt,n(e(o).t("$vuetify.chatroom.operations.subtitle")),1)]),i("div",ht,[s(xe,{modelValue:e(I),"onUpdate:modelValue":C[0]||(C[0]=q=>Me(I)?I.value=q:null),mandatory:"",variant:"text",class:"record-filters"},{default:r(()=>[s(F,{value:"all",size:"small"},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.all")),1)]),_:1}),s(F,{value:"running",size:"small"},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.running")),1)]),_:1}),s(F,{value:"error",size:"small"},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.errors")),1)]),_:1}),s(F,{value:"success",size:"small"},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.success")),1)]),_:1})]),_:1},8,["modelValue"]),s(F,{"prepend-icon":"$mdiDeleteSweepOutline",variant:"text",size:"small",class:"operations-clear",disabled:!e(v).length,onClick:C[1]||(C[1]=q=>$.value=!0)},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.clear")),1)]),_:1},8,["disabled"])])]),s(se),e(w)?(m(),M(ae,{key:0,type:"error",variant:"tonal",density:"compact"},{default:r(()=>[g(n(e(w)),1)]),_:1})):O("",!0),s(ct,{events:e(v),selected:e(f),onSelect:T},null,8,["events","selected"]),e(P)?(m(),M(ae,{key:1,type:"info",variant:"tonal",density:"compact",class:"operation-window-limit"},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.windowLimit")),1)]),_:1})):O("",!0),e(R)||e(_)?(m(),U("div",{key:2,ref_key:"loadSentinel",ref:h,class:"operation-load-sentinel","aria-hidden":"true"},[e(_)?(m(),M(Oe,{key:0,indeterminate:"",size:"20",width:"2"})):O("",!0)],512)):O("",!0)]),_:1})])):O("",!0),!e(l)||e(f)?(m(),U("div",yt,[e(l)&&e(f)&&e(w)?(m(),M(ae,{key:0,type:"error",variant:"tonal",density:"compact"},{default:r(()=>[g(n(e(w)),1)]),_:1})):O("",!0),s(tt,{event:e(L),"show-back":e(l),onBack:Y},null,8,["event","show-back"])],512)):O("",!0)],512),s(De,{modelValue:$.value,"onUpdate:modelValue":C[3]||(C[3]=q=>$.value=q),width:"auto","max-width":"90vw"},{default:r(()=>[s(ee,null,{default:r(()=>[s(Be,null,{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.clearTitle")),1)]),_:1}),s(Le,null,{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.clearDescription")),1)]),_:1}),s(Re,null,{default:r(()=>[s(Fe),s(F,{variant:"text",onClick:C[2]||(C[2]=q=>$.value=!1)},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),s(F,{color:"error",variant:"flat",loading:e(z),onClick:G},{default:r(()=>[g(n(e(o).t("$vuetify.chatroom.operations.clearConfirm")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue"])],64))}});export{At as default};
@@ -1,4 +0,0 @@
1
- import{A as H,a0 as ve,w as X,B,C as U,y as R,a6 as ee,z as te,d as K,a as se,o as f,c as b,b as $,g as s,i as L,h as t,p as O,t as i,r as oe,a7 as ae,e as d,Y as re,$ as le,a8 as ne,j,V as G,n as w,Q as Y,O as ye,X as he,m as Z,ab as F,U as J,a3 as $e,af as ge,G as Ie,q as _e}from"./index-Dt-pWiW1.js";import{c as Ce}from"./entity-refresh-queue-wQii8Dl5.js";import{u as ke}from"./useMasterDetailFocus-D0j-KcXv.js";import{_ as W}from"./CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js";import{_ as ie}from"./StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js";import{d as be,a as we}from"./utils-rtPwWNel.js";import"./VSpacer-Cl-QiwaM.js";function Ae(e,n){const r=R([]),c=R(null),o=R(null),a=R(""),h=R(!1),u=H(),A=H();let V=!1,x=!1;const S=new Map,D=new Set;let _=0,p=!1;const C=Ce({keyOf:l=>l.processId,merge:xe,isReady:()=>x,isLoading:()=>h.value,isDisposed:()=>p,refreshAll:M,applyBatch:de});ve(()=>{p=!0,x=!1,C.reset(),S.clear(),u.invalidate(),A.invalidate();for(const l of D)l.abort();D.clear()});const ce=te(()=>{if(!o.value)return"";const l=o.value.stderr?`
2
-
3
- [stderr]
4
- ${o.value.stderr}`:"";return`${o.value.stdout}${l}`});X(e,()=>{if(!V){V=!0,M();return}C.enqueue(n())},{immediate:!0}),X(c,()=>{_+=1,Q(_)});async function M(){if(p)return;x=!1;const l=u.begin();h.value=!0,a.value="";try{const y=await B("/processes",{signal:l.signal});if(p||!u.isCurrent(l))return;r.value=y,x=!0,c.value&&!y.some(v=>v.processId===c.value)?N():c.value&&Q()}catch(y){u.isCurrent(l)&&(a.value=U(y))}finally{u.isCurrent(l)&&(h.value=!1,x&&C.drain())}}async function de(l){if(p||!l.length)return;const y=u.begin();a.value="";const v=c.value,k=_,P=await Promise.allSettled(l.map(async m=>{if(m.deleted)return{processId:m.processId,deleted:!0};try{if(m.processId===v){const z=await B(`/processes/${encodeURIComponent(m.processId)}`,{signal:y.signal});return{processId:m.processId,deleted:!1,summary:Oe(z),snapshot:z}}if(m.output&&!m.summary)return{processId:m.processId,deleted:!1,summary:null,snapshot:null};const I=await B(`/processes/${encodeURIComponent(m.processId)}/summary`,{signal:y.signal});return{processId:m.processId,deleted:!1,summary:I,snapshot:null}}catch(I){if(E(I))return{processId:m.processId,deleted:!0};throw I}}));if(p||!u.isCurrent(y))return;let q=[...r.value];for(let m=0;m<P.length;m+=1){const I=P[m],z=l[m];if(I.status==="rejected"){ue(z,I.reason);continue}S.delete(z.processId);const g=I.value;if(g.deleted){q=q.filter(T=>T.processId!==g.processId),c.value===g.processId&&N();continue}if(g.summary){const T=q.findIndex(fe=>fe.processId===g.processId);T>=0?q[T]=g.summary:q.push(g.summary)}g.snapshot&&c.value===g.processId&&v===g.processId&&_===k&&(A.invalidate(),o.value=g.snapshot)}r.value=q.sort((m,I)=>I.startedAt.localeCompare(m.startedAt))}function ue(l,y){const v=(S.get(l.processId)??0)+1;if(v<=1&&!p){S.set(l.processId,v),C.enqueue([l]);return}S.delete(l.processId),a.value=U(y)}async function Q(l=_){const y=A.begin(),v=c.value;if(!v){o.value=null;return}try{const k=await B(`/processes/${encodeURIComponent(v)}`,{signal:y.signal});A.isCurrent(y)&&c.value===v&&_===l&&(o.value=k)}catch(k){if(!A.isCurrent(y))return;if(E(k)){N(),M();return}a.value=U(k)}}async function pe(l,y){if(p)return;a.value="";const v=new AbortController;D.add(v);let k=!1;try{await B(`/processes/${encodeURIComponent(l)}/${y?"kill":"terminate"}`,{method:"POST",signal:v.signal})}catch(P){if(p||v.signal.aborted)return;if(!E(P)){a.value=U(P);return}k=P instanceof ee&&P.code==="NOT_FOUND"}finally{D.delete(v)}p||v.signal.aborted||(C.enqueue([{processId:l,summary:!0,output:!0,deleted:k}]),x&&await C.drain())}function me(l){c.value!==l&&(o.value=null,c.value=l)}function N(){c.value=null,o.value=null,A.invalidate()}return{items:r,selected:c,detail:o,error:a,loading:h,processOutput:ce,loadInitial:M,select:me,clearSelection:N,stop:pe}}function xe(e,n){return{processId:n.processId,output:!!(e?.output||n.output),summary:!!(e?.summary||n.summary),deleted:!!(e?.deleted||n.deleted)}}function Oe(e){return{processId:e.processId,command:e.command,args:e.args,state:e.state,startedAt:e.startedAt,durationMs:e.durationMs}}function E(e){return e instanceof ee&&(e.code==="NOT_FOUND"||e.code==="CONFLICT")}const Se={class:"panel-header process-detail-header"},Pe={class:"min-w-0 detail-header-title"},Ve={class:"panel-title text-truncate"},De={class:"panel-subtitle mono text-truncate"},qe={class:"process-detail-actions"},ze={class:"process-output"},Be={class:"process-full-command"},Re={class:"detail-section-label"},Le={class:"detail-facts"},Me={class:"empty-panel"},Ne=K({__name:"ProcessDetail",props:{detail:{},output:{},compact:{type:Boolean}},emits:["back","stop"],setup(e){const n=e,r=se(),c=te(()=>n.detail?[n.detail.command,...n.detail.args].map(o).join(" "):"");function o(a){return a?/^[A-Za-z0-9_@%+=:,./-]+$/.test(a)?a:`'${a.replaceAll("'","'\\''")}'`:"''"}return(a,h)=>e.detail?(f(),b(G,{key:0,class:"panel-card process-detail-card"},{default:$(()=>[s("div",Se,[e.compact?(f(),b(L,{key:0,icon:"$mdiArrowLeft",size:"small",variant:"text","aria-label":t(r).t("$vuetify.chatroom.processes.back"),onClick:h[0]||(h[0]=u=>a.$emit("back"))},null,8,["aria-label"])):O("",!0),s("div",Pe,[s("div",Ve,i(e.detail.command),1),s("div",De,i(e.detail.processId),1)]),s("div",qe,[e.detail.state!=="running"?(f(),b(ie,{key:0,value:e.detail.state},null,8,["value"])):O("",!0),e.detail.state==="running"?(f(),b(L,{key:1,"prepend-icon":"$mdiStopCircleOutline",size:"x-small",variant:"tonal",color:"warning",class:"detail-action-btn",onClick:h[1]||(h[1]=u=>a.$emit("stop",e.detail.processId,!1))},{default:$(()=>[oe(i(t(r).t("$vuetify.chatroom.processes.terminate")),1)]),_:1})):O("",!0),e.detail.state==="running"?(f(),b(ae,{key:2},{activator:$(({props:u})=>[d(L,ne(u,{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:$(()=>[d(re,{density:"compact"},{default:$(()=>[d(le,{title:t(r).t("$vuetify.chatroom.processes.kill"),"prepend-icon":"$mdiCloseOctagonOutline",onClick:h[2]||(h[2]=u=>a.$emit("stop",e.detail.processId,!0))},null,8,["title"])]),_:1})]),_:1})):O("",!0)])]),d(j),s("div",ze,[d(W,{text:e.output,filename:"output.txt",highlight:e.detail.state!=="running"},null,8,["text","highlight"])]),d(j),s("div",Be,[s("div",Re,i(t(r).t("$vuetify.chatroom.processes.fullCommand")),1),d(W,{text:c.value,filename:"command.sh",language:"bash",toolbar:!1},null,8,["text"])]),d(j),s("div",Le,[s("div",null,[s("span",null,i(t(r).t("$vuetify.chatroom.processes.pid")),1),s("strong",null,i(e.detail.pid??"—"),1)]),s("div",null,[s("span",null,i(t(r).t("$vuetify.chatroom.processes.exit")),1),s("strong",null,i(e.detail.exitCode??"—"),1)]),s("div",null,[s("span",null,i(t(r).t("$vuetify.chatroom.processes.timeout")),1),s("strong",null,i(e.detail.timedOut?t(r).t("$vuetify.chatroom.processes.yes"):t(r).t("$vuetify.chatroom.processes.no")),1)])])]),_:1})):(f(),b(G,{key:1,class:"panel-card"},{default:$(()=>[s("div",Me,i(t(r).t("$vuetify.chatroom.processes.select")),1)]),_:1}))}}),Te={class:"panel-header"},Ue={class:"panel-title"},je={class:"panel-subtitle"},Fe={key:0,class:"panel-error",role:"alert"},Ee={key:1,class:"process-record-list",role:"grid"},Ge={class:"process-record-header",role:"row"},Ke={role:"columnheader"},Qe={role:"columnheader"},He={role:"columnheader"},Xe={class:"process-record-duration",role:"columnheader"},Ye={role:"columnheader"},Ze=["aria-selected","data-process-id","onClick","onKeydown"],Je={class:"process-record-main"},We=["title"],et=["title"],tt={class:"process-record-meta"},st={class:"process-record-started",role:"gridcell"},ot={class:"process-record-duration",role:"gridcell"},at={class:"process-record-side",role:"gridcell"},rt={key:2,class:"empty-inline"},lt=K({__name:"ProcessList",props:{items:{},selected:{},error:{}},emits:["select","stop"],setup(e){const n=se();return(r,c)=>(f(),b(G,{class:"panel-card"},{default:$(()=>[s("div",Te,[s("div",null,[s("div",Ue,i(t(n).t("$vuetify.chatroom.processes.title")),1),s("div",je,i(t(n).t("$vuetify.chatroom.processes.subtitle")),1)])]),d(j),e.error?(f(),w("div",Fe,[d(Y,{icon:"$mdiAlertCircleOutline",size:"18"}),s("span",null,i(e.error),1)])):O("",!0),e.items.length?(f(),w("div",Ee,[s("div",Ge,[s("span",Ke,i(t(n).t("$vuetify.chatroom.processes.command")),1),s("span",Qe,i(t(n).t("$vuetify.chatroom.processes.arguments")),1),s("span",He,i(t(n).t("$vuetify.chatroom.processes.started")),1),s("span",Xe,i(t(n).t("$vuetify.chatroom.processes.duration")),1),s("span",Ye,i(t(n).t("$vuetify.chatroom.processes.state")),1)]),(f(!0),w(ye,null,he(e.items,o=>(f(),w("div",{key:o.processId,role:"row",tabindex:"0",class:J(["process-record-row",{"selected-row":e.selected===o.processId}]),"aria-selected":e.selected===o.processId,"data-process-id":o.processId,onClick:a=>r.$emit("select",o.processId),onKeydown:[Z(F(a=>r.$emit("select",o.processId),["self"]),["enter"]),Z(F(a=>r.$emit("select",o.processId),["self","prevent"]),["space"])]},[s("div",Je,[s("div",{class:"process-record-command mono",role:"gridcell",title:o.command},i(o.command),9,We),s("div",{class:J(["process-record-args mono",{muted:!o.args.length}]),role:"gridcell",title:o.args.join(" ")},i(o.args.length?o.args.join(" "):"—"),11,et)]),s("div",tt,[s("div",st,i(t(be)(o.startedAt,t($e)(t(n).current.value))),1),s("div",ot,i(t(we)(o.durationMs)),1)]),s("div",at,[o.state!=="running"?(f(),b(ie,{key:0,value:o.state},null,8,["value"])):(f(),w("div",{key:1,class:"process-actions",onClick:c[0]||(c[0]=F(()=>{},["stop"]))},[d(L,{size:"x-small",variant:"text",class:"table-action-btn","aria-label":t(n).t("$vuetify.chatroom.processes.terminate"),onClick:a=>r.$emit("stop",o.processId,!1)},{default:$(()=>[d(ge,{indeterminate:"",color:"warning",size:22,width:2},{default:$(()=>[d(Y,{icon:"$mdiStop",size:"12"})]),_:1})]),_:1},8,["aria-label","onClick"]),d(ae,null,{activator:$(({props:a})=>[d(L,ne({ref_for:!0},a,{icon:"$mdiDotsHorizontal",size:"x-small",variant:"text",class:"table-action-btn","aria-label":t(n).t("$vuetify.chatroom.processes.moreActions")}),null,16,["aria-label"])]),default:$(()=>[d(re,{density:"compact"},{default:$(()=>[d(le,{title:t(n).t("$vuetify.chatroom.processes.kill"),"prepend-icon":"$mdiCloseOctagonOutline",onClick:a=>r.$emit("stop",o.processId,!0)},null,8,["title","onClick"])]),_:2},1024)]),_:2},1024)]))])],42,Ze))),128))])):(f(),w("div",rt,i(t(n).t("$vuetify.chatroom.processes.empty")),1))]),_:1}))}}),nt={ref:"layout",class:"master-detail-layout processes-layout"},it={key:0,class:"master-pane"},ct={key:1,ref:"detailPane",class:"detail-pane",tabindex:"-1"},ht=K({__name:"ProcessesView",props:{revision:{},changes:{}},setup(e){const n=e,{mdAndDown:r}=Ie(),{focusDetail:c,focusMaster:o}=ke(r),a=Ae(()=>n.revision,()=>n.changes),{items:h,selected:u,detail:A,error:V,processOutput:x}=a;function S(p){a.select(p),c()}function D(){const p=u.value;a.clearSelection(),p&&o(`[data-process-id="${CSS.escape(p)}"]`)}function _(p,C){a.stop(p,C)}return(p,C)=>(f(),w("div",nt,[!t(r)||!t(u)?(f(),w("div",it,[d(lt,{items:t(h),selected:t(u),error:t(V),onSelect:S,onStop:_},null,8,["items","selected","error"])])):O("",!0),!t(r)||t(u)?(f(),w("div",ct,[t(r)&&t(u)&&t(V)?(f(),b(_e,{key:0,type:"error",variant:"tonal",density:"compact"},{default:$(()=>[oe(i(t(V)),1)]),_:1})):O("",!0),d(Ne,{detail:t(A),output:t(x),compact:t(r),onBack:D,onStop:_},null,8,["detail","output","compact"])],512)):O("",!0)],512))}});export{ht as default};
@@ -1 +0,0 @@
1
- import{d as n,a as i,o as u,c as d,a4 as p,b as v,r as m,t as f,z as s,bR as C}from"./index-Dt-pWiW1.js";const h=n({__name:"StateChip",props:{value:{}},setup(l){const e=l,t=i(),c=s(()=>({running:"warning",success:"success",exited:"success",error:"error",failed:"error",cancelled:"default",killed:"default"})[e.value]??"default"),r=s(()=>e.value==="running"?"$mdiProgressClock":e.value==="success"||e.value==="exited"?"$mdiCheckCircleOutline":e.value==="error"||e.value==="failed"?"$mdiAlertCircleOutline":"$mdiCircleOutline"),o=s(()=>{const a=C(e.value);return a?t.t(a):e.value});return(a,_)=>(u(),d(p,{class:"state-chip",color:c.value,"prepend-icon":r.value,size:"small",variant:"tonal"},{default:v(()=>[m(f(o.value),1)]),_:1},8,["color","prepend-icon"]))}});export{h as _};