@zhanguym/chatroom 1.2.0 → 1.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/application.d.ts +5 -0
- package/dist/app/application.js +55 -4
- package/dist/app/lifecycle.js +12 -0
- package/dist/app/workspace-access.d.ts +17 -4
- package/dist/core/operations/types.d.ts +1 -1
- package/dist/core/operations/types.js +1 -1
- package/dist/infrastructure/database/agent-mcp-settings-repository.d.ts +12 -0
- package/dist/infrastructure/database/agent-mcp-settings-repository.js +55 -0
- package/dist/infrastructure/database/app-database.js +3 -3
- package/dist/infrastructure/database/migrate.d.ts +2 -0
- package/dist/infrastructure/database/migrate.js +83 -0
- package/dist/infrastructure/database/schema.d.ts +3 -1
- package/dist/infrastructure/database/schema.js +35 -6
- package/dist/infrastructure/database/workspace-repository.d.ts +28 -0
- package/dist/infrastructure/database/workspace-repository.js +126 -0
- package/dist/mcp/custom/manager.d.ts +3 -1
- package/dist/mcp/custom/manager.js +37 -2
- package/dist/mcp/server/plugin-mcp-registrar.d.ts +4 -1
- package/dist/mcp/server/plugin-mcp-registrar.js +7 -2
- package/dist/mcp/server/tool-control.d.ts +6 -1
- package/dist/mcp/server/tool-control.js +11 -2
- package/dist/native/macos/ChatRoomComputerHelper.app/Contents/MacOS/chatroom-computer-helper +0 -0
- package/dist/native/windows/chatroom-computer-helper.exe +0 -0
- package/dist/plugins/agent/custom-mcp-store.d.ts +17 -0
- package/dist/plugins/agent/custom-mcp-store.js +38 -0
- package/dist/plugins/agent/mcp-gateway.d.ts +16 -0
- package/dist/plugins/agent/mcp-gateway.js +110 -0
- package/dist/plugins/agent/mcp.js +3 -2
- package/dist/plugins/agent/plugin.js +1 -1
- package/dist/plugins/agent/provider.d.ts +1 -0
- package/dist/plugins/agent/providers/codex/launch.d.ts +17 -0
- package/dist/plugins/agent/providers/codex/launch.js +24 -0
- package/dist/plugins/agent/providers/codex/provider.d.ts +3 -1
- package/dist/plugins/agent/providers/codex/provider.js +8 -2
- package/dist/plugins/agent/providers/codex/rpc.d.ts +7 -1
- package/dist/plugins/agent/providers/codex/rpc.js +28 -3
- package/dist/plugins/agent/providers/index.d.ts +2 -1
- package/dist/plugins/agent/providers/index.js +5 -2
- package/dist/plugins/agent/repository.js +10 -7
- package/dist/plugins/agent/runtime-files.d.ts +4 -4
- package/dist/plugins/agent/runtime-files.js +18 -14
- package/dist/plugins/agent/runtime.d.ts +2 -0
- package/dist/plugins/agent/runtime.js +52 -13
- package/dist/plugins/agent/types.d.ts +3 -2
- package/dist/plugins/cloud/v2/tunnel-client.js +1 -7
- package/dist/plugins/plugin-manager.d.ts +6 -1
- package/dist/plugins/plugin-manager.js +9 -2
- package/dist/plugins/types.d.ts +4 -0
- package/dist/plugins/web/http/agent-api-router.js +15 -1
- package/dist/plugins/web/http/git-api-router.js +13 -13
- package/dist/plugins/web/http/rtc-api-router.js +3 -0
- package/dist/plugins/web/http/runtime-api-router.js +22 -0
- package/dist/plugins/web/http/workspace-api-router.js +63 -12
- package/dist/plugins/web/plugin.js +1 -1
- package/dist/plugins/web/runtime.d.ts +3 -1
- package/dist/plugins/web/runtime.js +5 -1
- package/dist/plugins/workspace/mcp.js +20 -15
- package/dist/plugins/workspace/plugin.js +1 -1
- package/dist/plugins/workspace/workspace-root-policy.d.ts +0 -1
- package/dist/plugins/workspace/workspace-root-policy.js +25 -19
- package/dist/plugins/workspace/workspace-service.d.ts +20 -8
- package/dist/plugins/workspace/workspace-service.js +270 -64
- package/dist/web/assets/{AgentView-CMxIn3KB.css → AgentView-BqAfmgc4.css} +1 -1
- package/dist/web/assets/AgentView-tr6COjRg.js +4 -0
- package/dist/web/assets/{CloudView-CXuTK7Of.js → CloudView-D-fYLw_O.js} +1 -1
- package/dist/web/assets/{CodeViewer.vue_vue_type_script_setup_true_lang-DK6xGH2G.js → CodeViewer.vue_vue_type_script_setup_true_lang-BtA5aWrS.js} +1 -1
- package/dist/web/assets/ComputerView-B25C_C_h.js +1 -0
- package/dist/web/assets/ComputerView-vSSsexBY.css +1 -0
- package/dist/web/assets/{MarkdownContent-D4KYOn-f.js → MarkdownContent-BuDRrZ6c.js} +1 -1
- package/dist/web/assets/McpToolsView-D0G_HACK.css +1 -0
- package/dist/web/assets/McpToolsView-s0-Qvg2g.js +2 -0
- package/dist/web/assets/OperationsView-B_0SN40Y.js +4 -0
- package/dist/web/assets/{ProcessesView-NUAplTg4.js → ProcessesView-B2i-O0AL.js} +3 -3
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-DwnqcvSQ.js +1 -0
- package/dist/web/assets/{SystemLogsView-DGW_4nS0.js → SystemLogsView-BR4FZoAh.js} +1 -1
- package/dist/web/assets/{TerminalView-DCqHCfb5.js → TerminalView-2Z1blITD.js} +1 -1
- package/dist/web/assets/VSelect-CHI_FOMl.js +1 -0
- package/dist/web/assets/VSheet-CKEhsY-7.js +1 -0
- package/dist/web/assets/VSpacer-FbdDPUGx.js +1 -0
- package/dist/web/assets/{VSwitch-o-WPjZs0.js → VSwitch-o9DuRTKF.js} +1 -1
- package/dist/web/assets/{VTabs-D2y6M66D.js → VTabs-BSfSKBtT.js} +1 -1
- package/dist/web/assets/{VTextarea-DFSNyIwH.js → VTextarea-D_kPhUVU.js} +1 -1
- package/dist/web/assets/WorkspaceDownloadPreview-BoALqL1M.js +1 -0
- package/dist/web/assets/WorkspaceDownloadPreview-dFslZB0W.css +1 -0
- package/dist/web/assets/{WorkspaceMediaPreview-tkpcPK82.js → WorkspaceMediaPreview-qjt04eze.js} +3 -3
- package/dist/web/assets/{WorkspacePdfPreview-PqIFAx2J.js → WorkspacePdfPreview-BrUJpmNs.js} +1 -1
- package/dist/web/assets/WorkspacesView-CHXmDTlX.js +2 -0
- package/dist/web/assets/WorkspacesView-Dt24eGQ4.css +1 -0
- package/dist/web/assets/index-9DLDvF8M.js +19 -0
- package/dist/web/assets/{useMasterDetailFocus-DgNjKho5.js → useMasterDetailFocus-Chh0cM6g.js} +1 -1
- package/dist/web/assets/useOperationLabels-DF67nIF0.js +1 -0
- package/dist/web/index.html +1 -1
- package/dist/web/transport-sw.js +43 -15
- package/package.json +1 -1
- package/dist/web/assets/AgentView-XEf1AUcH.js +0 -4
- package/dist/web/assets/ComputerView-Bz2Wsz2X.css +0 -1
- package/dist/web/assets/ComputerView-Cxn7zhrw.js +0 -1
- package/dist/web/assets/McpToolsView-DdYOoY9_.css +0 -1
- package/dist/web/assets/McpToolsView-XLtFPY_M.js +0 -2
- package/dist/web/assets/OperationsView-DRx2Qq8W.js +0 -4
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-BYoHRX9h.js +0 -1
- package/dist/web/assets/VSelect-Dla-KtWu.js +0 -1
- package/dist/web/assets/VSheet-B9d-Gdzq.js +0 -1
- package/dist/web/assets/VSpacer--LXbKJE2.js +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-DJKSNaZ_.css +0 -1
- package/dist/web/assets/WorkspaceDownloadPreview-DaFQwUIa.js +0 -1
- package/dist/web/assets/WorkspacesView-ClA6xcjn.css +0 -1
- package/dist/web/assets/WorkspacesView-DkGvIFCb.js +0 -2
- package/dist/web/assets/index-CacDJSDn.js +0 -19
- package/dist/web/assets/useOperationLabels-BNiE-bRq.js +0 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{a0 as gt,a1 as xt,w as se,i as Pe,a7 as Ht,s as F,y as Le,u as be,v as A,d as Ce,x as pe,c as l,l as L,a8 as yt,p as z,k as y,z as Qe,f as w,t as V,g as u,R as it,E as na,q as le,h as O,e as S,F as oe,j as Se,m as de,a9 as ue,J as Ze,aa as et,V as Fe,n as Ee,_ as Me,ab as dt,b as Vt,S as rt,ac as tt,ad as Ma,r as Re,ae as He,U as ct,O as It,P as Mt,Q as Tt,T as At,I as ht,af as Pt,M as Ta,ag as Rt,ah as Aa,ai as la,aj as Pa,ak as zt,al as Ra,am as sa,an as mt,ao as Gt,ap as ia,aq as Ft,ar as Fa,X as bt,Z as Ie,as as Da,C as ut,at as Ua,au as oa,av as za,aw as Ea,ax as Oa,ay as ra,az as Jt,aA as Je,aB as _a,aC as wt,aD as Ba,aE as La,aF as Na,D as qa,aG as Bt,aH as Et,aI as ja,aJ as Ka,aK as Wa,aL as Yt,aM as Ha,aN as Xt,aO as ua,aP as Ot,aQ as Ga,aR as st,aS as Qt,aT as Ja,aU as Ya,aV as Xa,aW as da,aX as Qa,aY as Za,aZ as en,a_ as tn,a$ as Zt,b0 as an,b1 as nn,o as ca,b2 as ln,b3 as sn,a2 as on,a3 as rn,a4 as va,b4 as un,b5 as Be}from"./index-9DLDvF8M.js";import{V as dn}from"./VTextarea-D_kPhUVU.js";import{V as kt}from"./VSpacer-FbdDPUGx.js";import{_ as ot}from"./CodeViewer.vue_vue_type_script_setup_true_lang-BtA5aWrS.js";import{u as cn,a as vn,b as mn,c as fn,d as gn,m as pn,e as yn,f as hn,g as bn,V as Ge}from"./VSelect-CHI_FOMl.js";import{V as wn}from"./VSheet-CKEhsY-7.js";import{M as _t}from"./MarkdownContent-BuDRrZ6c.js";import{V as kn}from"./VSwitch-o9DuRTKF.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 Xe(e,a,t){return e.find(s=>s.id===a)?.nativeSettings.find(s=>s.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 Nt(e,a){const t=e??a;return t==="user"||t==="auto_review"||t==="guardian_subagent"?t:null}function qt(e,a){const t=e??a;return t==="read-only"||t==="workspace-write"||t==="danger-full-access"?t:null}function ma(e,a,t,s,n,i){const v=Xe(e,a,"approvalPolicy"),f=Xe(e,a,"approvalsReviewer"),d=Xe(e,a,"permissionMode"),r=Lt(t,v?.defaultValue??null),g=d?.options.some(m=>m.id===i)?i:null;return{approvalPolicy:v?r==="granular"?{granular:{...s}}:r:null,approvalsReviewer:f?Nt(n,f.defaultValue):null,permissionMode:d?qt(g,d.defaultValue):null}}function fa(e,a,t){const s=e[a]??[];return t?s.find(n=>n.id===t)??null:s.find(n=>n.isDefault)??s[0]??null}function $n(e,a,t){return t||((e[a]??[]).find(s=>s.isDefault)?.id??null)}function ga(e,a){return e.find(t=>t.id===a)??null}function vt(e,a){return ga(e,a)?.displayName??a}function pa(e,a){return ga(e,a)?.icon??null}function ya(e,a,t,s){const n=$n(e,a,t);return n?(e[a]??[]).find(i=>i.id===n)?.displayName??n:s}function jt(e,a){return a?`${e} (${a})`:e}function Dt(e){return e.split("/").pop()??e}function Sn(e,a){const t=a.request??Pe,s=F([]),n=F(null),i=gt(),v=new Map,f=new Map;let d=!1,r=null,g=null,m=!1;xt(()=>{m=!0,i.invalidate(),v.clear(),f.clear()}),se(e,p=>{i.invalidate(),n.value=null,r=p,k()},{flush:"sync"});function C(p){const o=v.get(p.sessionId);v.set(p.sessionId,{sessionId:p.sessionId,turnIds:[...new Set([...o?.turnIds??[],...p.turnIds])],itemIds:[...new Set([...o?.itemIds??[],...p.itemIds])],deleted:!!(o?.deleted||p.deleted)})}function P(p){const o=new Map(s.value.map(T=>[T.id,T]));s.value=p.map(T=>St(o.get(T.id),T)).sort((T,I)=>I.updatedAt.localeCompare(T.updatedAt)),a.onSessionsChanged?.(o,s.value),e.value&&!p.some(T=>T.id===e.value)&&(e.value=p[0]?.id??null)}function E(p){const o=new Map(s.value.map(I=>[I.id,I])),T=St(o.get(p.id),p);return o.set(p.id,T),P([...o.values()]),T}function b(p){return p===void 0?Promise.resolve():(p===null?d=!0:p.forEach(C),k())}function k(){return g||(m?Promise.resolve():(g=Promise.resolve().then(async()=>{for(;!m&&(d||r||v.size);){const p=d;d=!1;const o=r;r=null;const T=p||o?[]:[...v.values()];!p&&!o&&v.clear();const I=i.begin();try{if(p){const R=await t("/agents/sessions",{signal:I.signal});if(!i.isCurrent(I))continue;P(R),r=e.value}else if(o){const R=await t(`/agents/sessions/${encodeURIComponent(o)}/history`,{signal:I.signal});if(!i.isCurrent(I)||e.value!==o)continue;n.value=R,E(R.session)}else for(const R of T){if(!i.isCurrent(I))break;if(R.deleted){P(s.value.filter(D=>D.id!==R.sessionId));continue}const $=Math.max(1,Math.ceil(R.turnIds.length/64),Math.ceil(R.itemIds.length/64));let x=!0;for(let D=0;D<$;D++){const ae=new URLSearchParams;ae.set("turnIds",R.turnIds.slice(D*64,(D+1)*64).join(",")),ae.set("itemIds",R.itemIds.slice(D*64,(D+1)*64).join(","));try{const ie=await t(`/agents/sessions/${encodeURIComponent(R.sessionId)}/update?${ae}`,{signal:I.signal});if(!i.isCurrent(I))break;E(ie.session),n.value?.session.id===ie.session.id&&(n.value=ea(n.value,ie))}catch(ie){if(!i.isCurrent(I))break;if(ie instanceof Ht&&ie.status===404)f.delete(R.sessionId),P(s.value.filter(J=>J.id!==R.sessionId));else{const J=(f.get(R.sessionId)??0)+1;J<=1?(f.set(R.sessionId,J),C(R)):(f.delete(R.sessionId),a.onError(ie))}x=!1;break}}x&&f.delete(R.sessionId)}}catch(R){i.isCurrent(I)&&(R instanceof Ht&&R.status===404&&o?P(s.value.filter($=>$.id!==o)):a.onError(R))}finally{!m&&!i.isCurrent(I)&&(p?d=!0:o&&e.value===o&&(r=o),T.forEach(C))}}}).finally(()=>{g=null,!m&&(d||r||v.size)&&k()}),g))}function c(){const p=e.value;return p?(r=p,k()):Promise.resolve()}function h(p){i.invalidate();const o=E(p);n.value?.session.id===p.id&&(n.value={...n.value,session:St(n.value.session,o)})}function q(p){Z([p])}function Z(p){const o=new Set(p);if(o.size){i.invalidate(),P(s.value.filter(T=>!o.has(T.id)));for(const T of o)C({sessionId:T,turnIds:[],itemIds:[],deleted:!0});k()}}function _(p,o){i.invalidate();const T=n.value;if(!T||T.session.id!==p)return;const I=ea(T,{session:T.session,turns:[],items:[o]}),R=I.turns.flatMap(x=>x.items).filter(x=>x.type==="interaction"&&x.status==="waiting"),$={...I.session,status:I.session.status==="waiting_input"?R.length?"waiting_input":"running":I.session.status,attention:R.length?{kind:R.some(x=>x.interaction.kind==="approval")?"approval":"input",count:R.length}:null};n.value={...I,session:$},E($)}return{sessions:s,history:n,refresh:b,reloadSelected:c,reconcileSession:h,reconcileInteraction:_,removeSession:q,removeSessions:Z}}function ea(e,a){const t=new Map(e.turns.map(n=>[n.turn.id,n]));for(const n of a.turns){const i=t.get(n.id);t.set(n.id,{turn:n,items:i?.items??[]})}const s=new Map;for(const n of a.items){const i=s.get(n.turnId)??[];i.push(n),s.set(n.turnId,i)}for(const[n,i]of s){const v=t.get(n);if(!v)throw new Error("Agent update is missing the item's turn");const f=new Map(v.items.map(d=>[d.id,d]));for(const d of i)f.set(d.id,d);t.set(n,{...v,items:[...f.values()].sort((d,r)=>d.sequence-r.sequence)})}return{session:St(e.session,a.session),turns:[...t.values()].sort((n,i)=>n.turn.startedAt.localeCompare(i.turn.startedAt))}}function St(e,a){return e&&e.updatedAt.localeCompare(a.updatedAt)>=0?e:a}function Cn(e){const a=F({}),t=F(new Set),s=new Map;let n=0;se(e.selectedId,()=>{n+=1,a.value={},t.value=new Set(e.selectedId.value?s.get(e.selectedId.value)??[]:[])},{flush:"sync"}),xt(()=>s.clear());async function i(C,P){C.type!=="interaction"||!e.selected.value||await f(C,{type:"approval",decision:P})}async function v(C){if(C.type!=="interaction"||!e.selected.value)return;const P={};for(const E of C.interaction.questions){const b=r(C)[E.id]??[];P[E.id]=E.multiSelect?b:b.slice(0,1)}await f(C,{type:"input",answers:P})}async function f(C,P){const E=e.selected.value,b=E?s.get(E.id):void 0;if(!E||C.status!=="waiting"||b?.has(C.id))return;const k={sessionId:E.id,generation:n},c=new Set(b??[]);c.add(C.id),s.set(E.id,c),t.value=new Set(c),e.error.value="";try{const h=await Pe("/agents/sessions/"+encodeURIComponent(E.id)+"/interactions/"+encodeURIComponent(C.id),{method:"POST",body:JSON.stringify(P)});e.reconcileInteraction(E.id,h)}catch(h){m(k)&&(e.error.value=Le(h))}finally{const h=new Set(s.get(E.id)??[]);h.delete(C.id),h.size?s.set(E.id,h):s.delete(E.id),e.selectedId.value===E.id&&(t.value=h)}}const d=Object.freeze({});function r(C){return a.value[C.id]??d}function g(C,P,E){a.value={...a.value,[C.id]:{...a.value[C.id]??{},[P]:E}}}function m(C){return e.selectedId.value===C.sessionId&&n===C.generation}return{respondingInteractions:t,respondApproval:i,submitInput:v,interactionAnswers:r,setInteractionAnswer:g}}function xn(e){const a=be(),t=F(!1),s=F(null),n=F(null),i=F(null),v=F(null),f=F(null),d=F(Ct()),r=F(null),g=F(null),m=F(!1),C=F("uncommittedChanges"),P=F(""),E=F(""),b=F(!1),k=F(""),c=F(!1),h=F(!1),q=F(!1),Z=F(!1),_=F(null),p=F(!1);let o=!1,T=0;const I=new Map,R=new Map,$=A(()=>e.selected.value?Xe(e.providers.value,e.selected.value.provider,"approvalPolicy"):null),x=A(()=>e.selected.value?Xe(e.providers.value,e.selected.value.provider,"approvalsReviewer"):null),D=A(()=>e.selected.value?Xe(e.providers.value,e.selected.value.provider,"permissionMode"):null),ae=A(()=>e.selected.value?e.providerModels.value[e.selected.value.provider]??[]:[]),ie=A(()=>e.selected.value?fa(e.providerModels.value,e.selected.value.provider,e.selected.value.model):null),J=A(()=>e.selected.value?e.providers.value.find(U=>U.id===e.selected.value?.provider)??null:null),we=A(()=>["uncommittedChanges","baseBranch","commit","custom"].map(U=>({value:U,title:a.t(`$vuetify.chatroom.agents.reviewTargets.${U}`)}))),me=A(()=>a.t(`$vuetify.chatroom.agents.reviewFields.${C.value}`)),he=A(()=>e.selected.value?.status==="idle"&&!!J.value?.features.nativeReview&&!b.value&&!e.composerBusy.value&&!c.value&&!h.value&&(C.value==="uncommittedChanges"||!!P.value.trim())),De=A(()=>e.selected.value?e.providers.value.filter(U=>U.id!==e.selected.value?.provider&&U.installed&&U.authenticated):[]);se(C,()=>{P.value="",E.value="",k.value=""}),se(e.selectedId,()=>{T+=1,c.value=!1,h.value=!1,q.value=!1,b.value=!1,t.value=!1,m.value=!1,Z.value=!1,_.value=null,p.value=!1},{flush:"sync"}),se(e.sessions,U=>{const Q=_.value;Q&&!U.some(ne=>ne.id===Q)&&(Z.value=!1,_.value=null)}),xt(()=>{o=!0,I.clear(),R.clear()});async function re(U,Q=null){const ne=e.providers.value.find(fe=>fe.id===U);if(ne&&(!ne.installed||!ne.authenticated)){e.providerModels.value={...e.providerModels.value,[U]:[]};return}const ge=(I.get(U)??0)+1;I.set(U,ge);try{const fe=await Pe("/agents/providers/"+U+"/models",{timeoutMs:15e3});if(o||I.get(U)!==ge)return;e.providerModels.value={...e.providerModels.value,[U]:fe}}catch(fe){if(o||I.get(U)!==ge)return;e.providerModels.value={...e.providerModels.value,[U]:[]},(Q===null||e.selectedId.value===Q)&&(e.error.value=Le(fe))}}async function ke(){const U=e.selected.value;if(!U||!he.value)return;const Q=Ue(U.id),ne=P.value.trim();let ge;switch(C.value){case"uncommittedChanges":ge={type:"uncommittedChanges"};break;case"baseBranch":ge={type:"baseBranch",branch:ne};break;case"commit":ge={type:"commit",sha:ne,title:E.value.trim()||null};break;case"custom":ge={type:"custom",instructions:ne};break}b.value=!0,k.value="";try{await Pe(`/agents/sessions/${encodeURIComponent(U.id)}/review`,{method:"POST",body:JSON.stringify({target:ge}),timeoutMs:3e4}),ye(Q)&&(m.value=!1)}catch(fe){ye(Q)&&(k.value=Le(fe))}finally{ye(Q)&&(b.value=!1)}}async function $e(){const U=e.selected.value;if(!U||q.value)return;const Q=Ue(U.id);q.value=!0,e.error.value="";try{await Pe("/agents/sessions/"+encodeURIComponent(U.id)+"/interrupt",{method:"POST"})}catch(ne){ye(Q)&&(e.error.value=Le(ne))}finally{ye(Q)&&(q.value=!1)}}async function Te(U){const Q=e.selected.value;if(!Q||U===Q.provider||h.value)return;const ne=e.providers.value.find(Ke=>Ke.id===U);if(!ne?.installed||!ne.authenticated)return;const ge=Ue(Q.id),fe=Ne(Q.id);h.value=!0,e.error.value="";try{const Ke=await Pe("/agents/sessions/"+encodeURIComponent(Q.id)+"/provider",{method:"POST",body:JSON.stringify({provider:U,model:null,reasoningEffort:null,reasoningSummary:null,serviceTier:null}),timeoutMs:3e4});qe(fe)?(e.reconcileSession(Ke),await re(Ke.provider,Q.id)):je(Q.id)}catch(Ke){ye(ge)&&(e.error.value=Le(Ke))}finally{ye(ge)&&(h.value=!1)}}function xe(){const U=e.selected.value;U&&(_.value=U.id,Z.value=!0)}async function B(){const U=_.value;if(!(!U||p.value)){p.value=!0,e.error.value="";try{await Pe("/agents/sessions/"+encodeURIComponent(U),{method:"DELETE"}),e.removeSession(U),_.value===U&&(p.value=!1,Z.value=!1,_.value=null)}catch(Q){_.value===U&&(p.value=!1,e.error.value=Le(Q))}}}function G(){const U=e.selected.value;U&&(s.value=U.model,n.value=U.reasoningEffort,i.value=U.reasoningSummary,v.value=U.serviceTier,f.value=Lt(U.approvalPolicy,$.value?.defaultValue??null),d.value=U.approvalPolicy&&typeof U.approvalPolicy=="object"&&"granular"in U.approvalPolicy?{...U.approvalPolicy.granular}:Ct(),r.value=Nt(U.approvalsReviewer,x.value?.defaultValue??null),g.value=qt(U.permissionMode,D.value?.defaultValue??null),t.value=!0)}async function Ve(){const U=e.selected.value;if(!U)return;await Oe({model:s.value,reasoningEffort:n.value,reasoningSummary:i.value,serviceTier:v.value,...ma(e.providers.value,U.provider,f.value,d.value,r.value,g.value)})&&(t.value=!1)}async function Oe(U){const Q=e.selected.value;if(!Q||Q.status!=="idle"||c.value||h.value)return!1;const ne=Ue(Q.id),ge=Ne(Q.id);c.value=!0,e.error.value="";try{const fe=await Pe(`/agents/sessions/${encodeURIComponent(Q.id)}/config`,{method:"PUT",body:JSON.stringify(U),timeoutMs:3e4});return qe(ge)?(e.reconcileSession(fe),ye(ne)):(je(Q.id),!1)}catch(fe){return ye(ne)&&(e.error.value=Le(fe)),!1}finally{ye(ne)&&(c.value=!1)}}function Ue(U){return{sessionId:U,generation:T}}function ye(U){return e.selectedId.value===U.sessionId&&T===U.generation}function Ne(U){const Q=(R.get(U)??0)+1;return R.set(U,Q),{sessionId:U,generation:Q}}function qe(U){return R.get(U.sessionId)===U.generation}function je(U){e.refresh([{sessionId:U,turnIds:[],itemIds:[],deleted:!1}])}return{modelSettingsOpen:t,settingsModel:s,settingsReasoningEffort:n,settingsReasoningSummary:i,settingsServiceTier:v,settingsApprovalPolicyMode:f,settingsGranularApproval:d,settingsApprovalsReviewer:r,settingsPermissionMode:g,reviewOpen:m,reviewType:C,reviewValue:P,reviewTitle:E,reviewStarting:b,reviewError:k,modelSwitching:c,switchingProvider:h,interrupting:q,deleteDialog:Z,deletingSession:p,selectedApprovalPolicySetting:$,selectedApprovalsReviewerSetting:x,selectedPermissionModeSetting:D,selectedProviderModels:ae,selectedModelMetadata:ie,selectedProviderStatus:J,reviewTypes:we,reviewFieldLabel:me,canStartReview:he,switchTargets:De,loadModels:re,startReview:ke,interrupt:$e,switchProvider:Te,openDeleteDialog:xe,deleteSession:B,openModelSettings:G,saveModelSettings:Ve}}const Vn={class:"agent-file-picker-caption"},In={class:"agent-file-picker-list"},Mn=["data-type","data-selected","aria-expanded","aria-pressed","onClick"],Tn={key:1,class:"agent-tree-spacer"},An={class:"agent-tree-name"},Pn={key:2,class:"agent-tree-path"},Rn={key:0,class:"agent-file-picker-empty"},Fn=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,s=a,n=pe(e,"open"),i=pe(e,"search"),v=be();function f(d){return t.selectedPaths.includes(d)}return(d,r)=>(l(),L(yt,{modelValue:n.value,"onUpdate:modelValue":r[1]||(r[1]=g=>n.value=g),"close-on-content-click":!1,location:"top start",offset:"8","content-class":"agent-overlay-menu"},{activator:z(({props:g})=>[y(de,ue(g,{size:"x-small",density:"comfortable",variant:"text",icon:"",class:"agent-compose-tool-button agent-workspace-reference-button",disabled:e.disabled,"aria-label":u(v).t("$vuetify.chatroom.agents.projectFiles")}),{default:z(()=>[...r[2]||(r[2]=[le(" @ ",-1)])]),_:1},16,["disabled","aria-label"])]),default:z(()=>[y(Qe,{class:"agent-file-picker",elevation:"8"},{default:z(()=>[w("div",Vn,V(u(v).t("$vuetify.chatroom.agents.projectFiles")),1),y(it,{modelValue:i.value,"onUpdate:modelValue":r[0]||(r[0]=g=>i.value=g),"prepend-inner-icon":"$mdiMagnify","aria-label":u(v).t("$vuetify.chatroom.agents.searchFiles"),placeholder:u(v).t("$vuetify.chatroom.agents.searchFiles"),density:"compact",variant:"outlined","hide-details":"",autofocus:""},null,8,["modelValue","aria-label","placeholder"]),e.truncated?(l(),L(na,{key:0,type:"warning",variant:"tonal",density:"compact",class:"agent-project-files-truncated"},{default:z(()=>[le(V(u(v).t("$vuetify.chatroom.agents.projectFilesTruncated")),1)]),_:1})):O("",!0),w("div",In,[(l(!0),S(oe,null,Se(e.rows,g=>(l(),S("button",{key:g.path,type:"button",class:"agent-tree-row","data-type":g.type,"data-selected":g.type==="file"&&f(g.path)?"true":"false","aria-expanded":g.type==="directory"?e.expandedDirectories.has(g.path):void 0,"aria-pressed":g.type==="file"?f(g.path):void 0,style:et({paddingInlineStart:String(8+g.depth*18)+"px"}),onClick:m=>g.type==="directory"?s("toggleDirectory",g.path):s("toggleFile",g.path)},[g.type==="directory"?(l(),L(Fe,{key:0,icon:"$mdiChevronRight",size:"16",class:Ee(["agent-tree-chevron",{"agent-tree-chevron-open":e.expandedDirectories.has(g.path)}])},null,8,["class"])):(l(),S("span",Tn)),w("span",An,V(g.name),1),i.value.trim()&&g.type==="file"?(l(),S("span",Pn,V(g.path),1)):O("",!0)],12,Mn))),128)),e.rows.length?O("",!0):(l(),S("div",Rn,V(u(v).t("$vuetify.chatroom.agents.noMatchingFiles")),1))])]),_:1})]),_:1},8,["modelValue"]))}}),Dn=Me(Fn,[["__scopeId","data-v-024d9876"]]);function Un(e){return e.map(a=>({path:a,lowerPath:a.toLowerCase()}))}function ta(e,a,t){const s=t.trim().toLowerCase();if(!s)return[...e];const n=s.split(/[\/\s]+/).filter(Boolean);return a.filter(i=>n.every(v=>i.lowerPath.includes(v))).sort((i,v)=>{const f=i.lowerPath.startsWith(s)?0:1,d=v.lowerPath.startsWith(s)?0:1;return f-d||i.path.length-v.path.length||i.path.localeCompare(v.path)}).map(i=>i.path)}function zn(e){const a=new Map;for(const t of e){const s=t.split("/");for(let n=1;n<s.length;n+=1)a.set(s.slice(0,n).join("/"),"directory");a.set(t,"file")}return[...a].map(([t,s])=>{const n=t.split("/"),i=[];let v="";for(const f of n.slice(0,-1))v=v?v+"/"+f:f,i.push(v);return{path:t,name:n.at(-1)??t,type:s,depth:Math.max(0,n.length-1),ancestors:i}}).sort((t,s)=>{const n=t.ancestors.at(-1)??"",i=s.ancestors.at(-1)??"";return n===i&&t.type!==s.type?t.type==="directory"?-1:1:t.path.localeCompare(s.path)})}function En(e,a){const t=new Set,s=/@"([^"]+)"|@([^\s]+)/g;for(const n of e.matchAll(s)){const i=(n[1]??n[2]??"").replace(/[),.;!?]+$/,"");a.has(i)&&t.add(i)}return[...t]}function Ut(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 On={key:0,class:"agent-composer-caption"},_n={key:1,class:"agent-inline-error agent-attachment-error",role:"alert"},Bn=["accept"],Ln={key:2,class:"agent-selected-attachments"},Nn={class:"agent-compose-row"},qn={key:0,class:"agent-compose-tools"},jn={key:0,class:"agent-mention-popup"},Kn=["onMousedown","onClick"],Wn={class:"agent-file-suggestion-name"},Hn={class:"agent-file-suggestion-path"},Gn={class:"agent-compose-actions"},Jn=Ce({__name:"AgentComposer",props:{session:{},model:{},steeringSupported:{type:Boolean},disabled:{type:Boolean}},emits:["error","busy"],setup(e,{emit:a}){const t=e,s=a,n=be(),i=F(""),v=Re([]),f=Re({}),d=Re({}),r=F([]),g=F(!1),m=F([]),C=F([]),P=F(new Set),E=F(!1),b=F(""),k=F(""),c=F(!1),h=F(""),q=F(""),Z=F(0),_=F(0),p=dt("composerInputHost"),o=dt("localFileInput"),T=F(!1),I=F(!1),R=gt(),$=gt(),x=gt();let D=null,ae=null;se(b,(N,Y,te)=>{D&&clearTimeout(D),D=setTimeout(()=>{k.value=N,D=null},120),te(()=>{D&&clearTimeout(D),D=null})}),se(h,(N,Y,te)=>{ae&&clearTimeout(ae),ae=setTimeout(()=>{q.value=N,ae=null},100),te(()=>{ae&&clearTimeout(ae),ae=null})});const ie=A(()=>new Set(r.value)),J=A(()=>En(i.value,ie.value)),we=A(()=>[...new Set([...v.value,...J.value])]),me=A(()=>t.session.status==="running"&&t.steeringSupported),he=A(()=>t.session.status==="idle"||me.value),De=A(()=>[".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",...fe("image")?["image/*"]:[],...fe("audio")?["audio/*"]:[]].join(",")),re=A(()=>we.value.filter(N=>!fe(ge(N)))),ke=A(()=>re.value.length?n.t("$vuetify.chatroom.agents.unsupportedAttachment",re.value.map(qe).join(", ")):""),$e=A(()=>ta(r.value,m.value,q.value).slice(0,12)),Te=A(()=>k.value.trim()?ta(r.value,m.value,k.value).slice(0,80).map(N=>({path:N,name:Dt(N),type:"file",depth:0,ancestors:[]})):C.value.filter(N=>N.ancestors.every(Y=>P.value.has(Y)))),xe=A(()=>he.value&&!t.disabled&&!T.value&&!I.value&&!re.value.length&&!!(i.value.trim()||we.value.length));se(()=>[t.session.id,t.session.workspaceId],()=>{ne(),B()},{immediate:!0}),se(()=>T.value||I.value,N=>s("busy",N),{immediate:!0}),Vt(()=>{D&&clearTimeout(D),ae&&clearTimeout(ae),s("busy",!1)});async function B(){const N=R.begin(),Y=t.session.id,te=t.session.workspaceId;try{const ve=await Pe("/workspace/project-files?workspaceId="+encodeURIComponent(te),{timeoutMs:2e4,signal:N.signal});if(!R.isCurrent(N)||t.session.id!==Y||t.session.workspaceId!==te)return;r.value=ve.paths,g.value=ve.truncated,m.value=Un(ve.paths),C.value=zn(ve.paths)}catch(ve){if(!R.isCurrent(N))return;r.value=[],g.value=!1,m.value=[],C.value=[],s("error",Le(ve))}}async function G(){if(!xe.value)return;if(re.value.length){s("error",ke.value);return}const N=t.session.id,Y=me.value,te=i.value,ve=we.value.map(j=>({kind:ge(j),name:qe(j),path:j,mimeType:d.value[j]??Ut(j)})),M=$.begin();T.value=!0;try{if(await Pe("/agents/sessions/"+encodeURIComponent(N)+"/"+(Y?"steer":"turns"),{method:"POST",body:JSON.stringify({text:te,attachments:ve}),timeoutMs:3e4,signal:M.signal}),!$.isCurrent(M)||t.session.id!==N)return;i.value="",v.value=[],f.value={},d.value={},c.value=!1}catch(j){$.isCurrent(M)&&s("error",Le(j))}finally{$.isCurrent(M)&&(T.value=!1)}}function Ve(){o.value?.click()}async function Oe(N){const Y=N.target,te=[...Y.files??[]];if(Y.value="",!te.length)return;const ve=t.session.id,M=t.session.workspaceId,j=x.begin();I.value=!0;try{for(const ee of te){if(!x.isCurrent(j)||t.session.id!==ve)return;if(ee.size===0){s("error",n.t("$vuetify.chatroom.agents.emptyAttachment",ee.name));continue}const ce=ee.type.startsWith("audio/")?"audio":ee.type.startsWith("image/")||Ke(ee.name)?"image":"file";if(!fe(ce)){s("error",n.t("$vuetify.chatroom.agents.unsupportedAttachment",ee.name));continue}const Ae=await ee.arrayBuffer();if(Ae.byteLength!==ee.size)throw new Error(n.t("$vuetify.chatroom.agents.incompleteAttachment",ee.name));const H=await Pe("/workspace/attachment?workspaceId="+encodeURIComponent(M)+"&sessionId="+encodeURIComponent(ve)+"&name="+encodeURIComponent(ee.name),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-ChatRoom-Mime-Type":ee.type||"application/octet-stream","X-ChatRoom-Upload-Size":String(ee.size)},body:Ae,timeoutMs:6e4,signal:j.signal});if(!x.isCurrent(j)||t.session.id!==ve)return;if(H.size!==ee.size){s("error",n.t("$vuetify.chatroom.agents.incompleteAttachment",ee.name));continue}v.value.includes(H.path)||v.value.push(H.path),f.value[H.path]=H.name,d.value[H.path]=H.mimeType&&H.mimeType!=="application/octet-stream"?H.mimeType:ee.type||Ut(ee.name)}}catch(ee){x.isCurrent(j)&&s("error",Le(ee))}finally{x.isCurrent(j)&&(I.value=!1)}}function Ue(N){const Y=new Set(P.value);Y.has(N)?Y.delete(N):Y.add(N),P.value=Y}function ye(N){const Y=v.value.indexOf(N);Y>=0?v.value.splice(Y,1):v.value.push(N)}function Ne(N){v.value=v.value.filter(Y=>Y!==N),delete f.value[N],delete d.value[N]}function qe(N){return f.value[N]??Dt(N)}function je(){He(()=>{const N=Q();if(!N){c.value=!1;return}const Y=N.selectionStart??i.value.length,ve=i.value.slice(0,Y).match(/(?:^|\s)@([^\s"@]*)$/);if(!ve){c.value=!1;return}const M=ve[1]??"";h.value=M,Z.value=Y-M.length-1,_.value=Y,c.value=!0})}function U(N){const Y=/\s/.test(N)?'@"'+N+'"':"@"+N,te=i.value.slice(0,Z.value),ve=i.value.slice(_.value);i.value=te+Y+" "+ve,v.value.includes(N)||v.value.push(N),c.value=!1,He(()=>{const M=Q();if(!M)return;const j=te.length+Y.length+1;M.focus(),M.setSelectionRange(j,j)})}function Q(){return p.value?.querySelector("textarea")??null}function ne(){R.invalidate(),$.invalidate(),x.invalidate(),T.value=!1,I.value=!1,i.value="",v.value=[],f.value={},d.value={},r.value=[],g.value=!1,m.value=[],C.value=[],P.value=new Set,E.value=!1,b.value="",k.value="",h.value="",q.value="",c.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 Y=d.value[N];return Y?.startsWith("audio/")?"audio":Y?.startsWith("image/")||Ke(qe(N))?"image":"file"}function fe(N){return N!=="image"&&N!=="audio"||!!t.model?.inputModalities?.includes(N)}function Ke(N){return Ut(N)!==null}return(N,Y)=>(l(),S("div",{class:Ee(["agent-composer",{"agent-composer--waiting":e.session.status==="waiting_input"}])},[me.value?(l(),S("div",On,V(u(n).t("$vuetify.chatroom.agents.steerHint")),1)):O("",!0),ke.value?(l(),S("div",_n,V(ke.value),1)):O("",!0),w("input",{ref_key:"localFileInput",ref:o,class:"agent-hidden-file-input",type:"file",multiple:"",accept:De.value,onChange:Oe},null,40,Bn),v.value.length?(l(),S("div",Ln,[(l(!0),S(oe,null,Se(v.value,te=>(l(),L(ct,{key:te,size:"small",closable:"",variant:"tonal",title:te,"onClick:close":ve=>Ne(te)},{default:z(()=>[le(V(qe(te)),1)]),_:2},1032,["title","onClick:close"]))),128))])):O("",!0),w("div",Nn,[e.session.status!=="waiting_input"?(l(),S("div",qn,[y(de,{icon:"$mdiPaperclip",size:"x-small",density:"comfortable",variant:"text",class:"agent-compose-tool-button agent-attachment-button",loading:I.value,disabled:!he.value||e.disabled||T.value,"aria-label":u(n).t("$vuetify.chatroom.agents.attachFile"),onClick:Ve},null,8,["loading","disabled","aria-label"]),y(Dn,{open:E.value,"onUpdate:open":Y[0]||(Y[0]=te=>E.value=te),search:b.value,"onUpdate:search":Y[1]||(Y[1]=te=>b.value=te),rows:Te.value,truncated:g.value,"selected-paths":v.value,"expanded-directories":P.value,disabled:!he.value||e.disabled||T.value,onToggleDirectory:Ue,onToggleFile:ye},null,8,["open","search","rows","truncated","selected-paths","expanded-directories","disabled"])])):O("",!0),e.session.status!=="waiting_input"?(l(),S("div",{key:1,ref_key:"composerInputHost",ref:p,class:"agent-compose-input-wrap"},[c.value&&$e.value.length?(l(),S("div",jn,[(l(!0),S(oe,null,Se($e.value,te=>(l(),S("button",{key:te,type:"button",class:"agent-file-suggestion",onMousedown:tt(ve=>U(te),["prevent"]),onClick:ve=>U(te)},[w("span",Wn,V(u(Dt)(te)),1),w("span",Hn,V(te),1)],40,Kn))),128))])):O("",!0),y(dn,{modelValue:i.value,"onUpdate:modelValue":Y[2]||(Y[2]=te=>i.value=te),placeholder:u(n).t(me.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"aria-label":u(n).t(me.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"auto-grow":"",rows:"2","max-rows":"8","hide-details":"",disabled:!he.value||e.disabled||T.value,onInput:je,onKeyup:je,onClick:je,onKeydown:[Y[3]||(Y[3]=rt(te=>c.value=!1,["escape"])),rt(tt(G,["ctrl","prevent"]),["enter"]),rt(tt(G,["meta","prevent"]),["enter"])]},null,8,["modelValue","placeholder","aria-label","disabled","onKeydown"])],512)):O("",!0),w("div",Gn,[Ma(N.$slots,"controls",{busy:T.value||I.value},void 0),e.session.status!=="waiting_input"?(l(),L(de,{key:0,icon:"$mdiArrowUp",color:"primary",size:"small",variant:"tonal",loading:T.value,disabled:!xe.value,"aria-label":u(n).t(me.value?"$vuetify.chatroom.agents.steer":"$vuetify.chatroom.agents.send"),onClick:G},null,8,["loading","disabled","aria-label"])):O("",!0)])])],2))}}),Yn=Me(Jn,[["__scopeId","data-v-b62f9e67"]]),aa=Ce({__name:"AgentDeleteDialog",props:Ze({busy:{type:Boolean},count:{default:1}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:Ze(["confirm"],["update:modelValue"]),setup(e){const a=e,t=pe(e,"modelValue"),s=be();return(n,i)=>(l(),L(ht,{modelValue:t.value,"onUpdate:modelValue":i[2]||(i[2]=v=>t.value=v),width:"auto","max-width":"32rem",persistent:e.busy},{default:z(()=>[y(Qe,null,{default:z(()=>[y(It,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:z(()=>[y(Mt,null,{default:z(()=>[le(V(u(s).t(a.count>1?"$vuetify.chatroom.agents.bulkDeleteTitle":"$vuetify.chatroom.agents.deleteTitle")),1)]),_:1})]),_:1}),y(Tt,null,{default:z(()=>[le(V(u(s).t(a.count>1?"$vuetify.chatroom.agents.bulkDeleteDescription":"$vuetify.chatroom.agents.deleteDescription",a.count)),1)]),_:1}),y(At,null,{default:z(()=>[y(kt),y(de,{variant:"text",disabled:e.busy,onClick:i[0]||(i[0]=v=>t.value=!1)},{default:z(()=>[le(V(u(s).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),y(de,{color:"error",variant:"flat",loading:e.busy,onClick:i[1]||(i[1]=v=>n.$emit("confirm"))},{default:z(()=>[le(V(u(s).t(a.count>1?"$vuetify.chatroom.agents.deleteSelected":"$vuetify.chatroom.agents.delete")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}});function Xn(e,a){const t=F(!0);let s=null,n=0;function i(r=72){const g=e.value;return g?g.scrollHeight-g.scrollTop-g.clientHeight<r:!0}function v(){const r=e.value?.scrollTop??0;i()?t.value=!0:r<n&&(t.value=!1),n=r}function f(){t.value&&s===null&&(s=requestAnimationFrame(()=>{s=null;const r=e.value;r&&t.value&&(r.scrollTop=r.scrollHeight,n=r.scrollTop)}))}function d(){t.value=!0,f()}return se([e,a],([r,g],m,C)=>{if(!r||!g)return;const P=new ResizeObserver(()=>f());P.observe(r),P.observe(g),f(),C(()=>{P.disconnect()})},{flush:"post"}),Vt(()=>{s!==null&&cancelAnimationFrame(s)}),{autoFollow:t,isNearBottom:i,onConversationScroll:v,scheduleScrollToBottom:f,scrollToBottom:d}}const Qn={class:"agent-artifact-group"},Zn={class:"agent-artifact-group-heading"},el=["data-count"],tl={class:"agent-artifact-media"},al=["aria-label","disabled","onClick"],nl=["src","alt","onLoad","onError"],ll={key:1,class:"agent-artifact-placeholder agent-artifact-overlay"},sl={key:2,class:"agent-artifact-placeholder agent-artifact-overlay error"},il={key:0,class:"agent-artifact-error-detail"},ol={class:"agent-artifact-footer"},rl=["title"],ul={class:"agent-artifact-preview-header"},dl={class:"text-truncate"},cl={class:"agent-artifact-preview-body"},vl=["src","alt"],ml=Ce({__name:"AgentArtifactGallery",props:{items:{},workspaceId:{}},setup(e){const a=e,t=be(),s=Re({}),n=Re({}),i=Re({}),v=F(null);function f(k){return`${a.workspaceId}:${k.artifact.path}:${k.id}:${k.updatedAt}:${i.value[k.id]??""}`}function d(k){const c=`${k.id}:${k.updatedAt}`;return"/api/workspace/file/image?workspaceId="+encodeURIComponent(a.workspaceId)+"&path="+encodeURIComponent(k.artifact.path)+"&v="+encodeURIComponent(c)+(i.value[k.id]?"&retry="+encodeURIComponent(i.value[k.id]):"")}function r(k){return!!s.value[f(k)]}function g(k){return n.value[f(k)]??""}function m(k){const c=f(k);s.value[c]=!0,delete n.value[c]}function C(k){const c=f(k);s.value[c]=!1,n.value[c]=t.t("$vuetify.chatroom.agents.imageDecodeFailed")}function P(k){i.value[k.id]=crypto.randomUUID()}function E(k){r(k)&&(v.value=k)}function b(k){r(k)&&Ta(d(k),k.artifact.name).catch(()=>{})}return(k,c)=>(l(),S("div",Qn,[w("div",Zn,[y(Fe,{icon:"$mdiFileEyeOutline",size:"17"}),w("span",null,V(e.items.length===1?u(t).t("$vuetify.chatroom.agents.generatedImage"):u(t).t("$vuetify.chatroom.agents.generatedImages",e.items.length)),1)]),w("div",{class:"agent-artifact-grid","data-count":e.items.length},[(l(!0),S(oe,null,Se(e.items,h=>(l(),S("div",{key:h.id,class:"agent-artifact-tile"},[w("div",tl,[h.status==="completed"?(l(),S("button",{key:0,type:"button",class:"agent-artifact-image-button","aria-label":h.artifact.name,disabled:!r(h),onClick:q=>E(h)},[(l(),S("img",{key:f(h),class:"agent-artifact-image",src:d(h),alt:h.artifact.name,loading:"lazy",decoding:"async",onLoad:q=>m(h),onError:q=>C(h)},null,40,nl))],8,al)):O("",!0),h.status==="running"||h.status==="waiting"||h.status==="completed"&&!r(h)&&!g(h)?(l(),S("div",ll,[y(Pt,{indeterminate:"",size:"24",width:"2"}),w("span",null,V(u(t).t("$vuetify.chatroom.agents.imageLoading")),1)])):h.status==="failed"||h.status==="interrupted"||g(h)?(l(),S("div",sl,[y(Fe,{icon:"$mdiAlertCircleOutline",size:"22"}),w("span",null,V(u(t).t("$vuetify.chatroom.agents.imageLoadFailed")),1),g(h)?(l(),S("span",il,V(g(h)),1)):O("",!0),h.status==="completed"?(l(),L(de,{key:1,size:"small",variant:"tonal",onClick:q=>P(h)},{default:z(()=>[le(V(u(t).t("$vuetify.chatroom.agents.retry")),1)]),_:1},8,["onClick"])):O("",!0)])):O("",!0)]),w("div",ol,[w("span",{class:"agent-artifact-name",title:h.artifact.path},V(h.artifact.name),9,rl),y(de,{icon:"$mdiDownloadOutline",size:"x-small",variant:"text",disabled:!r(h),"aria-label":u(t).t("$vuetify.chatroom.code.download"),onClick:q=>b(h)},null,8,["disabled","aria-label","onClick"])])]))),128))],8,el),y(ht,{"model-value":!!v.value,"max-width":"90vw","onUpdate:modelValue":c[1]||(c[1]=h=>v.value=h?v.value:null)},{default:z(()=>[v.value?(l(),L(Qe,{key:0,class:"agent-artifact-preview-dialog"},{default:z(()=>[w("div",ul,[w("span",dl,V(v.value.artifact.name),1),y(de,{icon:"$mdiClose",size:"small",variant:"text","aria-label":u(t).t("$vuetify.chatroom.common.close"),onClick:c[0]||(c[0]=h=>v.value=null)},null,8,["aria-label"])]),w("div",cl,[w("img",{src:d(v.value),alt:v.value.artifact.name,decoding:"async"},null,8,vl)])]),_:1})):O("",!0)]),_:1},8,["model-value"])]))}}),fl=Me(ml,[["__scopeId","data-v-e4b1d904"]]),gl=["data-state","open"],pl=["aria-label"],yl={class:"agent-command-label"},hl={class:"agent-command-status"},bl={class:"agent-command-line"},wl=["title"],kl={key:0,class:"agent-command-copy-error",role:"alert"},$l={key:0,class:"agent-command-details"},Sl={class:"agent-command-full"},Cl={key:0,class:"agent-command-meta"},xl=["title"],Vl={key:1,class:"agent-command-exit"},Il={class:"agent-command-output-label"},Ml={class:"agent-command-code output"},Tl={key:0,class:"agent-command-output-plain mono"},Al=Ce({__name:"AgentCommandItem",props:{command:{},cwd:{},output:{},exitCode:{},status:{}},setup(e){const a=e,t=be(),s=F(""),n=F(a.status!=="completed"||a.exitCode!==null&&a.exitCode!==0);se(()=>[a.status,a.exitCode],([r,g])=>{(r==="running"||r==="failed"||g!==null&&g!==0)&&(n.value=!0)});const i=A(()=>{let r=a.command.trim();return r=r.replace(/^(?:\/usr\/bin\/|\/bin\/)?(?:zsh|bash|sh)\s+-l?c\s+/,""),r.length>=2&&(r.startsWith('"')&&r.endsWith('"')||r.startsWith("'")&&r.endsWith("'"))&&(r=r.slice(1,-1)),r.replace(/\\"/g,'"').replace(/\s+/g," ").trim()||t.t("$vuetify.chatroom.agents.command")}),v=A(()=>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=A(()=>v.value==="running"?t.t("$vuetify.chatroom.agents.commandRunning"):v.value==="error"?a.exitCode===null?t.t("$vuetify.chatroom.agents.commandFailed"):t.t("$vuetify.chatroom.agents.exitCode",a.exitCode):v.value==="success"?t.t("$vuetify.chatroom.agents.commandSucceeded"):t.t("$vuetify.chatroom.agents.command"));async function d(){s.value="";try{await navigator.clipboard.writeText(a.command)}catch{s.value=t.t("$vuetify.chatroom.code.copyFailed")}}return(r,g)=>(l(),S("details",{class:"agent-command","data-state":v.value,open:n.value,onToggle:g[0]||(g[0]=m=>n.value=m.target.open)},[w("summary",{class:"agent-command-main","aria-label":u(t).t("$vuetify.chatroom.agents.commandDetails")},[w("div",yl,[y(Fe,{icon:"$mdiConsoleLine",size:"16"}),w("span",null,V(u(t).t("$vuetify.chatroom.agents.command")),1),w("span",hl,[g[1]||(g[1]=w("span",{class:"agent-command-status-dot"},null,-1)),le(" "+V(f.value),1)])]),w("div",bl,[w("code",{class:"mono",title:e.command},V(i.value),9,wl),y(de,{icon:"$mdiContentCopy",size:"x-small",variant:"text",class:"agent-command-copy","aria-label":u(t).t("$vuetify.chatroom.code.copy"),onClick:tt(d,["stop"])},null,8,["aria-label"]),y(Fe,{icon:"$mdiChevronDown",size:"18",class:Ee(["agent-command-toggle",{"agent-command-toggle-open":n.value}])},null,8,["class"])]),s.value?(l(),S("div",kl,V(s.value),1)):O("",!0)],8,pl),n.value?(l(),S("div",$l,[w("div",Sl,[y(ot,{text:e.command,filename:"command.sh",language:"bash",toolbar:!1},null,8,["text"])]),e.cwd||e.exitCode!==null?(l(),S("div",Cl,[e.cwd?(l(),S("span",{key:0,class:"agent-command-cwd mono",title:e.cwd},V(e.cwd),9,xl)):O("",!0),e.exitCode!==null?(l(),S("span",Vl,V(u(t).t("$vuetify.chatroom.agents.exitCode",e.exitCode)),1)):O("",!0)])):O("",!0),e.output?(l(),S(oe,{key:1},[w("div",Il,V(u(t).t("$vuetify.chatroom.agents.commandOutput")),1),w("div",Ml,[v.value==="running"?(l(),S("pre",Tl,V(e.output),1)):(l(),L(ot,{key:1,text:e.output,filename:"output.txt",toolbar:!1},null,8,["text"]))])],64)):O("",!0)])):O("",!0)],40,gl))}}),Pl=Me(Al,[["__scopeId","data-v-7c2e41e4"]]),Rl=wt({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...yn({filterKeys:["title"]}),...pn({hideNoData:!0,returnObject:!0}),...Ba(La({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),Fl=Rt()({name:"VCombobox",props:Rl(),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:s}=be(),n=Re(),i=F(!1),v=F(!0),f=F(!1),d=Re(),r=Re(),g=F(-1);let m=!1;const{items:C,transformIn:P,transformOut:E}=Aa(e),{textColorClasses:b,textColorStyles:k}=la(()=>n.value?.color),{InputIcon:c}=Pa(e),h=zt(e,"modelValue",[],M=>P(Ra(M)),M=>{const j=E(M);return e.multiple?j:j[0]??null}),q=sa(e),Z=Je(()=>e.closableChips&&!q.isReadonly.value&&!q.isDisabled.value),_=A(()=>!!(e.chips||t.chip)),p=A(()=>_.value||!!t.selection),o=F(!e.multiple&&!p.value?h.value[0]?.title??"":""),T=F(null),I=A({get:()=>o.value,set:async M=>{if(o.value=M??"",M===null||M===""&&!e.multiple&&!p.value?h.value=[]:!e.multiple&&!p.value&&(h.value=[mt(e,M)],He(()=>r.value?.scrollToIndex(0))),M&&e.multiple&&e.delimiters?.length){const j=ge(M);j.length>1&&(fe(j),o.value="")}M||(g.value=-1),v.value=!M}}),R=A(()=>typeof e.counterValue=="function"?e.counterValue(h.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?h.value.length:I.value.length),{filteredItems:$,getMatches:x}=cn(e,C,()=>T.value??(e.alwaysFilter||!v.value?I.value:"")),D=A(()=>e.hideSelected&&T.value===null?$.value.filter(M=>!h.value.some(j=>j.value===M.value)):$.value),ae=A(()=>e.hideNoData&&!D.value.length||q.isReadonly.value||q.isDisabled.value),ie=zt(e,"menu"),J=A({get:()=>ie.value,set:M=>{ie.value&&!M&&d.value?.ΨopenChildren.size||M&&ae.value||(ie.value=M)}}),{menuId:we,ariaExpanded:me,ariaControls:he}=vn(e,J);se(o,M=>{m?He(()=>m=!1):i.value&&!J.value&&(J.value=!0),a("update:search",M)}),se(h,M=>{!e.multiple&&!p.value&&(o.value=M[0]?.title??"")});const De=A(()=>h.value.map(M=>M.value)),re=A(()=>D.value.find(M=>M.type==="item"&&!M.props.disabled)),ke=A(()=>(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&I.value===re.value?.title)&&D.value.length>0&&!v.value&&!f.value),$e=Re(),Te=Re(),xe=Re(),B=gn($e,n),G=bn(J,()=>d.value?.contentEl,()=>n.value?.controlRef),{onTabKeydown:Ve}=hn({groups:[{type:"element",contentRef:Te},{type:"list",contentRef:$e,displayItemsCount:()=>D.value.length},{type:"element",contentRef:xe}],onLeave:()=>{J.value=!1,n.value?.focus()}});function Oe(M){m=!0,He(()=>m=!1),e.openOnClear&&(J.value=!0)}function Ue(){ae.value||(J.value=!0)}function ye(M){ae.value||(i.value&&(M.preventDefault(),M.stopPropagation()),J.value=!J.value)}function Ne(M){M.key==="Tab"&&Ve(M),$e.value?.$el.contains(M.target)&&(Jt(M)||M.key==="Backspace")&&n.value?.focus()}function qe(M){if(_a(M)||q.isReadonly.value)return;const j=n.value?.selectionStart,ee=h.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(M.key)&&M.preventDefault(),["Enter","ArrowDown"].includes(M.key)&&(J.value=!0),["Escape"].includes(M.key)&&(J.value=!1),ke.value&&["Enter","Tab"].includes(M.key)&&re.value&&!h.value.some(({value:ce})=>ce===re.value.value)&&ne(re.value),M.key==="ArrowDown"&&ke.value&&$e.value?.focus("next"),M.key==="Enter"&&I.value&&(ne(mt(e,I.value),!0,!0),p.value&&(o.value="")),["Backspace","Delete"].includes(M.key)){if(!e.multiple&&p.value&&h.value.length>0&&!I.value)return ne(h.value[0],!1);if(~g.value){M.preventDefault();const ce=g.value;ne(h.value[g.value],!1),g.value=ce>=ee-1?ee-2:ce}else M.key==="Backspace"&&!I.value&&(g.value=ee-1);return}if(e.multiple)if(M.key==="ArrowLeft"){if(g.value<0&&j&&j>0)return;const ce=g.value>-1?g.value-1:ee-1;h.value[ce]?g.value=ce:(g.value=-1,n.value?.setSelectionRange(I.value.length,I.value.length))}else if(M.key==="ArrowRight"){if(g.value<0)return;const ce=g.value+1;h.value[ce]?g.value=ce:(g.value=-1,n.value?.setSelectionRange(0,0))}else~g.value&&Jt(M)&&(g.value=-1)}function je(M){const j=M?.clipboardData?.getData("Text")??"",ee=ge(j);ee.length>1&&e.multiple&&(M.preventDefault(),fe(ee))}function U(){e.eager&&r.value?.calculateVisibleItems()}function Q(){i.value&&(d.value?.contentEl?._clickOutside?.lastMousedownWasOutside?i.value=!1:n.value?.focus()),v.value=!0,T.value=null}function ne(M,j=!0,ee=!1){if(!(!M||M.props.disabled))if(e.multiple){const ce=h.value.findIndex(H=>(e.valueComparator||Gt)(H.value,M.value)),Ae=j??!~ce;if(~ce){const H=Ae?[...h.value,M]:[...h.value];H.splice(ce,1),h.value=H}else Ae&&(h.value=[...h.value,M]);e.clearOnSelect&&(I.value="")}else{const ce=j!==!1;h.value=ce?[M]:[],(!v.value||e.alwaysFilter)&&o.value&&(T.value=o.value),o.value=ce&&!p.value?M.title:"",He(()=>{J.value=ee,v.value=!0})}}function ge(M){const ee=[`
|
|
2
|
+
`,...e.delimiters??[]].map(Na).join("|");return M.split(new RegExp(`(?:${ee})+`))}async function fe(M){for(let j of M)j=j.trim(),j&&(ne(mt(e,j)),await He())}function Ke(M){i.value=!0,setTimeout(()=>{f.value=!0})}function N(M){if(f.value=!1,!n.value?.$el.contains(M.relatedTarget)){if(G(M))return;i.value=!1}}let Y=0;function te(){Y=performance.now()}function ve(M){const j=M.relatedTarget;(d.value?.contentEl?.contains(j)||!j&&performance.now()-Y<10)&&(i.value=!0)}return se(i,(M,j)=>{if(!(M||M===j)&&(g.value=-1,J.value=!1,I.value)){if(e.multiple){ne(mt(e,I.value));return}if(!p.value)return;h.value.some(({title:ee})=>ee===I.value)?o.value="":ne(mt(e,I.value))}}),se(J,M=>{if(!e.hideSelected&&M&&h.value.length&&v.value){const j=D.value.findIndex(ee=>h.value.some(ce=>(e.valueComparator||Gt)(ce.value,ee.value)));ia&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{j>=0&&r.value?.scrollToIndex(j)})}M&&(T.value=null)}),se(C,(M,j)=>{J.value||i.value&&!j.length&&M.length&&(J.value=!0)}),Ft(()=>{const M=!!(!e.hideNoData||D.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),j=h.value.length>0,ee=it.filterProps(e),ce={search:I,filteredItems:$.value};return y(it,ue({ref:n},ee,{modelValue:I.value,"onUpdate:modelValue":Ae=>I.value=Ae,focused:i.value,"onUpdate:focused":Ae=>i.value=Ae,validationValue:h.externalValue,counterValue:R.value,dirty:j,class:["v-combobox",{"v-combobox--active-menu":J.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!p.value,"v-combobox--selecting-index":g.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:q.isReadonly.value,placeholder:j?void 0:e.placeholder,"onClick:clear":Oe,"onMousedown:control":Ue,onKeydown:qe,onPaste:je,onBlur:ve,"aria-expanded":me.value,"aria-controls":he.value}),{...t,default:({id:Ae})=>w(oe,null,[y(yt,ue({id:we.value,ref:d,modelValue:J.value,"onUpdate:modelValue":H=>J.value=H,activator:"parent",disabled:ae.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:U,onAfterLeave:Q},e.menuProps,{contentClass:["v-combobox__content",e.menuProps?.contentClass]}),{default:()=>[y(wn,{elevation:e.menuElevation,onFocusin:Ke,onKeydown:Ne,onMousedown:te},{default:()=>[t["menu-header"]&&w("header",{ref:Te},[t["menu-header"](ce)]),M&&y(bt,ue({key:"combobox-list",ref:$e,filterable:!0,selected:De.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:H=>H.preventDefault(),selectable:!!D.value.length,onFocusout:N,tabindex:"-1","aria-live":"polite","aria-labelledby":`${Ae.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},B,e.listProps),{default:()=>[t["prepend-item"]?.(),!D.value.length&&!e.hideNoData&&(t["no-data"]?.()??y(Ie,{key:"no-data",title:s(e.noDataText)},null)),y(mn,{ref:r,renderless:!0,items:D.value,itemKey:"value"},{default:({item:H,index:_e,itemRef:at})=>{const Ye=Da(H.props),nt=ue(H.props,{ref:at,key:H.value,active:ke.value&&H===re.value?!0:void 0,onClick:()=>ne(H,null),"aria-posinset":_e+1,"aria-setsize":D.value.length});return H.type==="divider"?t.divider?.({props:H.raw,index:_e})??y(ut,ue(H.props,{key:`divider-${_e}`}),null):H.type==="subheader"?t.subheader?.({props:H.raw,index:_e})??y(Ua,ue(H.props,{key:`subheader-${_e}`}),null):t.item?.({item:H.raw,internalItem:H,index:_e,props:nt})??y(Ie,ue(nt,{role:"option"}),{prepend:({isSelected:lt})=>w(oe,null,[e.multiple&&!e.hideSelected?y(oa,{key:H.value,modelValue:lt,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:ze=>ze.preventDefault()},null):void 0,Ye.prependAvatar&&y(za,{image:Ye.prependAvatar},null),Ye.prependIcon&&y(Fe,{icon:Ye.prependIcon},null)]),title:()=>v.value?H.title:y(fn,{text:H.title,matches:x(H)?.title,markClass:"v-combobox__mask",matchAll:!0,ignoreCase:!0},null)})}}),t["append-item"]?.()]}),t["menu-footer"]&&w("footer",{ref:xe},[t["menu-footer"](ce)])]})]}),h.value.map((H,_e)=>{function at(ze){ze.stopPropagation(),ze.preventDefault(),ne(H,!1)}const Ye=ue(ct.filterProps(H.props),{"onClick:close":at,onKeydown(ze){ze.key!=="Enter"&&ze.key!==" "||(ze.preventDefault(),ze.stopPropagation(),at(ze))},onMousedown(ze){ze.preventDefault(),ze.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),nt=_.value?!!t.chip:!!t.selection,lt=nt?Ea(_.value?t.chip({item:H.raw,internalItem:H,index:_e,props:Ye}):t.selection({item:H.raw,internalItem:H,index:_e})):void 0;if(!(nt&&!lt))return w("div",{key:H.value,class:Ee(["v-combobox__selection",_e===g.value&&["v-combobox__selection--selected",b.value]]),style:et(_e===g.value?k.value:{})},[_.value?t.chip?y(Oa,{key:"chip-defaults",defaults:{VChip:{closable:Z.value,size:"small",text:H.title}}},{default:()=>[lt]}):y(ct,ue({key:"chip",closable:Z.value,size:"small",text:H.title,disabled:H.props.disabled},Ye),null):lt??w("span",{class:"v-combobox__selection-text"},[H.title,e.multiple&&_e<h.value.length-1&&w("span",{class:"v-combobox__selection-comma"},[le(",")])])])})]),"append-inner":(...Ae)=>w(oe,null,[t["append-inner"]?.(...Ae),(!e.hideNoData||e.items.length)&&e.menuIcon?y(Fe,{class:"v-combobox__menu-icon",color:n.value?.fieldIconColor,icon:e.menuIcon,onMousedown:ye,onClick:Fa,"aria-hidden":!0,tabindex:"-1"},null):void 0,e.appendInnerIcon&&y(c,{key:"append-icon",name:"appendInner",color:Ae[0].iconColor.value},null)])})}),ra({isFocused:i,isPristine:v,menu:J,search:I,selectionIndex:g,filteredItems:$,select:ne},n)}}),Dl=["aria-label","aria-busy"],Ul={class:"agent-interaction-heading"},zl={class:"agent-interaction-content"},El={class:"agent-interaction-title"},Ol={key:1},_l={key:0,class:"agent-input-questions"},Bl={class:"agent-question-label"},Ll={class:"agent-question-text"},Nl={key:2,class:"agent-interaction-resolved"},ql={key:0,class:"agent-interaction-footer"},jl={key:0,class:"agent-interaction-actions"},Kl=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,s=a,n=be(),i=A(()=>Object.fromEntries(t.item.interaction.questions.map(b=>[b.id,b.options.map(k=>({title:k.label,value:k.id}))]))),v=A(()=>{const b=t.item.interaction.approvalOptions,k=b[0],c=b.find(q=>q.id==="decline"||q.id==="deny"),h=k?[k]:[];return c&&c!==k&&h.push(c),h}),f=A(()=>t.item.interaction.approvalOptions.filter(b=>!v.value.includes(b))),d={accept:"accept",allow:"accept",acceptForSession:"session",decline:"deny",deny:"deny",cancel:"cancel",acceptWithExecpolicyAmendment:"similar"};function r(b,k){const c=d[b];return c?n.t("$vuetify.chatroom.agents.approvalChoices."+c):k}function g(b){return b==="cancel"?"$mdiStopCircleOutline":b==="decline"||b==="deny"?"$mdiCloseOctagonOutline":"$mdiCheckCircleOutline"}const m=A(()=>{const b=t.item.interaction.response;if(!b)return n.t(t.item.status==="completed"?"$vuetify.chatroom.agents.resolvedExternally":"$vuetify.chatroom.agents.statuses."+t.item.status);if(b.type==="approval"){const k=t.item.interaction.approvalOptions.find(c=>c.id===b.decision);return r(b.decision,k?.label??b.decision)}return t.item.interaction.questions.map(k=>k.label+": "+(k.secret?"••••":(b.answers[k.id]??[]).join(", "))).join(`
|
|
3
|
+
`)});function C(b){return t.answers[b]??[]}function P(b){return Array.isArray(b)?b.filter(k=>typeof k=="string"):typeof b=="string"&&b?[b]:[]}function E(b,k){s("update-answer",b,P(k))}return(b,k)=>(l(),S("section",{class:Ee(["agent-interaction-card",{"agent-interaction-card--pinned":e.pinned}]),"aria-label":e.item.interaction.title,"aria-busy":e.responding},[w("header",Ul,[y(Fe,{icon:e.item.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),w("span",null,V(u(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?(l(),L(Pt,{key:0,indeterminate:"",size:"15",width:"2"})):O("",!0)]),w("div",zl,[w("div",El,V(e.item.interaction.title),1),e.item.interaction.description?(l(),S("pre",{key:0,class:Ee(["agent-interaction-description",{mono:e.item.interaction.kind==="approval"}])},V(e.item.interaction.description),3)):O("",!0),e.item.status==="waiting"?(l(),S("div",Ol,[e.item.interaction.kind!=="approval"?(l(),S("div",_l,[(l(!0),S(oe,null,Se(e.item.interaction.questions,c=>(l(),S("div",{key:c.id,class:"agent-question"},[w("div",Bl,V(c.label),1),w("div",Ll,V(c.question),1),c.options.length&&c.allowFreeText?(l(),L(Fl,{key:0,"model-value":c.multiSelect?C(c.id):C(c.id)[0]??null,items:i.value[c.id]??[],"aria-label":c.label+": "+c.question,"return-object":!1,multiple:c.multiSelect,chips:c.multiSelect,"closable-chips":c.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":h=>E(c.id,h)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):c.options.length?(l(),L(Ge,{key:1,"model-value":c.multiSelect?C(c.id):C(c.id)[0]??null,items:i.value[c.id]??[],"aria-label":c.label+": "+c.question,"return-object":!1,multiple:c.multiSelect,chips:c.multiSelect,"closable-chips":c.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":h=>E(c.id,h)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):(l(),L(it,{key:2,"model-value":C(c.id)[0]??"",type:c.secret?"password":"text","aria-label":c.label+": "+c.question,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":h=>E(c.id,h)},null,8,["model-value","type","aria-label","disabled","onUpdate:modelValue"]))]))),128))])):O("",!0)])):(l(),S("div",Nl,V(m.value),1))]),e.item.status==="waiting"?(l(),S("footer",ql,[e.item.interaction.kind==="approval"?(l(),S("div",jl,[(l(!0),S(oe,null,Se(v.value,c=>(l(),L(de,{key:c.id,color:c.id==="decline"||c.id==="deny"||c.id==="cancel"?"error":"primary","prepend-icon":g(c.id),variant:"tonal",size:"small",title:c.description??void 0,disabled:e.responding,onClick:h=>s("approve",c.id)},{default:z(()=>[le(V(r(c.id,c.label)),1)]),_:2},1032,["color","prepend-icon","title","disabled","onClick"]))),128)),f.value.length?(l(),L(yt,{key:0,location:"top end",offset:"8"},{activator:z(({props:c})=>[y(de,ue(c,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",disabled:e.responding,"aria-label":u(n).t("$vuetify.chatroom.agents.moreApprovalOptions"),title:u(n).t("$vuetify.chatroom.agents.moreApprovalOptions")}),null,16,["disabled","aria-label","title"])]),default:z(()=>[y(bt,{density:"compact",class:"agent-approval-more-menu"},{default:z(()=>[(l(!0),S(oe,null,Se(f.value,c=>(l(),L(Ie,{key:c.id,title:r(c.id,c.label),subtitle:c.description??"","prepend-icon":g(c.id),disabled:e.responding,onClick:h=>s("approve",c.id)},null,8,["title","subtitle","prepend-icon","disabled","onClick"]))),128))]),_:1})]),_:1})):O("",!0)])):O("",!0),e.item.interaction.kind!=="approval"?(l(),L(de,{key:1,color:"primary",variant:"tonal",size:"small",loading:e.responding,disabled:e.responding,onClick:k[0]||(k[0]=c=>s("submit"))},{default:z(()=>[le(V(u(n).t("$vuetify.chatroom.agents.submit")),1)]),_:1},8,["loading","disabled"])):O("",!0)])):O("",!0)],10,Dl))}}),ha=Me(Kl,[["__scopeId","data-v-45060adf"]]),Wl={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"},Hl=["width","height"],Gl=["d"],Jl={key:1,fill:"none",stroke:"currentColor","stroke-width":"1.8"},Yl=Ce({__name:"AgentProviderIcon",props:{icon:{default:null},size:{default:16}},setup(e){const a=e,t={openai:Wl.path},s=A(()=>a.icon?t[a.icon]??null:null);return(n,i)=>(l(),S("svg",{class:"agent-provider-icon",width:e.size,height:e.size,viewBox:"0 0 24 24","aria-hidden":"true"},[s.value?(l(),S("path",{key:0,d:s.value,fill:"currentColor"},null,8,Gl)):(l(),S("g",Jl,[...i[0]||(i[0]=[w("circle",{cx:"12",cy:"12",r:"8.5"},null,-1),w("path",{d:"m8.5 16 3.5-8 3.5 8M10 13h4"},null,-1)])]))],8,Hl))}}),pt=Me(Yl,[["__scopeId","data-v-9209bf7a"]]),Xl=["open","data-status"],Ql=["title"],Zl={class:"agent-activity-title"},es={key:0,class:"agent-activity-body"},ts={key:0,class:"agent-tool-progress",role:"status"},as={key:3,class:"agent-inline-error"},ns={class:"agent-file-change-name"},ls={class:"mono"},ss={key:3,class:"agent-plan"},is={key:1,class:"agent-plan-steps"},os=["data-status"],rs={class:"agent-plan-step-text"},us={class:"agent-plan-step-status"},ds={key:4,class:"agent-artifact-path mono"},cs=Ce({__name:"AgentActivity",props:{item:{}},setup(e){const a=e,t=be(),s=F(a.item.status==="running"||a.item.status==="failed");se(()=>a.item.status,f=>{(f==="running"||f==="failed")&&(s.value=!0)});const n=A(()=>{const f=a.item;if(f.type==="tool")return[f.server,f.name].filter(Boolean).join(" / ");const d={file_change:"fileChanges",turn_diff:"turnDiff",plan:"plan",artifact:"artifact"}[f.type];return t.t("$vuetify.chatroom.agents."+d)}),i=A(()=>a.item.type==="tool"?"$mdiTuneVariant":a.item.type==="file_change"||a.item.type==="turn_diff"?"$mdiFileCompare":a.item.type==="plan"?"$mdiTextBoxOutline":"$mdiFileOutline");function v(f,d){const r=f.steps[d];let g=0;for(let m=0;m<d;m++)f.steps[m]?.step===r.step&&g++;return f.id+":"+r.step+":"+g}return(f,d)=>(l(),S("details",{class:"agent-activity",open:s.value,"data-status":e.item.status,onToggle:d[0]||(d[0]=r=>s.value=r.target.open)},[w("summary",{class:"agent-activity-heading",title:n.value},[y(Fe,{icon:i.value,size:"18"},null,8,["icon"]),w("span",Zl,V(n.value),1),e.item.status==="running"?(l(),L(Pt,{key:0,indeterminate:"",size:"14",width:"2"})):e.item.status==="failed"?(l(),L(Fe,{key:1,icon:"$mdiAlertCircleOutline",size:"16",color:"error"})):O("",!0),y(Fe,{class:"agent-activity-chevron",icon:"$mdiChevronRight",size:"16"})],8,Ql),s.value?(l(),S("div",es,[e.item.type==="tool"?(l(),S(oe,{key:0},[e.item.progress?(l(),S("div",ts,V(e.item.progress),1)):O("",!0),e.item.input!=null?(l(),L(ot,{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?(l(),L(ot,{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?(l(),S("div",as,V(e.item.error),1)):O("",!0)],64)):e.item.type==="turn_diff"?(l(),L(ot,{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"?(l(!0),S(oe,{key:2},Se(e.item.changes,r=>(l(),S("div",{key:r.path+":"+r.kind+":"+(r.movePath??""),class:"agent-file-change"},[w("div",ns,[y(ct,{size:"x-small",variant:"tonal"},{default:z(()=>[le(V(r.kind),1)]),_:2},1024),w("span",ls,V(r.path),1)]),r.diff?(l(),L(ot,{key:0,text:r.diff,filename:r.path,highlight:e.item.status!=="running",language:"diff",toolbar:!1},null,8,["text","filename","highlight"])):O("",!0)]))),128)):e.item.type==="plan"?(l(),S("div",ss,[e.item.text?(l(),L(_t,{key:0,text:e.item.text,streaming:e.item.status==="running"},null,8,["text","streaming"])):O("",!0),e.item.steps.length?(l(),S("ol",is,[(l(!0),S(oe,null,Se(e.item.steps,(r,g)=>(l(),S("li",{key:v(e.item,g),"data-status":r.status},[w("span",rs,V(r.step),1),w("span",us,V(u(t).t(`$vuetify.chatroom.agents.planStatuses.${r.status}`)),1)],8,os))),128))])):O("",!0)])):e.item.type==="artifact"?(l(),S("div",ds,V(e.item.artifact.path),1)):O("",!0)])):O("",!0)],40,Xl))}}),vs=Me(cs,[["__scopeId","data-v-63e4d047"]]),ms={class:"agent-turn"},fs={key:0,class:"agent-message-row user"},gs={class:"agent-message user-message"},ps={class:"agent-message-text agent-plain-text"},ys=["data-source"],hs={key:0,class:"agent-message-attachments"},bs=["title"],ws=["data-status"],ks={key:0},$s=["data-phase"],Ss={key:4,class:"agent-reasoning-summary"},Cs={class:"agent-summary-label"},xs={key:5,class:"agent-response-command"},Vs={key:7,class:"agent-resolved-interaction"},Is=["data-status"],Ms={key:2},Ts=["data-level"],As=Ce({__name:"AgentTurn",props:{entry:{},workspaceId:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=be(),s=A(()=>{const r=[],g=a.entry.items;let m=!1;for(let C=0;C<g.length;C+=1){const P=g[C];if(P.type!=="user_message"&&!m&&(r.push({id:"provider-marker:"+a.entry.turn.id,type:"provider_marker",provider:a.entry.turn.provider,model:a.entry.turn.model}),m=!0),P.type!=="artifact"||P.artifact.kind!=="image"){r.push(P);continue}const E=[P];for(;C+1<g.length;){const b=g[C+1];if(b.type!=="artifact"||b.artifact.kind!=="image")break;E.push(b),C+=1}r.push({id:"image-gallery:"+E[0].id,type:"image_gallery",items:E})}return!m&&g.length===0&&a.entry.turn.status!=="completed"&&r.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")&&r.push({id:"turn-status:"+a.entry.turn.id,type:"turn_status",status:a.entry.turn.status,error:d()}),r});function n(r){return a.providerNames[r]??r}function i(r){return a.providerIcons[r]??null}function v(r){return r==="mcp"?"$mdiConnection":"$mdiAccountOutline"}function f(r){return t.t(r==="mcp"?"$vuetify.chatroom.agents.sources.mcp":"$vuetify.chatroom.agents.sources.human")}function d(){const r=a.entry.turn.error;return r?[r.message,r.details,r.providerData?JSON.stringify(r.providerData,null,2):null].filter(Boolean).join(`
|
|
4
|
+
`):null}return(r,g)=>(l(),S("div",ms,[(l(!0),S(oe,null,Se(s.value,m=>(l(),S(oe,{key:m.id},[m.type==="user_message"?(l(),S("div",fs,[w("div",gs,[w("div",ps,V(m.text),1),w("div",{class:"agent-message-source","data-source":m.source??e.entry.turn.source},[y(Fe,{icon:v(m.source??e.entry.turn.source),size:"13"},null,8,["icon"]),w("span",null,V(f(m.source??e.entry.turn.source)),1)],8,ys),m.attachments.length?(l(),S("div",hs,[(l(!0),S(oe,null,Se(m.attachments,C=>(l(),L(ct,{key:C.path,size:"x-small",variant:"tonal","prepend-icon":"$mdiFileOutline"},{default:z(()=>[le(V(C.name),1)]),_:2},1024))),128))])):O("",!0)])])):m.type==="provider_marker"?(l(),S("div",{key:1,class:"agent-turn-provider",title:m.model?n(m.provider)+" · "+m.model:n(m.provider)},[y(pt,{icon:i(m.provider),size:13},null,8,["icon"]),w("span",null,V(n(m.provider)),1)],8,bs)):m.type==="turn_status"?(l(),S("div",{key:2,class:"agent-turn-status","data-status":m.status},[w("span",null,V(u(t).t(`$vuetify.chatroom.agents.statuses.${m.status}`)),1),m.error?(l(),S("span",ks," · "+V(m.error),1)):O("",!0)],8,ws)):m.type==="assistant_message"?(l(),S("div",{key:3,class:"agent-response-text","data-phase":m.phase},[y(_t,{class:"agent-message-markdown",text:m.text,streaming:m.status==="running"},null,8,["text","streaming"]),m.status==="running"?(l(),L(qa,{key:0,indeterminate:"",height:"2",class:"agent-item-progress"})):O("",!0)],8,$s)):m.type==="reasoning_summary"?(l(),S("div",Ss,[w("div",Cs,V(u(t).t("$vuetify.chatroom.agents.reasoningSummary")),1),y(_t,{text:m.text,streaming:m.status==="running"},null,8,["text","streaming"])])):m.type==="command"?(l(),S("div",xs,[y(Pl,{command:m.command,cwd:m.cwd,output:m.output,"exit-code":m.exitCode,status:m.status},null,8,["command","cwd","output","exit-code","status"])])):m.type==="image_gallery"?(l(),L(fl,{key:6,items:m.items,"workspace-id":e.workspaceId},null,8,["items","workspace-id"])):m.type==="interaction"&&m.status!=="waiting"?(l(),S("details",Vs,[w("summary",null,[y(Fe,{icon:m.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),le(" "+V(m.interaction.title),1)]),y(ha,{item:m},null,8,["item"])])):m.type==="tool"||m.type==="file_change"||m.type==="turn_diff"||m.type==="plan"||m.type==="artifact"?(l(),L(vs,{key:8,item:m},null,8,["item"])):m.type==="context_compaction"?(l(),S("div",{key:9,class:"agent-compaction","data-status":m.status,role:"status","aria-live":"polite"},[m.status==="running"?(l(),L(Pt,{key:0,indeterminate:"",size:"14",width:"2"})):(l(),L(Fe,{key:1,icon:m.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"16"},null,8,["icon"])),w("span",null,V(u(t).t("$vuetify.chatroom.agents.compaction."+(m.status==="running"?"running":m.status==="completed"?"completed":"failed"))),1),m.error?(l(),S("span",Ms,V(m.error),1)):O("",!0)],8,Is)):m.type==="notice"?(l(),S("div",{key:10,class:"agent-notice","data-level":m.level},V(m.text),9,Ts)):O("",!0)],64))),128))]))}}),Ps=Me(As,[["__scopeId","data-v-a21355e6"]]),Rs={class:"agent-conversation-shell"},Fs={key:1,class:"empty-panel"},ft=100,Ds=Ce({__name:"AgentConversation",props:{history:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=be(),s=F(ft),n=dt("conversation"),i=dt("conversationContent"),{autoFollow:v,onConversationScroll:f,scrollToBottom:d}=Xn(n,i),r=A(()=>{const C=a.history?.turns??[];return C.slice(Math.max(0,C.length-s.value))}),g=A(()=>Math.max(0,(a.history?.turns.length??0)-r.value.length));se(()=>a.history?.session.id??null,()=>{s.value=ft,d()},{flush:"post"}),se(()=>a.history?.turns.length??0,(C,P)=>{P>0&&C>P&&s.value>ft&&(s.value+=C-P)});async function m(){const C=n.value,P=C?.scrollHeight??0,E=C?.scrollTop??0;s.value+=ft,await He(),C&&(C.scrollTop=E+(C.scrollHeight-P))}return(C,P)=>(l(),S("div",Rs,[w("div",{ref_key:"conversation",ref:n,class:"agent-conversation",onScrollPassive:P[0]||(P[0]=(...E)=>u(f)&&u(f)(...E))},[w("div",{ref_key:"conversationContent",ref:i,class:"agent-conversation-content"},[g.value?(l(),L(de,{key:0,class:"agent-show-older-turns",size:"small",variant:"text",onClick:m},{default:z(()=>[le(V(u(t).t("$vuetify.chatroom.agents.showOlderTurns",String(Math.min(ft,g.value)))),1)]),_:1})):O("",!0),e.history?.turns.length?O("",!0):(l(),S("div",Fs,V(u(t).t("$vuetify.chatroom.agents.noHistory")),1)),(l(!0),S(oe,null,Se(r.value,E=>(l(),L(Ps,{key:E.turn.id,entry:E,"workspace-id":e.history?.session.workspaceId??"","provider-names":e.providerNames,"provider-icons":e.providerIcons},null,8,["entry","workspace-id","provider-names","provider-icons"]))),128))],512)],544),u(v)?O("",!0):(l(),L(de,{key:0,class:"agent-back-to-latest",icon:"$mdiArrowDown",size:"small",variant:"tonal",title:u(t).t("$vuetify.chatroom.agents.backToLatest"),"aria-label":u(t).t("$vuetify.chatroom.agents.backToLatest"),onClick:u(d)},null,8,["title","aria-label","onClick"]))]))}}),Us=Me(Ds,[["__scopeId","data-v-ba195222"]]),zs={key:3,class:"agent-native-granular"},Es={class:"agent-setting-heading"},Os=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=pe(e,"reasoningSummary"),s=pe(e,"serviceTier"),n=pe(e,"approvalMode"),i=pe(e,"granular"),v=pe(e,"reviewer"),f=pe(e,"permissionMode"),d=be(),r=F(null),g=A(()=>a.outlined?{variant:"outlined"}:{}),m=A(()=>[{title:q(a.model?.defaultReasoningSummary?h(a.model.defaultReasoningSummary):null),value:null,subtitle:""},...(a.model?.reasoningSummaries??[]).map(p=>({title:h(p),value:p,subtitle:""}))]),C=A(()=>{const p=a.model?.serviceTiers??[];return[{title:q(p.find(o=>o.id===a.model?.defaultServiceTier)?.name??a.model?.defaultServiceTier),value:null,subtitle:""},...p.map(o=>({title:o.name,value:o.id,subtitle:o.description}))]});function P(p){return(p?.options??[]).map(o=>({title:`${b(o.id,"title")} (${o.id})`,value:o.id,subtitle:b(o.id,"description",o.description??"")}))}const E={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 b(p,o,T=p){const I=E[p];return I?d.t(`$vuetify.chatroom.agents.nativeOptions.${I}.${o}`):T}function k(p){if(p!==f.value){if(p==="danger-full-access"){r.value=p;return}f.value=p}}function c(){const p=r.value;r.value=null,p&&(p==="danger-full-access"&&(n.value="never"),f.value=p)}function h(p){return d.t(`$vuetify.chatroom.agents.summaries.${p}`)}function q(p){return jt(d.t("$vuetify.chatroom.agents.defaultModel"),p)}function Z(p){return p in i.value?i.value[p]:!1}function _(p,o){p in i.value&&(i.value={...i.value,[p]:o})}return(p,o)=>(l(),S(oe,null,[e.model?.reasoningSummaries?.length?(l(),L(Ge,ue({key:0,modelValue:t.value,"onUpdate:modelValue":o[0]||(o[0]=T=>t.value=T),items:m.value,label:u(d).t("$vuetify.chatroom.agents.reasoningSummary"),density:"compact"},g.value,{"hide-details":"",disabled:e.disabled}),{item:z(({props:T,item:I})=>[y(Ie,ue(T,{subtitle:I.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.model?.serviceTiers?.length?(l(),L(Ge,ue({key:1,modelValue:s.value,"onUpdate:modelValue":o[1]||(o[1]=T=>s.value=T),items:C.value,label:u(d).t("$vuetify.chatroom.agents.serviceTier"),density:"compact"},g.value,{"hide-details":"",disabled:e.disabled}),{item:z(({props:T,item:I})=>[y(Ie,ue(T,{subtitle:I.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting?(l(),L(Ge,ue({key:2,modelValue:n.value,"onUpdate:modelValue":o[2]||(o[2]=T=>n.value=T),items:P(e.approvalSetting),label:u(d).t("$vuetify.chatroom.agents.approvalPolicy"),density:"compact"},g.value,{"hide-details":"",disabled:e.disabled}),{item:z(({props:T,item:I})=>[y(Ie,ue(T,{subtitle:I.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting&&n.value==="granular"?(l(),S("div",zs,[w("div",Es,V(u(d).t("$vuetify.chatroom.agents.granularApprovals")),1),(l(!0),S(oe,null,Se(e.approvalSetting.granularFields,T=>(l(),L(kn,{key:T.id,"model-value":Z(T.id),label:T.id,title:T.description??void 0,density:"compact",color:"primary","hide-details":"",disabled:e.disabled,"onUpdate:modelValue":I=>_(T.id,!!I)},null,8,["model-value","label","title","disabled","onUpdate:modelValue"]))),128))])):O("",!0),e.reviewerSetting?(l(),L(Ge,ue({key:4,modelValue:v.value,"onUpdate:modelValue":o[3]||(o[3]=T=>v.value=T),items:P(e.reviewerSetting),label:u(d).t("$vuetify.chatroom.agents.approvalsReviewer"),density:"compact"},g.value,{"hide-details":"",disabled:e.disabled}),{item:z(({props:T,item:I})=>[y(Ie,ue(T,{subtitle:I.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.permissionSetting?(l(),L(Ge,ue({key:5,"model-value":f.value,items:P(e.permissionSetting),label:u(d).t("$vuetify.chatroom.agents.permissionMode"),density:"compact"},g.value,{"hide-details":"",disabled:e.disabled,"onUpdate:modelValue":k}),{item:z(({props:T,item:I})=>[y(Ie,ue(T,{subtitle:I.subtitle}),null,16,["subtitle"])]),_:1},16,["model-value","items","label","disabled"])):O("",!0),y(ht,{"model-value":r.value!==null,width:"auto","max-width":"32rem","onUpdate:modelValue":o[5]||(o[5]=T=>{T||(r.value=null)})},{default:z(()=>[y(Qe,null,{default:z(()=>[y(It,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-warning"},{default:z(()=>[y(Mt,null,{default:z(()=>[le(V(u(d).t("$vuetify.chatroom.agents.fullAccessTitle")),1)]),_:1})]),_:1}),y(Tt,null,{default:z(()=>[le(V(u(d).t("$vuetify.chatroom.agents.fullAccessConfirm")),1)]),_:1}),y(At,null,{default:z(()=>[y(kt),y(de,{variant:"text",onClick:o[4]||(o[4]=T=>r.value=null)},{default:z(()=>[le(V(u(d).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),y(de,{color:"warning",variant:"flat",onClick:c},{default:z(()=>[le(V(u(d).t("$vuetify.chatroom.common.confirm")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["model-value"])],64))}}),ba=Me(Os,[["__scopeId","data-v-7d7f4fb1"]]),Kt=Symbol.for("vuetify:v-slider");function _s(e,a,t){const s=t==="vertical",n=a.getBoundingClientRect(),i="touches"in e?e.touches[0]:e;return s?i.clientY-(n.top+n.height/2):i.clientX-(n.left+n.width/2)}function Bs(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 Ls=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,...Wa(),...Ka({elevation:1}),ripple:{type:Boolean,default:!0}},"Slider"),Ns=e=>{const a=A(()=>parseFloat(e.min)),t=A(()=>parseFloat(e.max)),s=A(()=>Number(e.step)>0?parseFloat(e.step):0),n=A(()=>Math.max(Yt(s.value),Yt(a.value)));function i(v){if(v=parseFloat(v),s.value<=0)return v;const f=Et(v,a.value,t.value),d=a.value%s.value;let r=Math.round((f-d)/s.value)*s.value+d;return f>r&&r+s.value>t.value&&(r=t.value),parseFloat(Math.min(r,t.value).toFixed(n.value))}return{min:a,max:t,step:s,decimals:n,roundValue:i}},qs=({props:e,steps:a,onSliderStart:t,onSliderMove:s,onSliderEnd:n,getActiveThumb:i})=>{const v=sa(e),{isRtl:f}=Bt(),d=Je(()=>e.reverse),r=A(()=>e.direction==="vertical"),g=A(()=>r.value!==d.value),{min:m,max:C,step:P,decimals:E,roundValue:b}=a,k=A(()=>parseInt(e.thumbSize,10)),c=A(()=>parseInt(e.tickSize,10)),h=A(()=>parseInt(e.trackSize,10)),q=A(()=>(C.value-m.value)/P.value),Z=A(()=>e.error||v.isDisabled.value?void 0:e.thumbColor??e.color),_=A(()=>e.error||v.isDisabled.value?void 0:e.thumbColor),p=A(()=>e.error||v.isDisabled.value?void 0:e.trackColor??e.color),o=A(()=>e.error||v.isDisabled.value?void 0:e.trackFillColor??e.color),T=F(!1),I=F(0),R=Re(),$=Re();function x(B){const G=R.value?.$el;if(!G)return;const Ve=e.direction==="vertical",Oe=Ve?"top":"left",Ue=Ve?"height":"width",ye=Ve?"clientY":"clientX",{[Oe]:Ne,[Ue]:qe}=G.getBoundingClientRect(),je=Bs(B,ye);let U=Et((je-Ne-I.value)/qe)||0;return(Ve?g.value:g.value!==f.value)&&(U=1-U),b(m.value+U*(C.value-m.value))}const D=B=>{const G=x(B);G!=null&&n({value:G}),T.value=!1,I.value=0},ae=B=>{const G=x(B);$.value=i(B),$.value&&(T.value=!0,$.value.contains(B.target)?I.value=_s(B,$.value,e.direction):(I.value=0,G!=null&&s({value:G})),G!=null&&t({value:G}),He(()=>$.value?.focus()))},ie={passive:!0,capture:!0};function J(B){const G=x(B);G!=null&&s({value:G})}function we(B){B.stopPropagation(),B.preventDefault(),D(B),window.removeEventListener("mousemove",J,ie),window.removeEventListener("mouseup",we)}function me(B){D(B),window.removeEventListener("touchmove",J,ie),B.target?.removeEventListener("touchend",me)}function he(B){ae(B),window.addEventListener("touchmove",J,ie),B.target?.addEventListener("touchend",me,{passive:!1})}function De(B){B.button===0&&(B.preventDefault(),ae(B),window.addEventListener("mousemove",J,ie),window.addEventListener("mouseup",we,{passive:!1}))}xt(()=>{ia&&(window.removeEventListener("touchmove",J),window.removeEventListener("mousemove",J),window.removeEventListener("mouseup",we))});const re=B=>{const G=(B-m.value)/(C.value-m.value)*100;return Et(isNaN(G)?0:G,0,100)},ke=Je(()=>e.showTicks),$e=A(()=>ke.value?e.ticks?Array.isArray(e.ticks)?e.ticks.map(B=>({value:B,position:re(B),label:B.toString()})):Object.keys(e.ticks).map(B=>({value:parseFloat(B),position:re(parseFloat(B)),label:e.ticks[B]})):q.value!==1/0?ja(q.value+1).map(B=>{const G=m.value+B*P.value;return{value:G,position:re(G)}}):[]:[]),Te=A(()=>$e.value.some(({label:B})=>!!B)),xe={activeThumbRef:$,color:Je(()=>e.color),decimals:E,disabled:v.isDisabled,direction:Je(()=>e.direction),elevation:Je(()=>e.elevation),hasLabels:Te,isReversed:d,indexFromEnd:g,min:m,max:C,mousePressed:T,noKeyboard:Je(()=>e.noKeyboard),numTicks:q,onSliderMousedown:De,onSliderTouchstart:he,parsedTicks:$e,parseMouseMove:x,position:re,readonly:v.isReadonly,rounded:Je(()=>e.rounded),roundValue:b,showTicks:ke,startOffset:I,step:P,thumbSize:k,thumbColor:Z,thumbLabelColor:_,thumbLabel:Je(()=>e.thumbLabel),ticks:Je(()=>e.ticks),tickSize:c,trackColor:p,trackContainerRef:R,trackFillColor:o,trackSize:h,vertical:r};return Ha(Kt,xe),xe},js=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,...da()},"VSliderThumb"),Ks=Rt()({name:"VSliderThumb",directives:{vRipple:Xt},props:js(),emits:{"update:modelValue":e=>!0},setup(e,{slots:a,emit:t}){const s=ua(Kt),{isRtl:n,rtlClasses:i}=Bt();if(!s)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{min:v,max:f,thumbColor:d,thumbLabelColor:r,step:g,disabled:m,thumbSize:C,thumbLabel:P,direction:E,isReversed:b,vertical:k,readonly:c,elevation:h,mousePressed:q,decimals:Z,indexFromEnd:_}=s,p=F(!1),o=F(!1),T=A(()=>m.value?void 0:h.value),{elevationClasses:I}=Xa(T),{textColorClasses:R,textColorStyles:$}=la(d),{backgroundColorClasses:x,backgroundColorStyles:D}=Ot(r),{pageup:ae,pagedown:ie,end:J,home:we,left:me,right:he,down:De,up:re}=Ga,ke=[ae,ie,J,we,me,he,De,re],$e=A(()=>g.value?[1,2,3]:[1,5,10]);function Te(B,G){if(e.noKeyboard||m.value||!ke.includes(B.key))return;B.preventDefault();const Ve=g.value||.1,Oe=(f.value-v.value)/Ve;if([me,he,De,re].includes(B.key)){const ye=(k.value?[n.value?me:he,b.value?De:re]:_.value!==n.value?[me,re]:[he,re]).includes(B.key)?1:-1,Ne=B.shiftKey?2:B.ctrlKey?1:0;ye===-1&&G===f.value&&!Ne&&!Number.isInteger(Oe)?G=G-Oe%1*Ve:G=G+ye*Ve*$e.value[Ne]}else if(B.key===we)G=v.value;else if(B.key===J)G=f.value;else{const Ue=B.key===ie?1:-1;G=G-Ue*Ve*(Oe>100?Oe/10:10)}return Math.max(e.min,Math.min(e.max,G))}function xe(B){const G=Te(B,e.modelValue);G!=null&&(o.value=!1,t("update:modelValue",G))}return se(()=>e.focused,B=>{B&&(o.value=!1)}),Ft(()=>{const B=st(_.value?100-e.position:e.position,"%"),G=P.value==="always"||P.value===!0&&e.focused||P.value==="hover"&&(p.value||e.focused&&!o.value);return w("div",{class:Ee(["v-slider-thumb",{"v-slider-thumb--focused":e.focused,"v-slider-thumb--pressed":e.focused&&q.value},e.class,i.value]),style:et([{"--v-slider-thumb-position":B,"--v-slider-thumb-size":st(C.value)},e.style]),role:"slider",tabindex:m.value?-1:0,"aria-label":e.name,"aria-valuemin":v.value,"aria-valuemax":f.value,"aria-valuenow":e.modelValue,"aria-readonly":!!c.value,"aria-orientation":E.value,onKeydown:c.value?void 0:xe,onMouseenter:()=>{p.value=!0},onMouseleave:()=>{p.value=!1,o.value=!0}},[w("div",{class:Ee(["v-slider-thumb__surface",R.value,I.value]),style:et($.value)},null),Qt(w("div",{class:Ee(["v-slider-thumb__ripple",R.value]),style:et($.value)},null),[[Xt,e.ripple,null,{circle:!0,center:!0}]]),y(Ya,{origin:"bottom center"},{default:()=>[Qt(w("div",{class:"v-slider-thumb__label-container"},[w("div",{class:Ee(["v-slider-thumb__label",x.value]),style:et(D.value)},[w("div",null,[a["thumb-label"]?.({modelValue:e.modelValue})??e.modelValue.toFixed(g.value?Z.value:1)]),w("div",{class:"v-slider-thumb__label-wedge"},null)])]),[[Ja,G]])]})])}),{}}}),Ws=wt({start:{type:Number,required:!0},stop:{type:Number,required:!0},...da()},"VSliderTrack"),Hs=Rt()({name:"VSliderTrack",props:Ws(),emits:{},setup(e,{slots:a}){const t=ua(Kt);if(!t)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:s,parsedTicks:n,rounded:i,showTicks:v,tickSize:f,trackColor:d,trackFillColor:r,trackSize:g,vertical:m,min:C,max:P,indexFromEnd:E}=t,{roundedClasses:b,roundedStyles:k}=Qa(i),{backgroundColorClasses:c,backgroundColorStyles:h}=Ot(r),{backgroundColorClasses:q,backgroundColorStyles:Z}=Ot(d),_=A(()=>`inset-${m.value?"block":"inline"}-${E.value?"end":"start"}`),p=A(()=>m.value?"height":"width"),o=A(()=>({[_.value]:"0%",[p.value]:"100%"})),T=A(()=>e.stop-e.start),I=A(()=>({[_.value]:st(e.start,"%"),[p.value]:st(T.value,"%")})),R=A(()=>v.value?(m.value?n.value.slice().reverse():n.value).map((x,D)=>{const ae=x.value!==C.value&&x.value!==P.value?st(x.position,"%"):void 0;return w("div",{key:x.value,class:Ee(["v-slider-track__tick",{"v-slider-track__tick--filled":x.position>=e.start&&x.position<=e.stop,"v-slider-track__tick--first":x.value===C.value,"v-slider-track__tick--last":x.value===P.value}]),style:{[_.value]:ae}},[(x.label||a["tick-label"])&&w("div",{class:"v-slider-track__tick-label"},[a["tick-label"]?.({tick:x,index:D})??x.label])])}):[]);return Ft(()=>w("div",{class:Ee(["v-slider-track",b.value,e.class]),style:et([{"--v-slider-track-size":st(g.value),"--v-slider-tick-size":st(f.value)},k.value,e.style])},[w("div",{class:Ee(["v-slider-track__background",q.value,{"v-slider-track__background--opacity":!!s.value||!r.value}]),style:{...o.value,...Z.value}},null),w("div",{class:Ee(["v-slider-track__fill",c.value]),style:{...I.value,...h.value}},null),v.value&&w("div",{class:Ee(["v-slider-track__ticks",{"v-slider-track__ticks--always-show":v.value==="always"}])},[R.value])])),{}}}),Gs=wt({...tn(),...Ls(),...en(),modelValue:{type:[Number,String],default:0}},"VSlider"),Js=Rt()({name:"VSlider",inheritAttrs:!1,props:Gs(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,start:e=>!0,end:e=>!0},setup(e,{slots:a,emit:t,attrs:s}){const n=Re(),i=Re(),{rtlClasses:v}=Bt(),f=Ns(e),d=zt(e,"modelValue",void 0,I=>f.roundValue(I??f.min.value)),{min:r,max:g,mousePressed:m,roundValue:C,onSliderMousedown:P,onSliderTouchstart:E,trackContainerRef:b,position:k,hasLabels:c,disabled:h,readonly:q,noKeyboard:Z}=qs({props:e,steps:f,onSliderStart:()=>{!h.value&&!q.value&&t("start",d.value)},onSliderEnd:({value:I})=>{const R=C(I);!h.value&&!q.value&&(d.value=R),t("end",R)},onSliderMove:({value:I})=>{!h.value&&!q.value&&(d.value=C(I))},getActiveThumb:()=>n.value?.$el}),{isFocused:_,focus:p,blur:o}=Za(e),T=A(()=>k(d.value));return Ft(()=>{const I=Zt.filterProps(e),[R,$]=an(s),x=!!(e.label||a.label||a.prepend);return y(Zt,ue({ref:i,class:["v-slider",{"v-slider--has-labels":!!a["tick-label"]||c.value,"v-slider--focused":_.value,"v-slider--pressed":m.value,"v-slider--disabled":h.value},v.value,e.class],style:e.style},I,R,{focused:_.value}),{...a,prepend:x?D=>w(oe,null,[a.label?.(D)??(e.label?y(nn,{id:D.id.value,class:"v-slider__label",text:e.label},null):void 0),a.prepend?.(D)]):void 0,default:({id:D,messagesId:ae})=>w("div",{class:"v-slider__container",onMousedown:q.value?void 0:P,onTouchstartPassive:q.value?void 0:E},[w("input",{id:D.value,name:e.name||D.value,disabled:h.value,readonly:q.value,tabindex:"-1",value:d.value},null),y(Hs,{ref:b,start:0,stop:T.value},{"tick-label":a["tick-label"]}),y(Ks,ue({ref:n,"aria-describedby":ae.value,focused:_.value,noKeyboard:Z.value,min:r.value,max:g.value,modelValue:d.value,"onUpdate:modelValue":ie=>d.value=ie,position:T.value,elevation:e.elevation,onFocus:p,onBlur:o,ripple:e.ripple,name:e.name},$),{"thumb-label":a["thumb-label"]})])})}),ra({focus:()=>n.value?.$el.focus()},i)}}),Ys={key:0,class:"agent-reasoning-slider"},Xs={class:"agent-setting-heading"},Qs={key:0,class:"agent-setting-description"},Zs=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,s=a,n=pe(e,"modelValue"),i=pe(e,"modelId"),v=pe(e,"reasoningEffort"),f=pe(e,"reasoningSummary"),d=pe(e,"serviceTier"),r=pe(e,"approvalMode"),g=pe(e,"granular"),m=pe(e,"reviewer"),C=pe(e,"permissionMode"),P=be(),E=dt("modelSelectHost");let b=null;const k=F(null),c=A(()=>i.value?t.models.find(R=>R.id===i.value)??null:t.models.find(R=>R.isDefault)??t.models[0]??null),h=A(()=>[{title:P.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...t.models.map(R=>({title:R.displayName,value:R.id,subtitle:R.description}))]),q=A(()=>{const R=k.value;return{contentClass:"agent-model-select-menu",...R===null?{}:{width:R,minWidth:R,maxWidth:R}}}),Z=A(()=>{const R=c.value?.reasoningEfforts.find($=>$.id===c.value?.defaultReasoningEffort);return[{title:o(c.value?.defaultReasoningEffort),value:null,subtitle:R?.description??""},...(c.value?.reasoningEfforts??[]).map($=>({title:$.id,value:$.id,subtitle:$.description}))]}),_=A({get(){const R=Z.value.findIndex($=>$.value===v.value);return R<0?0:R},set(R){v.value=Z.value[Math.round(R)]?.value??null}}),p=A(()=>Z.value[_.value]??null);se(c,R=>{R?.reasoningEfforts?.some($=>$.id===v.value)||(v.value=null),R?.reasoningSummaries?.includes(f.value??"none")||(f.value=null),R?.serviceTiers?.some($=>$.id===d.value)||(d.value=null)}),se(n,async R=>{if(!R){I(),k.value=null;return}await He(),T()}),Vt(I);function o(R){return jt(P.t("$vuetify.chatroom.agents.defaultModel"),R)}function T(){I();const R=E.value;if(!R){k.value=null;return}const $=()=>{const x=R.clientWidth;k.value=x>0?x:null};$(),b=new ResizeObserver($),b.observe(R)}function I(){b?.disconnect(),b=null}return(R,$)=>(l(),L(ht,{modelValue:n.value,"onUpdate:modelValue":$[10]||($[10]=x=>n.value=x),persistent:e.busy},{default:z(()=>[y(Qe,null,{default:z(()=>[y(It,{"prepend-icon":"$mdiTuneVariant"},{default:z(()=>[y(Mt,null,{default:z(()=>[le(V(u(P).t("$vuetify.chatroom.agents.modelSettings")),1)]),_:1})]),_:1}),y(Tt,{class:"agent-model-settings-dialog"},{default:z(()=>[w("div",{ref_key:"modelSelectHost",ref:E,class:"agent-model-select-host"},[y(Ge,{modelValue:i.value,"onUpdate:modelValue":$[0]||($[0]=x=>i.value=x),items:h.value,"menu-props":q.value,label:u(P).t("$vuetify.chatroom.agents.model"),density:"compact",variant:"outlined","hide-details":"",disabled:e.busy},{item:z(({props:x,item:D})=>[y(Ie,ue(x,{subtitle:D.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","menu-props","label","disabled"])],512),c.value?.reasoningEfforts?.length?(l(),S("div",Ys,[w("div",Xs,[w("span",null,V(u(P).t("$vuetify.chatroom.agents.reasoningEffort")),1),w("strong",null,V(p.value?.title),1)]),y(Js,{modelValue:_.value,"onUpdate:modelValue":$[1]||($[1]=x=>_.value=x),min:0,max:Math.max(0,Z.value.length-1),step:1,color:"primary","show-ticks":"always","aria-label":u(P).t("$vuetify.chatroom.agents.reasoningEffort"),"hide-details":"",disabled:e.busy},null,8,["modelValue","max","aria-label","disabled"]),p.value?.subtitle?(l(),S("div",Qs,V(p.value.subtitle),1)):O("",!0)])):O("",!0),y(ba,{"reasoning-summary":f.value,"onUpdate:reasoningSummary":$[2]||($[2]=x=>f.value=x),"service-tier":d.value,"onUpdate:serviceTier":$[3]||($[3]=x=>d.value=x),"approval-mode":r.value,"onUpdate:approvalMode":$[4]||($[4]=x=>r.value=x),granular:g.value,"onUpdate:granular":$[5]||($[5]=x=>g.value=x),reviewer:m.value,"onUpdate:reviewer":$[6]||($[6]=x=>m.value=x),"permission-mode":C.value,"onUpdate:permissionMode":$[7]||($[7]=x=>C.value=x),model:c.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}),y(At,null,{default:z(()=>[y(kt),y(de,{variant:"text",disabled:e.busy,onClick:$[8]||($[8]=x=>n.value=!1)},{default:z(()=>[le(V(u(P).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),y(de,{color:"primary",variant:"tonal",loading:e.busy,onClick:$[9]||($[9]=x=>s("save"))},{default:z(()=>[le(V(u(P).t("$vuetify.chatroom.common.save")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),ei=Me(Zs,[["__scopeId","data-v-6560ca7a"]]),ti={key:2,class:"agent-review-error",role:"alert"},ai=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=pe(e,"modelValue"),t=pe(e,"reviewType"),s=pe(e,"reviewValue"),n=pe(e,"reviewTitle"),i=be();return(v,f)=>(l(),L(ht,{modelValue:a.value,"onUpdate:modelValue":f[6]||(f[6]=d=>a.value=d),persistent:e.busy},{default:z(()=>[y(Qe,null,{default:z(()=>[y(It,{"prepend-icon":"$mdiFileCompare"},{default:z(()=>[y(Mt,null,{default:z(()=>[le(V(u(i).t("$vuetify.chatroom.agents.review")),1)]),_:1})]),_:1}),y(Tt,{class:"agent-review-fields"},{default:z(()=>[y(Ge,{modelValue:t.value,"onUpdate:modelValue":f[0]||(f[0]=d=>t.value=d),items:e.types,label:u(i).t("$vuetify.chatroom.agents.reviewTarget"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","items","label","disabled"]),t.value!=="uncommittedChanges"?(l(),L(it,{key:0,modelValue:s.value,"onUpdate:modelValue":f[1]||(f[1]=d=>s.value=d),label:e.fieldLabel,disabled:e.busy,density:"compact","hide-details":"",onKeydown:f[2]||(f[2]=rt(tt(d=>v.$emit("start"),["prevent"]),["enter"]))},null,8,["modelValue","label","disabled"])):O("",!0),t.value==="commit"?(l(),L(it,{key:1,modelValue:n.value,"onUpdate:modelValue":f[3]||(f[3]=d=>n.value=d),label:u(i).t("$vuetify.chatroom.agents.reviewCommitTitle"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","label","disabled"])):O("",!0),e.error?(l(),S("div",ti,V(e.error),1)):O("",!0)]),_:1}),y(At,null,{default:z(()=>[y(kt),y(de,{variant:"text",disabled:e.busy,onClick:f[4]||(f[4]=d=>a.value=!1)},{default:z(()=>[le(V(u(i).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),y(de,{color:"primary",variant:"tonal",loading:e.busy,disabled:!e.canStart,onClick:f[5]||(f[5]=d=>v.$emit("start"))},{default:z(()=>[le(V(u(i).t("$vuetify.chatroom.agents.startReview")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),ni=Me(ai,[["__scopeId","data-v-c8b9a40c"]]),li={class:"panel-header agent-session-header"},si={class:"agent-session-header-info min-w-0"},ii={class:"panel-title agent-session-provider-title"},oi={class:"agent-session-model-label"},ri={class:"panel-subtitle text-truncate"},ui={key:0,class:"agent-session-token-usage"},di=["data-status"],ci=["data-status","data-attention"],vi={class:"agent-session-header-status-text"},mi={class:"agent-session-switch-provider-icon"},fi=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=be();return(t,s)=>(l(),S("div",li,[e.compact?(l(),L(de,{key:0,icon:"$mdiArrowLeft",size:"small","aria-label":u(a).t("$vuetify.chatroom.agents.backToSessions"),variant:"text",onClick:s[0]||(s[0]=n=>t.$emit("back"))},null,8,["aria-label"])):O("",!0),w("div",si,[w("div",ii,[y(pt,{icon:e.providerIcon,size:16},null,8,["icon"]),w("span",null,V(e.providerName),1),w("span",oi,"· "+V(e.modelName),1)]),w("div",ri,V(e.session.workspaceName),1),e.usage?(l(),S("div",ui,V(e.usage),1)):O("",!0)]),w("div",{class:"agent-session-header-status","data-status":e.session.status},[w("span",{class:"agent-session-status-dot","data-status":e.session.status,"data-attention":e.session.attention?.kind??void 0},null,8,ci),w("span",vi,V(e.statusText),1)],8,di),e.switchTargets.length?(l(),L(yt,{key:1,location:"bottom end",offset:"6","content-class":"agent-overlay-menu"},{activator:z(({props:n})=>[y(de,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":u(a).t("$vuetify.chatroom.agents.switchAgent")}),{default:z(()=>[le(V(u(a).t("$vuetify.chatroom.agents.switchAgent")),1)]),_:1},16,["loading","disabled","aria-label"])]),default:z(()=>[y(bt,{class:"agent-session-switch-menu",density:"compact"},{default:z(()=>[(l(!0),S(oe,null,Se(e.switchTargets,n=>(l(),L(Ie,{key:n.id,title:n.displayName,onClick:i=>t.$emit("switchProvider",n.id)},{prepend:z(()=>[w("span",mi,[y(pt,{icon:n.icon,size:15},null,8,["icon"])])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})):O("",!0)]))}}),gi=Me(fi,[["__scopeId","data-v-d2398a61"]]),pi={class:"agent-create"},yi=Ce({__name:"AgentCreateSessionPanel",props:{providers:{},providerModels:{},workspaces:{}},emits:["created"],setup(e,{emit:a}){const t=e,s=a,n=be(),i=F(null),v=F(""),f=F(null),d=F(null),r=F(null),g=F(null),m=F(null),C=F(Ct()),P=F(null),E=F(null),b=F(!1),k=F(""),c=A(()=>t.providers.map($=>({title:vt(t.providers,$.id),value:$.id,disabled:!$.installed||!$.authenticated}))),h=A(()=>[{title:n.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...(t.providerModels[v.value]??[]).map($=>({title:$.displayName,value:$.id,subtitle:$.description}))]),q=A(()=>fa(t.providerModels,v.value,f.value)),Z=A(()=>Xe(t.providers,v.value,"approvalPolicy")),_=A(()=>Xe(t.providers,v.value,"approvalsReviewer")),p=A(()=>Xe(t.providers,v.value,"permissionMode")),o=A(()=>{const $=t.providers.find(x=>x.id===v.value);return!!(i.value&&$?.installed&&$.authenticated&&!b.value)});se(()=>t.workspaces,$=>{(!i.value||!$.some(x=>x.id===i.value))&&(i.value=$[0]?.id??null)},{immediate:!0}),se(()=>t.providers,$=>{const x=$.find(D=>D.id===v.value);x?.installed&&x.authenticated||(v.value=$.find(D=>D.installed&&D.authenticated)?.id??$[0]?.id??"")},{immediate:!0}),se(v,()=>{f.value=null,d.value=null,r.value=null,g.value=null,I()}),se(q,$=>{$?.reasoningEfforts?.some(x=>x.id===d.value)||(d.value=null),$?.reasoningSummaries?.includes(r.value??"none")||(r.value=null),$?.serviceTiers?.some(x=>x.id===g.value)||(g.value=null)});async function T(){if(!(!i.value||!o.value)){b.value=!0,k.value="";try{const $=await Pe("/agents/sessions",{method:"POST",body:JSON.stringify({workspaceId:i.value,provider:v.value,model:f.value,reasoningEffort:d.value,reasoningSummary:r.value,serviceTier:g.value,...ma(t.providers,v.value,m.value,C.value,P.value,E.value)}),timeoutMs:3e4});s("created",$)}catch($){k.value=Le($)}finally{b.value=!1}}}function I(){m.value=Lt(null,Z.value?.defaultValue??null),C.value=Ct(),P.value=Nt(null,_.value?.defaultValue??null),E.value=qt(null,p.value?.defaultValue??null)}function R($){const x=$?.reasoningEfforts.find(D=>D.id===$.defaultReasoningEffort);return[{title:jt(n.t("$vuetify.chatroom.agents.defaultModel"),$?.defaultReasoningEffort),value:null,subtitle:x?.description??""},...($?.reasoningEfforts??[]).map(D=>({title:D.id,value:D.id,subtitle:D.description}))]}return($,x)=>(l(),S("div",pi,[y(Ge,{modelValue:i.value,"onUpdate:modelValue":x[0]||(x[0]=D=>i.value=D),items:e.workspaces,"item-title":"name","item-value":"id",label:u(n).t("$vuetify.chatroom.agents.workspace"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),y(Ge,{modelValue:v.value,"onUpdate:modelValue":x[1]||(x[1]=D=>v.value=D),items:c.value,label:u(n).t("$vuetify.chatroom.agents.provider"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),y(Ge,{modelValue:f.value,"onUpdate:modelValue":x[2]||(x[2]=D=>f.value=D),items:h.value,label:u(n).t("$vuetify.chatroom.agents.model"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),q.value?.reasoningEfforts?.length?(l(),L(Ge,{key:0,modelValue:d.value,"onUpdate:modelValue":x[3]||(x[3]=D=>d.value=D),items:R(q.value),label:u(n).t("$vuetify.chatroom.agents.reasoningEffort"),density:"compact","hide-details":""},{item:z(({props:D,item:ae})=>[y(Ie,ue(D,{subtitle:ae.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","label"])):O("",!0),y(ba,{"reasoning-summary":r.value,"onUpdate:reasoningSummary":x[4]||(x[4]=D=>r.value=D),"service-tier":g.value,"onUpdate:serviceTier":x[5]||(x[5]=D=>g.value=D),"approval-mode":m.value,"onUpdate:approvalMode":x[6]||(x[6]=D=>m.value=D),granular:C.value,"onUpdate:granular":x[7]||(x[7]=D=>C.value=D),reviewer:P.value,"onUpdate:reviewer":x[8]||(x[8]=D=>P.value=D),"permission-mode":E.value,"onUpdate:permissionMode":x[9]||(x[9]=D=>E.value=D),model:q.value,"approval-setting":Z.value,"reviewer-setting":_.value,"permission-setting":p.value,disabled:b.value},null,8,["reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","model","approval-setting","reviewer-setting","permission-setting","disabled"]),k.value?(l(),L(na,{key:1,type:"error",variant:"tonal",density:"compact"},{default:z(()=>[le(V(k.value),1)]),_:1})):O("",!0),y(de,{color:"primary",variant:"tonal",loading:b.value,disabled:!o.value,onClick:T},{default:z(()=>[le(V(u(n).t("$vuetify.chatroom.agents.create")),1)]),_:1},8,["loading","disabled"])]))}}),hi=Me(yi,[["__scopeId","data-v-14efc456"]]),bi={class:"agent-provider-strip"},wi=["data-state","title","aria-label","aria-expanded","data-expanded","onClick","onKeydown"],ki={class:"agent-provider-pill-name"},$i={key:0,class:"agent-provider-quota"},Si={class:"agent-provider-quota-header"},Ci={key:0},xi={key:0,class:"agent-provider-quota-unavailable"},Vi={key:1,class:"agent-provider-quota-unavailable"},Ii=["title"],Mi={class:"agent-provider-quota-label"},Ti={class:"agent-provider-quota-track","aria-hidden":"true"},Ai={class:"agent-provider-quota-value"},Pi={class:"agent-provider-quota-reset"},Ri={key:0,class:"agent-provider-quota-extra"},Fi=Ce({__name:"AgentProviderStatus",props:{providers:{}},setup(e){const a=be(),t=F({}),s=F(null),n=F(!1),i=gt();let v=null;const f=A(()=>s.value?t.value[s.value]?.accountUsage??null:null);ca(()=>{v=setInterval(()=>{s.value&&r(s.value)},6e4)}),Vt(()=>{v&&clearInterval(v)});async function d(b){if(s.value===b){i.invalidate(),s.value=null,n.value=!1;return}s.value=b,await r(b)}async function r(b){const k=i.begin();n.value=!0;try{const c=await Pe(`/agents/providers/${b}/details`,{timeoutMs:15e3,signal:k.signal});if(!i.isCurrent(k))return;t.value={...t.value,[b]:c}}catch{}finally{i.isCurrent(k)&&(n.value=!1)}}function g(b){if(!b.installed)return a.t("$vuetify.chatroom.agents.providerUnavailable");if(!b.authenticated)return a.t("$vuetify.chatroom.agents.providerNotAuthenticated");const k=t.value[b.id];return[a.t("$vuetify.chatroom.agents.providerAvailable"),k?.configRequirements!=null?a.t("$vuetify.chatroom.agents.managedRequirementsAvailable"):null,k?.rateLimits!=null?a.t("$vuetify.chatroom.agents.rateLimitsAvailable"):null,b.capabilities?.webSearch?a.t("$vuetify.chatroom.agents.webSearch"):null,b.capabilities?.imageGeneration?a.t("$vuetify.chatroom.agents.imageGeneration"):null,b.version?b.displayName+" "+b.version:null].filter(Boolean).join(" · ")}function m(b,k){if(k)return k;const c={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 c[b]?a.t(c[b]):b}function C(b){return b===null?"—":a.t("$vuetify.chatroom.agents.quotaPercent",String(Math.round(b)))}function P(b){return b===null?"0%":Math.min(100,Math.max(0,b))+"%"}function E(b){if(!b)return"";const k=new Date(b).getTime()-Date.now();if(!Number.isFinite(k)||k<=0)return a.t("$vuetify.chatroom.agents.quotaResetSoon");const c=Math.ceil(k/6e4);let h;if(c<60)h=c+"m";else{const q=Math.floor(c/60),Z=c%60;h=q<48?q+"h"+(Z?" "+Z+"m":""):Math.ceil(q/24)+"d"}return a.t("$vuetify.chatroom.agents.quotaResetsIn",h)}return(b,k)=>(l(),S(oe,null,[w("div",bi,[(l(!0),S(oe,null,Se(e.providers,c=>(l(),S("div",{key:c.id,class:"agent-provider-pill","data-state":c.installed?c.authenticated?"ready":"warning":"unavailable",title:g(c),"aria-label":g(c),"aria-expanded":s.value===c.id,"data-expanded":s.value===c.id,role:"button",tabindex:"0",onClick:h=>d(c.id),onKeydown:[rt(tt(h=>d(c.id),["prevent"]),["enter"]),rt(tt(h=>d(c.id),["prevent"]),["space"])]},[y(pt,{icon:c.icon,size:14},null,8,["icon"]),w("span",ki,V(u(vt)(e.providers,c.id)),1),k[0]||(k[0]=w("span",{class:"agent-provider-pill-dot"},null,-1))],40,wi))),128))]),s.value?(l(),S("div",$i,[w("div",Si,[w("span",null,V(u(vt)(e.providers,s.value)),1),f.value?.subscriptionType?(l(),S("span",Ci,V(f.value.subscriptionType),1)):O("",!0)]),n.value?(l(),S("div",xi,V(u(a).t("$vuetify.chatroom.agents.loading")),1)):f.value?.windows.length??0?(l(),S(oe,{key:2},[(l(!0),S(oe,null,Se(f.value?.windows??[],c=>(l(),S("div",{key:c.id,class:"agent-provider-quota-row",title:E(c.resetsAt)},[w("span",Mi,V(m(c.id,c.label)),1),w("div",Ti,[w("span",{class:"agent-provider-quota-fill",style:et({width:P(c.utilization)})},null,4)]),w("span",Ai,V(C(c.utilization)),1),w("span",Pi,V(E(c.resetsAt)),1)],8,Ii))),128)),f.value?.extraUsage?.enabled?(l(),S("div",Ri,[w("span",null,V(u(a).t("$vuetify.chatroom.agents.quotaExtraUsage")),1),w("span",null,V(C(f.value.extraUsage.utilization)),1)])):O("",!0)],64)):(l(),S("div",Vi,V(u(a).t("$vuetify.chatroom.agents.quotaUnavailable")),1))])):O("",!0)],64))}}),Di=Me(Fi,[["__scopeId","data-v-5b1c74e5"]]),Ui={class:"panel-header"},zi={class:"agent-sidebar-heading"},Ei={class:"panel-title"},Oi={class:"agent-sidebar-header-actions"},_i={key:0,class:"agent-error",role:"alert"},Bi={key:1,class:"agent-search-wrap"},Li={key:2,class:"agent-bulk-toolbar"},Ni={class:"agent-bulk-count"},qi={class:"agent-session-list"},ji=["title"],Ki=["data-status","data-attention","title"],Wi={key:1,class:"empty-inline agent-empty-state"},Hi=Ce({__name:"AgentSidebar",props:{providers:{},providerModels:{},workspaces:{},sessions:{},selectedId:{},loading:{type:Boolean},error:{}},emits:["update:selectedId","created","bulk-delete"],setup(e,{emit:a}){const t=e,s=a,n=be(),i=F(!1),v=F(""),f=F(!1),d=F([]),r=A(()=>{const _=v.value.trim().toLocaleLowerCase();return _?t.sessions.filter(p=>[vt(t.providers,p.provider),p.workspaceName,h(p.provider,p.model),p.status].join(" ").toLocaleLowerCase().includes(_)):t.sessions}),g=A(()=>r.value.filter(_=>_.status!=="running"&&_.status!=="waiting_input")),m=A(()=>g.value.length>0&&g.value.every(_=>d.value.includes(_.id)));se(()=>t.sessions,_=>{const p=new Set(_.filter(o=>o.status!=="running"&&o.status!=="waiting_input").map(o=>o.id));d.value=d.value.filter(o=>p.has(o)),f.value&&d.value.length===0&&_.length===0&&(f.value=!1)});function C(){f.value=!f.value,d.value=[],f.value||(v.value="")}function P(_,p){d.value=p?[...new Set([...d.value,_])]:d.value.filter(o=>o!==_)}function E(_){const p=new Set(g.value.map(o=>o.id));d.value=_?[...new Set([...d.value,...p])]:d.value.filter(o=>!p.has(o))}function b(){d.value.length&&s("bulk-delete",[...d.value])}function k(_){if(f.value){if(_.status==="running"||_.status==="waiting_input")return;P(_.id,!d.value.includes(_.id));return}s("update:selectedId",_.id)}function c(_){i.value=!1,s("created",_)}function h(_,p){return ya(t.providerModels,_,p,n.t("$vuetify.chatroom.agents.defaultModel"))}function q(_){const p=new Date(_);if(!Number.isFinite(p.getTime()))return"";const o=new Date,T=p.getFullYear()===o.getFullYear()&&p.getMonth()===o.getMonth()&&p.getDate()===o.getDate(),I=p.getFullYear()===o.getFullYear(),R=T?{hour:"2-digit",minute:"2-digit"}:I?{month:"short",day:"numeric"}:{year:"numeric",month:"short",day:"numeric"};return new Intl.DateTimeFormat(va(n.current.value),R).format(p)}function Z(_){if(_.status==="waiting_input"){if(_.attention?.kind==="approval")return n.t("$vuetify.chatroom.agents.waitingApproval");if(_.attention?.kind==="input")return n.t("$vuetify.chatroom.agents.waitingAnswer")}return n.t("$vuetify.chatroom.agents.statuses."+_.status)}return(_,p)=>(l(),L(Qe,{class:"agent-sidebar panel-card"},{default:z(()=>[w("div",Ui,[w("div",zi,[w("div",Ei,V(u(n).t("$vuetify.chatroom.agents.title")),1),y(ct,{size:"x-small",variant:"tonal",class:"agent-session-count"},{default:z(()=>[le(V(e.sessions.length),1)]),_:1})]),w("div",Oi,[e.sessions.length?(l(),L(de,{key:0,icon:f.value?"$mdiClose":"$mdiDeleteSweepOutline",size:"small",variant:"tonal",color:f.value?"primary":"default","aria-label":u(n).t(f.value?"$vuetify.chatroom.agents.cancelSelection":"$vuetify.chatroom.agents.selectSessions"),title:u(n).t(f.value?"$vuetify.chatroom.agents.cancelSelection":"$vuetify.chatroom.agents.selectSessions"),onClick:C},null,8,["icon","color","aria-label","title"])):O("",!0),y(de,{icon:"$mdiPlus",size:"small",variant:"tonal",color:"primary","aria-label":u(n).t("$vuetify.chatroom.agents.newSession"),title:u(n).t("$vuetify.chatroom.agents.newSession"),onClick:p[0]||(p[0]=o=>i.value=!i.value)},null,8,["aria-label","title"])])]),y(ut),y(ln,null,{default:z(()=>[i.value?(l(),L(hi,{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?(l(),S("div",_i,[y(Fe,{icon:"$mdiAlertCircleOutline",size:"18"}),w("span",null,V(e.error),1)])):O("",!0),e.sessions.length?(l(),S("div",Bi,[y(it,{modelValue:v.value,"onUpdate:modelValue":p[1]||(p[1]=o=>v.value=o),class:"agent-session-search",density:"compact",variant:"solo-filled",flat:"","hide-details":"",clearable:"","prepend-inner-icon":"$mdiMagnify",placeholder:u(n).t("$vuetify.chatroom.agents.searchSessions"),"aria-label":u(n).t("$vuetify.chatroom.agents.searchSessions")},null,8,["modelValue","placeholder","aria-label"])])):O("",!0),f.value?(l(),S("div",Li,[y(sn,{class:"agent-bulk-select-all","model-value":m.value,indeterminate:d.value.length>0&&!m.value,disabled:!g.value.length,label:u(n).t("$vuetify.chatroom.agents.selectAll"),density:"compact","hide-details":"","onUpdate:modelValue":p[2]||(p[2]=o=>E(!!o))},null,8,["model-value","indeterminate","disabled","label"]),w("span",Ni,V(u(n).t("$vuetify.chatroom.agents.selectedCount",d.value.length)),1),y(kt),y(de,{size:"small",color:"error",variant:"tonal","prepend-icon":"$mdiDeleteOutline",disabled:!d.value.length,onClick:b},{default:z(()=>[le(V(u(n).t("$vuetify.chatroom.agents.deleteSelected")),1)]),_:1},8,["disabled"])])):O("",!0),w("div",qi,[r.value.length?(l(),L(bt,{key:0,nav:"",density:"compact",class:"agent-session-vlist"},{default:z(()=>[(l(!0),S(oe,null,Se(r.value,o=>(l(),L(Ie,{key:o.id,"data-agent-session-id":o.id,rounded:"lg",active:f.value?d.value.includes(o.id):e.selectedId===o.id,disabled:f.value&&(o.status==="running"||o.status==="waiting_input"),onClick:T=>k(o)},{prepend:z(()=>[f.value?(l(),L(oa,{key:0,"model-value":d.value.includes(o.id),disabled:o.status==="running"||o.status==="waiting_input","aria-label":u(n).t("$vuetify.chatroom.agents.selectSession"),onClick:p[3]||(p[3]=tt(()=>{},["stop"])),"onUpdate:modelValue":T=>P(o.id,!!T)},null,8,["model-value","disabled","aria-label","onUpdate:modelValue"])):(l(),L(pt,{key:1,class:"agent-session-provider-icon",icon:u(pa)(e.providers,o.provider),size:15},null,8,["icon"]))]),append:z(()=>[w("span",{class:"agent-status-dot","data-status":o.status,"data-attention":o.attention?.kind??void 0,title:Z(o)},null,8,Ki)]),default:z(()=>[y(on,{class:"agent-session-title-row"},{default:z(()=>[w("span",null,V(u(vt)(e.providers,o.provider)),1),w("span",{class:"agent-session-updated",title:o.updatedAt},V(q(o.updatedAt)),9,ji)]),_:2},1024),y(rn,null,{default:z(()=>[le(V(o.workspaceName)+" ",1),o.model?(l(),S(oe,{key:0},[le(" · "+V(h(o.provider,o.model)),1)],64)):O("",!0)]),_:2},1024)]),_:2},1032,["data-agent-session-id","active","disabled","onClick"]))),128))]),_:1})):(l(),S("div",Wi,V(e.loading?u(n).t("$vuetify.chatroom.agents.loading"):e.sessions.length?u(n).t("$vuetify.chatroom.agents.noSearchResults"):u(n).t("$vuetify.chatroom.agents.noSessions")),1))]),y(ut),y(Di,{providers:e.providers},null,8,["providers"])]),_:1}))}}),Gi=Me(Hi,[["__scopeId","data-v-98f1b5cd"]]),Ji={key:0,class:"agent-error agent-main-error",role:"alert"},Yi=["aria-label"],Xi={class:"empty-panel"},Qi=Ce({__name:"AgentView",props:{revision:{},changes:{}},setup(e){const a=e,t=be(),{mdAndDown:s}=un(),n=dt("layout"),i=F([]),v=F([]),f=F({}),d=F(null),r=F(!1),g=F(!1),m=F(""),C=F(!1),P=F([]),E=F(!1),{sessions:b,history:k,refresh:c,reloadSelected:h,reconcileSession:q,reconcileInteraction:Z,removeSession:_,removeSessions:p}=Sn(d,{onError:X=>{m.value=Le(X)}}),o=A(()=>b.value.find(X=>X.id===d.value)??null),T=A(()=>(k.value?.turns.at(-1)?.items??[]).filter(K=>K.type==="interaction"&&K.status==="waiting")),{modelSettingsOpen:I,settingsModel:R,settingsReasoningEffort:$,settingsReasoningSummary:x,settingsServiceTier:D,settingsApprovalPolicyMode:ae,settingsGranularApproval:ie,settingsApprovalsReviewer:J,settingsPermissionMode:we,reviewOpen:me,reviewType:he,reviewValue:De,reviewTitle:re,reviewStarting:ke,reviewError:$e,modelSwitching:Te,switchingProvider:xe,interrupting:B,deleteDialog:G,deletingSession:Ve,selectedApprovalPolicySetting:Oe,selectedApprovalsReviewerSetting:Ue,selectedPermissionModeSetting:ye,selectedProviderModels:Ne,selectedModelMetadata:qe,selectedProviderStatus:je,reviewTypes:U,reviewFieldLabel:Q,canStartReview:ne,switchTargets:ge,loadModels:fe,startReview:Ke,interrupt:N,switchProvider:Y,openDeleteDialog:te,deleteSession:ve,openModelSettings:M,saveModelSettings:j}=xn({selectedId:d,selected:o,sessions:b,providers:i,providerModels:f,composerBusy:g,error:m,refresh:c,reconcileSession:q,removeSession:_}),{respondingInteractions:ee,respondApproval:ce,submitInput:Ae,interactionAnswers:H,setInteractionAnswer:_e}=Cn({selectedId:d,selected:o,error:m,reconcileInteraction:Z}),at=A(()=>o.value?o.value.status!=="waiting_input"?t.t("$vuetify.chatroom.agents.statuses."+o.value.status):o.value.attention?.kind==="approval"?t.t("$vuetify.chatroom.agents.waitingApproval"):o.value.attention?.kind==="input"?t.t("$vuetify.chatroom.agents.waitingAnswer"):t.t("$vuetify.chatroom.agents.statuses.waiting_input"):""),Ye=A(()=>{const X=o.value?.tokenUsage;return X?Sa(X):""}),nt=A(()=>Object.fromEntries(i.value.map(X=>[X.id,X.displayName]))),lt=A(()=>Object.fromEntries(i.value.map(X=>[X.id,X.icon])));ca(()=>{ze()}),se(()=>a.revision,()=>{c(a.changes)}),se(d,()=>{g.value=!1},{flush:"sync"}),se(d,(X,K)=>{!s.value||!X||X===K||He(()=>{n.value?.querySelector(".agent-main")?.focus({preventScroll:!0})})},{flush:"post"});async function ze(){r.value=!0,m.value="";try{const[X,,K]=await Promise.all([Pe("/agents/providers",{timeoutMs:15e3}),c(null),Pe("/workspaces")]);i.value=X,v.value=K,!s.value&&!d.value&&b.value[0]&&(d.value=b.value[0].id),await Promise.all(X.filter(W=>W.installed&&W.authenticated).map(W=>fe(W.id)))}catch(X){m.value=Le(X)}finally{r.value=!1}}function wa(X){q(X),d.value=X.id}function ka(X){P.value=[...new Set(X)],C.value=P.value.length>0}async function $a(){if(E.value||!P.value.length)return;const X=[...P.value];E.value=!0,m.value="";try{await Pe("/agents/sessions/bulk-delete",{method:"POST",body:JSON.stringify({sessionIds:X})}),p(X),C.value=!1,P.value=[],await c(null)}catch(K){m.value=Le(K)}finally{E.value=!1}}function Sa(X){const K=Ia=>new Intl.NumberFormat(va(t.current.value),{notation:"compact",maximumFractionDigits:1}).format(Ia),W=t.t("$vuetify.chatroom.agents.tokenUsage",K(X.total.totalTokens)),We=X.modelContextWindow;if(!We||We<=0)return W;const $t=X.last.totalTokens;return W+" · "+t.t("$vuetify.chatroom.agents.contextUsage",K($t),K(We),String(Math.round($t/We*100)))}function Wt(X,K){return ya(f.value,X,K,t.t("$vuetify.chatroom.agents.defaultModel"))}function Ca(){const X=d.value;d.value=null,k.value=null,!(!s.value||!X)&&He(()=>{n.value?.querySelector(`[data-agent-session-id="${CSS.escape(X)}"]`)?.focus({preventScroll:!0})})}function xa(X){return vt(i.value,X)}function Va(X){return pa(i.value,X)}return(X,K)=>(l(),S("div",{ref_key:"layout",ref:n,class:"agent-layout"},[!u(s)||!o.value?(l(),L(Gi,{key:0,"selected-id":d.value,"onUpdate:selectedId":K[0]||(K[0]=W=>d.value=W),providers:i.value,"provider-models":f.value,workspaces:v.value,sessions:u(b),loading:r.value,error:!o.value||u(s)?m.value:"",onCreated:wa,onBulkDelete:ka},null,8,["selected-id","providers","provider-models","workspaces","sessions","loading","error"])):O("",!0),o.value?(l(),L(Qe,{key:1,class:"agent-main panel-card",tabindex:"-1"},{default:z(()=>[y(gi,{session:o.value,"provider-name":xa(o.value.provider),"provider-icon":Va(o.value.provider),"model-name":Wt(o.value.provider,o.value.model),"status-text":at.value,usage:Ye.value,compact:u(s),"switch-targets":u(ge),switching:u(xe),disabled:o.value.status!=="idle"||u(Te),onBack:Ca,onSwitchProvider:u(Y)},null,8,["session","provider-name","provider-icon","model-name","status-text","usage","compact","switch-targets","switching","disabled","onSwitchProvider"]),y(ut),m.value?(l(),S("div",Ji,[y(Fe,{icon:"$mdiAlertCircleOutline",size:"18"}),w("span",null,V(m.value),1)])):O("",!0),y(Us,{history:u(k),"provider-names":nt.value,"provider-icons":lt.value},null,8,["history","provider-names","provider-icons"]),T.value.length?(l(),S("div",{key:1,class:"agent-pending-interactions",role:"region","aria-label":at.value},[(l(!0),S(oe,null,Se(T.value,W=>(l(),L(ha,{key:"pending:"+W.id,item:W,answers:u(H)(W),responding:u(ee).has(W.id),pinned:"",onApprove:We=>u(ce)(W,We),onSubmit:We=>u(Ae)(W),onUpdateAnswer:(We,$t)=>u(_e)(W,We,$t)},null,8,["item","answers","responding","onApprove","onSubmit","onUpdateAnswer"]))),128))],8,Yi)):O("",!0),y(ut),(l(),L(Yn,{key:o.value.id,session:o.value,model:u(qe),"steering-supported":!!u(je)?.features.steering,disabled:u(ke)||u(Te)||u(xe),onError:K[2]||(K[2]=W=>m.value=W),onBusy:K[3]||(K[3]=W=>g.value=W)},{controls:z(({busy:W})=>[y(yt,{location:"top end",offset:"8","content-class":"agent-overlay-menu"},{activator:z(({props:We})=>[y(de,ue(We,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",class:"agent-session-controls-button",color:o.value.status==="error"?"error":o.value.status==="idle"?void 0:"warning","aria-label":u(t).t("$vuetify.chatroom.agents.sessionControls"),title:u(t).t("$vuetify.chatroom.agents.sessionControls")}),null,16,["color","aria-label","title"])]),default:z(()=>[y(bt,{class:"agent-session-controls-menu",density:"compact"},{default:z(()=>[y(Ie,{title:u(t).t("$vuetify.chatroom.agents.model"),subtitle:Wt(o.value.provider,o.value.model),"prepend-icon":"$mdiTuneVariant",disabled:o.value.status!=="idle"||u(Te)||u(xe),onClick:u(M)},null,8,["title","subtitle","disabled","onClick"]),o.value.status==="running"||o.value.status==="waiting_input"?(l(),L(Ie,{key:0,title:u(t).t("$vuetify.chatroom.agents.stop"),"prepend-icon":"$mdiStop","base-color":"warning",disabled:u(B),onClick:u(N)},null,8,["title","disabled","onClick"])):O("",!0),y(ut),o.value.status==="idle"&&u(je)?.features.nativeReview?(l(),L(Ie,{key:1,title:u(t).t("$vuetify.chatroom.agents.review"),"prepend-icon":"$mdiFileCompare",disabled:W||u(Te)||u(xe)||u(ke),onClick:K[1]||(K[1]=We=>{$e.value="",me.value=!0})},null,8,["title","disabled"])):O("",!0),y(Ie,{title:u(t).t("$vuetify.chatroom.agents.refresh"),"prepend-icon":"$mdiRefresh",onClick:u(h)},null,8,["title","onClick"]),y(Ie,{title:u(t).t("$vuetify.chatroom.agents.delete"),"prepend-icon":"$mdiDeleteOutline",onClick:u(te)},null,8,["title","onClick"])]),_:2},1024)]),_:2},1024)]),_:1},8,["session","model","steering-supported","disabled"]))]),_:1})):u(s)?O("",!0):(l(),L(Qe,{key:2,class:"agent-main panel-card"},{default:z(()=>[w("div",Xi,V(u(t).t("$vuetify.chatroom.agents.selectSession")),1)]),_:1})),y(ei,{modelValue:u(I),"onUpdate:modelValue":K[4]||(K[4]=W=>Be(I)?I.value=W:null),"model-id":u(R),"onUpdate:modelId":K[5]||(K[5]=W=>Be(R)?R.value=W:null),"reasoning-effort":u($),"onUpdate:reasoningEffort":K[6]||(K[6]=W=>Be($)?$.value=W:null),"reasoning-summary":u(x),"onUpdate:reasoningSummary":K[7]||(K[7]=W=>Be(x)?x.value=W:null),"service-tier":u(D),"onUpdate:serviceTier":K[8]||(K[8]=W=>Be(D)?D.value=W:null),"approval-mode":u(ae),"onUpdate:approvalMode":K[9]||(K[9]=W=>Be(ae)?ae.value=W:null),granular:u(ie),"onUpdate:granular":K[10]||(K[10]=W=>Be(ie)?ie.value=W:null),reviewer:u(J),"onUpdate:reviewer":K[11]||(K[11]=W=>Be(J)?J.value=W:null),"permission-mode":u(we),"onUpdate:permissionMode":K[12]||(K[12]=W=>Be(we)?we.value=W:null),models:u(Ne),"approval-setting":u(Oe),"reviewer-setting":u(Ue),"permission-setting":u(ye),busy:u(Te),onSave:u(j)},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"]),y(ni,{modelValue:u(me),"onUpdate:modelValue":K[13]||(K[13]=W=>Be(me)?me.value=W:null),"review-type":u(he),"onUpdate:reviewType":K[14]||(K[14]=W=>Be(he)?he.value=W:null),"review-value":u(De),"onUpdate:reviewValue":K[15]||(K[15]=W=>Be(De)?De.value=W:null),"review-title":u(re),"onUpdate:reviewTitle":K[16]||(K[16]=W=>Be(re)?re.value=W:null),types:u(U),"field-label":u(Q),busy:u(ke),error:u($e),"can-start":u(ne),onStart:u(Ke)},null,8,["modelValue","review-type","review-value","review-title","types","field-label","busy","error","can-start","onStart"]),y(aa,{modelValue:u(G),"onUpdate:modelValue":K[17]||(K[17]=W=>Be(G)?G.value=W:null),busy:u(Ve),onConfirm:u(ve)},null,8,["modelValue","busy","onConfirm"]),y(aa,{modelValue:C.value,"onUpdate:modelValue":K[18]||(K[18]=W=>C.value=W),busy:E.value,count:P.value.length,onConfirm:$a},null,8,["modelValue","busy","count"])],512))}}),ro=Me(Qi,[["__scopeId","data-v-143bda3b"]]);export{ro as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{a0 as A,o as J,i as q,v as x,s as _,y as L,d as G,u as Q,c as f,e as b,f as s,k as a,p as u,g as e,l as j,E as H,q as m,t as i,h as P,F as K,U as X,m as k,C as O,R as Y,S as Z,b5 as R,af as ee,z as F,O as te,P as oe,Q as le,T as ae,I as ie,bz as se,a4 as re}from"./index-9DLDvF8M.js";import{V as W}from"./VSwitch-o9DuRTKF.js";import{V as ne}from"./VSpacer-FbdDPUGx.js";function ue(){const y=_(null),o=_(""),I=_(!1),r=_(""),S=_(!1),h=_(!1),p=_(null),w=_(null),c=A(),$=_(!1),d=x(()=>h.value||S.value||w.value!==null),g=x(()=>{const t=new Set(y.value?.entitlements.map(l=>l.service)??[]);return t.has("remote_mcp")&&t.has("remote_web")}),D=x(()=>{const t=(y.value?.entitlements??[]).map(l=>l.validUntil).filter(l=>!!l).map(l=>Date.parse(l)).filter(Number.isFinite);return t.length?Math.min(...t):null});J(()=>{T()});function C(t){o.value=L(t),I.value=!0}async function T(){if(d.value)return;const t=c.begin();try{const l=await q("/cloud/status",{signal:t.signal});c.isCurrent(t)&&(y.value=l)}catch(l){c.isCurrent(t)&&C(l)}}async function E(){if(d.value)return;const t=c.begin();h.value=!0;try{const l=await q("/cloud/sync",{method:"POST",signal:t.signal});c.isCurrent(t)&&(y.value=l)}catch(l){c.isCurrent(t)&&C(l)}finally{h.value=!1}}async function M(){if($.value)return;$.value=!0;const t=window.open("","_blank");t&&(t.opener=null);try{const l=await q("/cloud/management",{method:"POST"});t?t.location.href=l.url:window.location.assign(l.url)}catch(l){t?.close(),C(l)}finally{$.value=!1}}function z(t,l){if(!d.value){if(l){U(t,!0);return}p.value=t}}async function N(){const t=p.value;t&&(await U(t,!1),w.value===null&&(p.value=null))}async function U(t,l){if(!y.value||d.value)return;const V=c.begin();w.value=t;try{const n=await q(`/cloud/services/${t}`,{method:"POST",body:JSON.stringify({enabled:l}),signal:V.signal});c.isCurrent(V)&&(y.value=n)}catch(n){c.isCurrent(V)&&C(n)}finally{w.value===t&&(w.value=null)}}async function B(){if(!r.value.trim()||d.value)return;const t=c.begin(),l=r.value.trim();S.value=!0;try{const V=await q("/cloud/restore",{method:"POST",body:JSON.stringify({recoveryKey:l}),timeoutMs:12e4,signal:t.signal});if(!c.isCurrent(t))return;y.value=V.status,r.value=""}catch(V){c.isCurrent(t)&&C(V)}finally{S.value=!1}}return{status:y,error:o,errorVisible:I,recoveryKey:r,restoring:S,refreshing:h,managing:$,busy:d,confirmationService:p,serviceUpdating:w,subscribed:g,subscriptionExpiry:D,load:T,refresh:E,manage:M,requestServiceChange:z,confirmDisableService:N,restore:B}}const ce={class:"cloud-view"},de={class:"cloud-row"},ve={class:"cloud-row-main"},me={class:"cloud-row-title"},fe={class:"cloud-row-value"},ye={class:"cloud-row-actions"},he={class:"cloud-row"},pe={class:"cloud-row-main"},_e={class:"cloud-row-title"},be={key:0,class:"cloud-row-value mono"},we={key:1,class:"cloud-row-value"},ge={class:"cloud-row"},Ce={class:"cloud-row-main"},Ve={class:"cloud-row-title"},$e={key:0,class:"cloud-row-value mono"},ke={key:1,class:"cloud-row-value"},Se={class:"cloud-row"},xe={class:"cloud-row-main"},De={class:"cloud-row-title"},Te={class:"cloud-row-value"},Ue={class:"cloud-restore-row"},qe={key:3,class:"cloud-loading"},Ie={class:"cloud-row cloud-installation-row"},Me={class:"cloud-row-main"},ze={class:"cloud-row-title"},Be={class:"cloud-row-value mono installation-id"},Ne=G({__name:"CloudView",setup(y){const o=Q(),I=ue(),{status:r,error:S,errorVisible:h,recoveryKey:p,restoring:w,refreshing:c,managing:$,busy:d,confirmationService:g,serviceUpdating:D,subscribed:C,subscriptionExpiry:T,refresh:E,manage:M,requestServiceChange:z,confirmDisableService:N,restore:U}=I,B=x(()=>C.value?T.value===null?o.t("$vuetify.chatroom.cloud.active"):`${o.t("$vuetify.chatroom.cloud.expires")} ${new Intl.DateTimeFormat(re(o.current.value),{dateStyle:"medium",timeStyle:"short"}).format(new Date(T.value))}`:o.t("$vuetify.chatroom.cloud.inactiveDescription")),t=x(()=>g.value==="remote_web"?o.t("$vuetify.chatroom.cloud.disableWebTitle"):o.t("$vuetify.chatroom.cloud.disableMcpTitle")),l=x(()=>g.value==="remote_web"?o.t("$vuetify.chatroom.cloud.disableWebDescription"):o.t("$vuetify.chatroom.cloud.disableMcpDescription"));return(V,n)=>(f(),b(K,null,[s("div",ce,[a(F,{class:"panel-card cloud-panel"},{default:u(()=>[e(r)?.lastError?(f(),j(H,{key:0,type:"error",variant:"tonal",density:"compact",class:"ma-3"},{default:u(()=>[m(i(e(r).lastError),1)]),_:1})):P("",!0),e(r)&&e(C)?(f(),b(K,{key:1},[s("div",de,[s("div",ve,[s("div",me,i(e(o).t("$vuetify.chatroom.cloud.subscription")),1),s("div",fe,i(B.value),1)]),s("div",ye,[a(X,{color:"success",size:"small",variant:"tonal"},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.cloud.active")),1)]),_:1}),a(k,{icon:"$mdiRefresh",size:"small",variant:"text",loading:e(c),disabled:e(d),"aria-label":e(o).t("$vuetify.chatroom.cloud.refresh"),onClick:e(E)},null,8,["loading","disabled","aria-label","onClick"]),a(k,{variant:"text",size:"small",disabled:!e(r).installationId||e(d),loading:e($),onClick:e(M)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.cloud.manage")),1)]),_:1},8,["disabled","loading","onClick"])])]),a(O),s("div",he,[s("div",pe,[s("div",_e,i(e(o).t("$vuetify.chatroom.cloud.remoteMcp")),1),e(r).mcpUrl?(f(),b("div",be,i(e(r).mcpUrl),1)):(f(),b("div",we,i(e(o).t("$vuetify.chatroom.cloud.remoteMcpDescription")),1))]),a(W,{"model-value":e(r).desiredServices.remote_mcp,loading:e(D)==="remote_mcp",disabled:e(d),"aria-label":e(o).t("$vuetify.chatroom.cloud.remoteMcp"),"onUpdate:modelValue":n[0]||(n[0]=v=>e(z)("remote_mcp",!!v))},null,8,["model-value","loading","disabled","aria-label"])]),a(O),s("div",ge,[s("div",Ce,[s("div",Ve,i(e(o).t("$vuetify.chatroom.cloud.remoteWeb")),1),e(r).webUrl?(f(),b("div",$e,i(e(r).webUrl),1)):(f(),b("div",ke,i(e(o).t("$vuetify.chatroom.cloud.remoteWebDescription")),1))]),a(W,{"model-value":e(r).desiredServices.remote_web,loading:e(D)==="remote_web",disabled:e(d),"aria-label":e(o).t("$vuetify.chatroom.cloud.remoteWeb"),"onUpdate:modelValue":n[1]||(n[1]=v=>e(z)("remote_web",!!v))},null,8,["model-value","loading","disabled","aria-label"])])],64)):e(r)?(f(),b(K,{key:2},[s("div",Se,[s("div",xe,[s("div",De,i(e(o).t("$vuetify.chatroom.cloud.subscription")),1),s("div",Te,i(B.value),1)]),a(k,{color:"primary",variant:"flat",size:"small",disabled:!e(r).installationId||e(d),loading:e($),onClick:e(M)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.cloud.purchase")),1)]),_:1},8,["disabled","loading","onClick"])]),a(O),s("div",Ue,[a(Y,{modelValue:e(p),"onUpdate:modelValue":n[2]||(n[2]=v=>R(p)?p.value=v:null),placeholder:e(o).t("$vuetify.chatroom.cloud.recoveryKey"),"aria-label":e(o).t("$vuetify.chatroom.cloud.recoveryKey"),type:"password",density:"compact",variant:"outlined","hide-details":"",autocomplete:"off",onKeyup:Z(e(U),["enter"])},null,8,["modelValue","placeholder","aria-label","onKeyup"]),a(k,{loading:e(w),disabled:!e(r).installationId||!e(p).trim()||e(d),variant:"tonal",size:"small",onClick:e(U)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.cloud.restoreAction")),1)]),_:1},8,["loading","disabled","onClick"])])],64)):(f(),b("div",qe,[a(ee,{indeterminate:"",size:"20",width:"2"})])),e(r)?(f(),b(K,{key:4},[a(O),s("div",Ie,[s("div",Me,[s("div",ze,i(e(o).t("$vuetify.chatroom.cloud.installationId")),1),s("div",Be,i(e(r).installationId||"—"),1)])])],64)):P("",!0)]),_:1})]),a(ie,{"model-value":e(g)!==null,width:"auto","max-width":"32rem","onUpdate:modelValue":n[4]||(n[4]=v=>!v&&(g.value=null))},{default:u(()=>[a(F,null,{default:u(()=>[a(te,{"prepend-icon":"$mdiAlertCircleOutline",class:"text-error"},{default:u(()=>[a(oe,null,{default:u(()=>[m(i(t.value),1)]),_:1})]),_:1}),a(le,null,{default:u(()=>[m(i(l.value),1)]),_:1}),a(ae,null,{default:u(()=>[a(ne),a(k,{variant:"text",disabled:e(d),onClick:n[3]||(n[3]=v=>g.value=null)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),a(k,{color:"error",variant:"flat",loading:e(D)===e(g),onClick:e(N)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.cloud.disableConfirm")),1)]),_:1},8,["loading","onClick"])]),_:1})]),_:1})]),_:1},8,["model-value"]),a(se,{modelValue:e(h),"onUpdate:modelValue":n[6]||(n[6]=v=>R(h)?h.value=v:null),color:"error",location:"top",timeout:6e3},{actions:u(()=>[a(k,{variant:"text",onClick:n[5]||(n[5]=v=>h.value=!1)},{default:u(()=>[m(i(e(o).t("$vuetify.chatroom.common.close")),1)]),_:1})]),default:u(()=>[m(i(e(S))+" ",1)]),_:1},8,["modelValue"])],64))}});export{Ne as default};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{d as F,u as M,w as $,a6 as N,b as O,c as i,l as k,n as x,p as R,e as p,F as z,f as b,k as s,R as j,g as r,m as C,h as _,C as G,t as B,s as u,v as L,
|
|
1
|
+
import{d as F,u as M,w as $,a6 as N,b as O,c as i,l as k,n as x,p as R,e as p,F as z,f as b,k as s,R as j,g as r,m as C,h as _,C as G,t as B,s as u,v as L,cb as I}from"./index-9DLDvF8M.js";import{V as U}from"./VSheet-CKEhsY-7.js";import{V as W}from"./VSpacer-FbdDPUGx.js";const P={class:"code-toolbar"},q={class:"code-actions"},J={key:1,class:"code-copy-error",role:"alert"},Q=["innerHTML"],X={key:1},K=2e5,Y=120,te=F({__name:"CodeViewer",props:{value:{},text:{},filename:{default:"chatroom-output.txt"},language:{},toolbar:{type:Boolean,default:!0},showDownload:{type:Boolean,default:!0},highlight:{type:Boolean,default:!0}},setup(o){const e=o,y=u(""),V=u(""),c=u(!0),d=u(null),a=M(),v=u("");let l=null,h=0;const m=L(()=>e.text??JSON.stringify(e.value??null,null,2)),g=L(()=>{const n=V.value.toLocaleLowerCase();return n?m.value.split(`
|
|
2
2
|
`).filter(t=>t.toLocaleLowerCase().includes(n)).join(`
|
|
3
3
|
`):m.value});$(y,n=>{l&&clearTimeout(l),l=setTimeout(()=>{V.value=n,l=null},Y)}),$([g,()=>e.filename,()=>e.language,()=>e.value!==void 0,()=>e.highlight],async(n,t,f)=>{const D=++h;f(()=>{h+=1}),d.value=null;const w=g.value;if(!e.highlight||!w||w.length>K)return;const E={filename:e.filename,language:e.language??(e.value!==void 0?"json":null)};try{const{highlightSource:H}=await N(async()=>{const{highlightSource:A}=await import("./syntax-highlight-C_fuMcwC.js");return{highlightSource:A}},[]);if(D!==h)return;d.value=H(w,E)}catch{}},{immediate:!0}),O(()=>{l&&clearTimeout(l),h+=1});async function T(){v.value="";try{await navigator.clipboard.writeText(m.value)}catch{v.value=a.t("$vuetify.chatroom.code.copyFailed")}}function S(){I(new Blob([m.value],{type:"text/plain;charset=utf-8"}),e.filename)}return(n,t)=>(i(),k(U,{border:o.toolbar,rounded:o.toolbar?"lg":0,"overflow-hidden":"",class:x(["code-viewer",{"code-viewer-plain":!o.toolbar}])},{default:R(()=>[o.toolbar?(i(),p(z,{key:0},[b("div",P,[s(j,{modelValue:y.value,"onUpdate:modelValue":t[0]||(t[0]=f=>y.value=f),placeholder:r(a).t("$vuetify.chatroom.code.search"),"aria-label":r(a).t("$vuetify.chatroom.code.search"),"prepend-inner-icon":"$mdiMagnify",density:"compact","hide-details":"",class:"code-search"},null,8,["modelValue","placeholder","aria-label"]),s(W),b("div",q,[s(C,{icon:"$mdiContentCopy",size:"small",variant:"text","aria-label":r(a).t("$vuetify.chatroom.code.copy"),onClick:T},null,8,["aria-label"]),s(C,{icon:c.value?"$mdiWrap":"$mdiFormatAlignLeft",size:"small",variant:"text","aria-label":r(a).t(c.value?"$vuetify.chatroom.code.disableWrap":"$vuetify.chatroom.code.enableWrap"),onClick:t[1]||(t[1]=f=>c.value=!c.value)},null,8,["icon","aria-label"]),o.showDownload?(i(),k(C,{key:0,icon:"$mdiDownloadOutline",size:"small",variant:"text","aria-label":r(a).t("$vuetify.chatroom.code.download"),onClick:S},null,8,["aria-label"])):_("",!0)])]),s(G)],64)):_("",!0),v.value?(i(),p("div",J,B(v.value),1)):_("",!0),b("pre",{class:x(["code-block",{wrap:c.value}])},[d.value?(i(),p("code",{key:0,class:"hljs",innerHTML:d.value},null,8,Q)):(i(),p("code",X,B(g.value||r(a).t("$vuetify.chatroom.code.noOutput")),1))],2)]),_:1},8,["border","rounded","class"]))}});export{te as _};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as _e}from"./useOperationLabels-DF67nIF0.js";import{d as Y,u as ie,c as d,l as w,p as m,f as l,t as c,g as s,k as p,m as J,C as j,X as se,e as P,F as ae,j as de,Z as H,a2 as Ce,q as C,a3 as Se,b7 as pe,a4 as ve,Q as re,z as Q,_ as Z,w as fe,h as _,E as W,D as Re,V as Be,v as oe,s as k,n as ce,a0 as G,a1 as qe,i as A,y as Pe,a7 as ye}from"./index-9DLDvF8M.js";import{_ as xe}from"./StateChip.vue_vue_type_script_setup_true_lang-DwnqcvSQ.js";import{V as me}from"./VSwitch-o9DuRTKF.js";const Ie={class:"panel-header compact-header"},Ae={class:"panel-title"},Ve={class:"computer-operation-scroll"},Le=Y({__name:"ComputerOperations",props:{operations:{},busy:{type:Boolean}},emits:["refresh"],setup(e,{emit:S}){const r=S,t=ie(),{sourceLabel:v}=_e();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),n=Array.isArray(o.actions)?o.actions:[];return n.length?n.map(g).join(" · "):t.t("$vuetify.chatroom.computer.log.action")}function g(a){const o=b(a),n=String(o.type??"action"),h=typeof o.elementId=="number"?` #${o.elementId}`:"";switch(n){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 n}}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)=>(d(),w(Q,{rounded:"lg",variant:"flat",border:"",class:"panel-card"},{default:m(()=>[l("div",Ie,[l("div",Ae,c(s(t).t("$vuetify.chatroom.computer.recentOperations")),1),p(J,{size:"small",variant:"text",icon:"$mdiRefresh",loading:e.busy,"aria-label":s(t).t("$vuetify.chatroom.computer.refreshOperations"),onClick:o[0]||(o[0]=n=>r("refresh"))},null,8,["loading","aria-label"])]),p(j),l("div",Ve,[e.operations.length?(d(),w(se,{key:0,lines:"two",density:"compact",class:"computer-operation-list"},{default:m(()=>[(d(!0),P(ae,null,de(e.operations,n=>(d(),w(H,{key:n.operationId},{append:m(()=>[p(xe,{value:n.status},null,8,["value"])]),default:m(()=>[p(Ce,null,{default:m(()=>[C(c(f(n)),1)]),_:2},1024),p(Se,null,{default:m(()=>[C(c(s(pe)(n.startedAt,s(ve)(s(t).current.value)))+" · "+c(s(v)(n.source)),1)]),_:2},1024)]),_:2},1024))),128))]),_:1})):(d(),w(re,{key:1,class:"muted"},{default:m(()=>[C(c(s(t).t("$vuetify.chatroom.computer.noOperations")),1)]),_:1}))])]),_:1}))}}),Oe=Z(Le,[["__scopeId","data-v-53b51c97"]]),ze={class:"panel-header compact-header"},De={class:"computer-preview-heading"},Te={class:"panel-title"},Ee={key:0,class:"computer-preview-time"},Ne=["aria-busy"],Ue=["src","alt"],je={key:2,class:"computer-screen-empty"},We={key:3,class:"computer-preview-meta"},Fe={class:"text-truncate"},Me=Y({__name:"ComputerPreview",props:{preview:{},enabled:{type:Boolean},busy:{type:Boolean},remotePreviewBlocked:{type:Boolean}},emits:["refresh"],setup(e,{emit:S}){const r=e,t=S,v=ie(),f=oe(()=>{const a=r.preview;return a?.screenshot?"/api/computer/preview/image?snapshotId="+encodeURIComponent(a.snapshotId)+"&v="+encodeURIComponent(String(a.revision)):""}),g=k(!1),y=k(!1);fe(f,a=>{g.value=!!a,y.value=!1},{immediate:!0});const b=oe(()=>{const a=r.preview?.capturedAt;return a?pe(a,ve(v.current.value)):""});return(a,o)=>(d(),w(Q,{rounded:"lg",variant:"flat",border:"",class:"panel-card"},{default:m(()=>[l("div",ze,[l("div",De,[l("div",Te,c(s(v).t("$vuetify.chatroom.computer.latestScreen")),1),b.value?(d(),P("div",Ee,c(s(v).t("$vuetify.chatroom.computer.capturedAt",b.value)),1)):_("",!0)]),p(J,{size:"small",variant:"tonal","prepend-icon":"$mdiRefresh",loading:e.busy,disabled:!e.enabled,onClick:o[0]||(o[0]=n=>t("refresh"))},{default:m(()=>[C(c(s(v).t("$vuetify.chatroom.computer.refreshScreen")),1)]),_:1},8,["loading","disabled"])]),p(j),p(re,{class:"computer-preview-content"},{default:m(()=>[e.remotePreviewBlocked?(d(),w(W,{key:0,type:"info",variant:"tonal",density:"compact",class:"mb-3"},{default:m(()=>[C(c(s(v).t("$vuetify.chatroom.computer.remoteDisabled")),1)]),_:1})):_("",!0),f.value?(d(),P("div",{key:1,class:"computer-screen-shell","aria-busy":g.value},[g.value?(d(),w(Re,{key:0,indeterminate:""})):_("",!0),y.value?(d(),w(W,{key:1,type:"error",variant:"tonal"},{default:m(()=>[C(c(s(v).t("$vuetify.chatroom.common.imageLoadFailed")),1)]),_:1})):(d(),P("img",{key:f.value,decoding:"async",onLoad:o[1]||(o[1]=n=>g.value=!1),onError:o[2]||(o[2]=n=>{g.value=!1,y.value=!0}),src:f.value,alt:s(v).t("$vuetify.chatroom.computer.latestScreen")},null,40,Ue))],8,Ne)):(d(),P("div",je,[p(Be,{icon:"$mdiMonitorScreenshot",size:"42"}),l("span",null,c(s(v).t("$vuetify.chatroom.computer.noSnapshot")),1)])),e.preview?(d(),P("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",Fe,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)])])):_("",!0)]),_:1})]),_:1}))}}),Xe=Z(Me,[["__scopeId","data-v-38c2f32d"]]),Ge={class:"panel-header compact-header"},He={class:"panel-title"},Je={class:"computer-status-row"},Qe={class:"computer-status-label"},Ye={class:"computer-status-value"},Ze={class:"computer-status-row"},Ke={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"},it={class:"computer-status-label"},rt={class:"computer-permission-value"},nt={class:"panel-header compact-header"},lt={class:"panel-title"},ut=Y({__name:"ComputerStatus",props:{status:{},settingsBusy:{type:Boolean},permissionBusy:{},permissionRequestsAllowed:{type:Boolean}},emits:["updateSetting","requestPermission"],setup(e,{emit:S}){const r=S,t=ie();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?(d(),P(ae,{key:0},[p(Q,{rounded:"lg",variant:"flat",border:"",class:"panel-card"},{default:m(()=>[l("div",Ge,[l("div",He,c(s(t).t("$vuetify.chatroom.computer.title")),1)]),p(j),p(re,{class:"computer-status-list"},{default:m(()=>[e.status.unavailableReason==="no_x11_session"?(d(),w(W,{key:0,type:"info",variant:"tonal",density:"compact"},{default:m(()=>[C(c(s(t).t("$vuetify.chatroom.computer.noX11Session")),1)]),_:1})):_("",!0),l("div",Je,[l("span",Qe,c(s(t).t("$vuetify.chatroom.computer.platform")),1),l("strong",Ye,c(v(e.status.platform)),1)]),l("div",Ze,[l("span",Ke,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"?(d(),w(J,{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]=n=>r("requestPermission","accessibility"))},{default:m(()=>[C(c(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):_("",!0)])]),l("div",ot,[l("span",it,c(s(t).t("$vuetify.chatroom.computer.screenRecording")),1),l("div",rt,[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"?(d(),w(J,{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]=n=>r("requestPermission","screenRecording"))},{default:m(()=>[C(c(s(t).t("$vuetify.chatroom.computer.requestPermission")),1)]),_:1},8,["loading","disabled"])):_("",!0)])]),e.status.platform==="macos"&&!e.permissionRequestsAllowed&&(e.status.permissions.accessibility!=="granted"||e.status.permissions.screenRecording!=="granted")?(d(),w(W,{key:1,type:"info",variant:"tonal",density:"compact",class:"computer-permission-alert"},{default:m(()=>[C(c(s(t).t("$vuetify.chatroom.computer.permissionLocalOnly")),1)]),_:1})):_("",!0)]),_:1}),p(j),p(se,{density:"compact",class:"computer-settings-list"},{default:m(()=>[p(H,{title:s(t).t("$vuetify.chatroom.computer.enabled")},{append:m(()=>[p(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]=n=>r("updateSetting","enabled",!!n))},null,8,["model-value","aria-label","disabled"])]),_:1},8,["title"]),p(H,{title:s(t).t("$vuetify.chatroom.computer.remoteAccess")},{append:m(()=>[p(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]=n=>r("updateSetting","remoteAccess",!!n))},null,8,["model-value","aria-label","disabled"])]),_:1},8,["title"])]),_:1})]),_:1}),e.status.displays.length?(d(),w(Q,{key:0,rounded:"lg",variant:"flat",border:"",class:"panel-card"},{default:m(()=>[l("div",nt,[l("div",lt,c(s(t).t("$vuetify.chatroom.computer.displays")),1)]),p(j),p(se,{density:"compact",class:"computer-display-list"},{default:m(()=>[(d(!0),P(ae,null,de(e.status.displays,n=>(d(),w(H,{key:n.id,title:n.name,subtitle:b(n)},null,8,["title","subtitle"]))),128))]),_:1})]),_:1})):_("",!0)],64)):_("",!0)}}),ct=Z(ut,[["__scopeId","data-v-12975eaa"]]);function mt(e,S){const r=k(null),t=k(null),v=k([]),f=k(""),g=k(!1),y=k(!1),b=k(!1),a=k(!1),o=k(null),n=G(),h=G(),L=G(),O=G(),$=new Set,T=new Map;let x=!1,z=!1,E=null,D=!1;window.addEventListener("focus",le),K(),qe(()=>{window.removeEventListener("focus",le),D=!0,x=!1,$.clear(),T.clear(),n.invalidate(),h.invalidate(),L.invalidate(),O.invalidate()});const ne=oe(()=>["localhost","127.0.0.1","::1","[::1]"].includes(window.location.hostname));fe(e,()=>{he(S())});async function K(){f.value="",x=!1,$.clear(),O.invalidate(),await Promise.all([F(),M(),te()])}async function he(i){if(i===null){await K();return}const u=[];if(i.status&&u.push(F()),i.preview&&(!i.previewSnapshotId||t.value?.snapshotId!==i.previewSnapshotId)&&u.push(te()),i.operationsReset)x=!1,$.clear(),O.invalidate(),u.push(M());else if(i.operationIds.length){for(const R of i.operationIds)$.add(R);x&&!z?u.push(ee()):z||u.push(M())}await Promise.all(u)}async function F(){const i=n.begin();try{const u=await A("/computer/status",{signal:i.signal});n.isCurrent(i)&&(r.value=u)}catch(u){n.isCurrent(i)&&V(u)}}async function M(){const i=L.begin();z=!0,a.value=!0;try{const u=await A("/operations?pluginId=computer&limit=50",{signal:i.signal});if(D||!L.isCurrent(i))return;v.value=u,x=!0}catch(u){L.isCurrent(i)&&V(u)}finally{L.isCurrent(i)&&(z=!1,a.value=!1)}L.isCurrent(i)&&$.size&&await ee()}async function ge(i){if(D||!i.length)return;const u=O.begin(),R=await Promise.allSettled(i.map(async I=>{try{return await A("/operations/"+encodeURIComponent(I),{signal:u.signal})}catch(q){if(q instanceof ye&&q.status===404)return null;throw q}}));if(D||!O.isCurrent(u))return;const B=[...v.value];for(let I=0;I<R.length;I+=1){const q=R[I],N=i[I];if(q.status==="rejected"){const X=(T.get(N)??0)+1;X<=1?(T.set(N,X),$.add(N)):(T.delete(N),V(q.reason));continue}T.delete(N);const U=q.value;if(!U||U.pluginId!=="computer")continue;const ue=B.findIndex(X=>X.operationId===U.operationId);ue>=0?B[ue]=U:B.push(U)}B.sort((I,q)=>q.startedAt.localeCompare(I.startedAt)),v.value=B.slice(0,50)}function ee(){return E||(E=Promise.resolve().then(async()=>{for(;!D&&x&&!z&&$.size;){const i=[...$];$.clear(),await ge(i)}}).finally(()=>{E=null,!D&&x&&!z&&$.size&&ee()}),E)}async function te(){const i=h.begin();g.value=!1;try{const u=await A("/computer/preview",{signal:i.signal});h.isCurrent(i)&&(t.value=u)}catch(u){if(!h.isCurrent(i))return;if(dt(u)){t.value=null,g.value=!0;return}V(u)}}async function le(){if(r.value?.unavailableReason==="no_x11_session"){await F();return}if(r.value?.platform!=="macos"||r.value.permissions.accessibility==="granted"&&r.value.permissions.screenRecording==="granted")return;const i=n.begin();try{const u=await A("/computer/status",{signal:i.signal});n.isCurrent(i)&&(r.value=u)}catch{}}async function we(i,u){if(!b.value){b.value=!0,f.value="";try{await A("/computer/settings",{method:"PATCH",body:JSON.stringify({[i]:u})}),await Promise.all([F(),te()])}catch(R){V(R)}finally{b.value=!1}}}async function be(i){if(!ne.value||o.value)return;o.value=i,f.value="";const u=i==="accessibility"?"/computer/permissions/accessibility/request":"/computer/permissions/screen-recording/request",R=n.begin();try{const B=await A(u,{method:"POST",signal:R.signal});n.isCurrent(R)&&(r.value=B)}catch(B){n.isCurrent(R)&&V(B)}finally{o.value=null}}async function $e(){if(y.value)return;const i=h.begin();y.value=!0,f.value="";try{const u=await A("/computer/snapshot",{method:"POST",signal:i.signal});if(!h.isCurrent(i))return;t.value=u,g.value=!1}catch(u){h.isCurrent(i)&&V(u)}finally{y.value=!1}}async function ke(){f.value="",x=!1,$.clear(),O.invalidate(),await M()}function V(i){f.value||(f.value=Pe(i))}return{status:r,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 ye)||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=Y({__name:"ComputerView",props:{revision:{},changes:{}},setup(e){const S=e,r=mt(()=>S.revision,()=>S.changes);return(t,v)=>(d(),P("div",pt,[s(r).error.value?(d(),w(W,{key:0,type:"error",variant:"tonal"},{default:m(()=>[C(c(s(r).error.value),1)]),_:1})):_("",!0),p(Xe,{preview:s(r).preview.value,enabled:s(r).status.value?.settings.enabled??!1,busy:s(r).snapshotBusy.value,"remote-preview-blocked":s(r).remotePreviewBlocked.value,onRefresh:s(r).refreshSnapshot},null,8,["preview","enabled","busy","remote-preview-blocked","onRefresh"]),p(Oe,{operations:s(r).operations.value,busy:s(r).operationsBusy.value,onRefresh:s(r).refreshOperations},null,8,["operations","busy","onRefresh"]),p(ct,{status:s(r).status.value,"settings-busy":s(r).settingsBusy.value,"permission-busy":s(r).permissionBusy.value,"permission-requests-allowed":s(r).permissionRequestsAllowed.value,onUpdateSetting:s(r).updateSetting,onRequestPermission:s(r).requestPermission},null,8,["status","settings-busy","permission-busy","permission-requests-allowed","onUpdateSetting","onRequestPermission"])]))}}),wt=Z(vt,[["__scopeId","data-v-2084f1f6"]]);export{wt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.computer-operation-scroll[data-v-53b51c97]{min-height:0;max-height:min(38vh,360px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;touch-action:pan-y}@media(max-width:600px){.computer-operation-scroll[data-v-53b51c97]{max-height:min(34vh,280px)}}.computer-operation-list[data-v-53b51c97]{padding-block:4px}.computer-operation-list[data-v-53b51c97] .v-list-item{min-height:52px;padding-inline:18px}.computer-operation-list[data-v-53b51c97] .v-list-item-title,.computer-operation-list[data-v-53b51c97] .v-list-item-subtitle{font-size:12px}.computer-preview-heading[data-v-38c2f32d]{min-width:0}.computer-preview-time[data-v-38c2f32d]{margin-top:2px;color:rgb(var(--v-theme-on-surface),.52);font-size:11px}.computer-preview-content[data-v-38c2f32d]{padding:14px}.computer-screen-shell[data-v-38c2f32d]{overflow:hidden;border:1px solid rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface))}.computer-screen-shell img[data-v-38c2f32d]{display:block;width:100%;height:auto;object-fit:contain}.computer-screen-empty[data-v-38c2f32d]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;border:1px dashed rgba(var(--v-border-color),var(--v-border-opacity));border-radius:10px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface),.68);text-align:center}.computer-preview-meta[data-v-38c2f32d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(140px,100%),1fr));gap:10px;margin-top:10px}.computer-preview-meta>div[data-v-38c2f32d]{display:flex;min-width:0;flex-direction:column;gap:2px;padding:8px 10px;border-radius:8px;background:rgb(var(--v-theme-on-surface),.04)}.computer-preview-meta span[data-v-38c2f32d]{color:rgb(var(--v-theme-on-surface),.7);font-size:11px}.computer-preview-meta strong[data-v-38c2f32d]{color:rgb(var(--v-theme-on-surface),.92);font-size:12px;font-weight:650}@media(max-width:900px){.computer-preview-meta[data-v-38c2f32d]{grid-template-columns:1fr}}.computer-status-list[data-v-12975eaa]{display:flex;flex-direction:column;gap:2px;padding:12px 18px}.computer-status-row[data-v-12975eaa]{display:flex;min-height:36px;align-items:center;justify-content:space-between;gap:16px}.computer-status-label[data-v-12975eaa]{color:rgb(var(--v-theme-on-surface),.76);font-size:13px;font-weight:500}.computer-status-value[data-v-12975eaa]{color:rgb(var(--v-theme-on-surface),.94);font-size:13px;font-weight:600}.computer-permission-value[data-v-12975eaa]{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:10px}.computer-permission-state[data-v-12975eaa]{font-size:13px;font-weight:600;white-space:nowrap}.computer-permission-state.is-granted[data-v-12975eaa]{color:rgb(var(--v-theme-success))}.computer-permission-state.is-denied[data-v-12975eaa]{color:rgb(var(--v-theme-warning))}.computer-permission-state.is-muted[data-v-12975eaa]{color:rgb(var(--v-theme-on-surface),.72)}.computer-permission-btn[data-v-12975eaa]{padding-inline:10px;font-size:12px;font-weight:650}.computer-permission-alert[data-v-12975eaa]{margin-top:8px}.computer-settings-list[data-v-12975eaa],.computer-display-list[data-v-12975eaa]{padding-block:4px}.computer-settings-list[data-v-12975eaa] .v-list-item,.computer-display-list[data-v-12975eaa] .v-list-item{min-height:48px;padding-inline:18px}.computer-settings-list[data-v-12975eaa] .v-list-item-title,.computer-display-list[data-v-12975eaa] .v-list-item-title,.computer-display-list[data-v-12975eaa] .v-list-item-subtitle{font-size:12px}@media(max-width:900px){.computer-status-row[data-v-12975eaa]{min-height:40px}}.computer-view[data-v-2084f1f6]{display:flex;flex-direction:column;gap:14px;font-size:14px}
|