@zhanguym/chatroom 1.0.0 → 1.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/application.d.ts +0 -1
- package/dist/app/application.js +8 -7
- package/dist/app/event-bus.d.ts +13 -10
- package/dist/app/git-access.d.ts +50 -0
- package/dist/app/git-access.js +2 -0
- package/dist/app/service-registry.d.ts +11 -0
- package/dist/app/service-registry.js +17 -0
- package/dist/app/workspace-access.d.ts +24 -0
- package/dist/app/workspace-access.js +2 -0
- package/dist/auth/ingress-policy.d.ts +2 -0
- package/dist/auth/ingress-policy.js +14 -2
- package/dist/auth/passkey-service.js +1 -1
- package/dist/cli/run-cli.js +1 -1
- package/dist/core/fs/safe-directory.d.ts +9 -0
- package/dist/core/fs/safe-directory.js +129 -0
- package/dist/core/operations/repository.d.ts +2 -0
- package/dist/core/runtime/line-process.d.ts +19 -0
- package/dist/core/runtime/line-process.js +51 -0
- package/dist/infrastructure/database/operation-repository.js +8 -2
- package/dist/infrastructure/database/schema.d.ts +1 -1
- package/dist/infrastructure/database/schema.js +62 -0
- package/dist/infrastructure/http/http-server.js +1 -1
- package/dist/native/linux/chatroom-computer-helper +0 -0
- 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/operations/operation-log.js +16 -4
- package/dist/plugins/agent/async-queue.d.ts +10 -0
- package/dist/plugins/agent/async-queue.js +49 -0
- package/dist/plugins/agent/mcp.d.ts +3 -0
- package/dist/plugins/agent/mcp.js +502 -0
- package/dist/plugins/agent/plugin.d.ts +4 -0
- package/dist/plugins/agent/plugin.js +35 -0
- package/dist/plugins/agent/provider.d.ts +132 -0
- package/dist/plugins/agent/providers/codex/mapping.d.ts +56 -0
- package/dist/plugins/agent/providers/codex/mapping.js +427 -0
- package/dist/plugins/agent/providers/codex/provider.d.ts +84 -0
- package/dist/plugins/agent/providers/codex/provider.js +828 -0
- package/dist/plugins/agent/providers/codex/rpc.d.ts +40 -0
- package/dist/plugins/agent/providers/codex/rpc.js +227 -0
- package/dist/plugins/agent/providers/common.d.ts +11 -0
- package/dist/plugins/agent/providers/common.js +75 -0
- package/dist/plugins/agent/providers/index.d.ts +3 -0
- package/dist/plugins/agent/providers/index.js +4 -0
- package/dist/plugins/agent/repository.d.ts +21 -0
- package/dist/plugins/agent/repository.js +226 -0
- package/dist/plugins/agent/runtime-config.d.ts +5 -0
- package/dist/plugins/agent/runtime-config.js +60 -0
- package/dist/plugins/agent/runtime-files.d.ts +8 -0
- package/dist/plugins/agent/runtime-files.js +170 -0
- package/dist/plugins/agent/runtime-state.d.ts +17 -0
- package/dist/plugins/agent/runtime-state.js +133 -0
- package/dist/plugins/agent/runtime.d.ts +60 -0
- package/dist/plugins/agent/runtime.js +928 -0
- package/dist/plugins/agent/store.d.ts +17 -0
- package/dist/plugins/agent/store.js +1 -0
- package/dist/plugins/agent/types.d.ts +320 -0
- package/dist/plugins/agent/types.js +13 -0
- package/dist/plugins/cloud/plugin.d.ts +1 -1
- package/dist/plugins/cloud/plugin.js +3 -3
- package/dist/plugins/cloud/tunnel-client.js +6 -7
- package/dist/plugins/computer/computer-schemas.d.ts +7 -7
- package/dist/plugins/computer/computer-service.d.ts +3 -0
- package/dist/plugins/computer/computer-service.js +33 -1
- package/dist/plugins/computer/plugin.d.ts +1 -1
- package/dist/plugins/computer/plugin.js +1 -1
- package/dist/plugins/git/git-service.d.ts +3 -2
- package/dist/plugins/git/git-service.js +37 -1
- package/dist/plugins/git/plugin.d.ts +0 -2
- package/dist/plugins/git/plugin.js +3 -3
- package/dist/plugins/process/plugin.d.ts +1 -1
- package/dist/plugins/process/plugin.js +3 -3
- package/dist/plugins/process/process-supervisor.d.ts +1 -0
- package/dist/plugins/process/process-supervisor.js +15 -4
- package/dist/plugins/types.d.ts +1 -11
- package/dist/plugins/types.js +1 -17
- package/dist/plugins/web/api-types.d.ts +20 -5
- package/dist/plugins/web/http/agent-api-router.d.ts +3 -0
- package/dist/plugins/web/http/agent-api-router.js +254 -0
- package/dist/plugins/web/http/api-router.js +9 -0
- package/dist/plugins/web/http/computer-api-router.js +21 -6
- package/dist/plugins/web/http/process-api-router.js +3 -0
- package/dist/plugins/web/http/workspace-api-router.js +79 -6
- package/dist/plugins/web/plugin.d.ts +1 -1
- package/dist/plugins/web/plugin.js +5 -4
- package/dist/plugins/web/runtime.d.ts +6 -3
- package/dist/plugins/web/runtime.js +6 -1
- package/dist/plugins/workspace/mcp.js +16 -0
- package/dist/plugins/workspace/metadata.d.ts +1 -1
- package/dist/plugins/workspace/plugin.d.ts +1 -1
- package/dist/plugins/workspace/plugin.js +5 -2
- package/dist/plugins/workspace/types.d.ts +1 -18
- package/dist/plugins/workspace/workspace-fs.d.ts +9 -3
- package/dist/plugins/workspace/workspace-fs.js +78 -125
- package/dist/plugins/workspace/workspace-root-policy.d.ts +9 -0
- package/dist/plugins/workspace/workspace-root-policy.js +56 -0
- package/dist/plugins/workspace/workspace-service.d.ts +11 -6
- package/dist/plugins/workspace/workspace-service.js +39 -49
- package/dist/web/assets/AgentView-DKuspiki.js +4 -0
- package/dist/web/assets/AgentView-DYJeMJLX.css +1 -0
- package/dist/web/assets/{CloudView-CHjVbp-5.css → CloudView-DVVvwuWW.css} +1 -1
- package/dist/web/assets/CloudView-PbREbJgz.js +1 -0
- package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js +3 -0
- package/dist/web/assets/ComputerView-BM0u3wSF.css +1 -0
- package/dist/web/assets/ComputerView-BRb2sE0Z.js +1 -0
- package/dist/web/assets/McpToolsView-B8NSFdf4.js +1 -0
- package/dist/web/assets/McpToolsView-C22ZbSuV.css +1 -0
- package/dist/web/assets/OperationsView-BjTY2lIh.css +1 -0
- package/dist/web/assets/OperationsView-Cavi-6SZ.js +4 -0
- package/dist/web/assets/ProcessesView-Ce6iVwjA.css +1 -0
- package/dist/web/assets/ProcessesView-UO48Nh2q.js +4 -0
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-Bvc9wRyA.js +1 -0
- package/dist/web/assets/SystemLogsView-BXmOrmu5.js +1 -0
- package/dist/web/assets/SystemLogsView-CofP4Jvi.css +1 -0
- package/dist/web/assets/VSelect-BPRXx8KM.js +1 -0
- package/dist/web/assets/VSpacer-Cl-QiwaM.js +1 -0
- package/dist/web/assets/VSwitch-C0XNj1lR.js +1 -0
- package/dist/web/assets/{VTabs-qBcuuXh3.js → VTabs-CHj39Ket.js} +1 -1
- package/dist/web/assets/VTextarea-BIcUWOU6.js +16 -0
- package/dist/web/assets/VTextarea-DG1zE1as.css +1 -0
- package/dist/web/assets/WorkspacesView-DPCt6kYy.css +1 -0
- package/dist/web/assets/WorkspacesView-rY6RXeiR.js +2 -0
- package/dist/web/assets/entity-refresh-queue-wQii8Dl5.js +1 -0
- package/dist/web/assets/{index-CkjqXRSj.css → index-BPpl3-sP.css} +1 -1
- package/dist/web/assets/index-Dt-pWiW1.js +19 -0
- package/dist/web/assets/{syntax-highlight-B5ArnyrC.js → syntax-highlight-C_fuMcwC.js} +1 -1
- package/dist/web/assets/useMasterDetailFocus-D0j-KcXv.js +1 -0
- package/dist/web/assets/useOperationLabels-DR8r6Vrl.js +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +4 -2
- package/dist/plugins/git/types.d.ts +0 -32
- package/dist/web/assets/CloudView-CvX0dkgu.js +0 -1
- package/dist/web/assets/CodeViewer.vue_vue_type_script_setup_true_lang-B5TxGkUW.js +0 -3
- package/dist/web/assets/ComputerView-91Z9Cefw.css +0 -1
- package/dist/web/assets/ComputerView-OOyEqWml.js +0 -1
- package/dist/web/assets/McpToolsView-BTnolyS6.css +0 -1
- package/dist/web/assets/McpToolsView-DjXWTKrZ.js +0 -1
- package/dist/web/assets/OperationsView-DqTY51Cr.js +0 -4
- package/dist/web/assets/ProcessesView-C13BykIa.js +0 -4
- package/dist/web/assets/StateChip.vue_vue_type_script_setup_true_lang-DyOhJmR6.js +0 -1
- package/dist/web/assets/SystemLogsView-Ci0u4BTb.js +0 -1
- package/dist/web/assets/VSelect-DrRpKyYI.js +0 -1
- package/dist/web/assets/VSpacer-C3wAY3F0.js +0 -1
- package/dist/web/assets/VSwitch-CxusR4iO.js +0 -1
- package/dist/web/assets/WorkspacesView-BzQ0aH74.css +0 -1
- package/dist/web/assets/WorkspacesView-CijIvfsp.js +0 -2
- package/dist/web/assets/index-BegKQ3Yd.js +0 -19
- package/dist/web/assets/useOperationLabels-BDjzGDkT.js +0 -1
- /package/dist/{plugins/process → core/runtime}/head-tail-buffer.d.ts +0 -0
- /package/dist/{plugins/process → core/runtime}/head-tail-buffer.js +0 -0
- /package/dist/plugins/{git/types.js → agent/provider.js} +0 -0
|
@@ -1,31 +1,25 @@
|
|
|
1
|
-
import { mkdir, readdir, realpath
|
|
2
|
-
import os from "node:os";
|
|
1
|
+
import { mkdir, readdir, realpath } from "node:fs/promises";
|
|
3
2
|
import path from "node:path";
|
|
4
3
|
import { ChatRoomError } from "#core/errors/chatroom-error";
|
|
4
|
+
import { WorkspaceRootPolicy } from "./workspace-root-policy.js";
|
|
5
5
|
import { readInstructions, readPresetPrompt, readSkills, readSummary, } from "./metadata.js";
|
|
6
6
|
import { WorkspaceFs } from "./workspace-fs.js";
|
|
7
7
|
export class WorkspaceService {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
rootsPolicy;
|
|
9
|
+
git;
|
|
10
|
+
constructor(rootsPolicy, git) {
|
|
11
|
+
this.rootsPolicy = rootsPolicy;
|
|
12
|
+
this.git = git;
|
|
11
13
|
}
|
|
12
|
-
static async create(allowedRoots) {
|
|
13
|
-
|
|
14
|
-
const canonical = await realpath(expandHome(root)).catch(() => {
|
|
15
|
-
throw new ChatRoomError("NOT_FOUND", `Allowed root does not exist: ${root}`);
|
|
16
|
-
});
|
|
17
|
-
if (!(await stat(canonical)).isDirectory())
|
|
18
|
-
throw new ChatRoomError("INVALID_INPUT", `Allowed root is not a directory: ${root}`);
|
|
19
|
-
return canonical;
|
|
20
|
-
}));
|
|
21
|
-
return new WorkspaceService([...new Set(canonicalRoots)]);
|
|
14
|
+
static async create(allowedRoots, git) {
|
|
15
|
+
return new WorkspaceService(await WorkspaceRootPolicy.create(allowedRoots), git);
|
|
22
16
|
}
|
|
23
17
|
roots() {
|
|
24
|
-
return
|
|
18
|
+
return this.rootsPolicy.roots();
|
|
25
19
|
}
|
|
26
20
|
async list() {
|
|
27
21
|
const roots = new Set();
|
|
28
|
-
for (const allowedRoot of this.
|
|
22
|
+
for (const allowedRoot of this.rootsPolicy.roots()) {
|
|
29
23
|
let entries;
|
|
30
24
|
try {
|
|
31
25
|
entries = await readdir(allowedRoot, { withFileTypes: true });
|
|
@@ -39,7 +33,7 @@ export class WorkspaceService {
|
|
|
39
33
|
entry.name.startsWith("."))
|
|
40
34
|
continue;
|
|
41
35
|
const candidate = await realpath(path.join(allowedRoot, entry.name)).catch(() => null);
|
|
42
|
-
if (candidate && this.isWorkspaceRoot(candidate))
|
|
36
|
+
if (candidate && this.rootsPolicy.isWorkspaceRoot(candidate))
|
|
43
37
|
roots.add(candidate);
|
|
44
38
|
}
|
|
45
39
|
}
|
|
@@ -55,19 +49,10 @@ export class WorkspaceService {
|
|
|
55
49
|
}));
|
|
56
50
|
}
|
|
57
51
|
async resolve(input) {
|
|
58
|
-
|
|
59
|
-
throw new ChatRoomError("INVALID_INPUT", "Workspace root is required");
|
|
60
|
-
const canonical = await realpath(expandHome(input)).catch(() => {
|
|
61
|
-
throw new ChatRoomError("NOT_FOUND", `Workspace root does not exist: ${input}`);
|
|
62
|
-
});
|
|
63
|
-
if (!(await stat(canonical)).isDirectory())
|
|
64
|
-
throw new ChatRoomError("INVALID_INPUT", `Workspace root is not a directory: ${input}`);
|
|
65
|
-
if (!this.isWorkspaceRoot(canonical))
|
|
66
|
-
throw new ChatRoomError("FORBIDDEN", "Workspace must be a direct child of a configured allowed root", { root: canonical });
|
|
67
|
-
return canonical;
|
|
52
|
+
return this.rootsPolicy.resolveWorkspace(input);
|
|
68
53
|
}
|
|
69
54
|
async createProject(parentInput, nameInput) {
|
|
70
|
-
const parent = await this.resolveAllowedRoot(parentInput);
|
|
55
|
+
const parent = await this.rootsPolicy.resolveAllowedRoot(parentInput);
|
|
71
56
|
const name = validateProjectName(nameInput);
|
|
72
57
|
const target = path.join(parent, name);
|
|
73
58
|
try {
|
|
@@ -82,6 +67,31 @@ export class WorkspaceService {
|
|
|
82
67
|
const root = await realpath(target);
|
|
83
68
|
return { root, name: path.basename(root), summary: null };
|
|
84
69
|
}
|
|
70
|
+
async projectFiles(input, maxFiles = 5000) {
|
|
71
|
+
return (await this.projectFilesResult(input, maxFiles)).paths;
|
|
72
|
+
}
|
|
73
|
+
async projectFilesResult(input, maxFiles = 5000) {
|
|
74
|
+
const fs = await this.fs(input);
|
|
75
|
+
const limit = Math.min(Math.max(Math.trunc(maxFiles), 1), 9999);
|
|
76
|
+
const gitFiles = await this.git.projectFiles(fs.root, limit + 1);
|
|
77
|
+
if (gitFiles)
|
|
78
|
+
return {
|
|
79
|
+
paths: gitFiles.slice(0, limit),
|
|
80
|
+
truncated: gitFiles.length > limit,
|
|
81
|
+
};
|
|
82
|
+
const entries = await fs.list(".", {
|
|
83
|
+
recursive: true,
|
|
84
|
+
maxEntries: 10_000,
|
|
85
|
+
excludeDirectoryNames: [".chatroom", ".git"],
|
|
86
|
+
});
|
|
87
|
+
const files = entries
|
|
88
|
+
.filter((entry) => entry.type === "file")
|
|
89
|
+
.map((entry) => entry.path);
|
|
90
|
+
return {
|
|
91
|
+
paths: files.slice(0, limit),
|
|
92
|
+
truncated: entries.length >= 10_000 || files.length > limit,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
85
95
|
async info(input) {
|
|
86
96
|
const root = await this.resolve(input);
|
|
87
97
|
const fs = await WorkspaceFs.create(root);
|
|
@@ -103,19 +113,6 @@ export class WorkspaceService {
|
|
|
103
113
|
async fs(input) {
|
|
104
114
|
return WorkspaceFs.create(await this.resolve(input));
|
|
105
115
|
}
|
|
106
|
-
isWorkspaceRoot(candidate) {
|
|
107
|
-
return this.allowedRoots.some((root) => path.dirname(candidate) === root);
|
|
108
|
-
}
|
|
109
|
-
async resolveAllowedRoot(input) {
|
|
110
|
-
if (typeof input !== "string" || !input.trim())
|
|
111
|
-
throw new ChatRoomError("INVALID_INPUT", "Allowed root is required");
|
|
112
|
-
const canonical = await realpath(expandHome(input)).catch(() => {
|
|
113
|
-
throw new ChatRoomError("NOT_FOUND", `Allowed root does not exist: ${input}`);
|
|
114
|
-
});
|
|
115
|
-
if (!this.allowedRoots.includes(canonical))
|
|
116
|
-
throw new ChatRoomError("FORBIDDEN", "Project can only be created directly under a configured allowed root");
|
|
117
|
-
return canonical;
|
|
118
|
-
}
|
|
119
116
|
}
|
|
120
117
|
function validateProjectName(input) {
|
|
121
118
|
if (typeof input !== "string")
|
|
@@ -131,10 +128,3 @@ function validateProjectName(input) {
|
|
|
131
128
|
throw new ChatRoomError("INVALID_INPUT", "Invalid project name");
|
|
132
129
|
return name;
|
|
133
130
|
}
|
|
134
|
-
function expandHome(input) {
|
|
135
|
-
if (input === "~")
|
|
136
|
-
return os.homedir();
|
|
137
|
-
if (input.startsWith("~/") || input.startsWith("~\\"))
|
|
138
|
-
return path.join(os.homedir(), input.slice(2));
|
|
139
|
-
return path.resolve(input);
|
|
140
|
-
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{A as mt,a0 as xt,w as ie,B as Ue,a6 as Kt,y as U,C as qe,a as ke,z as I,d as Ce,u as ye,o as i,c as q,a7 as yt,b as B,e as g,V as Ye,g as h,t as M,h as d,l as ut,q as ea,r as le,p as O,n as S,O as oe,X as Se,i as ce,a8 as ue,x as Ze,T as tt,Q as Pe,U as Ee,a9 as dt,aa as Vt,m as ot,ab as lt,ac as ha,ad as Re,ae as He,a4 as ft,f as Ot,k as Mt,s as It,v as ht,af as Tt,D as At,ag as ba,ah as ta,ai as wa,aj as Ut,ak as ka,al as aa,am as ct,an as Wt,ao as na,H as Rt,ap as $a,Y as bt,$ as Me,aq as Sa,j as rt,ar as Ca,as as xa,at as Va,au as Ma,R as Ia,av as la,aw as Ht,ax as Je,ay as Ta,I as wt,az as Aa,aA as Ra,aB as Pa,_ as Fa,aC as Bt,aD as Et,aE as Ua,aF as Ea,aG as za,aH as Gt,aI as Da,aJ as Jt,aK as sa,F as zt,aL as Oa,S as nt,aM as Xt,aN as Ba,aO as La,aP as _a,N as ia,aQ as Na,aR as qa,aS as ja,aT as Ka,aU as Qt,aV as Wa,aW as Ha,a5 as oa,aX as Ga,a1 as Ja,a2 as Xa,G as Qa,aY as Be,a3 as Ya}from"./index-Dt-pWiW1.js";import{_ as Ie}from"./_plugin-vue_export-helper-DlAUqK2U.js";import{V as Za,M as Dt}from"./VTextarea-BIcUWOU6.js";import{V as Pt}from"./VSpacer-Cl-QiwaM.js";import{_ as it,V as en}from"./CodeViewer.vue_vue_type_script_setup_true_lang-CiFNEpWo.js";import{u as tn,a as an,b as nn,c as ln,d as sn,m as on,e as rn,f as un,g as dn,V as Ge}from"./VSelect-BPRXx8KM.js";import{V as cn}from"./VSwitch-C0XNj1lR.js";import"./syntax-highlight-C_fuMcwC.js";function Ct(){return{sandbox_approval:!0,rules:!0,skill_approval:!0,request_permissions:!0,mcp_elicitations:!0}}function Qe(e,a,t){return e.find(o=>o.id===a)?.nativeSettings.find(o=>o.id===t)??null}function Lt(e,a=null){if(e&&typeof e=="object")return"granular";const t=e??a;return t==="untrusted"||t==="on-request"||t==="granular"||t==="never"?t:null}function _t(e,a){const t=e??a;return t==="user"||t==="auto_review"||t==="guardian_subagent"?t:null}function Nt(e,a){const t=e??a;return t==="read-only"||t==="workspace-write"||t==="danger-full-access"?t:null}function ra(e,a,t,o,n,s){const c=Qe(e,a,"approvalPolicy"),f=Qe(e,a,"approvalsReviewer"),m=Qe(e,a,"permissionMode"),l=Lt(t,c?.defaultValue??null),v=m?.options.some(r=>r.id===s)?s:null;return{approvalPolicy:c?l==="granular"?{granular:{...o}}:l:null,approvalsReviewer:f?_t(n,f.defaultValue):null,permissionMode:m?Nt(v,m.defaultValue):null}}function ua(e,a,t){const o=e[a]??[];return t?o.find(n=>n.id===t)??null:o.find(n=>n.isDefault)??o[0]??null}function vn(e,a,t){return t||((e[a]??[]).find(o=>o.isDefault)?.id??null)}function da(e,a){return e.find(t=>t.id===a)??null}function gt(e,a){return da(e,a)?.displayName??a}function ca(e,a){return da(e,a)?.icon??null}function va(e,a,t,o){const n=vn(e,a,t);return n?(e[a]??[]).find(s=>s.id===n)?.displayName??n:o}function qt(e,a){return a?`${e} (${a})`:e}function $t(e){return e.split("/").pop()??e}function mn(e,a){const t=a.request??Ue,o=U([]),n=U(null),s=mt(),c=new Map,f=new Map;let m=!1,l=null,v=null,r=!1;xt(()=>{r=!0,s.invalidate(),c.clear(),f.clear()}),ie(e,z=>{s.invalidate(),n.value=null,l=z,w()},{flush:"sync"});function k(z){const x=c.get(z.sessionId);c.set(z.sessionId,{sessionId:z.sessionId,turnIds:[...new Set([...x?.turnIds??[],...z.turnIds])],itemIds:[...new Set([...x?.itemIds??[],...z.itemIds])],deleted:!!(x?.deleted||z.deleted)})}function A(z){const x=new Map(o.value.map(R=>[R.id,R]));o.value=z.map(R=>St(x.get(R.id),R)).sort((R,T)=>T.updatedAt.localeCompare(R.updatedAt)),a.onSessionsChanged?.(x,o.value),e.value&&!z.some(R=>R.id===e.value)&&(e.value=z[0]?.id??null)}function D(z){const x=new Map(o.value.map(T=>[T.id,T])),R=St(x.get(z.id),z);return x.set(z.id,R),A([...x.values()]),R}function y(z){return z===void 0?Promise.resolve():(z===null?m=!0:z.forEach(k),w())}function w(){return v||(r?Promise.resolve():(v=Promise.resolve().then(async()=>{for(;!r&&(m||l||c.size);){const z=m;m=!1;const x=l;l=null;const R=z||x?[]:[...c.values()];!z&&!x&&c.clear();const T=s.begin();try{if(z){const $=await t("/agents/sessions",{signal:T.signal});if(!s.isCurrent(T))continue;A($),l=e.value}else if(x){const $=await t(`/agents/sessions/${encodeURIComponent(x)}/history`,{signal:T.signal});if(!s.isCurrent(T)||e.value!==x)continue;n.value=$,D($.session)}else for(const $ of R){if(!s.isCurrent(T))break;if($.deleted){A(o.value.filter(C=>C.id!==$.sessionId));continue}const L=Math.max(1,Math.ceil($.turnIds.length/64),Math.ceil($.itemIds.length/64));let b=!0;for(let C=0;C<L;C++){const E=new URLSearchParams;E.set("turnIds",$.turnIds.slice(C*64,(C+1)*64).join(",")),E.set("itemIds",$.itemIds.slice(C*64,(C+1)*64).join(","));try{const J=await t(`/agents/sessions/${encodeURIComponent($.sessionId)}/update?${E}`,{signal:T.signal});if(!s.isCurrent(T))break;D(J.session),n.value?.session.id===J.session.id&&(n.value=Yt(n.value,J))}catch(J){if(!s.isCurrent(T))break;if(J instanceof Kt&&J.status===404)f.delete($.sessionId),A(o.value.filter(de=>de.id!==$.sessionId));else{const de=(f.get($.sessionId)??0)+1;de<=1?(f.set($.sessionId,de),k($)):(f.delete($.sessionId),a.onError(J))}b=!1;break}}b&&f.delete($.sessionId)}}catch($){s.isCurrent(T)&&($ instanceof Kt&&$.status===404&&x?A(o.value.filter(L=>L.id!==x)):a.onError($))}finally{!r&&!s.isCurrent(T)&&(z?m=!0:x&&e.value===x&&(l=x),R.forEach(k))}}}).finally(()=>{v=null,!r&&(m||l||c.size)&&w()}),v))}function u(){const z=e.value;return z?(l=z,w()):Promise.resolve()}function p(z){s.invalidate();const x=D(z);n.value?.session.id===z.id&&(n.value={...n.value,session:St(n.value.session,x)})}function F(z){s.invalidate(),A(o.value.filter(x=>x.id!==z)),k({sessionId:z,turnIds:[],itemIds:[],deleted:!0}),w()}function ee(z,x){s.invalidate();const R=n.value;if(!R||R.session.id!==z)return;const T=Yt(R,{session:R.session,turns:[],items:[x]}),$=T.turns.flatMap(b=>b.items).filter(b=>b.type==="interaction"&&b.status==="waiting"),L={...T.session,status:T.session.status==="waiting_input"?$.length?"waiting_input":"running":T.session.status,attention:$.length?{kind:$.some(b=>b.interaction.kind==="approval")?"approval":"input",count:$.length}:null};n.value={...T,session:L},D(L)}return{sessions:o,history:n,refresh:y,reloadSelected:u,reconcileSession:p,reconcileInteraction:ee,removeSession:F}}function Yt(e,a){const t=new Map(e.turns.map(n=>[n.turn.id,n]));for(const n of a.turns){const s=t.get(n.id);t.set(n.id,{turn:n,items:s?.items??[]})}const o=new Map;for(const n of a.items){const s=o.get(n.turnId)??[];s.push(n),o.set(n.turnId,s)}for(const[n,s]of o){const c=t.get(n);if(!c)throw new Error("Agent update is missing the item's turn");const f=new Map(c.items.map(m=>[m.id,m]));for(const m of s)f.set(m.id,m);t.set(n,{...c,items:[...f.values()].sort((m,l)=>m.sequence-l.sequence)})}return{session:St(e.session,a.session),turns:[...t.values()].sort((n,s)=>n.turn.startedAt.localeCompare(s.turn.startedAt))}}function St(e,a){return e&&e.updatedAt.localeCompare(a.updatedAt)>=0?e:a}function fn(e){const a=U({}),t=U(new Set),o=new Map;let n=0;ie(e.selectedId,()=>{n+=1,a.value={},t.value=new Set(e.selectedId.value?o.get(e.selectedId.value)??[]:[])},{flush:"sync"}),xt(()=>o.clear());async function s(k,A){k.type!=="interaction"||!e.selected.value||await f(k,{type:"approval",decision:A})}async function c(k){if(k.type!=="interaction"||!e.selected.value)return;const A={};for(const D of k.interaction.questions){const y=l(k)[D.id]??[];A[D.id]=D.multiSelect?y:y.slice(0,1)}await f(k,{type:"input",answers:A})}async function f(k,A){const D=e.selected.value,y=D?o.get(D.id):void 0;if(!D||k.status!=="waiting"||y?.has(k.id))return;const w={sessionId:D.id,generation:n},u=new Set(y??[]);u.add(k.id),o.set(D.id,u),t.value=new Set(u),e.error.value="";try{const p=await Ue("/agents/sessions/"+encodeURIComponent(D.id)+"/interactions/"+encodeURIComponent(k.id),{method:"POST",body:JSON.stringify(A)});e.reconcileInteraction(D.id,p)}catch(p){r(w)&&(e.error.value=qe(p))}finally{const p=new Set(o.get(D.id)??[]);p.delete(k.id),p.size?o.set(D.id,p):o.delete(D.id),e.selectedId.value===D.id&&(t.value=p)}}const m=Object.freeze({});function l(k){return a.value[k.id]??m}function v(k,A,D){a.value={...a.value,[k.id]:{...a.value[k.id]??{},[A]:D}}}function r(k){return e.selectedId.value===k.sessionId&&n===k.generation}return{respondingInteractions:t,respondApproval:s,submitInput:c,interactionAnswers:l,setInteractionAnswer:v}}function gn(e){const a=ke(),t=U(!1),o=U(null),n=U(null),s=U(null),c=U(null),f=U(null),m=U(Ct()),l=U(null),v=U(null),r=U(!1),k=U("uncommittedChanges"),A=U(""),D=U(""),y=U(!1),w=U(""),u=U(!1),p=U(!1),F=U(!1),ee=U(!1),z=U(null),x=U(!1);let R=!1,T=0;const $=new Map,L=new Map,b=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"approvalPolicy"):null),C=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"approvalsReviewer"):null),E=I(()=>e.selected.value?Qe(e.providers.value,e.selected.value.provider,"permissionMode"):null),J=I(()=>e.selected.value?e.providerModels.value[e.selected.value.provider]??[]:[]),de=I(()=>e.selected.value?ua(e.providerModels.value,e.selected.value.provider,e.selected.value.model):null),Y=I(()=>e.selected.value?e.providers.value.find(P=>P.id===e.selected.value?.provider)??null:null),$e=I(()=>["uncommittedChanges","baseBranch","commit","custom"].map(P=>({value:P,title:a.t(`$vuetify.chatroom.agents.reviewTargets.${P}`)}))),fe=I(()=>a.t(`$vuetify.chatroom.agents.reviewFields.${k.value}`)),be=I(()=>e.selected.value?.status==="idle"&&!!Y.value?.features.nativeReview&&!y.value&&!e.composerBusy.value&&!u.value&&!p.value&&(k.value==="uncommittedChanges"||!!A.value.trim())),xe=I(()=>e.selected.value?e.providers.value.filter(P=>P.id!==e.selected.value?.provider&&P.installed&&P.authenticated):[]);ie(k,()=>{A.value="",D.value="",w.value=""}),ie(e.selectedId,()=>{T+=1,u.value=!1,p.value=!1,F.value=!1,y.value=!1,t.value=!1,r.value=!1,ee.value=!1,z.value=null,x.value=!1},{flush:"sync"}),ie(e.sessions,P=>{const X=z.value;X&&!P.some(ae=>ae.id===X)&&(ee.value=!1,z.value=null)}),xt(()=>{R=!0,$.clear(),L.clear()});async function se(P,X=null){const ae=e.providers.value.find(me=>me.id===P);if(ae&&(!ae.installed||!ae.authenticated)){e.providerModels.value={...e.providerModels.value,[P]:[]};return}const ge=($.get(P)??0)+1;$.set(P,ge);try{const me=await Ue("/agents/providers/"+P+"/models",{timeoutMs:15e3});if(R||$.get(P)!==ge)return;e.providerModels.value={...e.providerModels.value,[P]:me}}catch(me){if(R||$.get(P)!==ge)return;e.providerModels.value={...e.providerModels.value,[P]:[]},(X===null||e.selectedId.value===X)&&(e.error.value=qe(me))}}async function Te(){const P=e.selected.value;if(!P||!be.value)return;const X=Ae(P.id),ae=A.value.trim();let ge;switch(k.value){case"uncommittedChanges":ge={type:"uncommittedChanges"};break;case"baseBranch":ge={type:"baseBranch",branch:ae};break;case"commit":ge={type:"commit",sha:ae,title:D.value.trim()||null};break;case"custom":ge={type:"custom",instructions:ae};break}y.value=!0,w.value="";try{await Ue(`/agents/sessions/${encodeURIComponent(P.id)}/review`,{method:"POST",body:JSON.stringify({target:ge}),timeoutMs:3e4}),he(X)&&(r.value=!1)}catch(me){he(X)&&(w.value=qe(me))}finally{he(X)&&(y.value=!1)}}async function we(){const P=e.selected.value;if(!P||F.value)return;const X=Ae(P.id);F.value=!0,e.error.value="";try{await Ue("/agents/sessions/"+encodeURIComponent(P.id)+"/interrupt",{method:"POST"})}catch(ae){he(X)&&(e.error.value=qe(ae))}finally{he(X)&&(F.value=!1)}}async function je(P){const X=e.selected.value;if(!X||P===X.provider||p.value)return;const ae=e.providers.value.find(Ne=>Ne.id===P);if(!ae?.installed||!ae.authenticated)return;const ge=Ae(X.id),me=Le(X.id);p.value=!0,e.error.value="";try{const Ne=await Ue("/agents/sessions/"+encodeURIComponent(X.id)+"/provider",{method:"POST",body:JSON.stringify({provider:P,model:null,reasoningEffort:null,reasoningSummary:null,serviceTier:null}),timeoutMs:3e4});_e(me)?(e.reconcileSession(Ne),await se(Ne.provider,X.id)):Ke(X.id)}catch(Ne){he(ge)&&(e.error.value=qe(Ne))}finally{he(ge)&&(p.value=!1)}}function ze(){const P=e.selected.value;P&&(z.value=P.id,ee.value=!0)}async function _(){const P=z.value;if(!(!P||x.value)){x.value=!0,e.error.value="";try{await Ue("/agents/sessions/"+encodeURIComponent(P),{method:"DELETE"}),e.removeSession(P),z.value===P&&(x.value=!1,ee.value=!1,z.value=null)}catch(X){z.value===P&&(x.value=!1,e.error.value=qe(X))}}}function H(){const P=e.selected.value;P&&(o.value=P.model,n.value=P.reasoningEffort,s.value=P.reasoningSummary,c.value=P.serviceTier,f.value=Lt(P.approvalPolicy,b.value?.defaultValue??null),m.value=P.approvalPolicy&&typeof P.approvalPolicy=="object"&&"granular"in P.approvalPolicy?{...P.approvalPolicy.granular}:Ct(),l.value=_t(P.approvalsReviewer,C.value?.defaultValue??null),v.value=Nt(P.permissionMode,E.value?.defaultValue??null),t.value=!0)}async function Ve(){const P=e.selected.value;if(!P)return;await De({model:o.value,reasoningEffort:n.value,reasoningSummary:s.value,serviceTier:c.value,...ra(e.providers.value,P.provider,f.value,m.value,l.value,v.value)})&&(t.value=!1)}async function De(P){const X=e.selected.value;if(!X||X.status!=="idle"||u.value||p.value)return!1;const ae=Ae(X.id),ge=Le(X.id);u.value=!0,e.error.value="";try{const me=await Ue(`/agents/sessions/${encodeURIComponent(X.id)}/config`,{method:"PUT",body:JSON.stringify(P),timeoutMs:3e4});return _e(ge)?(e.reconcileSession(me),he(ae)):(Ke(X.id),!1)}catch(me){return he(ae)&&(e.error.value=qe(me)),!1}finally{he(ae)&&(u.value=!1)}}function Ae(P){return{sessionId:P,generation:T}}function he(P){return e.selectedId.value===P.sessionId&&T===P.generation}function Le(P){const X=(L.get(P)??0)+1;return L.set(P,X),{sessionId:P,generation:X}}function _e(P){return L.get(P.sessionId)===P.generation}function Ke(P){e.refresh([{sessionId:P,turnIds:[],itemIds:[],deleted:!1}])}return{modelSettingsOpen:t,settingsModel:o,settingsReasoningEffort:n,settingsReasoningSummary:s,settingsServiceTier:c,settingsApprovalPolicyMode:f,settingsGranularApproval:m,settingsApprovalsReviewer:l,settingsPermissionMode:v,reviewOpen:r,reviewType:k,reviewValue:A,reviewTitle:D,reviewStarting:y,reviewError:w,modelSwitching:u,switchingProvider:p,interrupting:F,deleteDialog:ee,deletingSession:x,selectedApprovalPolicySetting:b,selectedApprovalsReviewerSetting:C,selectedPermissionModeSetting:E,selectedProviderModels:J,selectedModelMetadata:de,selectedProviderStatus:Y,reviewTypes:$e,reviewFieldLabel:fe,canStartReview:be,switchTargets:xe,loadModels:se,startReview:Te,interrupt:we,switchProvider:je,openDeleteDialog:ze,deleteSession:_,openModelSettings:H,saveModelSettings:Ve}}const pn={class:"agent-file-picker-caption"},yn={class:"agent-file-picker-list"},hn=["data-type","data-selected","aria-expanded","aria-pressed","onClick"],bn={key:1,class:"agent-tree-spacer"},wn={class:"agent-tree-name"},kn={key:2,class:"agent-tree-path"},$n={key:0,class:"agent-file-picker-empty"},Sn=Ce({__name:"AgentProjectFilePicker",props:Ze({rows:{},truncated:{type:Boolean},selectedPaths:{},expandedDirectories:{},disabled:{type:Boolean}},{open:{type:Boolean,required:!0},openModifiers:{},search:{required:!0},searchModifiers:{}}),emits:Ze(["toggleDirectory","toggleFile"],["update:open","update:search"]),setup(e,{emit:a}){const t=e,o=a,n=ye(e,"open"),s=ye(e,"search"),c=ke();function f(m){return t.selectedPaths.includes(m)}return(m,l)=>(i(),q(yt,{modelValue:n.value,"onUpdate:modelValue":l[1]||(l[1]=v=>n.value=v),"close-on-content-click":!1,location:"top start",offset:"8","content-class":"agent-overlay-menu"},{activator:B(({props:v})=>[g(ce,ue(v,{size:"x-small",density:"comfortable",variant:"text",icon:"",class:"agent-compose-tool-button agent-workspace-reference-button",disabled:e.disabled,"aria-label":d(c).t("$vuetify.chatroom.agents.projectFiles")}),{default:B(()=>[...l[2]||(l[2]=[le(" @ ",-1)])]),_:1},16,["disabled","aria-label"])]),default:B(()=>[g(Ye,{class:"agent-file-picker",elevation:"8"},{default:B(()=>[h("div",pn,M(d(c).t("$vuetify.chatroom.agents.projectFiles")),1),g(ut,{modelValue:s.value,"onUpdate:modelValue":l[0]||(l[0]=v=>s.value=v),"prepend-inner-icon":"$mdiMagnify","aria-label":d(c).t("$vuetify.chatroom.agents.searchFiles"),placeholder:d(c).t("$vuetify.chatroom.agents.searchFiles"),density:"compact",variant:"outlined","hide-details":"",autofocus:""},null,8,["modelValue","aria-label","placeholder"]),e.truncated?(i(),q(ea,{key:0,type:"warning",variant:"tonal",density:"compact",class:"agent-project-files-truncated"},{default:B(()=>[le(M(d(c).t("$vuetify.chatroom.agents.projectFilesTruncated")),1)]),_:1})):O("",!0),h("div",yn,[(i(!0),S(oe,null,Se(e.rows,v=>(i(),S("button",{key:v.path,type:"button",class:"agent-tree-row","data-type":v.type,"data-selected":v.type==="file"&&f(v.path)?"true":"false","aria-expanded":v.type==="directory"?e.expandedDirectories.has(v.path):void 0,"aria-pressed":v.type==="file"?f(v.path):void 0,style:tt({paddingInlineStart:String(8+v.depth*18)+"px"}),onClick:r=>v.type==="directory"?o("toggleDirectory",v.path):o("toggleFile",v.path)},[v.type==="directory"?(i(),q(Pe,{key:0,icon:"$mdiChevronRight",size:"16",class:Ee(["agent-tree-chevron",{"agent-tree-chevron-open":e.expandedDirectories.has(v.path)}])},null,8,["class"])):(i(),S("span",bn)),h("span",wn,M(v.name),1),s.value.trim()&&v.type==="file"?(i(),S("span",kn,M(v.path),1)):O("",!0)],12,hn))),128)),e.rows.length?O("",!0):(i(),S("div",$n,M(d(c).t("$vuetify.chatroom.agents.noMatchingFiles")),1))])]),_:1})]),_:1},8,["modelValue"]))}}),Cn=Ie(Sn,[["__scopeId","data-v-024d9876"]]);function xn(e){return e.map(a=>({path:a,lowerPath:a.toLowerCase()}))}function Zt(e,a,t){const o=t.trim().toLowerCase();if(!o)return[...e];const n=o.split(/[\/\s]+/).filter(Boolean);return a.filter(s=>n.every(c=>s.lowerPath.includes(c))).sort((s,c)=>{const f=s.lowerPath.startsWith(o)?0:1,m=c.lowerPath.startsWith(o)?0:1;return f-m||s.path.length-c.path.length||s.path.localeCompare(c.path)}).map(s=>s.path)}function Vn(e){const a=new Map;for(const t of e){const o=t.split("/");for(let n=1;n<o.length;n+=1)a.set(o.slice(0,n).join("/"),"directory");a.set(t,"file")}return[...a].map(([t,o])=>{const n=t.split("/"),s=[];let c="";for(const f of n.slice(0,-1))c=c?c+"/"+f:f,s.push(c);return{path:t,name:n.at(-1)??t,type:o,depth:Math.max(0,n.length-1),ancestors:s}}).sort((t,o)=>{const n=t.ancestors.at(-1)??"",s=o.ancestors.at(-1)??"";return n===s&&t.type!==o.type?t.type==="directory"?-1:1:t.path.localeCompare(o.path)})}function Mn(e,a){const t=new Set,o=/@"([^"]+)"|@([^\s]+)/g;for(const n of e.matchAll(o)){const s=(n[1]??n[2]??"").replace(/[),.;!?]+$/,"");a.has(s)&&t.add(s)}return[...t]}function Ft(e){const a=e.toLowerCase();return a.endsWith(".png")?"image/png":a.endsWith(".jpg")||a.endsWith(".jpeg")?"image/jpeg":a.endsWith(".gif")?"image/gif":a.endsWith(".webp")?"image/webp":a.endsWith(".avif")?"image/avif":null}const In={key:0,class:"agent-composer-caption"},Tn={key:1,class:"agent-inline-error agent-attachment-error",role:"alert"},An=["accept"],Rn={key:2,class:"agent-selected-attachments"},Pn={class:"agent-compose-row"},Fn={key:0,class:"agent-compose-tools"},Un={key:0,class:"agent-mention-popup"},En=["onMousedown","onClick"],zn={class:"agent-file-suggestion-name"},Dn={class:"agent-file-suggestion-path"},On={class:"agent-compose-actions"},Bn=Ce({__name:"AgentComposer",props:{session:{},model:{},steeringSupported:{type:Boolean},disabled:{type:Boolean}},emits:["error","busy"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(""),c=Re([]),f=Re({}),m=Re({}),l=U([]),v=U(!1),r=U([]),k=U([]),A=U(new Set),D=U(!1),y=U(""),w=U(""),u=U(!1),p=U(""),F=U(""),ee=U(0),z=U(0),x=dt("composerInputHost"),R=dt("localFileInput"),T=U(!1),$=U(!1),L=mt(),b=mt(),C=mt();let E=null,J=null;ie(y,(N,G,te)=>{E&&clearTimeout(E),E=setTimeout(()=>{w.value=N,E=null},120),te(()=>{E&&clearTimeout(E),E=null})}),ie(p,(N,G,te)=>{J&&clearTimeout(J),J=setTimeout(()=>{F.value=N,J=null},100),te(()=>{J&&clearTimeout(J),J=null})});const de=I(()=>new Set(l.value)),Y=I(()=>Mn(s.value,de.value)),$e=I(()=>[...new Set([...c.value,...Y.value])]),fe=I(()=>t.session.status==="running"&&t.steeringSupported),be=I(()=>t.session.status==="idle"||fe.value),xe=I(()=>[".txt",".md",".json",".csv",".pdf",".doc",".docx",".xls",".xlsx",".zip",".yaml",".yml",".xml",".html",".css",".js",".ts",".py",".rs",".go",".java",".c",".cpp",".sh",".log",".toml",".sql",...me("image")?["image/*"]:[],...me("audio")?["audio/*"]:[]].join(",")),se=I(()=>$e.value.filter(N=>!me(ge(N)))),Te=I(()=>se.value.length?n.t("$vuetify.chatroom.agents.unsupportedAttachment",se.value.map(_e).join(", ")):""),we=I(()=>Zt(l.value,r.value,F.value).slice(0,12)),je=I(()=>w.value.trim()?Zt(l.value,r.value,w.value).slice(0,80).map(N=>({path:N,name:$t(N),type:"file",depth:0,ancestors:[]})):k.value.filter(N=>N.ancestors.every(G=>A.value.has(G)))),ze=I(()=>be.value&&!t.disabled&&!T.value&&!$.value&&!se.value.length&&!!(s.value.trim()||$e.value.length));ie(()=>[t.session.id,t.session.workspaceRoot],()=>{ae(),_()},{immediate:!0}),ie(()=>T.value||$.value,N=>o("busy",N),{immediate:!0}),Vt(()=>{E&&clearTimeout(E),J&&clearTimeout(J),o("busy",!1)});async function _(){const N=L.begin(),G=t.session.id,te=t.session.workspaceRoot;try{const ve=await Ue("/workspace/project-files?root="+encodeURIComponent(te),{timeoutMs:2e4,signal:N.signal});if(!L.isCurrent(N)||t.session.id!==G||t.session.workspaceRoot!==te)return;l.value=ve.paths,v.value=ve.truncated,r.value=xn(ve.paths),k.value=Vn(ve.paths)}catch(ve){if(!L.isCurrent(N))return;l.value=[],v.value=!1,r.value=[],k.value=[],o("error",qe(ve))}}async function H(){if(!ze.value)return;if(se.value.length){o("error",Te.value);return}const N=t.session.id,G=fe.value,te=s.value,ve=$e.value.map(j=>({kind:ge(j),name:_e(j),path:j,mimeType:m.value[j]??Ft(j)})),V=b.begin();T.value=!0;try{if(await Ue("/agents/sessions/"+encodeURIComponent(N)+"/"+(G?"steer":"turns"),{method:"POST",body:JSON.stringify({text:te,attachments:ve}),timeoutMs:3e4,signal:V.signal}),!b.isCurrent(V)||t.session.id!==N)return;s.value="",c.value=[],f.value={},m.value={},u.value=!1}catch(j){b.isCurrent(V)&&o("error",qe(j))}finally{b.isCurrent(V)&&(T.value=!1)}}function Ve(){R.value?.click()}async function De(N){const G=N.target,te=[...G.files??[]];if(G.value="",!te.length)return;const ve=t.session.id,V=t.session.workspaceRoot,j=C.begin();$.value=!0;try{for(const ne of te){if(!C.isCurrent(j)||t.session.id!==ve)return;const re=ne.type.startsWith("audio/")?"audio":ne.type.startsWith("image/")||Ne(ne.name)?"image":"file";if(!me(re)){o("error",n.t("$vuetify.chatroom.agents.unsupportedAttachment",ne.name));continue}const pe=await Ue("/workspace/attachment?root="+encodeURIComponent(V)+"&sessionId="+encodeURIComponent(ve)+"&name="+encodeURIComponent(ne.name),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-ChatRoom-Mime-Type":ne.type||"application/octet-stream"},body:ne,timeoutMs:6e4,signal:j.signal});if(!C.isCurrent(j)||t.session.id!==ve)return;c.value.includes(pe.path)||c.value.push(pe.path),f.value[pe.path]=pe.name,m.value[pe.path]=pe.mimeType&&pe.mimeType!=="application/octet-stream"?pe.mimeType:ne.type||Ft(ne.name)}}catch(ne){C.isCurrent(j)&&o("error",qe(ne))}finally{C.isCurrent(j)&&($.value=!1)}}function Ae(N){const G=new Set(A.value);G.has(N)?G.delete(N):G.add(N),A.value=G}function he(N){const G=c.value.indexOf(N);G>=0?c.value.splice(G,1):c.value.push(N)}function Le(N){c.value=c.value.filter(G=>G!==N),delete f.value[N],delete m.value[N]}function _e(N){return f.value[N]??$t(N)}function Ke(){He(()=>{const N=X();if(!N){u.value=!1;return}const G=N.selectionStart??s.value.length,ve=s.value.slice(0,G).match(/(?:^|\s)@([^\s"@]*)$/);if(!ve){u.value=!1;return}const V=ve[1]??"";p.value=V,ee.value=G-V.length-1,z.value=G,u.value=!0})}function P(N){const G=/\s/.test(N)?'@"'+N+'"':"@"+N,te=s.value.slice(0,ee.value),ve=s.value.slice(z.value);s.value=te+G+" "+ve,c.value.includes(N)||c.value.push(N),u.value=!1,He(()=>{const V=X();if(!V)return;const j=te.length+G.length+1;V.focus(),V.setSelectionRange(j,j)})}function X(){return x.value?.querySelector("textarea")??null}function ae(){L.invalidate(),b.invalidate(),C.invalidate(),T.value=!1,$.value=!1,s.value="",c.value=[],f.value={},m.value={},l.value=[],v.value=!1,r.value=[],k.value=[],A.value=new Set,D.value=!1,y.value="",w.value="",p.value="",F.value="",u.value=!1}function ge(N){if(/(?:^|\/)(?:\.agents|\.claude|\.chatroom)\/skills\/(?:.*\/)?SKILL\.md$/.test(N.replaceAll("\\","/")))return"skill";if(!(N in f.value))return"file";const G=m.value[N];return G?.startsWith("audio/")?"audio":G?.startsWith("image/")||Ne(_e(N))?"image":"file"}function me(N){return N!=="image"&&N!=="audio"||!!t.model?.inputModalities?.includes(N)}function Ne(N){return Ft(N)!==null}return(N,G)=>(i(),S("div",{class:Ee(["agent-composer",{"agent-composer--waiting":e.session.status==="waiting_input"}])},[fe.value?(i(),S("div",In,M(d(n).t("$vuetify.chatroom.agents.steerHint")),1)):O("",!0),Te.value?(i(),S("div",Tn,M(Te.value),1)):O("",!0),h("input",{ref_key:"localFileInput",ref:R,class:"agent-hidden-file-input",type:"file",multiple:"",accept:xe.value,onChange:De},null,40,An),c.value.length?(i(),S("div",Rn,[(i(!0),S(oe,null,Se(c.value,te=>(i(),q(ft,{key:te,size:"small",closable:"",variant:"tonal",title:te,"onClick:close":ve=>Le(te)},{default:B(()=>[le(M(_e(te)),1)]),_:2},1032,["title","onClick:close"]))),128))])):O("",!0),h("div",Pn,[e.session.status!=="waiting_input"?(i(),S("div",Fn,[g(ce,{icon:"$mdiPaperclip",size:"x-small",density:"comfortable",variant:"text",class:"agent-compose-tool-button agent-attachment-button",loading:$.value,disabled:!be.value||e.disabled||T.value,"aria-label":d(n).t("$vuetify.chatroom.agents.attachFile"),onClick:Ve},null,8,["loading","disabled","aria-label"]),g(Cn,{open:D.value,"onUpdate:open":G[0]||(G[0]=te=>D.value=te),search:y.value,"onUpdate:search":G[1]||(G[1]=te=>y.value=te),rows:je.value,truncated:v.value,"selected-paths":c.value,"expanded-directories":A.value,disabled:!be.value||e.disabled||T.value,onToggleDirectory:Ae,onToggleFile:he},null,8,["open","search","rows","truncated","selected-paths","expanded-directories","disabled"])])):O("",!0),e.session.status!=="waiting_input"?(i(),S("div",{key:1,ref_key:"composerInputHost",ref:x,class:"agent-compose-input-wrap"},[u.value&&we.value.length?(i(),S("div",Un,[(i(!0),S(oe,null,Se(we.value,te=>(i(),S("button",{key:te,type:"button",class:"agent-file-suggestion",onMousedown:lt(ve=>P(te),["prevent"]),onClick:ve=>P(te)},[h("span",zn,M(d($t)(te)),1),h("span",Dn,M(te),1)],40,En))),128))])):O("",!0),g(Za,{modelValue:s.value,"onUpdate:modelValue":G[2]||(G[2]=te=>s.value=te),placeholder:d(n).t(fe.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"aria-label":d(n).t(fe.value?"$vuetify.chatroom.agents.steerPlaceholder":"$vuetify.chatroom.agents.messagePlaceholder"),"auto-grow":"",rows:"2","max-rows":"8","hide-details":"",disabled:!be.value||e.disabled||T.value,onInput:Ke,onKeyup:Ke,onClick:Ke,onKeydown:[G[3]||(G[3]=ot(te=>u.value=!1,["escape"])),ot(lt(H,["ctrl","prevent"]),["enter"]),ot(lt(H,["meta","prevent"]),["enter"])]},null,8,["modelValue","placeholder","aria-label","disabled","onKeydown"])],512)):O("",!0),h("div",On,[ha(N.$slots,"controls",{busy:T.value||$.value},void 0),e.session.status!=="waiting_input"?(i(),q(ce,{key:0,icon:"$mdiArrowUp",color:"primary",size:"small",variant:"tonal",loading:T.value,disabled:!ze.value,"aria-label":d(n).t(fe.value?"$vuetify.chatroom.agents.steer":"$vuetify.chatroom.agents.send"),onClick:H},null,8,["loading","disabled","aria-label"])):O("",!0)])])],2))}}),Ln=Ie(Bn,[["__scopeId","data-v-c20ba904"]]),_n=Ce({__name:"AgentDeleteDialog",props:Ze({busy:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{}}),emits:Ze(["confirm"],["update:modelValue"]),setup(e){const a=ye(e,"modelValue"),t=ke();return(o,n)=>(i(),q(ht,{modelValue:a.value,"onUpdate:modelValue":n[2]||(n[2]=s=>a.value=s),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.deleteTitle")),1)]),_:1}),g(Mt,null,{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.deleteDescription")),1)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:n[0]||(n[0]=s=>a.value=!1)},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"error",variant:"tonal",loading:e.busy,onClick:n[1]||(n[1]=s=>o.$emit("confirm"))},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.delete")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}});function Nn(e,a){const t=U(!0);let o=null,n=0;function s(l=72){const v=e.value;return v?v.scrollHeight-v.scrollTop-v.clientHeight<l:!0}function c(){const l=e.value?.scrollTop??0;s()?t.value=!0:l<n&&(t.value=!1),n=l}function f(){t.value&&o===null&&(o=requestAnimationFrame(()=>{o=null;const l=e.value;l&&t.value&&(l.scrollTop=l.scrollHeight,n=l.scrollTop)}))}function m(){t.value=!0,f()}return ie([e,a],([l,v],r,k)=>{if(!l||!v)return;const A=new ResizeObserver(()=>f());A.observe(l),A.observe(v),f(),k(()=>{A.disconnect()})},{flush:"post"}),Vt(()=>{o!==null&&cancelAnimationFrame(o)}),{autoFollow:t,isNearBottom:s,onConversationScroll:c,scheduleScrollToBottom:f,scrollToBottom:m}}const qn={class:"agent-artifact-group"},jn={class:"agent-artifact-group-heading"},Kn=["data-count"],Wn={class:"agent-artifact-media"},Hn=["aria-label","disabled","onClick"],Gn=["src","alt","onLoad","onError"],Jn={key:1,class:"agent-artifact-placeholder agent-artifact-overlay"},Xn={key:2,class:"agent-artifact-placeholder agent-artifact-overlay error"},Qn={key:0,class:"agent-artifact-error-detail"},Yn={class:"agent-artifact-footer"},Zn=["title"],el={class:"agent-artifact-preview-header"},tl={class:"text-truncate"},al={class:"agent-artifact-preview-body"},nl=["src","alt"],ll=Ce({__name:"AgentArtifactGallery",props:{items:{},workspaceRoot:{}},setup(e){const a=e,t=ke(),o=Re({}),n=Re({}),s=Re({}),c=U(null);function f(w){return`${a.workspaceRoot}:${w.artifact.path}:${w.id}:${w.updatedAt}:${s.value[w.id]??""}`}function m(w){const u=`${w.id}:${w.updatedAt}`;return"/api/workspace/file/image?root="+encodeURIComponent(a.workspaceRoot)+"&path="+encodeURIComponent(w.artifact.path)+"&v="+encodeURIComponent(u)+(s.value[w.id]?"&retry="+encodeURIComponent(s.value[w.id]):"")}function l(w){return!!o.value[f(w)]}function v(w){return n.value[f(w)]??""}function r(w){const u=f(w);o.value[u]=!0,delete n.value[u]}function k(w){const u=f(w);o.value[u]=!1,n.value[u]=t.t("$vuetify.chatroom.agents.imageDecodeFailed")}function A(w){s.value[w.id]=crypto.randomUUID()}function D(w){l(w)&&(c.value=w)}function y(w){if(!l(w))return;const u=document.createElement("a");u.href=m(w),u.download=w.artifact.name,u.click()}return(w,u)=>(i(),S("div",qn,[h("div",jn,[g(Pe,{icon:"$mdiFileEyeOutline",size:"17"}),h("span",null,M(e.items.length===1?d(t).t("$vuetify.chatroom.agents.generatedImage"):d(t).t("$vuetify.chatroom.agents.generatedImages",e.items.length)),1)]),h("div",{class:"agent-artifact-grid","data-count":e.items.length},[(i(!0),S(oe,null,Se(e.items,p=>(i(),S("div",{key:p.id,class:"agent-artifact-tile"},[h("div",Wn,[p.status==="completed"?(i(),S("button",{key:0,type:"button",class:"agent-artifact-image-button","aria-label":p.artifact.name,disabled:!l(p),onClick:F=>D(p)},[(i(),S("img",{key:f(p),class:"agent-artifact-image",src:m(p),alt:p.artifact.name,loading:"lazy",decoding:"async",onLoad:F=>r(p),onError:F=>k(p)},null,40,Gn))],8,Hn)):O("",!0),p.status==="running"||p.status==="waiting"||p.status==="completed"&&!l(p)&&!v(p)?(i(),S("div",Jn,[g(Tt,{indeterminate:"",size:"24",width:"2"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.imageLoading")),1)])):p.status==="failed"||p.status==="interrupted"||v(p)?(i(),S("div",Xn,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"22"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.imageLoadFailed")),1),v(p)?(i(),S("span",Qn,M(v(p)),1)):O("",!0),p.status==="completed"?(i(),q(ce,{key:1,size:"small",variant:"tonal",onClick:F=>A(p)},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.retry")),1)]),_:1},8,["onClick"])):O("",!0)])):O("",!0)]),h("div",Yn,[h("span",{class:"agent-artifact-name",title:p.artifact.path},M(p.artifact.name),9,Zn),g(ce,{icon:"$mdiDownloadOutline",size:"x-small",variant:"text",disabled:!l(p),"aria-label":d(t).t("$vuetify.chatroom.code.download"),onClick:F=>y(p)},null,8,["disabled","aria-label","onClick"])])]))),128))],8,Kn),g(ht,{"model-value":!!c.value,"max-width":"90vw","onUpdate:modelValue":u[1]||(u[1]=p=>c.value=p?c.value:null)},{default:B(()=>[c.value?(i(),q(Ye,{key:0,class:"agent-artifact-preview-dialog"},{default:B(()=>[h("div",el,[h("span",tl,M(c.value.artifact.name),1),g(ce,{icon:"$mdiClose",size:"small",variant:"text","aria-label":d(t).t("$vuetify.chatroom.common.close"),onClick:u[0]||(u[0]=p=>c.value=null)},null,8,["aria-label"])]),h("div",al,[h("img",{src:m(c.value),alt:c.value.artifact.name,decoding:"async"},null,8,nl)])]),_:1})):O("",!0)]),_:1},8,["model-value"])]))}}),sl=Ie(ll,[["__scopeId","data-v-e957f066"]]),il=["data-state","open"],ol=["aria-label"],rl={class:"agent-command-label"},ul={class:"agent-command-status"},dl={class:"agent-command-line"},cl=["title"],vl={key:0,class:"agent-command-copy-error",role:"alert"},ml={key:0,class:"agent-command-details"},fl={class:"agent-command-full"},gl={key:0,class:"agent-command-meta"},pl=["title"],yl={key:1,class:"agent-command-exit"},hl={class:"agent-command-output-label"},bl={class:"agent-command-code output"},wl={key:0,class:"agent-command-output-plain mono"},kl=Ce({__name:"AgentCommandItem",props:{command:{},cwd:{},output:{},exitCode:{},status:{}},setup(e){const a=e,t=ke(),o=U(""),n=U(a.status!=="completed"||a.exitCode!==null&&a.exitCode!==0);ie(()=>[a.status,a.exitCode],([l,v])=>{(l==="running"||l==="failed"||v!==null&&v!==0)&&(n.value=!0)});const s=I(()=>{let l=a.command.trim();return l=l.replace(/^(?:\/usr\/bin\/|\/bin\/)?(?:zsh|bash|sh)\s+-l?c\s+/,""),l.length>=2&&(l.startsWith('"')&&l.endsWith('"')||l.startsWith("'")&&l.endsWith("'"))&&(l=l.slice(1,-1)),l.replace(/\\"/g,'"').replace(/\s+/g," ").trim()||t.t("$vuetify.chatroom.agents.command")}),c=I(()=>a.status==="running"||a.status==="waiting"?"running":a.status==="failed"||a.exitCode!==null&&a.exitCode!==0?"error":a.status==="completed"&&a.exitCode===0?"success":"neutral"),f=I(()=>c.value==="running"?t.t("$vuetify.chatroom.agents.commandRunning"):c.value==="error"?a.exitCode===null?t.t("$vuetify.chatroom.agents.commandFailed"):t.t("$vuetify.chatroom.agents.exitCode",a.exitCode):c.value==="success"?t.t("$vuetify.chatroom.agents.commandSucceeded"):t.t("$vuetify.chatroom.agents.command"));async function m(){o.value="";try{await navigator.clipboard.writeText(a.command)}catch{o.value=t.t("$vuetify.chatroom.code.copyFailed")}}return(l,v)=>(i(),S("details",{class:"agent-command","data-state":c.value,open:n.value,onToggle:v[0]||(v[0]=r=>n.value=r.target.open)},[h("summary",{class:"agent-command-main","aria-label":d(t).t("$vuetify.chatroom.agents.commandDetails")},[h("div",rl,[g(Pe,{icon:"$mdiConsoleLine",size:"16"}),h("span",null,M(d(t).t("$vuetify.chatroom.agents.command")),1),h("span",ul,[v[1]||(v[1]=h("span",{class:"agent-command-status-dot"},null,-1)),le(" "+M(f.value),1)])]),h("div",dl,[h("code",{class:"mono",title:e.command},M(s.value),9,cl),g(ce,{icon:"$mdiContentCopy",size:"x-small",variant:"text",class:"agent-command-copy","aria-label":d(t).t("$vuetify.chatroom.code.copy"),onClick:lt(m,["stop"])},null,8,["aria-label"]),g(Pe,{icon:"$mdiChevronDown",size:"18",class:Ee(["agent-command-toggle",{"agent-command-toggle-open":n.value}])},null,8,["class"])]),o.value?(i(),S("div",vl,M(o.value),1)):O("",!0)],8,ol),n.value?(i(),S("div",ml,[h("div",fl,[g(it,{text:e.command,filename:"command.sh",language:"bash",toolbar:!1},null,8,["text"])]),e.cwd||e.exitCode!==null?(i(),S("div",gl,[e.cwd?(i(),S("span",{key:0,class:"agent-command-cwd mono",title:e.cwd},M(e.cwd),9,pl)):O("",!0),e.exitCode!==null?(i(),S("span",yl,M(d(t).t("$vuetify.chatroom.agents.exitCode",e.exitCode)),1)):O("",!0)])):O("",!0),e.output?(i(),S(oe,{key:1},[h("div",hl,M(d(t).t("$vuetify.chatroom.agents.commandOutput")),1),h("div",bl,[c.value==="running"?(i(),S("pre",wl,M(e.output),1)):(i(),q(it,{key:1,text:e.output,filename:"output.txt",toolbar:!1},null,8,["text"]))])],64)):O("",!0)])):O("",!0)],40,il))}}),$l=Ie(kl,[["__scopeId","data-v-7c2e41e4"]]),Sl=wt({alwaysFilter:Boolean,autoSelectFirst:{type:[Boolean,String]},clearOnSelect:{type:Boolean,default:!0},delimiters:Array,...rn({filterKeys:["title"]}),...on({hideNoData:!0,returnObject:!0}),...Aa(Ra({modelValue:null,role:"combobox"}),["validationValue","dirty"])},"VCombobox"),Cl=At()({name:"VCombobox",props:Sl(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,"update:search":e=>!0,"update:menu":e=>!0},setup(e,{emit:a,slots:t}){const{t:o}=ke(),n=Re(),s=U(!1),c=U(!0),f=U(!1),m=Re(),l=Re(),v=U(-1);let r=!1;const{items:k,transformIn:A,transformOut:D}=ba(e),{textColorClasses:y,textColorStyles:w}=ta(()=>n.value?.color),{InputIcon:u}=wa(e),p=Ut(e,"modelValue",[],V=>A(ka(V)),V=>{const j=D(V);return e.multiple?j:j[0]??null}),F=aa(e),ee=Je(()=>e.closableChips&&!F.isReadonly.value&&!F.isDisabled.value),z=I(()=>!!(e.chips||t.chip)),x=I(()=>z.value||!!t.selection),R=U(!e.multiple&&!x.value?p.value[0]?.title??"":""),T=U(null),$=I({get:()=>R.value,set:async V=>{if(R.value=V??"",V===null||V===""&&!e.multiple&&!x.value?p.value=[]:!e.multiple&&!x.value&&(p.value=[ct(e,V)],He(()=>l.value?.scrollToIndex(0))),V&&e.multiple&&e.delimiters?.length){const j=ge(V);j.length>1&&(me(j),R.value="")}V||(v.value=-1),c.value=!V}}),L=I(()=>typeof e.counterValue=="function"?e.counterValue(p.value):typeof e.counterValue=="number"?e.counterValue:e.multiple?p.value.length:$.value.length),{filteredItems:b,getMatches:C}=tn(e,k,()=>T.value??(e.alwaysFilter||!c.value?$.value:"")),E=I(()=>e.hideSelected&&T.value===null?b.value.filter(V=>!p.value.some(j=>j.value===V.value)):b.value),J=I(()=>e.hideNoData&&!E.value.length||F.isReadonly.value||F.isDisabled.value),de=Ut(e,"menu"),Y=I({get:()=>de.value,set:V=>{de.value&&!V&&m.value?.ΨopenChildren.size||V&&J.value||(de.value=V)}}),{menuId:$e,ariaExpanded:fe,ariaControls:be}=an(e,Y);ie(R,V=>{r?He(()=>r=!1):s.value&&!Y.value&&(Y.value=!0),a("update:search",V)}),ie(p,V=>{!e.multiple&&!x.value&&(R.value=V[0]?.title??"")});const xe=I(()=>p.value.map(V=>V.value)),se=I(()=>E.value.find(V=>V.type==="item"&&!V.props.disabled)),Te=I(()=>(e.autoSelectFirst===!0||e.autoSelectFirst==="exact"&&$.value===se.value?.title)&&E.value.length>0&&!c.value&&!f.value),we=Re(),je=Re(),ze=Re(),_=sn(we,n),H=dn(Y,()=>m.value?.contentEl,()=>n.value?.controlRef),{onTabKeydown:Ve}=un({groups:[{type:"element",contentRef:je},{type:"list",contentRef:we,displayItemsCount:()=>E.value.length},{type:"element",contentRef:ze}],onLeave:()=>{Y.value=!1,n.value?.focus()}});function De(V){r=!0,He(()=>r=!1),e.openOnClear&&(Y.value=!0)}function Ae(){J.value||(Y.value=!0)}function he(V){J.value||(s.value&&(V.preventDefault(),V.stopPropagation()),Y.value=!Y.value)}function Le(V){V.key==="Tab"&&Ve(V),we.value?.$el.contains(V.target)&&(Ht(V)||V.key==="Backspace")&&n.value?.focus()}function _e(V){if(Ta(V)||F.isReadonly.value)return;const j=n.value?.selectionStart,ne=p.value.length;if(["Enter","ArrowDown","ArrowUp"].includes(V.key)&&V.preventDefault(),["Enter","ArrowDown"].includes(V.key)&&(Y.value=!0),["Escape"].includes(V.key)&&(Y.value=!1),Te.value&&["Enter","Tab"].includes(V.key)&&se.value&&!p.value.some(({value:re})=>re===se.value.value)&&ae(se.value),V.key==="ArrowDown"&&Te.value&&we.value?.focus("next"),V.key==="Enter"&&$.value&&(ae(ct(e,$.value),!0,!0),x.value&&(R.value="")),["Backspace","Delete"].includes(V.key)){if(!e.multiple&&x.value&&p.value.length>0&&!$.value)return ae(p.value[0],!1);if(~v.value){V.preventDefault();const re=v.value;ae(p.value[v.value],!1),v.value=re>=ne-1?ne-2:re}else V.key==="Backspace"&&!$.value&&(v.value=ne-1);return}if(e.multiple)if(V.key==="ArrowLeft"){if(v.value<0&&j&&j>0)return;const re=v.value>-1?v.value-1:ne-1;p.value[re]?v.value=re:(v.value=-1,n.value?.setSelectionRange($.value.length,$.value.length))}else if(V.key==="ArrowRight"){if(v.value<0)return;const re=v.value+1;p.value[re]?v.value=re:(v.value=-1,n.value?.setSelectionRange(0,0))}else~v.value&&Ht(V)&&(v.value=-1)}function Ke(V){const j=V?.clipboardData?.getData("Text")??"",ne=ge(j);ne.length>1&&e.multiple&&(V.preventDefault(),me(ne))}function P(){e.eager&&l.value?.calculateVisibleItems()}function X(){s.value&&(m.value?.contentEl?._clickOutside?.lastMousedownWasOutside?s.value=!1:n.value?.focus()),c.value=!0,T.value=null}function ae(V,j=!0,ne=!1){if(!(!V||V.props.disabled))if(e.multiple){const re=p.value.findIndex(Q=>(e.valueComparator||Wt)(Q.value,V.value)),pe=j??!~re;if(~re){const Q=pe?[...p.value,V]:[...p.value];Q.splice(re,1),p.value=Q}else pe&&(p.value=[...p.value,V]);e.clearOnSelect&&($.value="")}else{const re=j!==!1;p.value=re?[V]:[],(!c.value||e.alwaysFilter)&&R.value&&(T.value=R.value),R.value=re&&!x.value?V.title:"",He(()=>{Y.value=ne,c.value=!0})}}function ge(V){const ne=[`
|
|
2
|
+
`,...e.delimiters??[]].map(Pa).join("|");return V.split(new RegExp(`(?:${ne})+`))}async function me(V){for(let j of V)j=j.trim(),j&&(ae(ct(e,j)),await He())}function Ne(V){s.value=!0,setTimeout(()=>{f.value=!0})}function N(V){if(f.value=!1,!n.value?.$el.contains(V.relatedTarget)){if(H(V))return;s.value=!1}}let G=0;function te(){G=performance.now()}function ve(V){const j=V.relatedTarget;(m.value?.contentEl?.contains(j)||!j&&performance.now()-G<10)&&(s.value=!0)}return ie(s,(V,j)=>{if(!(V||V===j)&&(v.value=-1,Y.value=!1,$.value)){if(e.multiple){ae(ct(e,$.value));return}if(!x.value)return;p.value.some(({title:ne})=>ne===$.value)?R.value="":ae(ct(e,$.value))}}),ie(Y,V=>{if(!e.hideSelected&&V&&p.value.length&&c.value){const j=E.value.findIndex(ne=>p.value.some(re=>(e.valueComparator||Wt)(re.value,ne.value)));na&&!e.noAutoScroll&&window.requestAnimationFrame(()=>{j>=0&&l.value?.scrollToIndex(j)})}V&&(T.value=null)}),ie(k,(V,j)=>{Y.value||s.value&&!j.length&&V.length&&(Y.value=!0)}),Rt(()=>{const V=!!(!e.hideNoData||E.value.length||t["prepend-item"]||t["append-item"]||t["no-data"]),j=p.value.length>0,ne=ut.filterProps(e),re={search:$,filteredItems:b.value};return g(ut,ue({ref:n},ne,{modelValue:$.value,"onUpdate:modelValue":pe=>$.value=pe,focused:s.value,"onUpdate:focused":pe=>s.value=pe,validationValue:p.externalValue,counterValue:L.value,dirty:j,class:["v-combobox",{"v-combobox--active-menu":Y.value,"v-combobox--chips":!!e.chips,"v-combobox--selection-slot":!!x.value,"v-combobox--selecting-index":v.value>-1,[`v-combobox--${e.multiple?"multiple":"single"}`]:!0},e.class],style:e.style,readonly:F.isReadonly.value,placeholder:j?void 0:e.placeholder,"onClick:clear":De,"onMousedown:control":Ae,onKeydown:_e,onPaste:Ke,onBlur:ve,"aria-expanded":fe.value,"aria-controls":be.value}),{...t,default:({id:pe})=>h(oe,null,[g(yt,ue({id:$e.value,ref:m,modelValue:Y.value,"onUpdate:modelValue":Q=>Y.value=Q,activator:"parent",disabled:J.value,eager:e.eager,maxHeight:310,openOnClick:!1,closeOnContentClick:!1,onAfterEnter:P,onAfterLeave:X},e.menuProps,{contentClass:["v-combobox__content",e.menuProps?.contentClass]}),{default:()=>[g(en,{elevation:e.menuElevation,onFocusin:Ne,onKeydown:Le,onMousedown:te},{default:()=>[t["menu-header"]&&h("header",{ref:je},[t["menu-header"](re)]),V&&g(bt,ue({key:"combobox-list",ref:we,filterable:!0,selected:xe.value,selectStrategy:e.multiple?"independent":"single-independent",onMousedown:Q=>Q.preventDefault(),selectable:!!E.value.length,onFocusout:N,tabindex:"-1","aria-live":"polite","aria-labelledby":`${pe.value}-label`,"aria-multiselectable":e.multiple,color:e.itemColor??e.color},_,e.listProps),{default:()=>[t["prepend-item"]?.(),!E.value.length&&!e.hideNoData&&(t["no-data"]?.()??g(Me,{key:"no-data",title:o(e.noDataText)},null)),g(nn,{ref:l,renderless:!0,items:E.value,itemKey:"value"},{default:({item:Q,index:Oe,itemRef:st})=>{const Xe=Sa(Q.props),at=ue(Q.props,{ref:st,key:Q.value,active:Te.value&&Q===se.value?!0:void 0,onClick:()=>ae(Q,null),"aria-posinset":Oe+1,"aria-setsize":E.value.length});return Q.type==="divider"?t.divider?.({props:Q.raw,index:Oe})??g(rt,ue(Q.props,{key:`divider-${Oe}`}),null):Q.type==="subheader"?t.subheader?.({props:Q.raw,index:Oe})??g(Ca,ue(Q.props,{key:`subheader-${Oe}`}),null):t.item?.({item:Q.raw,internalItem:Q,index:Oe,props:at})??g(Me,ue(at,{role:"option"}),{prepend:({isSelected:et})=>h(oe,null,[e.multiple&&!e.hideSelected?g(xa,{key:Q.value,modelValue:et,ripple:!1,tabindex:"-1","aria-hidden":!0,onClick:Fe=>Fe.preventDefault()},null):void 0,Xe.prependAvatar&&g(Va,{image:Xe.prependAvatar},null),Xe.prependIcon&&g(Pe,{icon:Xe.prependIcon},null)]),title:()=>c.value?Q.title:g(ln,{text:Q.title,matches:C(Q)?.title,markClass:"v-combobox__mask",matchAll:!0,ignoreCase:!0},null)})}}),t["append-item"]?.()]}),t["menu-footer"]&&h("footer",{ref:ze},[t["menu-footer"](re)])]})]}),p.value.map((Q,Oe)=>{function st(Fe){Fe.stopPropagation(),Fe.preventDefault(),ae(Q,!1)}const Xe=ue(ft.filterProps(Q.props),{"onClick:close":st,onKeydown(Fe){Fe.key!=="Enter"&&Fe.key!==" "||(Fe.preventDefault(),Fe.stopPropagation(),st(Fe))},onMousedown(Fe){Fe.preventDefault(),Fe.stopPropagation()},modelValue:!0,"onUpdate:modelValue":void 0}),at=z.value?!!t.chip:!!t.selection,et=at?Ma(z.value?t.chip({item:Q.raw,internalItem:Q,index:Oe,props:Xe}):t.selection({item:Q.raw,internalItem:Q,index:Oe})):void 0;if(!(at&&!et))return h("div",{key:Q.value,class:Ee(["v-combobox__selection",Oe===v.value&&["v-combobox__selection--selected",y.value]]),style:tt(Oe===v.value?w.value:{})},[z.value?t.chip?g(Ia,{key:"chip-defaults",defaults:{VChip:{closable:ee.value,size:"small",text:Q.title}}},{default:()=>[et]}):g(ft,ue({key:"chip",closable:ee.value,size:"small",text:Q.title,disabled:Q.props.disabled},Xe),null):et??h("span",{class:"v-combobox__selection-text"},[Q.title,e.multiple&&Oe<p.value.length-1&&h("span",{class:"v-combobox__selection-comma"},[le(",")])])])})]),"append-inner":(...pe)=>h(oe,null,[t["append-inner"]?.(...pe),(!e.hideNoData||e.items.length)&&e.menuIcon?g(Pe,{class:"v-combobox__menu-icon",color:n.value?.fieldIconColor,icon:e.menuIcon,onMousedown:he,onClick:$a,"aria-hidden":!0,tabindex:"-1"},null):void 0,e.appendInnerIcon&&g(u,{key:"append-icon",name:"appendInner",color:pe[0].iconColor.value},null)])})}),la({isFocused:s,isPristine:c,menu:Y,search:$,selectionIndex:v,filteredItems:b,select:ae},n)}}),xl=["aria-label","aria-busy"],Vl={class:"agent-interaction-heading"},Ml={class:"agent-interaction-content"},Il={class:"agent-interaction-title"},Tl={key:1},Al={key:0,class:"agent-input-questions"},Rl={class:"agent-question-label"},Pl={class:"agent-question-text"},Fl={key:2,class:"agent-interaction-resolved"},Ul={key:0,class:"agent-interaction-footer"},El={key:0,class:"agent-interaction-actions"},zl=Ce({__name:"AgentInteractionCard",props:{item:{},answers:{default:()=>({})},pinned:{type:Boolean,default:!1},responding:{type:Boolean,default:!1}},emits:["approve","submit","update-answer"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=I(()=>Object.fromEntries(t.item.interaction.questions.map(y=>[y.id,y.options.map(w=>({title:w.label,value:w.id}))]))),c=I(()=>{const y=t.item.interaction.approvalOptions,w=y[0],u=y.find(F=>F.id==="decline"||F.id==="deny"),p=w?[w]:[];return u&&u!==w&&p.push(u),p}),f=I(()=>t.item.interaction.approvalOptions.filter(y=>!c.value.includes(y))),m={accept:"accept",allow:"accept",acceptForSession:"session",decline:"deny",deny:"deny",cancel:"cancel",acceptWithExecpolicyAmendment:"similar"};function l(y,w){const u=m[y];return u?n.t("$vuetify.chatroom.agents.approvalChoices."+u):w}function v(y){return y==="cancel"?"$mdiStopCircleOutline":y==="decline"||y==="deny"?"$mdiCloseOctagonOutline":"$mdiCheckCircleOutline"}const r=I(()=>{const y=t.item.interaction.response;if(!y)return n.t(t.item.status==="completed"?"$vuetify.chatroom.agents.resolvedExternally":"$vuetify.chatroom.agents.statuses."+t.item.status);if(y.type==="approval"){const w=t.item.interaction.approvalOptions.find(u=>u.id===y.decision);return l(y.decision,w?.label??y.decision)}return t.item.interaction.questions.map(w=>w.label+": "+(w.secret?"••••":(y.answers[w.id]??[]).join(", "))).join(`
|
|
3
|
+
`)});function k(y){return t.answers[y]??[]}function A(y){return Array.isArray(y)?y.filter(w=>typeof w=="string"):typeof y=="string"&&y?[y]:[]}function D(y,w){o("update-answer",y,A(w))}return(y,w)=>(i(),S("section",{class:Ee(["agent-interaction-card",{"agent-interaction-card--pinned":e.pinned}]),"aria-label":e.item.interaction.title,"aria-busy":e.responding},[h("header",Vl,[g(Pe,{icon:e.item.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),h("span",null,M(d(n).t(e.item.status==="waiting"?e.item.interaction.kind==="approval"?"$vuetify.chatroom.agents.waitingApproval":"$vuetify.chatroom.agents.waitingAnswer":e.item.status==="completed"?"$vuetify.chatroom.agents.interactionResolved":"$vuetify.chatroom.agents.statuses."+e.item.status)),1),e.responding?(i(),q(Tt,{key:0,indeterminate:"",size:"15",width:"2"})):O("",!0)]),h("div",Ml,[h("div",Il,M(e.item.interaction.title),1),e.item.interaction.description?(i(),S("pre",{key:0,class:Ee(["agent-interaction-description",{mono:e.item.interaction.kind==="approval"}])},M(e.item.interaction.description),3)):O("",!0),e.item.status==="waiting"?(i(),S("div",Tl,[e.item.interaction.kind!=="approval"?(i(),S("div",Al,[(i(!0),S(oe,null,Se(e.item.interaction.questions,u=>(i(),S("div",{key:u.id,class:"agent-question"},[h("div",Rl,M(u.label),1),h("div",Pl,M(u.question),1),u.options.length&&u.allowFreeText?(i(),q(Cl,{key:0,"model-value":u.multiSelect?k(u.id):k(u.id)[0]??null,items:s.value[u.id]??[],"aria-label":u.label+": "+u.question,"return-object":!1,multiple:u.multiSelect,chips:u.multiSelect,"closable-chips":u.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):u.options.length?(i(),q(Ge,{key:1,"model-value":u.multiSelect?k(u.id):k(u.id)[0]??null,items:s.value[u.id]??[],"aria-label":u.label+": "+u.question,"return-object":!1,multiple:u.multiSelect,chips:u.multiSelect,"closable-chips":u.multiSelect,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","items","aria-label","multiple","chips","closable-chips","disabled","onUpdate:modelValue"])):(i(),q(ut,{key:2,"model-value":k(u.id)[0]??"",type:u.secret?"password":"text","aria-label":u.label+": "+u.question,density:"compact","hide-details":"",disabled:e.responding,"onUpdate:modelValue":p=>D(u.id,p)},null,8,["model-value","type","aria-label","disabled","onUpdate:modelValue"]))]))),128))])):O("",!0)])):(i(),S("div",Fl,M(r.value),1))]),e.item.status==="waiting"?(i(),S("footer",Ul,[e.item.interaction.kind==="approval"?(i(),S("div",El,[(i(!0),S(oe,null,Se(c.value,u=>(i(),q(ce,{key:u.id,color:u.id==="decline"||u.id==="deny"||u.id==="cancel"?"error":"primary","prepend-icon":v(u.id),variant:"tonal",size:"small",title:u.description??void 0,disabled:e.responding,onClick:p=>o("approve",u.id)},{default:B(()=>[le(M(l(u.id,u.label)),1)]),_:2},1032,["color","prepend-icon","title","disabled","onClick"]))),128)),f.value.length?(i(),q(yt,{key:0,location:"top end",offset:"8"},{activator:B(({props:u})=>[g(ce,ue(u,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",disabled:e.responding,"aria-label":d(n).t("$vuetify.chatroom.agents.moreApprovalOptions"),title:d(n).t("$vuetify.chatroom.agents.moreApprovalOptions")}),null,16,["disabled","aria-label","title"])]),default:B(()=>[g(bt,{density:"compact",class:"agent-approval-more-menu"},{default:B(()=>[(i(!0),S(oe,null,Se(f.value,u=>(i(),q(Me,{key:u.id,title:l(u.id,u.label),subtitle:u.description??"","prepend-icon":v(u.id),disabled:e.responding,onClick:p=>o("approve",u.id)},null,8,["title","subtitle","prepend-icon","disabled","onClick"]))),128))]),_:1})]),_:1})):O("",!0)])):O("",!0),e.item.interaction.kind!=="approval"?(i(),q(ce,{key:1,color:"primary",variant:"tonal",size:"small",loading:e.responding,disabled:e.responding,onClick:w[0]||(w[0]=u=>o("submit"))},{default:B(()=>[le(M(d(n).t("$vuetify.chatroom.agents.submit")),1)]),_:1},8,["loading","disabled"])):O("",!0)])):O("",!0)],10,xl))}}),ma=Ie(zl,[["__scopeId","data-v-45060adf"]]),Dl={path:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"},Ol=["width","height"],Bl=["d"],Ll={key:1,fill:"none",stroke:"currentColor","stroke-width":"1.8"},_l=Ce({__name:"AgentProviderIcon",props:{icon:{default:null},size:{default:16}},setup(e){const a=e,t={openai:Dl.path},o=I(()=>a.icon?t[a.icon]??null:null);return(n,s)=>(i(),S("svg",{class:"agent-provider-icon",width:e.size,height:e.size,viewBox:"0 0 24 24","aria-hidden":"true"},[o.value?(i(),S("path",{key:0,d:o.value,fill:"currentColor"},null,8,Bl)):(i(),S("g",Ll,[...s[0]||(s[0]=[h("circle",{cx:"12",cy:"12",r:"8.5"},null,-1),h("path",{d:"m8.5 16 3.5-8 3.5 8M10 13h4"},null,-1)])]))],8,Ol))}}),pt=Ie(_l,[["__scopeId","data-v-9209bf7a"]]),Nl=["open","data-status"],ql=["title"],jl={class:"agent-activity-title"},Kl={key:0,class:"agent-activity-body"},Wl={key:0,class:"agent-tool-progress",role:"status"},Hl={key:3,class:"agent-inline-error"},Gl={class:"agent-file-change-name"},Jl={class:"mono"},Xl={key:3,class:"agent-plan"},Ql={key:1,class:"agent-plan-steps"},Yl=["data-status"],Zl={class:"agent-plan-step-text"},es={class:"agent-plan-step-status"},ts={key:4,class:"agent-artifact-path mono"},as=Ce({__name:"AgentActivity",props:{item:{}},setup(e){const a=e,t=ke(),o=U(a.item.status==="running"||a.item.status==="failed");ie(()=>a.item.status,f=>{(f==="running"||f==="failed")&&(o.value=!0)});const n=I(()=>{const f=a.item;if(f.type==="tool")return[f.server,f.name].filter(Boolean).join(" / ");const m={file_change:"fileChanges",turn_diff:"turnDiff",plan:"plan",artifact:"artifact"}[f.type];return t.t("$vuetify.chatroom.agents."+m)}),s=I(()=>a.item.type==="tool"?"$mdiTuneVariant":a.item.type==="file_change"||a.item.type==="turn_diff"?"$mdiFileCompare":a.item.type==="plan"?"$mdiTextBoxOutline":"$mdiFileOutline");function c(f,m){const l=f.steps[m];let v=0;for(let r=0;r<m;r++)f.steps[r]?.step===l.step&&v++;return f.id+":"+l.step+":"+v}return(f,m)=>(i(),S("details",{class:"agent-activity",open:o.value,"data-status":e.item.status,onToggle:m[0]||(m[0]=l=>o.value=l.target.open)},[h("summary",{class:"agent-activity-heading",title:n.value},[g(Pe,{icon:s.value,size:"18"},null,8,["icon"]),h("span",jl,M(n.value),1),e.item.status==="running"?(i(),q(Tt,{key:0,indeterminate:"",size:"14",width:"2"})):e.item.status==="failed"?(i(),q(Pe,{key:1,icon:"$mdiAlertCircleOutline",size:"16",color:"error"})):O("",!0),g(Pe,{class:"agent-activity-chevron",icon:"$mdiChevronRight",size:"16"})],8,ql),o.value?(i(),S("div",Kl,[e.item.type==="tool"?(i(),S(oe,{key:0},[e.item.progress?(i(),S("div",Wl,M(e.item.progress),1)):O("",!0),e.item.input!=null?(i(),q(it,{key:1,value:e.item.input,highlight:e.item.status!=="running",filename:"input.json",language:"json",toolbar:!1},null,8,["value","highlight"])):O("",!0),e.item.output!=null?(i(),q(it,{key:2,value:e.item.output,highlight:e.item.status!=="running",filename:"output.json",language:"json",toolbar:!1},null,8,["value","highlight"])):O("",!0),e.item.error?(i(),S("div",Hl,M(e.item.error),1)):O("",!0)],64)):e.item.type==="turn_diff"?(i(),q(it,{key:1,text:e.item.diff,highlight:e.item.status!=="running",filename:"turn.diff",language:"diff",toolbar:!1},null,8,["text","highlight"])):e.item.type==="file_change"?(i(!0),S(oe,{key:2},Se(e.item.changes,l=>(i(),S("div",{key:l.path+":"+l.kind+":"+(l.movePath??""),class:"agent-file-change"},[h("div",Gl,[g(ft,{size:"x-small",variant:"tonal"},{default:B(()=>[le(M(l.kind),1)]),_:2},1024),h("span",Jl,M(l.path),1)]),l.diff?(i(),q(it,{key:0,text:l.diff,filename:l.path,highlight:e.item.status!=="running",language:"diff",toolbar:!1},null,8,["text","filename","highlight"])):O("",!0)]))),128)):e.item.type==="plan"?(i(),S("div",Xl,[e.item.text?(i(),q(Dt,{key:0,text:e.item.text,streaming:e.item.status==="running"},null,8,["text","streaming"])):O("",!0),e.item.steps.length?(i(),S("ol",Ql,[(i(!0),S(oe,null,Se(e.item.steps,(l,v)=>(i(),S("li",{key:c(e.item,v),"data-status":l.status},[h("span",Zl,M(l.step),1),h("span",es,M(d(t).t(`$vuetify.chatroom.agents.planStatuses.${l.status}`)),1)],8,Yl))),128))])):O("",!0)])):e.item.type==="artifact"?(i(),S("div",ts,M(e.item.artifact.path),1)):O("",!0)])):O("",!0)],40,Nl))}}),ns=Ie(as,[["__scopeId","data-v-63e4d047"]]),ls={class:"agent-turn"},ss={key:0,class:"agent-message-row user"},is={class:"agent-message user-message"},os={class:"agent-message-text agent-plain-text"},rs=["data-source"],us={key:0,class:"agent-message-attachments"},ds=["title"],cs=["data-status"],vs={key:0},ms=["data-phase"],fs={key:4,class:"agent-reasoning-summary"},gs={class:"agent-summary-label"},ps={key:5,class:"agent-response-command"},ys={key:7,class:"agent-resolved-interaction"},hs=["data-status"],bs={key:2},ws=["data-level"],ks=Ce({__name:"AgentTurn",props:{entry:{},workspaceRoot:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=ke(),o=I(()=>{const l=[],v=a.entry.items;let r=!1;for(let k=0;k<v.length;k+=1){const A=v[k];if(A.type!=="user_message"&&!r&&(l.push({id:"provider-marker:"+a.entry.turn.id,type:"provider_marker",provider:a.entry.turn.provider,model:a.entry.turn.model}),r=!0),A.type!=="artifact"||A.artifact.kind!=="image"){l.push(A);continue}const D=[A];for(;k+1<v.length;){const y=v[k+1];if(y.type!=="artifact"||y.artifact.kind!=="image")break;D.push(y),k+=1}l.push({id:"image-gallery:"+D[0].id,type:"image_gallery",items:D})}return!r&&v.length===0&&a.entry.turn.status!=="completed"&&l.push({id:"provider-marker:"+a.entry.turn.id,type:"provider_marker",provider:a.entry.turn.provider,model:a.entry.turn.model}),(a.entry.turn.status==="failed"||a.entry.turn.status==="interrupted")&&l.push({id:"turn-status:"+a.entry.turn.id,type:"turn_status",status:a.entry.turn.status,error:m()}),l});function n(l){return a.providerNames[l]??l}function s(l){return a.providerIcons[l]??null}function c(l){return l==="mcp"?"$mdiConnection":"$mdiAccountOutline"}function f(l){return t.t(l==="mcp"?"$vuetify.chatroom.agents.sources.mcp":"$vuetify.chatroom.agents.sources.human")}function m(){const l=a.entry.turn.error;return l?[l.message,l.details,l.providerData?JSON.stringify(l.providerData,null,2):null].filter(Boolean).join(`
|
|
4
|
+
`):null}return(l,v)=>(i(),S("div",ls,[(i(!0),S(oe,null,Se(o.value,r=>(i(),S(oe,{key:r.id},[r.type==="user_message"?(i(),S("div",ss,[h("div",is,[h("div",os,M(r.text),1),h("div",{class:"agent-message-source","data-source":r.source??e.entry.turn.source},[g(Pe,{icon:c(r.source??e.entry.turn.source),size:"13"},null,8,["icon"]),h("span",null,M(f(r.source??e.entry.turn.source)),1)],8,rs),r.attachments.length?(i(),S("div",us,[(i(!0),S(oe,null,Se(r.attachments,k=>(i(),q(ft,{key:k.path,size:"x-small",variant:"tonal","prepend-icon":"$mdiFileOutline"},{default:B(()=>[le(M(k.name),1)]),_:2},1024))),128))])):O("",!0)])])):r.type==="provider_marker"?(i(),S("div",{key:1,class:"agent-turn-provider",title:r.model?n(r.provider)+" · "+r.model:n(r.provider)},[g(pt,{icon:s(r.provider),size:13},null,8,["icon"]),h("span",null,M(n(r.provider)),1)],8,ds)):r.type==="turn_status"?(i(),S("div",{key:2,class:"agent-turn-status","data-status":r.status},[h("span",null,M(d(t).t(`$vuetify.chatroom.agents.statuses.${r.status}`)),1),r.error?(i(),S("span",vs," · "+M(r.error),1)):O("",!0)],8,cs)):r.type==="assistant_message"?(i(),S("div",{key:3,class:"agent-response-text","data-phase":r.phase},[g(Dt,{class:"agent-message-markdown",text:r.text,streaming:r.status==="running"},null,8,["text","streaming"]),r.status==="running"?(i(),q(Fa,{key:0,indeterminate:"",height:"2",class:"agent-item-progress"})):O("",!0)],8,ms)):r.type==="reasoning_summary"?(i(),S("div",fs,[h("div",gs,M(d(t).t("$vuetify.chatroom.agents.reasoningSummary")),1),g(Dt,{text:r.text,streaming:r.status==="running"},null,8,["text","streaming"])])):r.type==="command"?(i(),S("div",ps,[g($l,{command:r.command,cwd:r.cwd,output:r.output,"exit-code":r.exitCode,status:r.status},null,8,["command","cwd","output","exit-code","status"])])):r.type==="image_gallery"?(i(),q(sl,{key:6,items:r.items,"workspace-root":e.workspaceRoot},null,8,["items","workspace-root"])):r.type==="interaction"&&r.status!=="waiting"?(i(),S("details",ys,[h("summary",null,[g(Pe,{icon:r.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"18"},null,8,["icon"]),le(" "+M(r.interaction.title),1)]),g(ma,{item:r},null,8,["item"])])):r.type==="tool"||r.type==="file_change"||r.type==="turn_diff"||r.type==="plan"||r.type==="artifact"?(i(),q(ns,{key:8,item:r},null,8,["item"])):r.type==="context_compaction"?(i(),S("div",{key:9,class:"agent-compaction","data-status":r.status,role:"status","aria-live":"polite"},[r.status==="running"?(i(),q(Tt,{key:0,indeterminate:"",size:"14",width:"2"})):(i(),q(Pe,{key:1,icon:r.status==="completed"?"$mdiCheckCircleOutline":"$mdiAlertCircleOutline",size:"16"},null,8,["icon"])),h("span",null,M(d(t).t("$vuetify.chatroom.agents.compaction."+(r.status==="running"?"running":r.status==="completed"?"completed":"failed"))),1),r.error?(i(),S("span",bs,M(r.error),1)):O("",!0)],8,hs)):r.type==="notice"?(i(),S("div",{key:10,class:"agent-notice","data-level":r.level},M(r.text),9,ws)):O("",!0)],64))),128))]))}}),$s=Ie(ks,[["__scopeId","data-v-d9c9ba96"]]),Ss={class:"agent-conversation-shell"},Cs={key:1,class:"empty-panel"},vt=100,xs=Ce({__name:"AgentConversation",props:{history:{},providerNames:{},providerIcons:{}},setup(e){const a=e,t=ke(),o=U(vt),n=dt("conversation"),s=dt("conversationContent"),{autoFollow:c,onConversationScroll:f,scrollToBottom:m}=Nn(n,s),l=I(()=>{const k=a.history?.turns??[];return k.slice(Math.max(0,k.length-o.value))}),v=I(()=>Math.max(0,(a.history?.turns.length??0)-l.value.length));ie(()=>a.history?.session.id??null,()=>{o.value=vt,m()},{flush:"post"}),ie(()=>a.history?.turns.length??0,(k,A)=>{A>0&&k>A&&o.value>vt&&(o.value+=k-A)});async function r(){const k=n.value,A=k?.scrollHeight??0,D=k?.scrollTop??0;o.value+=vt,await He(),k&&(k.scrollTop=D+(k.scrollHeight-A))}return(k,A)=>(i(),S("div",Ss,[h("div",{ref_key:"conversation",ref:n,class:"agent-conversation",onScrollPassive:A[0]||(A[0]=(...D)=>d(f)&&d(f)(...D))},[h("div",{ref_key:"conversationContent",ref:s,class:"agent-conversation-content"},[v.value?(i(),q(ce,{key:0,class:"agent-show-older-turns",size:"small",variant:"text",onClick:r},{default:B(()=>[le(M(d(t).t("$vuetify.chatroom.agents.showOlderTurns",String(Math.min(vt,v.value)))),1)]),_:1})):O("",!0),e.history?.turns.length?O("",!0):(i(),S("div",Cs,M(d(t).t("$vuetify.chatroom.agents.noHistory")),1)),(i(!0),S(oe,null,Se(l.value,D=>(i(),q($s,{key:D.turn.id,entry:D,"workspace-root":e.history?.session.workspaceRoot??"","provider-names":e.providerNames,"provider-icons":e.providerIcons},null,8,["entry","workspace-root","provider-names","provider-icons"]))),128))],512)],544),d(c)?O("",!0):(i(),q(ce,{key:0,class:"agent-back-to-latest",icon:"$mdiArrowDown",size:"small",variant:"tonal",title:d(t).t("$vuetify.chatroom.agents.backToLatest"),"aria-label":d(t).t("$vuetify.chatroom.agents.backToLatest"),onClick:d(m)},null,8,["title","aria-label","onClick"]))]))}}),Vs=Ie(xs,[["__scopeId","data-v-f2a2b510"]]),Ms={key:3,class:"agent-native-granular"},Is={class:"agent-setting-heading"},Ts=Ce({__name:"AgentSessionConfigFields",props:Ze({model:{},approvalSetting:{},reviewerSetting:{},permissionSetting:{},disabled:{type:Boolean,default:!1},outlined:{type:Boolean,default:!1}},{reasoningSummary:{required:!0},reasoningSummaryModifiers:{},serviceTier:{required:!0},serviceTierModifiers:{},approvalMode:{required:!0},approvalModeModifiers:{},granular:{required:!0},granularModifiers:{},reviewer:{required:!0},reviewerModifiers:{},permissionMode:{required:!0},permissionModeModifiers:{}}),emits:["update:reasoningSummary","update:serviceTier","update:approvalMode","update:granular","update:reviewer","update:permissionMode"],setup(e){const a=e,t=ye(e,"reasoningSummary"),o=ye(e,"serviceTier"),n=ye(e,"approvalMode"),s=ye(e,"granular"),c=ye(e,"reviewer"),f=ye(e,"permissionMode"),m=ke(),l=U(null),v=I(()=>a.outlined?{variant:"outlined"}:{}),r=I(()=>[{title:F(a.model?.defaultReasoningSummary?p(a.model.defaultReasoningSummary):null),value:null,subtitle:""},...(a.model?.reasoningSummaries??[]).map(x=>({title:p(x),value:x,subtitle:""}))]),k=I(()=>{const x=a.model?.serviceTiers??[];return[{title:F(x.find(R=>R.id===a.model?.defaultServiceTier)?.name??a.model?.defaultServiceTier),value:null,subtitle:""},...x.map(R=>({title:R.name,value:R.id,subtitle:R.description}))]});function A(x){return(x?.options??[]).map(R=>({title:`${y(R.id,"title")} (${R.id})`,value:R.id,subtitle:y(R.id,"description",R.description??"")}))}const D={untrusted:"untrusted","on-request":"onRequest",granular:"granular",never:"never",user:"user",auto_review:"autoReview",guardian_subagent:"autoReview","read-only":"readOnly","workspace-write":"workspaceWrite","danger-full-access":"fullAccessCodex"};function y(x,R,T=x){const $=D[x];return $?m.t(`$vuetify.chatroom.agents.nativeOptions.${$}.${R}`):T}function w(x){if(x!==f.value){if(x==="danger-full-access"){l.value=x;return}f.value=x}}function u(){const x=l.value;l.value=null,x&&(x==="danger-full-access"&&(n.value="never"),f.value=x)}function p(x){return m.t(`$vuetify.chatroom.agents.summaries.${x}`)}function F(x){return qt(m.t("$vuetify.chatroom.agents.defaultModel"),x)}function ee(x){return x in s.value?s.value[x]:!1}function z(x,R){x in s.value&&(s.value={...s.value,[x]:R})}return(x,R)=>(i(),S(oe,null,[e.model?.reasoningSummaries?.length?(i(),q(Ge,ue({key:0,modelValue:t.value,"onUpdate:modelValue":R[0]||(R[0]=T=>t.value=T),items:r.value,label:d(m).t("$vuetify.chatroom.agents.reasoningSummary"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.model?.serviceTiers?.length?(i(),q(Ge,ue({key:1,modelValue:o.value,"onUpdate:modelValue":R[1]||(R[1]=T=>o.value=T),items:k.value,label:d(m).t("$vuetify.chatroom.agents.serviceTier"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting?(i(),q(Ge,ue({key:2,modelValue:n.value,"onUpdate:modelValue":R[2]||(R[2]=T=>n.value=T),items:A(e.approvalSetting),label:d(m).t("$vuetify.chatroom.agents.approvalPolicy"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.approvalSetting&&n.value==="granular"?(i(),S("div",Ms,[h("div",Is,M(d(m).t("$vuetify.chatroom.agents.granularApprovals")),1),(i(!0),S(oe,null,Se(e.approvalSetting.granularFields,T=>(i(),q(cn,{key:T.id,"model-value":ee(T.id),label:T.id,title:T.description??void 0,density:"compact",color:"primary","hide-details":"",disabled:e.disabled,"onUpdate:modelValue":$=>z(T.id,!!$)},null,8,["model-value","label","title","disabled","onUpdate:modelValue"]))),128))])):O("",!0),e.reviewerSetting?(i(),q(Ge,ue({key:4,modelValue:c.value,"onUpdate:modelValue":R[3]||(R[3]=T=>c.value=T),items:A(e.reviewerSetting),label:d(m).t("$vuetify.chatroom.agents.approvalsReviewer"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["modelValue","items","label","disabled"])):O("",!0),e.permissionSetting?(i(),q(Ge,ue({key:5,"model-value":f.value,items:A(e.permissionSetting),label:d(m).t("$vuetify.chatroom.agents.permissionMode"),density:"compact"},v.value,{"hide-details":"",disabled:e.disabled,"onUpdate:modelValue":w}),{item:B(({props:T,item:$})=>[g(Me,ue(T,{subtitle:$.subtitle}),null,16,["subtitle"])]),_:1},16,["model-value","items","label","disabled"])):O("",!0),g(ht,{"model-value":l.value!==null,"max-width":"90vw","onUpdate:modelValue":R[5]||(R[5]=T=>{T||(l.value=null)})},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Mt,null,{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.agents.fullAccessConfirm")),1)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",onClick:R[4]||(R[4]=T=>l.value=null)},{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.common.cancel")),1)]),_:1}),g(ce,{color:"primary",variant:"tonal",onClick:u},{default:B(()=>[le(M(d(m).t("$vuetify.chatroom.common.confirm")),1)]),_:1})]),_:1})]),_:1})]),_:1},8,["model-value"])],64))}}),fa=Ie(Ts,[["__scopeId","data-v-e9075aa2"]]),jt=Symbol.for("vuetify:v-slider");function As(e,a,t){const o=t==="vertical",n=a.getBoundingClientRect(),s="touches"in e?e.touches[0]:e;return o?s.clientY-(n.top+n.height/2):s.clientX-(n.left+n.width/2)}function Rs(e,a){return"touches"in e&&e.touches.length?e.touches[0][a]:"changedTouches"in e&&e.changedTouches.length?e.changedTouches[0][a]:e[a]}const Ps=wt({disabled:{type:Boolean,default:null},error:Boolean,readonly:{type:Boolean,default:null},max:{type:[Number,String],default:100},min:{type:[Number,String],default:0},step:{type:[Number,String],default:0},thumbColor:String,thumbLabel:{type:[Boolean,String],default:void 0,validator:e=>typeof e=="boolean"||e==="always"||e==="hover"},thumbSize:{type:[Number,String],default:20},showTicks:{type:[Boolean,String],default:!1,validator:e=>typeof e=="boolean"||e==="always"},ticks:{type:[Array,Object]},tickSize:{type:[Number,String],default:2},color:String,trackColor:String,trackFillColor:String,trackSize:{type:[Number,String],default:4},direction:{type:String,default:"horizontal",validator:e=>["vertical","horizontal"].includes(e)},reverse:Boolean,noKeyboard:Boolean,...za(),...Ea({elevation:1}),ripple:{type:Boolean,default:!0}},"Slider"),Fs=e=>{const a=I(()=>parseFloat(e.min)),t=I(()=>parseFloat(e.max)),o=I(()=>Number(e.step)>0?parseFloat(e.step):0),n=I(()=>Math.max(Gt(o.value),Gt(a.value)));function s(c){if(c=parseFloat(c),o.value<=0)return c;const f=Et(c,a.value,t.value),m=a.value%o.value;let l=Math.round((f-m)/o.value)*o.value+m;return f>l&&l+o.value>t.value&&(l=t.value),parseFloat(Math.min(l,t.value).toFixed(n.value))}return{min:a,max:t,step:o,decimals:n,roundValue:s}},Us=({props:e,steps:a,onSliderStart:t,onSliderMove:o,onSliderEnd:n,getActiveThumb:s})=>{const c=aa(e),{isRtl:f}=Bt(),m=Je(()=>e.reverse),l=I(()=>e.direction==="vertical"),v=I(()=>l.value!==m.value),{min:r,max:k,step:A,decimals:D,roundValue:y}=a,w=I(()=>parseInt(e.thumbSize,10)),u=I(()=>parseInt(e.tickSize,10)),p=I(()=>parseInt(e.trackSize,10)),F=I(()=>(k.value-r.value)/A.value),ee=I(()=>e.error||c.isDisabled.value?void 0:e.thumbColor??e.color),z=I(()=>e.error||c.isDisabled.value?void 0:e.thumbColor),x=I(()=>e.error||c.isDisabled.value?void 0:e.trackColor??e.color),R=I(()=>e.error||c.isDisabled.value?void 0:e.trackFillColor??e.color),T=U(!1),$=U(0),L=Re(),b=Re();function C(_){const H=L.value?.$el;if(!H)return;const Ve=e.direction==="vertical",De=Ve?"top":"left",Ae=Ve?"height":"width",he=Ve?"clientY":"clientX",{[De]:Le,[Ae]:_e}=H.getBoundingClientRect(),Ke=Rs(_,he);let P=Et((Ke-Le-$.value)/_e)||0;return(Ve?v.value:v.value!==f.value)&&(P=1-P),y(r.value+P*(k.value-r.value))}const E=_=>{const H=C(_);H!=null&&n({value:H}),T.value=!1,$.value=0},J=_=>{const H=C(_);b.value=s(_),b.value&&(T.value=!0,b.value.contains(_.target)?$.value=As(_,b.value,e.direction):($.value=0,H!=null&&o({value:H})),H!=null&&t({value:H}),He(()=>b.value?.focus()))},de={passive:!0,capture:!0};function Y(_){const H=C(_);H!=null&&o({value:H})}function $e(_){_.stopPropagation(),_.preventDefault(),E(_),window.removeEventListener("mousemove",Y,de),window.removeEventListener("mouseup",$e)}function fe(_){E(_),window.removeEventListener("touchmove",Y,de),_.target?.removeEventListener("touchend",fe)}function be(_){J(_),window.addEventListener("touchmove",Y,de),_.target?.addEventListener("touchend",fe,{passive:!1})}function xe(_){_.button===0&&(_.preventDefault(),J(_),window.addEventListener("mousemove",Y,de),window.addEventListener("mouseup",$e,{passive:!1}))}xt(()=>{na&&(window.removeEventListener("touchmove",Y),window.removeEventListener("mousemove",Y),window.removeEventListener("mouseup",$e))});const se=_=>{const H=(_-r.value)/(k.value-r.value)*100;return Et(isNaN(H)?0:H,0,100)},Te=Je(()=>e.showTicks),we=I(()=>Te.value?e.ticks?Array.isArray(e.ticks)?e.ticks.map(_=>({value:_,position:se(_),label:_.toString()})):Object.keys(e.ticks).map(_=>({value:parseFloat(_),position:se(parseFloat(_)),label:e.ticks[_]})):F.value!==1/0?Ua(F.value+1).map(_=>{const H=r.value+_*A.value;return{value:H,position:se(H)}}):[]:[]),je=I(()=>we.value.some(({label:_})=>!!_)),ze={activeThumbRef:b,color:Je(()=>e.color),decimals:D,disabled:c.isDisabled,direction:Je(()=>e.direction),elevation:Je(()=>e.elevation),hasLabels:je,isReversed:m,indexFromEnd:v,min:r,max:k,mousePressed:T,noKeyboard:Je(()=>e.noKeyboard),numTicks:F,onSliderMousedown:xe,onSliderTouchstart:be,parsedTicks:we,parseMouseMove:C,position:se,readonly:c.isReadonly,rounded:Je(()=>e.rounded),roundValue:y,showTicks:Te,startOffset:$,step:A,thumbSize:w,thumbColor:ee,thumbLabelColor:z,thumbLabel:Je(()=>e.thumbLabel),ticks:Je(()=>e.ticks),tickSize:u,trackColor:x,trackContainerRef:L,trackFillColor:R,trackSize:p,vertical:l};return Da(jt,ze),ze},Es=wt({focused:Boolean,max:{type:Number,required:!0},min:{type:Number,required:!0},modelValue:{type:Number,required:!0},position:{type:Number,required:!0},ripple:{type:[Boolean,Object],default:!0},name:String,noKeyboard:Boolean,...ia()},"VSliderThumb"),zs=At()({name:"VSliderThumb",directives:{vRipple:Jt},props:Es(),emits:{"update:modelValue":e=>!0},setup(e,{slots:a,emit:t}){const o=sa(jt),{isRtl:n,rtlClasses:s}=Bt();if(!o)throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");const{min:c,max:f,thumbColor:m,thumbLabelColor:l,step:v,disabled:r,thumbSize:k,thumbLabel:A,direction:D,isReversed:y,vertical:w,readonly:u,elevation:p,mousePressed:F,decimals:ee,indexFromEnd:z}=o,x=U(!1),R=U(!1),T=I(()=>r.value?void 0:p.value),{elevationClasses:$}=_a(T),{textColorClasses:L,textColorStyles:b}=ta(m),{backgroundColorClasses:C,backgroundColorStyles:E}=zt(l),{pageup:J,pagedown:de,end:Y,home:$e,left:fe,right:be,down:xe,up:se}=Oa,Te=[J,de,Y,$e,fe,be,xe,se],we=I(()=>v.value?[1,2,3]:[1,5,10]);function je(_,H){if(e.noKeyboard||r.value||!Te.includes(_.key))return;_.preventDefault();const Ve=v.value||.1,De=(f.value-c.value)/Ve;if([fe,be,xe,se].includes(_.key)){const he=(w.value?[n.value?fe:be,y.value?xe:se]:z.value!==n.value?[fe,se]:[be,se]).includes(_.key)?1:-1,Le=_.shiftKey?2:_.ctrlKey?1:0;he===-1&&H===f.value&&!Le&&!Number.isInteger(De)?H=H-De%1*Ve:H=H+he*Ve*we.value[Le]}else if(_.key===$e)H=c.value;else if(_.key===Y)H=f.value;else{const Ae=_.key===de?1:-1;H=H-Ae*Ve*(De>100?De/10:10)}return Math.max(e.min,Math.min(e.max,H))}function ze(_){const H=je(_,e.modelValue);H!=null&&(R.value=!1,t("update:modelValue",H))}return ie(()=>e.focused,_=>{_&&(R.value=!1)}),Rt(()=>{const _=nt(z.value?100-e.position:e.position,"%"),H=A.value==="always"||A.value===!0&&e.focused||A.value==="hover"&&(x.value||e.focused&&!R.value);return h("div",{class:Ee(["v-slider-thumb",{"v-slider-thumb--focused":e.focused,"v-slider-thumb--pressed":e.focused&&F.value},e.class,s.value]),style:tt([{"--v-slider-thumb-position":_,"--v-slider-thumb-size":nt(k.value)},e.style]),role:"slider",tabindex:r.value?-1:0,"aria-label":e.name,"aria-valuemin":c.value,"aria-valuemax":f.value,"aria-valuenow":e.modelValue,"aria-readonly":!!u.value,"aria-orientation":D.value,onKeydown:u.value?void 0:ze,onMouseenter:()=>{x.value=!0},onMouseleave:()=>{x.value=!1,R.value=!0}},[h("div",{class:Ee(["v-slider-thumb__surface",L.value,$.value]),style:tt(b.value)},null),Xt(h("div",{class:Ee(["v-slider-thumb__ripple",L.value]),style:tt(b.value)},null),[[Jt,e.ripple,null,{circle:!0,center:!0}]]),g(La,{origin:"bottom center"},{default:()=>[Xt(h("div",{class:"v-slider-thumb__label-container"},[h("div",{class:Ee(["v-slider-thumb__label",C.value]),style:tt(E.value)},[h("div",null,[a["thumb-label"]?.({modelValue:e.modelValue})??e.modelValue.toFixed(v.value?ee.value:1)]),h("div",{class:"v-slider-thumb__label-wedge"},null)])]),[[Ba,H]])]})])}),{}}}),Ds=wt({start:{type:Number,required:!0},stop:{type:Number,required:!0},...ia()},"VSliderTrack"),Os=At()({name:"VSliderTrack",props:Ds(),emits:{},setup(e,{slots:a}){const t=sa(jt);if(!t)throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");const{color:o,parsedTicks:n,rounded:s,showTicks:c,tickSize:f,trackColor:m,trackFillColor:l,trackSize:v,vertical:r,min:k,max:A,indexFromEnd:D}=t,{roundedClasses:y,roundedStyles:w}=Na(s),{backgroundColorClasses:u,backgroundColorStyles:p}=zt(l),{backgroundColorClasses:F,backgroundColorStyles:ee}=zt(m),z=I(()=>`inset-${r.value?"block":"inline"}-${D.value?"end":"start"}`),x=I(()=>r.value?"height":"width"),R=I(()=>({[z.value]:"0%",[x.value]:"100%"})),T=I(()=>e.stop-e.start),$=I(()=>({[z.value]:nt(e.start,"%"),[x.value]:nt(T.value,"%")})),L=I(()=>c.value?(r.value?n.value.slice().reverse():n.value).map((C,E)=>{const J=C.value!==k.value&&C.value!==A.value?nt(C.position,"%"):void 0;return h("div",{key:C.value,class:Ee(["v-slider-track__tick",{"v-slider-track__tick--filled":C.position>=e.start&&C.position<=e.stop,"v-slider-track__tick--first":C.value===k.value,"v-slider-track__tick--last":C.value===A.value}]),style:{[z.value]:J}},[(C.label||a["tick-label"])&&h("div",{class:"v-slider-track__tick-label"},[a["tick-label"]?.({tick:C,index:E})??C.label])])}):[]);return Rt(()=>h("div",{class:Ee(["v-slider-track",y.value,e.class]),style:tt([{"--v-slider-track-size":nt(v.value),"--v-slider-tick-size":nt(f.value)},w.value,e.style])},[h("div",{class:Ee(["v-slider-track__background",F.value,{"v-slider-track__background--opacity":!!o.value||!l.value}]),style:{...R.value,...ee.value}},null),h("div",{class:Ee(["v-slider-track__fill",u.value]),style:{...$.value,...p.value}},null),c.value&&h("div",{class:Ee(["v-slider-track__ticks",{"v-slider-track__ticks--always-show":c.value==="always"}])},[L.value])])),{}}}),Bs=wt({...Ka(),...Ps(),...ja(),modelValue:{type:[Number,String],default:0}},"VSlider"),Ls=At()({name:"VSlider",inheritAttrs:!1,props:Bs(),emits:{"update:focused":e=>!0,"update:modelValue":e=>!0,start:e=>!0,end:e=>!0},setup(e,{slots:a,emit:t,attrs:o}){const n=Re(),s=Re(),{rtlClasses:c}=Bt(),f=Fs(e),m=Ut(e,"modelValue",void 0,$=>f.roundValue($??f.min.value)),{min:l,max:v,mousePressed:r,roundValue:k,onSliderMousedown:A,onSliderTouchstart:D,trackContainerRef:y,position:w,hasLabels:u,disabled:p,readonly:F,noKeyboard:ee}=Us({props:e,steps:f,onSliderStart:()=>{!p.value&&!F.value&&t("start",m.value)},onSliderEnd:({value:$})=>{const L=k($);!p.value&&!F.value&&(m.value=L),t("end",L)},onSliderMove:({value:$})=>{!p.value&&!F.value&&(m.value=k($))},getActiveThumb:()=>n.value?.$el}),{isFocused:z,focus:x,blur:R}=qa(e),T=I(()=>w(m.value));return Rt(()=>{const $=Qt.filterProps(e),[L,b]=Wa(o),C=!!(e.label||a.label||a.prepend);return g(Qt,ue({ref:s,class:["v-slider",{"v-slider--has-labels":!!a["tick-label"]||u.value,"v-slider--focused":z.value,"v-slider--pressed":r.value,"v-slider--disabled":p.value},c.value,e.class],style:e.style},$,L,{focused:z.value}),{...a,prepend:C?E=>h(oe,null,[a.label?.(E)??(e.label?g(Ha,{id:E.id.value,class:"v-slider__label",text:e.label},null):void 0),a.prepend?.(E)]):void 0,default:({id:E,messagesId:J})=>h("div",{class:"v-slider__container",onMousedown:F.value?void 0:A,onTouchstartPassive:F.value?void 0:D},[h("input",{id:E.value,name:e.name||E.value,disabled:p.value,readonly:F.value,tabindex:"-1",value:m.value},null),g(Os,{ref:y,start:0,stop:T.value},{"tick-label":a["tick-label"]}),g(zs,ue({ref:n,"aria-describedby":J.value,focused:z.value,noKeyboard:ee.value,min:l.value,max:v.value,modelValue:m.value,"onUpdate:modelValue":de=>m.value=de,position:T.value,elevation:e.elevation,onFocus:x,onBlur:R,ripple:e.ripple,name:e.name},b),{"thumb-label":a["thumb-label"]})])})}),la({focus:()=>n.value?.$el.focus()},s)}}),_s={key:0,class:"agent-reasoning-slider"},Ns={class:"agent-setting-heading"},qs={key:0,class:"agent-setting-description"},js=Ce({__name:"AgentModelSettingsDialog",props:Ze({models:{},approvalSetting:{},reviewerSetting:{},permissionSetting:{},busy:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{},modelId:{required:!0},modelIdModifiers:{},reasoningEffort:{required:!0},reasoningEffortModifiers:{},reasoningSummary:{required:!0},reasoningSummaryModifiers:{},serviceTier:{required:!0},serviceTierModifiers:{},approvalMode:{required:!0},approvalModeModifiers:{},granular:{required:!0},granularModifiers:{},reviewer:{required:!0},reviewerModifiers:{},permissionMode:{required:!0},permissionModeModifiers:{}}),emits:Ze(["save"],["update:modelValue","update:modelId","update:reasoningEffort","update:reasoningSummary","update:serviceTier","update:approvalMode","update:granular","update:reviewer","update:permissionMode"]),setup(e,{emit:a}){const t=e,o=a,n=ye(e,"modelValue"),s=ye(e,"modelId"),c=ye(e,"reasoningEffort"),f=ye(e,"reasoningSummary"),m=ye(e,"serviceTier"),l=ye(e,"approvalMode"),v=ye(e,"granular"),r=ye(e,"reviewer"),k=ye(e,"permissionMode"),A=ke(),D=dt("modelSelectHost");let y=null;const w=U(null),u=I(()=>s.value?t.models.find(L=>L.id===s.value)??null:t.models.find(L=>L.isDefault)??t.models[0]??null),p=I(()=>[{title:A.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...t.models.map(L=>({title:L.displayName,value:L.id,subtitle:L.description}))]),F=I(()=>{const L=w.value;return{contentClass:"agent-model-select-menu",...L===null?{}:{width:L,minWidth:L,maxWidth:L}}}),ee=I(()=>{const L=u.value?.reasoningEfforts.find(b=>b.id===u.value?.defaultReasoningEffort);return[{title:R(u.value?.defaultReasoningEffort),value:null,subtitle:L?.description??""},...(u.value?.reasoningEfforts??[]).map(b=>({title:b.id,value:b.id,subtitle:b.description}))]}),z=I({get(){const L=ee.value.findIndex(b=>b.value===c.value);return L<0?0:L},set(L){c.value=ee.value[Math.round(L)]?.value??null}}),x=I(()=>ee.value[z.value]??null);ie(u,L=>{L?.reasoningEfforts?.some(b=>b.id===c.value)||(c.value=null),L?.reasoningSummaries?.includes(f.value??"none")||(f.value=null),L?.serviceTiers?.some(b=>b.id===m.value)||(m.value=null)}),ie(n,async L=>{if(!L){$(),w.value=null;return}await He(),T()}),Vt($);function R(L){return qt(A.t("$vuetify.chatroom.agents.defaultModel"),L)}function T(){$();const L=D.value;if(!L){w.value=null;return}const b=()=>{const C=L.clientWidth;w.value=C>0?C:null};b(),y=new ResizeObserver(b),y.observe(L)}function $(){y?.disconnect(),y=null}return(L,b)=>(i(),q(ht,{modelValue:n.value,"onUpdate:modelValue":b[10]||(b[10]=C=>n.value=C),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.agents.modelSettings")),1)]),_:1}),g(Mt,{class:"agent-model-settings-dialog"},{default:B(()=>[h("div",{ref_key:"modelSelectHost",ref:D,class:"agent-model-select-host"},[g(Ge,{modelValue:s.value,"onUpdate:modelValue":b[0]||(b[0]=C=>s.value=C),items:p.value,"menu-props":F.value,label:d(A).t("$vuetify.chatroom.agents.model"),density:"compact",variant:"outlined","hide-details":"",disabled:e.busy},{item:B(({props:C,item:E})=>[g(Me,ue(C,{subtitle:E.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","menu-props","label","disabled"])],512),u.value?.reasoningEfforts?.length?(i(),S("div",_s,[h("div",Ns,[h("span",null,M(d(A).t("$vuetify.chatroom.agents.reasoningEffort")),1),h("strong",null,M(x.value?.title),1)]),g(Ls,{modelValue:z.value,"onUpdate:modelValue":b[1]||(b[1]=C=>z.value=C),min:0,max:Math.max(0,ee.value.length-1),step:1,color:"primary","show-ticks":"always","aria-label":d(A).t("$vuetify.chatroom.agents.reasoningEffort"),"hide-details":"",disabled:e.busy},null,8,["modelValue","max","aria-label","disabled"]),x.value?.subtitle?(i(),S("div",qs,M(x.value.subtitle),1)):O("",!0)])):O("",!0),g(fa,{"reasoning-summary":f.value,"onUpdate:reasoningSummary":b[2]||(b[2]=C=>f.value=C),"service-tier":m.value,"onUpdate:serviceTier":b[3]||(b[3]=C=>m.value=C),"approval-mode":l.value,"onUpdate:approvalMode":b[4]||(b[4]=C=>l.value=C),granular:v.value,"onUpdate:granular":b[5]||(b[5]=C=>v.value=C),reviewer:r.value,"onUpdate:reviewer":b[6]||(b[6]=C=>r.value=C),"permission-mode":k.value,"onUpdate:permissionMode":b[7]||(b[7]=C=>k.value=C),model:u.value,"approval-setting":e.approvalSetting,"reviewer-setting":e.reviewerSetting,"permission-setting":e.permissionSetting,disabled:e.busy,outlined:""},null,8,["reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","model","approval-setting","reviewer-setting","permission-setting","disabled"])]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:b[8]||(b[8]=C=>n.value=!1)},{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"primary",variant:"tonal",loading:e.busy,onClick:b[9]||(b[9]=C=>o("save"))},{default:B(()=>[le(M(d(A).t("$vuetify.chatroom.common.save")),1)]),_:1},8,["loading"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),Ks=Ie(js,[["__scopeId","data-v-33309823"]]),Ws={key:2,class:"agent-review-error",role:"alert"},Hs=Ce({__name:"AgentReviewDialog",props:Ze({types:{},fieldLabel:{},busy:{type:Boolean},error:{},canStart:{type:Boolean}},{modelValue:{type:Boolean,required:!0},modelModifiers:{},reviewType:{required:!0},reviewTypeModifiers:{},reviewValue:{required:!0},reviewValueModifiers:{},reviewTitle:{required:!0},reviewTitleModifiers:{}}),emits:Ze(["start"],["update:modelValue","update:reviewType","update:reviewValue","update:reviewTitle"]),setup(e){const a=ye(e,"modelValue"),t=ye(e,"reviewType"),o=ye(e,"reviewValue"),n=ye(e,"reviewTitle"),s=ke();return(c,f)=>(i(),q(ht,{modelValue:a.value,"onUpdate:modelValue":f[6]||(f[6]=m=>a.value=m),"max-width":"90vw",persistent:e.busy,"content-class":"agent-overlay-dialog"},{default:B(()=>[g(Ye,null,{default:B(()=>[g(Ot,null,{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.agents.review")),1)]),_:1}),g(Mt,{class:"agent-review-fields"},{default:B(()=>[g(Ge,{modelValue:t.value,"onUpdate:modelValue":f[0]||(f[0]=m=>t.value=m),items:e.types,label:d(s).t("$vuetify.chatroom.agents.reviewTarget"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","items","label","disabled"]),t.value!=="uncommittedChanges"?(i(),q(ut,{key:0,modelValue:o.value,"onUpdate:modelValue":f[1]||(f[1]=m=>o.value=m),label:e.fieldLabel,disabled:e.busy,density:"compact","hide-details":"",onKeydown:f[2]||(f[2]=ot(lt(m=>c.$emit("start"),["prevent"]),["enter"]))},null,8,["modelValue","label","disabled"])):O("",!0),t.value==="commit"?(i(),q(ut,{key:1,modelValue:n.value,"onUpdate:modelValue":f[3]||(f[3]=m=>n.value=m),label:d(s).t("$vuetify.chatroom.agents.reviewCommitTitle"),disabled:e.busy,density:"compact","hide-details":""},null,8,["modelValue","label","disabled"])):O("",!0),e.error?(i(),S("div",Ws,M(e.error),1)):O("",!0)]),_:1}),g(It,null,{default:B(()=>[g(Pt),g(ce,{variant:"text",disabled:e.busy,onClick:f[4]||(f[4]=m=>a.value=!1)},{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.common.cancel")),1)]),_:1},8,["disabled"]),g(ce,{color:"primary",variant:"tonal",loading:e.busy,disabled:!e.canStart,onClick:f[5]||(f[5]=m=>c.$emit("start"))},{default:B(()=>[le(M(d(s).t("$vuetify.chatroom.agents.startReview")),1)]),_:1},8,["loading","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue","persistent"]))}}),Gs=Ie(Hs,[["__scopeId","data-v-c141bca2"]]),Js={class:"panel-header agent-session-header"},Xs={class:"agent-session-header-info min-w-0"},Qs={class:"panel-title agent-session-provider-title"},Ys={class:"agent-session-model-label"},Zs={class:"panel-subtitle text-truncate"},ei={key:0,class:"agent-session-token-usage"},ti=["data-status"],ai=["data-status","data-attention"],ni={class:"agent-session-header-status-text"},li={class:"agent-session-switch-provider-icon"},si=Ce({__name:"AgentSessionHeader",props:{session:{},providerName:{},providerIcon:{},modelName:{},statusText:{},usage:{},compact:{type:Boolean},switchTargets:{},switching:{type:Boolean},disabled:{type:Boolean}},emits:["back","switchProvider"],setup(e){const a=ke();return(t,o)=>(i(),S("div",Js,[e.compact?(i(),q(ce,{key:0,icon:"$mdiArrowLeft",size:"small","aria-label":d(a).t("$vuetify.chatroom.agents.backToSessions"),variant:"text",onClick:o[0]||(o[0]=n=>t.$emit("back"))},null,8,["aria-label"])):O("",!0),h("div",Xs,[h("div",Qs,[g(pt,{icon:e.providerIcon,size:16},null,8,["icon"]),h("span",null,M(e.providerName),1),h("span",Ys,"· "+M(e.modelName),1)]),h("div",Zs,M(e.session.workspaceRoot),1),e.usage?(i(),S("div",ei,M(e.usage),1)):O("",!0)]),h("div",{class:"agent-session-header-status","data-status":e.session.status},[h("span",{class:"agent-session-status-dot","data-status":e.session.status,"data-attention":e.session.attention?.kind??void 0},null,8,ai),h("span",ni,M(e.statusText),1)],8,ti),e.switchTargets.length?(i(),q(yt,{key:1,location:"bottom end",offset:"6","content-class":"agent-overlay-menu"},{activator:B(({props:n})=>[g(ce,ue(n,{class:"agent-session-header-switch",size:"small",variant:"text","prepend-icon":"$mdiSwapHorizontal","append-icon":"$mdiChevronDown",loading:e.switching,disabled:e.disabled,"aria-label":d(a).t("$vuetify.chatroom.agents.switchAgent")}),{default:B(()=>[le(M(d(a).t("$vuetify.chatroom.agents.switchAgent")),1)]),_:1},16,["loading","disabled","aria-label"])]),default:B(()=>[g(bt,{class:"agent-session-switch-menu",density:"compact"},{default:B(()=>[(i(!0),S(oe,null,Se(e.switchTargets,n=>(i(),q(Me,{key:n.id,title:n.displayName,onClick:s=>t.$emit("switchProvider",n.id)},{prepend:B(()=>[h("span",li,[g(pt,{icon:n.icon,size:15},null,8,["icon"])])]),_:2},1032,["title","onClick"]))),128))]),_:1})]),_:1})):O("",!0)]))}}),ii=Ie(si,[["__scopeId","data-v-1cae8321"]]),oi={class:"agent-create"},ri=Ce({__name:"AgentCreateSessionPanel",props:{providers:{},providerModels:{},workspaces:{}},emits:["created"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(null),c=U(""),f=U(null),m=U(null),l=U(null),v=U(null),r=U(null),k=U(Ct()),A=U(null),D=U(null),y=U(!1),w=U(""),u=I(()=>t.providers.map(b=>({title:gt(t.providers,b.id),value:b.id,disabled:!b.installed||!b.authenticated}))),p=I(()=>[{title:n.t("$vuetify.chatroom.agents.defaultModel"),value:null,subtitle:""},...(t.providerModels[c.value]??[]).map(b=>({title:b.displayName,value:b.id,subtitle:b.description}))]),F=I(()=>ua(t.providerModels,c.value,f.value)),ee=I(()=>Qe(t.providers,c.value,"approvalPolicy")),z=I(()=>Qe(t.providers,c.value,"approvalsReviewer")),x=I(()=>Qe(t.providers,c.value,"permissionMode")),R=I(()=>{const b=t.providers.find(C=>C.id===c.value);return!!(s.value&&b?.installed&&b.authenticated&&!y.value)});ie(()=>t.workspaces,b=>{(!s.value||!b.some(C=>C.root===s.value))&&(s.value=b[0]?.root??null)},{immediate:!0}),ie(()=>t.providers,b=>{const C=b.find(E=>E.id===c.value);C?.installed&&C.authenticated||(c.value=b.find(E=>E.installed&&E.authenticated)?.id??b[0]?.id??"")},{immediate:!0}),ie(c,()=>{f.value=null,m.value=null,l.value=null,v.value=null,$()}),ie(F,b=>{b?.reasoningEfforts?.some(C=>C.id===m.value)||(m.value=null),b?.reasoningSummaries?.includes(l.value??"none")||(l.value=null),b?.serviceTiers?.some(C=>C.id===v.value)||(v.value=null)});async function T(){if(!(!s.value||!R.value)){y.value=!0,w.value="";try{const b=await Ue("/agents/sessions",{method:"POST",body:JSON.stringify({workspaceRoot:s.value,provider:c.value,model:f.value,reasoningEffort:m.value,reasoningSummary:l.value,serviceTier:v.value,...ra(t.providers,c.value,r.value,k.value,A.value,D.value)}),timeoutMs:3e4});o("created",b)}catch(b){w.value=qe(b)}finally{y.value=!1}}}function $(){r.value=Lt(null,ee.value?.defaultValue??null),k.value=Ct(),A.value=_t(null,z.value?.defaultValue??null),D.value=Nt(null,x.value?.defaultValue??null)}function L(b){const C=b?.reasoningEfforts.find(E=>E.id===b.defaultReasoningEffort);return[{title:qt(n.t("$vuetify.chatroom.agents.defaultModel"),b?.defaultReasoningEffort),value:null,subtitle:C?.description??""},...(b?.reasoningEfforts??[]).map(E=>({title:E.id,value:E.id,subtitle:E.description}))]}return(b,C)=>(i(),S("div",oi,[g(Ge,{modelValue:s.value,"onUpdate:modelValue":C[0]||(C[0]=E=>s.value=E),items:e.workspaces,"item-title":"name","item-value":"root",label:d(n).t("$vuetify.chatroom.agents.workspace"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),g(Ge,{modelValue:c.value,"onUpdate:modelValue":C[1]||(C[1]=E=>c.value=E),items:u.value,label:d(n).t("$vuetify.chatroom.agents.provider"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),g(Ge,{modelValue:f.value,"onUpdate:modelValue":C[2]||(C[2]=E=>f.value=E),items:p.value,label:d(n).t("$vuetify.chatroom.agents.model"),density:"compact","hide-details":""},null,8,["modelValue","items","label"]),F.value?.reasoningEfforts?.length?(i(),q(Ge,{key:0,modelValue:m.value,"onUpdate:modelValue":C[3]||(C[3]=E=>m.value=E),items:L(F.value),label:d(n).t("$vuetify.chatroom.agents.reasoningEffort"),density:"compact","hide-details":""},{item:B(({props:E,item:J})=>[g(Me,ue(E,{subtitle:J.subtitle}),null,16,["subtitle"])]),_:1},8,["modelValue","items","label"])):O("",!0),g(fa,{"reasoning-summary":l.value,"onUpdate:reasoningSummary":C[4]||(C[4]=E=>l.value=E),"service-tier":v.value,"onUpdate:serviceTier":C[5]||(C[5]=E=>v.value=E),"approval-mode":r.value,"onUpdate:approvalMode":C[6]||(C[6]=E=>r.value=E),granular:k.value,"onUpdate:granular":C[7]||(C[7]=E=>k.value=E),reviewer:A.value,"onUpdate:reviewer":C[8]||(C[8]=E=>A.value=E),"permission-mode":D.value,"onUpdate:permissionMode":C[9]||(C[9]=E=>D.value=E),model:F.value,"approval-setting":ee.value,"reviewer-setting":z.value,"permission-setting":x.value,disabled:y.value},null,8,["reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","model","approval-setting","reviewer-setting","permission-setting","disabled"]),w.value?(i(),q(ea,{key:1,type:"error",variant:"tonal",density:"compact"},{default:B(()=>[le(M(w.value),1)]),_:1})):O("",!0),g(ce,{color:"primary",variant:"tonal",loading:y.value,disabled:!R.value,onClick:T},{default:B(()=>[le(M(d(n).t("$vuetify.chatroom.agents.create")),1)]),_:1},8,["loading","disabled"])]))}}),ui=Ie(ri,[["__scopeId","data-v-8cdd509d"]]),di={class:"agent-provider-strip"},ci=["data-state","title","aria-label","aria-expanded","data-expanded","onClick","onKeydown"],vi={class:"agent-provider-pill-name"},mi={key:0,class:"agent-provider-quota"},fi={class:"agent-provider-quota-header"},gi={key:0},pi={key:0,class:"agent-provider-quota-unavailable"},yi={key:1,class:"agent-provider-quota-unavailable"},hi=["title"],bi={class:"agent-provider-quota-label"},wi={class:"agent-provider-quota-track","aria-hidden":"true"},ki={class:"agent-provider-quota-value"},$i={class:"agent-provider-quota-reset"},Si={key:0,class:"agent-provider-quota-extra"},Ci=Ce({__name:"AgentProviderStatus",props:{providers:{}},setup(e){const a=ke(),t=U({}),o=U(null),n=U(!1),s=mt();let c=null;const f=I(()=>o.value?t.value[o.value]?.accountUsage??null:null);oa(()=>{c=setInterval(()=>{o.value&&l(o.value)},6e4)}),Vt(()=>{c&&clearInterval(c)});async function m(y){if(o.value===y){s.invalidate(),o.value=null,n.value=!1;return}o.value=y,await l(y)}async function l(y){const w=s.begin();n.value=!0;try{const u=await Ue(`/agents/providers/${y}/details`,{timeoutMs:15e3,signal:w.signal});if(!s.isCurrent(w))return;t.value={...t.value,[y]:u}}catch{}finally{s.isCurrent(w)&&(n.value=!1)}}function v(y){if(!y.installed)return a.t("$vuetify.chatroom.agents.providerUnavailable");if(!y.authenticated)return a.t("$vuetify.chatroom.agents.providerNotAuthenticated");const w=t.value[y.id];return[a.t("$vuetify.chatroom.agents.providerAvailable"),w?.configRequirements!=null?a.t("$vuetify.chatroom.agents.managedRequirementsAvailable"):null,w?.rateLimits!=null?a.t("$vuetify.chatroom.agents.rateLimitsAvailable"):null,y.capabilities?.webSearch?a.t("$vuetify.chatroom.agents.webSearch"):null,y.capabilities?.imageGeneration?a.t("$vuetify.chatroom.agents.imageGeneration"):null,y.version?y.displayName+" "+y.version:null].filter(Boolean).join(" · ")}function r(y,w){if(w)return w;const u={five_hour:"$vuetify.chatroom.agents.quotaFiveHour",seven_day:"$vuetify.chatroom.agents.quotaSevenDay",seven_day_oauth_apps:"$vuetify.chatroom.agents.quotaOauthApps",seven_day_opus:"$vuetify.chatroom.agents.quotaOpus",seven_day_sonnet:"$vuetify.chatroom.agents.quotaSonnet"};return u[y]?a.t(u[y]):y}function k(y){return y===null?"—":a.t("$vuetify.chatroom.agents.quotaPercent",String(Math.round(y)))}function A(y){return y===null?"0%":Math.min(100,Math.max(0,y))+"%"}function D(y){if(!y)return"";const w=new Date(y).getTime()-Date.now();if(!Number.isFinite(w)||w<=0)return a.t("$vuetify.chatroom.agents.quotaResetSoon");const u=Math.ceil(w/6e4);let p;if(u<60)p=u+"m";else{const F=Math.floor(u/60),ee=u%60;p=F<48?F+"h"+(ee?" "+ee+"m":""):Math.ceil(F/24)+"d"}return a.t("$vuetify.chatroom.agents.quotaResetsIn",p)}return(y,w)=>(i(),S(oe,null,[h("div",di,[(i(!0),S(oe,null,Se(e.providers,u=>(i(),S("div",{key:u.id,class:"agent-provider-pill","data-state":u.installed?u.authenticated?"ready":"warning":"unavailable",title:v(u),"aria-label":v(u),"aria-expanded":o.value===u.id,"data-expanded":o.value===u.id,role:"button",tabindex:"0",onClick:p=>m(u.id),onKeydown:[ot(lt(p=>m(u.id),["prevent"]),["enter"]),ot(lt(p=>m(u.id),["prevent"]),["space"])]},[g(pt,{icon:u.icon,size:14},null,8,["icon"]),h("span",vi,M(d(gt)(e.providers,u.id)),1),w[0]||(w[0]=h("span",{class:"agent-provider-pill-dot"},null,-1))],40,ci))),128))]),o.value?(i(),S("div",mi,[h("div",fi,[h("span",null,M(d(gt)(e.providers,o.value)),1),f.value?.subscriptionType?(i(),S("span",gi,M(f.value.subscriptionType),1)):O("",!0)]),n.value?(i(),S("div",pi,M(d(a).t("$vuetify.chatroom.agents.loading")),1)):f.value?.windows.length??0?(i(),S(oe,{key:2},[(i(!0),S(oe,null,Se(f.value?.windows??[],u=>(i(),S("div",{key:u.id,class:"agent-provider-quota-row",title:D(u.resetsAt)},[h("span",bi,M(r(u.id,u.label)),1),h("div",wi,[h("span",{class:"agent-provider-quota-fill",style:tt({width:A(u.utilization)})},null,4)]),h("span",ki,M(k(u.utilization)),1),h("span",$i,M(D(u.resetsAt)),1)],8,hi))),128)),f.value?.extraUsage?.enabled?(i(),S("div",Si,[h("span",null,M(d(a).t("$vuetify.chatroom.agents.quotaExtraUsage")),1),h("span",null,M(k(f.value.extraUsage.utilization)),1)])):O("",!0)],64)):(i(),S("div",yi,M(d(a).t("$vuetify.chatroom.agents.quotaUnavailable")),1))])):O("",!0)],64))}}),xi=Ie(Ci,[["__scopeId","data-v-5b1c74e5"]]),Vi={class:"panel-header"},Mi={class:"panel-title"},Ii={key:0,class:"agent-error",role:"alert"},Ti={class:"agent-session-list"},Ai=["data-status","data-attention","title"],Ri={key:1,class:"empty-inline"},Pi=Ce({__name:"AgentSidebar",props:{providers:{},providerModels:{},workspaces:{},sessions:{},selectedId:{},loading:{type:Boolean},error:{}},emits:["update:selectedId","created"],setup(e,{emit:a}){const t=e,o=a,n=ke(),s=U(!1);function c(l){s.value=!1,o("created",l)}function f(l,v){return va(t.providerModels,l,v,n.t("$vuetify.chatroom.agents.defaultModel"))}function m(l){if(l.status==="waiting_input"){if(l.attention?.kind==="approval")return n.t("$vuetify.chatroom.agents.waitingApproval");if(l.attention?.kind==="input")return n.t("$vuetify.chatroom.agents.waitingAnswer")}return n.t("$vuetify.chatroom.agents.statuses."+l.status)}return(l,v)=>(i(),q(Ye,{class:"agent-sidebar panel-card"},{default:B(()=>[h("div",Vi,[h("div",Mi,M(d(n).t("$vuetify.chatroom.agents.title")),1),g(ce,{icon:"$mdiPlus",size:"small",variant:"text","aria-label":d(n).t("$vuetify.chatroom.agents.newSession"),onClick:v[0]||(v[0]=r=>s.value=!s.value)},null,8,["aria-label"])]),g(rt),g(Ga,null,{default:B(()=>[s.value?(i(),q(ui,{key:0,providers:e.providers,"provider-models":e.providerModels,workspaces:e.workspaces,onCreated:c},null,8,["providers","provider-models","workspaces"])):O("",!0)]),_:1}),e.error?(i(),S("div",Ii,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"18"}),h("span",null,M(e.error),1)])):O("",!0),h("div",Ti,[e.sessions.length?(i(),q(bt,{key:0,nav:"",density:"compact"},{default:B(()=>[(i(!0),S(oe,null,Se(e.sessions,r=>(i(),q(Me,{key:r.id,active:e.selectedId===r.id,"data-agent-session-id":r.id,rounded:"lg",onClick:k=>o("update:selectedId",r.id)},{prepend:B(()=>[g(pt,{class:"agent-session-provider-icon",icon:d(ca)(e.providers,r.provider),size:15},null,8,["icon"])]),append:B(()=>[h("span",{class:"agent-status-dot","data-status":r.status,"data-attention":r.attention?.kind??void 0,title:m(r)},null,8,Ai)]),default:B(()=>[g(Ja,null,{default:B(()=>[le(M(d(gt)(e.providers,r.provider)),1)]),_:2},1024),g(Xa,null,{default:B(()=>[le(M(d($t)(r.workspaceRoot))+" ",1),r.model?(i(),S(oe,{key:0},[le(" · "+M(f(r.provider,r.model)),1)],64)):O("",!0)]),_:2},1024)]),_:2},1032,["active","data-agent-session-id","onClick"]))),128))]),_:1})):(i(),S("div",Ri,M(e.loading?d(n).t("$vuetify.chatroom.agents.loading"):d(n).t("$vuetify.chatroom.agents.noSessions")),1))]),g(rt),g(xi,{providers:e.providers},null,8,["providers"])]),_:1}))}}),Fi=Ie(Pi,[["__scopeId","data-v-e6bcf543"]]),Ui={key:0,class:"agent-error agent-main-error",role:"alert"},Ei=["aria-label"],zi={class:"empty-panel"},Di=Ce({__name:"AgentView",props:{revision:{},changes:{}},setup(e){const a=e,t=ke(),{mdAndDown:o}=Qa(),n=dt("layout"),s=U([]),c=U([]),f=U({}),m=U(null),l=U(!1),v=U(!1),r=U(""),{sessions:k,history:A,refresh:D,reloadSelected:y,reconcileSession:w,reconcileInteraction:u,removeSession:p}=mn(m,{onError:Z=>{r.value=qe(Z)}}),F=I(()=>k.value.find(Z=>Z.id===m.value)??null),ee=I(()=>(A.value?.turns.at(-1)?.items??[]).filter(W=>W.type==="interaction"&&W.status==="waiting")),{modelSettingsOpen:z,settingsModel:x,settingsReasoningEffort:R,settingsReasoningSummary:T,settingsServiceTier:$,settingsApprovalPolicyMode:L,settingsGranularApproval:b,settingsApprovalsReviewer:C,settingsPermissionMode:E,reviewOpen:J,reviewType:de,reviewValue:Y,reviewTitle:$e,reviewStarting:fe,reviewError:be,modelSwitching:xe,switchingProvider:se,interrupting:Te,deleteDialog:we,deletingSession:je,selectedApprovalPolicySetting:ze,selectedApprovalsReviewerSetting:_,selectedPermissionModeSetting:H,selectedProviderModels:Ve,selectedModelMetadata:De,selectedProviderStatus:Ae,reviewTypes:he,reviewFieldLabel:Le,canStartReview:_e,switchTargets:Ke,loadModels:P,startReview:X,interrupt:ae,switchProvider:ge,openDeleteDialog:me,deleteSession:Ne,openModelSettings:N,saveModelSettings:G}=gn({selectedId:m,selected:F,sessions:k,providers:s,providerModels:f,composerBusy:v,error:r,refresh:D,reconcileSession:w,removeSession:p}),{respondingInteractions:te,respondApproval:ve,submitInput:V,interactionAnswers:j,setInteractionAnswer:ne}=fn({selectedId:m,selected:F,error:r,reconcileInteraction:u}),re=I(()=>F.value?F.value.status!=="waiting_input"?t.t("$vuetify.chatroom.agents.statuses."+F.value.status):F.value.attention?.kind==="approval"?t.t("$vuetify.chatroom.agents.waitingApproval"):F.value.attention?.kind==="input"?t.t("$vuetify.chatroom.agents.waitingAnswer"):t.t("$vuetify.chatroom.agents.statuses.waiting_input"):""),pe=I(()=>{const Z=F.value?.tokenUsage;return Z?at(Z):""}),Q=I(()=>Object.fromEntries(s.value.map(Z=>[Z.id,Z.displayName]))),Oe=I(()=>Object.fromEntries(s.value.map(Z=>[Z.id,Z.icon])));oa(()=>{st()}),ie(()=>a.revision,()=>{D(a.changes)}),ie(m,()=>{v.value=!1},{flush:"sync"}),ie(m,(Z,W)=>{!o.value||!Z||Z===W||He(()=>{n.value?.querySelector(".agent-main")?.focus({preventScroll:!0})})},{flush:"post"});async function st(){l.value=!0,r.value="";try{const[Z,,W]=await Promise.all([Ue("/agents/providers",{timeoutMs:15e3}),D(null),Ue("/workspaces")]);s.value=Z,c.value=W,!o.value&&!m.value&&k.value[0]&&(m.value=k.value[0].id),await Promise.all(Z.filter(K=>K.installed&&K.authenticated).map(K=>P(K.id)))}catch(Z){r.value=qe(Z)}finally{l.value=!1}}function Xe(Z){w(Z),m.value=Z.id}function at(Z){const W=ya=>new Intl.NumberFormat(Ya(t.current.value),{notation:"compact",maximumFractionDigits:1}).format(ya),K=t.t("$vuetify.chatroom.agents.tokenUsage",W(Z.total.totalTokens)),We=Z.modelContextWindow;if(!We||We<=0)return K;const kt=Z.last.totalTokens;return K+" · "+t.t("$vuetify.chatroom.agents.contextUsage",W(kt),W(We),String(Math.round(kt/We*100)))}function et(Z,W){return va(f.value,Z,W,t.t("$vuetify.chatroom.agents.defaultModel"))}function Fe(){const Z=m.value;m.value=null,A.value=null,!(!o.value||!Z)&&He(()=>{n.value?.querySelector(`[data-agent-session-id="${CSS.escape(Z)}"]`)?.focus({preventScroll:!0})})}function ga(Z){return gt(s.value,Z)}function pa(Z){return ca(s.value,Z)}return(Z,W)=>(i(),S("div",{ref_key:"layout",ref:n,class:"agent-layout"},[!d(o)||!F.value?(i(),q(Fi,{key:0,"selected-id":m.value,"onUpdate:selectedId":W[0]||(W[0]=K=>m.value=K),providers:s.value,"provider-models":f.value,workspaces:c.value,sessions:d(k),loading:l.value,error:r.value,onCreated:Xe},null,8,["selected-id","providers","provider-models","workspaces","sessions","loading","error"])):O("",!0),F.value?(i(),q(Ye,{key:1,class:"agent-main panel-card",tabindex:"-1"},{default:B(()=>[g(ii,{session:F.value,"provider-name":ga(F.value.provider),"provider-icon":pa(F.value.provider),"model-name":et(F.value.provider,F.value.model),"status-text":re.value,usage:pe.value,compact:d(o),"switch-targets":d(Ke),switching:d(se),disabled:F.value.status!=="idle"||d(xe),onBack:Fe,onSwitchProvider:d(ge)},null,8,["session","provider-name","provider-icon","model-name","status-text","usage","compact","switch-targets","switching","disabled","onSwitchProvider"]),g(rt),r.value&&d(o)?(i(),S("div",Ui,[g(Pe,{icon:"$mdiAlertCircleOutline",size:"18"}),h("span",null,M(r.value),1)])):O("",!0),g(Vs,{history:d(A),"provider-names":Q.value,"provider-icons":Oe.value},null,8,["history","provider-names","provider-icons"]),ee.value.length?(i(),S("div",{key:1,class:"agent-pending-interactions",role:"region","aria-label":re.value},[(i(!0),S(oe,null,Se(ee.value,K=>(i(),q(ma,{key:"pending:"+K.id,item:K,answers:d(j)(K),responding:d(te).has(K.id),pinned:"",onApprove:We=>d(ve)(K,We),onSubmit:We=>d(V)(K),onUpdateAnswer:(We,kt)=>d(ne)(K,We,kt)},null,8,["item","answers","responding","onApprove","onSubmit","onUpdateAnswer"]))),128))],8,Ei)):O("",!0),g(rt),(i(),q(Ln,{key:F.value.id,session:F.value,model:d(De),"steering-supported":!!d(Ae)?.features.steering,disabled:d(fe)||d(xe)||d(se),onError:W[2]||(W[2]=K=>r.value=K),onBusy:W[3]||(W[3]=K=>v.value=K)},{controls:B(({busy:K})=>[g(yt,{location:"top end",offset:"8","content-class":"agent-overlay-menu"},{activator:B(({props:We})=>[g(ce,ue(We,{icon:"$mdiDotsHorizontal",size:"small",variant:"text",class:"agent-session-controls-button",color:F.value.status==="error"?"error":F.value.status==="idle"?void 0:"warning","aria-label":d(t).t("$vuetify.chatroom.agents.sessionControls"),title:d(t).t("$vuetify.chatroom.agents.sessionControls")}),null,16,["color","aria-label","title"])]),default:B(()=>[g(bt,{class:"agent-session-controls-menu",density:"compact"},{default:B(()=>[g(Me,{title:d(t).t("$vuetify.chatroom.agents.model"),subtitle:et(F.value.provider,F.value.model),"prepend-icon":"$mdiTuneVariant",disabled:F.value.status!=="idle"||d(xe)||d(se),onClick:d(N)},null,8,["title","subtitle","disabled","onClick"]),F.value.status==="running"||F.value.status==="waiting_input"?(i(),q(Me,{key:0,title:d(t).t("$vuetify.chatroom.agents.stop"),"prepend-icon":"$mdiStop","base-color":"warning",disabled:d(Te),onClick:d(ae)},null,8,["title","disabled","onClick"])):O("",!0),g(rt),F.value.status==="idle"&&d(Ae)?.features.nativeReview?(i(),q(Me,{key:1,title:d(t).t("$vuetify.chatroom.agents.review"),"prepend-icon":"$mdiFileCompare",disabled:K||d(xe)||d(se)||d(fe),onClick:W[1]||(W[1]=We=>{be.value="",J.value=!0})},null,8,["title","disabled"])):O("",!0),g(Me,{title:d(t).t("$vuetify.chatroom.agents.refresh"),"prepend-icon":"$mdiRefresh",onClick:d(y)},null,8,["title","onClick"]),g(Me,{title:d(t).t("$vuetify.chatroom.agents.delete"),"prepend-icon":"$mdiDeleteOutline",onClick:d(me)},null,8,["title","onClick"])]),_:2},1024)]),_:2},1024)]),_:1},8,["session","model","steering-supported","disabled"]))]),_:1})):d(o)?O("",!0):(i(),q(Ye,{key:2,class:"agent-main panel-card"},{default:B(()=>[h("div",zi,M(d(t).t("$vuetify.chatroom.agents.selectSession")),1)]),_:1})),g(Ks,{modelValue:d(z),"onUpdate:modelValue":W[4]||(W[4]=K=>Be(z)?z.value=K:null),"model-id":d(x),"onUpdate:modelId":W[5]||(W[5]=K=>Be(x)?x.value=K:null),"reasoning-effort":d(R),"onUpdate:reasoningEffort":W[6]||(W[6]=K=>Be(R)?R.value=K:null),"reasoning-summary":d(T),"onUpdate:reasoningSummary":W[7]||(W[7]=K=>Be(T)?T.value=K:null),"service-tier":d($),"onUpdate:serviceTier":W[8]||(W[8]=K=>Be($)?$.value=K:null),"approval-mode":d(L),"onUpdate:approvalMode":W[9]||(W[9]=K=>Be(L)?L.value=K:null),granular:d(b),"onUpdate:granular":W[10]||(W[10]=K=>Be(b)?b.value=K:null),reviewer:d(C),"onUpdate:reviewer":W[11]||(W[11]=K=>Be(C)?C.value=K:null),"permission-mode":d(E),"onUpdate:permissionMode":W[12]||(W[12]=K=>Be(E)?E.value=K:null),models:d(Ve),"approval-setting":d(ze),"reviewer-setting":d(_),"permission-setting":d(H),busy:d(xe),onSave:d(G)},null,8,["modelValue","model-id","reasoning-effort","reasoning-summary","service-tier","approval-mode","granular","reviewer","permission-mode","models","approval-setting","reviewer-setting","permission-setting","busy","onSave"]),g(Gs,{modelValue:d(J),"onUpdate:modelValue":W[13]||(W[13]=K=>Be(J)?J.value=K:null),"review-type":d(de),"onUpdate:reviewType":W[14]||(W[14]=K=>Be(de)?de.value=K:null),"review-value":d(Y),"onUpdate:reviewValue":W[15]||(W[15]=K=>Be(Y)?Y.value=K:null),"review-title":d($e),"onUpdate:reviewTitle":W[16]||(W[16]=K=>Be($e)?$e.value=K:null),types:d(he),"field-label":d(Le),busy:d(fe),error:d(be),"can-start":d(_e),onStart:d(X)},null,8,["modelValue","review-type","review-value","review-title","types","field-label","busy","error","can-start","onStart"]),g(_n,{modelValue:d(we),"onUpdate:modelValue":W[17]||(W[17]=K=>Be(we)?we.value=K:null),busy:d(je),onConfirm:d(Ne)},null,8,["modelValue","busy","onConfirm"])],512))}}),Wi=Ie(Di,[["__scopeId","data-v-3189043d"]]);export{Wi as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.agent-compose-tool-button[data-v-024d9876]{padding:0;color:rgba(var(--v-theme-on-surface),.72)}.agent-workspace-reference-button[data-v-024d9876]{font-size:16px;font-weight:600;line-height:1;text-transform:none}.agent-file-picker[data-v-024d9876]{inline-size:max-content;max-inline-size:90vw;padding:10px;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface))}.agent-file-picker-caption[data-v-024d9876],.agent-tree-path[data-v-024d9876]{color:rgba(var(--v-theme-on-surface),.62)}.agent-file-picker-caption[data-v-024d9876]{margin-bottom:9px;font-size:.75rem}.agent-file-picker-list[data-v-024d9876]{max-height:45dvh;overflow-y:auto;margin-top:8px}.agent-tree-row[data-v-024d9876]{width:100%;min-height:32px;display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:5px;padding-block:4px;padding-inline-end:8px;border:0;border-radius:6px;background:transparent;color:rgb(var(--v-theme-on-surface));text-align:left;cursor:pointer}.agent-tree-row[data-v-024d9876]:hover,.agent-tree-row[data-selected=true][data-v-024d9876]{background:rgba(var(--v-theme-primary),.12)}.agent-tree-row[data-type=directory][data-v-024d9876]{font-weight:600}.agent-tree-chevron[data-v-024d9876]{transition:transform .12s ease}.agent-tree-chevron-open[data-v-024d9876]{transform:rotate(90deg)}.agent-tree-spacer[data-v-024d9876]{width:16px}.agent-tree-name[data-v-024d9876]{min-width:0;overflow:hidden;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.agent-tree-path[data-v-024d9876]{max-width:45%;overflow:hidden;font-family:var(--font-mono, monospace);font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.agent-file-picker-empty[data-v-024d9876]{padding:22px 10px;color:rgba(var(--v-theme-on-surface),.62);font-size:.8rem;text-align:center}.agent-project-files-truncated[data-v-024d9876]{margin-top:8px}.agent-composer[data-v-c20ba904]{flex:0 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0;gap:8px;padding:12px}.agent-composer-caption[data-v-c20ba904],.agent-file-suggestion-path[data-v-c20ba904]{color:rgba(var(--v-theme-on-surface),.62)}.agent-composer-caption[data-v-c20ba904]{font-size:.75rem}.agent-inline-error[data-v-c20ba904]{color:rgb(var(--v-theme-error))}.agent-attachment-error[data-v-c20ba904]{padding:0;font-size:.8rem}.agent-selected-attachments[data-v-c20ba904]{display:flex;flex-wrap:wrap;gap:6px;min-height:24px;overflow:auto}.agent-compose-row[data-v-c20ba904]{justify-content:flex-end;display:flex;align-items:flex-end;gap:8px}.agent-compose-tools[data-v-c20ba904]{flex:0 0 auto;align-self:flex-end;display:flex;flex-direction:column;gap:5px;margin-bottom:2px}.agent-compose-tool-button[data-v-c20ba904]{padding:0;color:rgba(var(--v-theme-on-surface),.72)}.agent-attachment-button[data-v-c20ba904] .v-icon{font-size:18px}.agent-compose-input-wrap[data-v-c20ba904]{position:relative;min-width:0;flex:1 1 auto}.agent-compose-input-wrap[data-v-c20ba904] .v-textarea{min-width:0}.agent-compose-actions[data-v-c20ba904]{flex:0 0 auto;align-self:flex-end;display:flex;flex-direction:column;align-items:center;gap:4px;margin-bottom:1px}.agent-compose-actions[data-v-c20ba904]>.v-btn{flex:0 0 auto}.agent-hidden-file-input[data-v-c20ba904]{display:none}.agent-mention-popup[data-v-c20ba904]{position:absolute;background:rgb(var(--v-theme-surface));color:rgb(var(--v-theme-on-surface));left:0;right:0;bottom:calc(100% + 8px);z-index:20;max-height:40dvh;overflow-y:auto;padding:5px;border:1px solid rgba(var(--v-border-color),var(--v-border-opacity));border-radius:8px;box-shadow:0 8px 24px #0003}.agent-file-suggestion[data-v-c20ba904]{width:100%;display:grid;gap:1px;padding:8px 10px;border:0;border-radius:6px;background:transparent;color:rgb(var(--v-theme-on-surface));text-align:left;cursor:pointer}.agent-file-suggestion[data-v-c20ba904]:hover{background:rgba(var(--v-theme-primary),.12)}.agent-file-suggestion-name[data-v-c20ba904]{overflow:hidden;font-size:.82rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.agent-file-suggestion-path[data-v-c20ba904]{overflow:hidden;font-family:var(--font-mono, monospace);font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.agent-composer[data-v-c20ba904]>*{flex-shrink:0}.agent-composer--waiting .agent-compose-actions[data-v-c20ba904]{flex-direction:row}.agent-artifact-group[data-v-e957f066]{min-width:0;align-self:stretch}.agent-artifact-group-heading[data-v-e957f066]{display:flex;align-items:center;gap:7px;margin-bottom:7px;color:rgba(var(--v-theme-on-surface),.62);font-size:.76rem;font-weight:600}.agent-artifact-grid[data-v-e957f066]{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:10px}.agent-artifact-grid[data-count="1"][data-v-e957f066]{grid-template-columns:minmax(0,1fr)}.agent-artifact-tile[data-v-e957f066]{min-width:0;overflow:hidden;border:1px solid rgba(var(--v-border-color),.2);border-radius:10px;background:rgba(var(--v-theme-surface-variant),.06)}.agent-artifact-media[data-v-e957f066]{position:relative;aspect-ratio:16 / 10;overflow:hidden;background:rgba(var(--v-theme-on-surface),.025)}.agent-artifact-image-button[data-v-e957f066]{width:100%;height:100%;display:block;padding:0;border:0;background:transparent;cursor:zoom-in}.agent-artifact-image-button[data-v-e957f066]:disabled{cursor:default}.agent-artifact-image[data-v-e957f066]{width:100%;height:100%;display:block;object-fit:contain;background:linear-gradient(45deg,rgba(var(--v-theme-on-surface),.025) 25%,transparent 25%,transparent 75%,rgba(var(--v-theme-on-surface),.025) 75%),linear-gradient(45deg,rgba(var(--v-theme-on-surface),.025) 25%,transparent 25%,transparent 75%,rgba(var(--v-theme-on-surface),.025) 75%);background-position:0 0,8px 8px;background-size:16px 16px}.agent-artifact-placeholder[data-v-e957f066]{display:grid;place-items:center;align-content:center;gap:8px;padding:20px;color:rgba(var(--v-theme-on-surface),.56);text-align:center;font-size:.78rem}.agent-artifact-overlay[data-v-e957f066]{position:absolute;inset:0;pointer-events:none;background:rgb(var(--v-theme-surface))}.agent-artifact-overlay.error[data-v-e957f066]{pointer-events:auto}.agent-artifact-placeholder.error[data-v-e957f066]{color:rgb(var(--v-theme-error))}.agent-artifact-error-detail[data-v-e957f066]{max-width:100%;overflow:hidden;color:rgba(var(--v-theme-on-surface),.5);font-family:var(--font-mono, monospace);font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.agent-artifact-footer[data-v-e957f066]{display:flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;border-top:1px solid rgba(var(--v-border-color),.15)}.agent-artifact-name[data-v-e957f066]{min-width:0;flex:1 1 auto;overflow:hidden;color:rgba(var(--v-theme-on-surface),.62);font-family:var(--font-mono, monospace);font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.agent-artifact-preview-dialog[data-v-e957f066]{overflow:hidden}.agent-artifact-preview-header[data-v-e957f066]{display:flex;align-items:center;gap:8px;padding:5px 7px 5px 14px;font-size:.82rem}.agent-artifact-preview-header[data-v-e957f066]>:first-child{min-width:0;flex:1 1 auto}.agent-artifact-preview-body[data-v-e957f066]{display:grid;place-items:center;max-height:75dvh;overflow:auto;background:rgba(var(--v-theme-on-surface),.025)}.agent-artifact-preview-body img[data-v-e957f066]{max-width:100%;max-height:75dvh;object-fit:contain}@media(max-width:960px){.agent-artifact-grid[data-v-e957f066]{grid-template-columns:1fr}}.agent-command[data-v-7c2e41e4]{width:100%;display:block;flex:0 0 auto;min-inline-size:0;border-inline-start:2px solid rgba(var(--v-border-color),.3);background:rgba(var(--v-theme-surface-variant),.12)}.agent-command-main[data-v-7c2e41e4]{cursor:pointer;list-style:none;padding:7px 9px 8px}.agent-command-main[data-v-7c2e41e4]::-webkit-details-marker{display:none}.agent-command-main[data-v-7c2e41e4]:focus-visible{outline:2px solid rgb(var(--v-theme-primary))}.agent-command-label[data-v-7c2e41e4]{display:flex;align-items:center;gap:6px;color:rgba(var(--v-theme-on-surface),.62);font-size:.68rem;font-weight:600}.agent-command-status[data-v-7c2e41e4]{margin-inline-start:auto;display:inline-flex;align-items:center;gap:5px;font-weight:500;white-space:nowrap}.agent-command-status-dot[data-v-7c2e41e4]{width:6px;height:6px;border-radius:50%;background:rgba(var(--v-theme-on-surface),.42)}.agent-command[data-state=running] .agent-command-status-dot[data-v-7c2e41e4]{background:rgb(var(--v-theme-warning))}.agent-command[data-state=success] .agent-command-status-dot[data-v-7c2e41e4]{background:rgb(var(--v-theme-success))}.agent-command[data-state=error][data-v-7c2e41e4]{border-color:rgba(var(--v-theme-error),.36)}.agent-command[data-state=error] .agent-command-status-dot[data-v-7c2e41e4]{background:rgb(var(--v-theme-error))}.agent-command-line[data-v-7c2e41e4]{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:2px;margin-top:2px}.agent-command-line code[data-v-7c2e41e4]{min-width:0;display:block;overflow:hidden;color:rgba(var(--v-theme-on-surface),.92);font-size:.76rem;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.agent-command-copy[data-v-7c2e41e4],.agent-command-toggle[data-v-7c2e41e4]{opacity:.66}.agent-command-copy[data-v-7c2e41e4]:hover,.agent-command-toggle[data-v-7c2e41e4]:hover{opacity:1}.agent-command-toggle[data-v-7c2e41e4]{transition:transform .12s ease}.agent-command-toggle-open[data-v-7c2e41e4]{transform:rotate(180deg)}.agent-command-copy-error[data-v-7c2e41e4]{padding:6px 10px;color:rgb(var(--v-theme-error));font-size:.8rem}.agent-command-details[data-v-7c2e41e4]{border-top:1px solid rgba(var(--v-border-color),.18)}.agent-command-full[data-v-7c2e41e4],.agent-command-code[data-v-7c2e41e4]{background:rgba(var(--v-theme-on-surface),.025)}.agent-command-full[data-v-7c2e41e4] .code-block,.agent-command-code[data-v-7c2e41e4] .code-block{padding:9px 10px 11px;font-size:11.5px;line-height:1.55}.agent-command-meta[data-v-7c2e41e4]{display:flex;align-items:center;gap:10px;padding:5px 10px;border-top:1px solid rgba(var(--v-border-color),.12);color:rgba(var(--v-theme-on-surface),.5);font-size:.68rem}.agent-command-cwd[data-v-7c2e41e4]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-command-exit[data-v-7c2e41e4]{margin-inline-start:auto;white-space:nowrap}.agent-command-output-label[data-v-7c2e41e4]{padding:5px 10px;border-top:1px solid rgba(var(--v-border-color),.12);color:rgba(var(--v-theme-on-surface),.56);font-size:.68rem;font-weight:600}.agent-command-code.output[data-v-7c2e41e4] .code-block{color:rgba(var(--v-theme-on-surface),.8)}@media(max-width:960px){.agent-command-status[data-v-7c2e41e4]{font-size:0}.agent-command-status-dot[data-v-7c2e41e4]{margin-inline-end:1px}}.agent-command-output-plain[data-v-7c2e41e4]{max-height:45dvh;margin:0;padding:10px 12px;overflow:auto;font-size:.75rem;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}@layer vuetify-components{.v-combobox--chips.v-input--density-compact .v-field--variant-solo .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-inverted .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-filled .v-label.v-field-label--floating,.v-combobox--chips.v-input--density-compact .v-field--variant-solo-filled .v-label.v-field-label--floating{top:0}.v-combobox .v-field .v-text-field__prefix,.v-combobox .v-field .v-text-field__suffix,.v-combobox .v-field .v-field__input,.v-combobox .v-field .v-field__input>input,.v-combobox .v-field.v-field{cursor:text}.v-combobox .v-field .v-field__input>input{flex:1 1}.v-combobox .v-field input{min-width:64px}.v-combobox .v-field:not(.v-field--focused) input{min-width:0}.v-combobox .v-field--dirty .v-combobox__selection{margin-inline-end:2px}.v-combobox .v-combobox__selection-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v-combobox__content{overflow:hidden}.v-combobox__content{box-shadow:0 1px 2px rgba(var(--v-shadow-color),var(--v-shadow-key-opacity, .3)),0 2px 6px 2px rgba(var(--v-shadow-color),var(--v-shadow-ambient-opacity, .15));--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent)}.v-menu>.v-overlay__content.v-combobox__content{border-radius:4px}.v-combobox__content>.v-sheet{display:flex;flex-direction:column}.v-combobox__mask{background:rgb(var(--v-theme-surface-light))}.v-combobox__selection{display:inline-flex;align-items:center;height:1.5rem;letter-spacing:inherit;line-height:inherit;max-width:calc(100% - 4px)}.v-combobox__selection:first-child{margin-inline-start:0}.v-combobox--selecting-index .v-combobox__selection{opacity:var(--v-medium-emphasis-opacity)}.v-combobox--selecting-index .v-combobox__selection--selected{opacity:1}.v-combobox--selecting-index .v-field__input>input{caret-color:transparent}.v-combobox--single:not(.v-combobox--selection-slot).v-text-field input{flex:1 1;position:absolute;left:0;right:0;width:100%;padding-inline:inherit}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--active input{transition:none}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--dirty:not(.v-field--focused) input{opacity:0}.v-combobox--single:not(.v-combobox--selection-slot) .v-field--focused .v-combobox__selection{opacity:0}.v-combobox__menu-icon{margin-inline-start:4px;transition:.2s cubic-bezier(.4,0,.2,1)}.v-combobox--active-menu .v-combobox__menu-icon{transform:rotate(180deg)}}.agent-interaction-card[data-v-45060adf]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;min-inline-size:0;max-inline-size:100%;min-block-size:min-content;border-block:1px solid rgba(var(--v-border-color),var(--v-border-opacity));flex:1 1 0;overflow-wrap:anywhere}.agent-interaction-content[data-v-45060adf]{min-inline-size:0;min-block-size:0;flex:1 1 auto;padding:10px 12px;overflow:auto;overscroll-behavior:contain}.agent-interaction-footer[data-v-45060adf]{flex:0 0 auto;display:flex;flex-wrap:wrap;gap:8px;padding:8px 12px;border-block-start:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.agent-interaction-footer[data-v-45060adf] .v-btn{max-inline-size:100%;height:auto;padding:.5em .75em;white-space:normal}.agent-interaction-footer[data-v-45060adf] .v-btn__content{white-space:normal;overflow-wrap:anywhere}.agent-interaction-card--pinned .agent-interaction-content[data-v-45060adf]{contain:size}.agent-interaction-card--pinned[data-v-45060adf]{background:rgb(var(--v-theme-surface));border-color:rgba(var(--v-theme-warning),.42)}.agent-interaction-heading[data-v-45060adf]{display:flex;flex:0 0 auto;align-items:center;gap:8px;padding:8px 12px;font-size:.85rem;font-weight:600}.agent-interaction-title[data-v-45060adf]{overflow-wrap:anywhere;font-weight:600;margin-block-end:6px}.agent-interaction-description[data-v-45060adf]{margin:0 0 10px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:.8rem}.agent-interaction-actions[data-v-45060adf]{display:flex;flex-wrap:wrap;gap:8px;inline-size:100%}.agent-interaction-actions[data-v-45060adf]>.v-btn:not(.v-btn--icon){flex:1 1 auto}.agent-approval-more-menu[data-v-45060adf]{max-inline-size:90vw}.agent-approval-more-menu[data-v-45060adf] .v-list-item-subtitle{overflow-wrap:anywhere}.agent-interaction-actions[data-v-45060adf] .v-btn__content{min-inline-size:0;line-height:1.4}.agent-input-questions[data-v-45060adf],.agent-question[data-v-45060adf]{display:grid}.agent-input-questions[data-v-45060adf]{gap:14px}.agent-question[data-v-45060adf]{min-width:0;gap:6px}.agent-question-label[data-v-45060adf]{font-weight:600}.agent-question-text[data-v-45060adf],.agent-interaction-resolved[data-v-45060adf]{color:rgba(var(--v-theme-on-surface),.62)}.agent-question-text[data-v-45060adf]{font-size:.875rem}.agent-interaction-resolved[data-v-45060adf]{white-space:pre-wrap}.agent-provider-icon[data-v-9209bf7a]{display:block;flex:0 0 auto}.agent-activity[data-v-63e4d047]{min-inline-size:0;max-inline-size:100%;border-inline-start:2px solid rgba(var(--v-border-color),.3);overflow-wrap:anywhere}.agent-activity-heading[data-v-63e4d047]{display:flex;align-items:center;gap:8px;padding:8px 10px;cursor:pointer;list-style:none;font-size:.82rem;color:rgba(var(--v-theme-on-surface),.74)}.agent-activity-heading[data-v-63e4d047]::-webkit-details-marker{display:none}.agent-activity-heading[data-v-63e4d047]:focus-visible{outline:2px solid rgb(var(--v-theme-primary));outline-offset:-2px}.agent-activity-heading[data-v-63e4d047]:hover{background:rgba(var(--v-theme-on-surface),.04)}.agent-activity-title[data-v-63e4d047]{flex:1;min-inline-size:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.agent-activity-chevron[data-v-63e4d047]{flex-shrink:0}.agent-activity[open] .agent-activity-chevron[data-v-63e4d047]{transform:rotate(90deg)}.agent-activity-body[data-v-63e4d047]{min-inline-size:0;padding:0 10px 8px}.agent-tool-progress[data-v-63e4d047],.agent-inline-error[data-v-63e4d047]{padding-block:6px;white-space:pre-wrap}.agent-inline-error[data-v-63e4d047]{color:rgb(var(--v-theme-error))}.agent-file-change+.agent-file-change[data-v-63e4d047]{border-top:1px solid rgba(var(--v-border-color),var(--v-border-opacity))}.agent-file-change-name[data-v-63e4d047]{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding-block:8px}.agent-file-change-name span[data-v-63e4d047]{min-inline-size:0;overflow-wrap:anywhere}.agent-plan-steps[data-v-63e4d047]{padding-inline-start:20px}.agent-plan-steps li[data-v-63e4d047]{padding-block:4px}.agent-plan-step-status[data-v-63e4d047]{margin-inline-start:8px;font-size:.75rem;color:rgba(var(--v-theme-on-surface),.62)}.agent-plan-steps li[data-status=completed] .agent-plan-step-status[data-v-63e4d047]{color:rgb(var(--v-theme-success))}.agent-plan-steps li[data-status=inProgress] .agent-plan-step-status[data-v-63e4d047]{color:rgb(var(--v-theme-primary))}.agent-activity[data-v-63e4d047] .code-viewer,.agent-activity[data-v-63e4d047] .code-viewer-plain{min-inline-size:0;max-inline-size:100%}.agent-activity[data-v-63e4d047] .code-block{max-block-size:50dvh}.agent-turn[data-v-d9c9ba96]{min-width:0;display:flex;flex-direction:column;gap:10px;content-visibility:auto;contain-intrinsic-size:auto 160px}.agent-message-row[data-v-d9c9ba96]{min-width:0;display:flex}.agent-message-row.user[data-v-d9c9ba96]{justify-content:flex-end}.agent-message[data-v-d9c9ba96]{min-width:0;max-inline-size:100%;border-radius:8px;padding:11px 14px}.user-message[data-v-d9c9ba96]{position:relative;background:rgb(var(--v-theme-primary));color:rgb(var(--v-theme-on-primary))}.agent-turn-provider[data-v-d9c9ba96]{min-height:18px;display:inline-flex;align-items:center;align-self:flex-start;gap:5px;margin:1px 2px -4px;color:rgba(var(--v-theme-on-surface),.56);font-size:.7rem;font-weight:500;line-height:1}.agent-turn-status[data-v-d9c9ba96]{align-self:stretch;min-width:0;color:rgb(var(--v-theme-error));font-size:.76rem;white-space:pre-wrap;overflow-wrap:anywhere}.agent-response-text[data-v-d9c9ba96],.agent-response-command[data-v-d9c9ba96],.agent-reasoning-summary[data-v-d9c9ba96]{min-width:0;align-self:stretch}.agent-response-text[data-v-d9c9ba96]{padding:1px 2px;color:rgb(var(--v-theme-on-surface))}.agent-response-command[data-v-d9c9ba96]{display:block}.agent-response-text+.agent-response-text[data-v-d9c9ba96]{margin-top:-6px}.agent-response-text+.agent-response-command[data-v-d9c9ba96],.agent-response-command+.agent-response-text[data-v-d9c9ba96]{margin-top:-3px}.agent-message-source[data-v-d9c9ba96]{display:flex;align-items:center;justify-content:flex-end;gap:4px;margin-block-start:6px;color:currentColor;opacity:.72;font-size:.7rem}.agent-message-text[data-v-d9c9ba96],.agent-message-markdown[data-v-d9c9ba96],.agent-plan[data-v-d9c9ba96]{overflow-wrap:anywhere;line-height:1.55}.agent-plain-text[data-v-d9c9ba96]{white-space:pre-wrap}.agent-message-attachments[data-v-d9c9ba96]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.agent-item-progress[data-v-d9c9ba96]{margin-top:8px}.agent-notice[data-v-d9c9ba96]{align-self:center;max-inline-size:100%;color:rgba(var(--v-theme-on-surface),.62);font-size:.82rem;text-align:center;white-space:pre-wrap;overflow-wrap:anywhere}.agent-reasoning-summary[data-v-d9c9ba96]{padding:8px 12px;border-inline-start:2px solid rgba(var(--v-border-color),.3);overflow-wrap:anywhere}.agent-summary-label[data-v-d9c9ba96]{color:rgba(var(--v-theme-on-surface),.62);font-size:.72rem;margin-bottom:4px;font-weight:600}.agent-response-text[data-phase=commentary][data-v-d9c9ba96]{padding-inline-start:10px;border-inline-start:2px solid rgba(var(--v-border-color),.18);color:rgba(var(--v-theme-on-surface),.68);font-size:.875rem}.agent-compaction[data-v-d9c9ba96]{display:flex;flex-wrap:wrap;align-items:center;gap:6px;color:rgba(var(--v-theme-on-surface),.62);font-size:.8rem}.agent-compaction[data-status=failed][data-v-d9c9ba96]{color:rgb(var(--v-theme-error))}@media(max-width:960px){.agent-message[data-v-d9c9ba96]{width:auto;max-width:94%}.agent-turn-provider[data-v-d9c9ba96],.agent-response-text[data-v-d9c9ba96],.agent-response-command[data-v-d9c9ba96],.agent-reasoning-summary[data-v-d9c9ba96]{width:100%;max-width:100%}}@media(max-width:520px){.agent-message[data-v-d9c9ba96]{max-width:96%}}.agent-resolved-interaction[data-v-d9c9ba96]{min-inline-size:0}.agent-resolved-interaction>summary[data-v-d9c9ba96]{cursor:pointer;padding-block:.5em;overflow-wrap:anywhere;color:rgba(var(--v-theme-on-surface),.72)}.agent-resolved-interaction>summary .v-icon[data-v-d9c9ba96]{margin-inline-end:.5em}.agent-conversation-shell[data-v-f2a2b510]{position:relative;flex:1 1 0;min-height:0;overflow:hidden}.agent-conversation[data-v-f2a2b510]{width:100%;height:100%;min-height:0;overflow-y:auto;padding:20px;overflow-anchor:none}.agent-conversation-content[data-v-f2a2b510]{display:flex;flex-direction:column;gap:10px}.agent-back-to-latest[data-v-f2a2b510]{position:absolute;right:18px;bottom:14px;z-index:3}@media(max-width:960px){.agent-conversation[data-v-f2a2b510]{padding:14px}}@media(max-width:520px){.agent-conversation[data-v-f2a2b510]{padding:12px 10px}}.agent-show-older-turns[data-v-f2a2b510]{align-self:center}.agent-native-granular[data-v-e9075aa2]{display:grid;gap:2px;padding:10px 12px;border:1px solid rgba(var(--v-border-color),var(--v-border-opacity));border-radius:8px}.agent-native-granular .agent-setting-heading[data-v-e9075aa2]{margin-bottom:2px}.agent-native-granular[data-v-e9075aa2] .v-switch{min-height:34px}.agent-setting-heading[data-v-e9075aa2]{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px;font-size:.82rem}@layer vuetify-components{.v-slider .v-slider__container input{cursor:default;padding:0;width:100%;display:none}.v-slider>.v-input__append,.v-slider>.v-input__prepend{padding:0}.v-slider__container{position:relative;min-height:inherit;width:100%;height:100%;display:flex;justify-content:center;align-items:center;cursor:pointer}.v-input--disabled .v-slider__container{opacity:var(--v-disabled-opacity)}.v-input--error:not(.v-input--disabled) .v-slider__container{color:rgb(var(--v-theme-error))}.v-slider.v-input--horizontal{align-items:center}.v-slider.v-input--horizontal>.v-input__prepend{margin-inline-end:8px}.v-slider.v-input--horizontal>.v-input__append{margin-inline-start:8px}.v-slider.v-input--horizontal>.v-input__control{margin-inline:8px 8px;min-height:32px;display:flex;align-items:center}.v-slider.v-input--vertical{justify-content:center;margin-top:12px;margin-bottom:12px}.v-slider.v-input--vertical>.v-input__control{min-height:300px}.v-slider.v-input--disabled{pointer-events:none}.v-slider--has-labels>.v-input__control{margin-bottom:4px}.v-slider__label{margin-inline-end:12px}}@layer vuetify-components{.v-slider-thumb{touch-action:none;color:rgb(var(--v-theme-surface-variant))}.v-input--error:not(.v-input--disabled) .v-slider-thumb{color:inherit}.v-slider-thumb__label{background:color-mix(in srgb,rgb(var(--v-theme-surface-variant)) 70%,transparent);color:rgb(var(--v-theme-on-surface-variant))}.v-slider-thumb__label>.v-slider-thumb__label-wedge{background:inherit}.v-slider-thumb{outline:none;position:absolute;transition:.3s cubic-bezier(.25,.8,.5,1)}.v-slider-thumb__surface{cursor:pointer;width:var(--v-slider-thumb-size);height:var(--v-slider-thumb-size);border-radius:50%;-webkit-user-select:none;user-select:none;background-color:currentColor}@media(forced-colors:active){.v-slider-thumb__surface{background-color:highlight}}.v-slider-thumb__surface:before{transition:.3s cubic-bezier(.4,0,.2,1);content:"";color:inherit;top:0;left:0;width:100%;height:100%;border-radius:50%;background:currentColor;position:absolute;pointer-events:none;opacity:0}.v-slider-thumb__surface:after{content:"";width:42px;height:42px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.v-slider-thumb__label-container{position:absolute;transition:.2s cubic-bezier(.4,0,1,1)}.v-slider-thumb__label{display:flex;align-items:center;justify-content:center;font-size:.6875rem;min-width:35px;height:25px;border-radius:4px;padding:6px;position:absolute;-webkit-user-select:none;user-select:none;transition:.2s cubic-bezier(.4,0,1,1)}.v-slider-thumb__label>.v-slider-thumb__label-wedge{width:12px;height:12px;position:absolute}.v-slider-thumb__ripple{position:absolute;left:calc(var(--v-slider-thumb-size) / -2);top:calc(var(--v-slider-thumb-size) / -2);width:calc(var(--v-slider-thumb-size) * 2);height:calc(var(--v-slider-thumb-size) * 2);background:inherit}.v-slider.v-input--horizontal .v-slider-thumb{top:50%;transform:translateY(-50%);inset-inline-start:calc(var(--v-slider-thumb-position) - var(--v-slider-thumb-size) / 2)}.v-slider.v-input--horizontal .v-slider-thumb__label-container{left:calc(var(--v-slider-thumb-size) / 2);top:0}.v-slider.v-input--horizontal .v-slider-thumb__label{bottom:calc(var(--v-slider-thumb-size) / 2)}.v-locale--is-ltr.v-slider.v-input--horizontal .v-slider-thumb__label,.v-locale--is-ltr .v-slider.v-input--horizontal .v-slider-thumb__label{transform:translate(-50%)}.v-locale--is-rtl.v-slider.v-input--horizontal .v-slider-thumb__label,.v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-thumb__label{transform:translate(50%)}.v-slider.v-input--horizontal .v-slider-thumb__label>.v-slider-thumb__label-wedge{clip-path:polygon(50% 100%,0 50%,100% 50%);bottom:-5.8px}.v-slider.v-input--vertical .v-slider-thumb{top:calc(var(--v-slider-thumb-position) - var(--v-slider-thumb-size) / 2)}.v-slider.v-input--vertical .v-slider-thumb__label-container{top:calc(var(--v-slider-thumb-size) / 2);right:0}.v-slider.v-input--vertical .v-slider-thumb__label{top:-12.5px;left:calc(var(--v-slider-thumb-size) / 2)}.v-slider.v-input--vertical .v-slider-thumb__label>.v-slider-thumb__label-wedge{clip-path:polygon(0 50%,50% 0,50% 100%);left:-5.8px}.v-slider-thumb--focused .v-slider-thumb__surface:before{transform:scale(2);opacity:var(--v-focus-opacity)}.v-slider-thumb--pressed{transition:none}.v-slider-thumb--pressed .v-slider-thumb__surface:before{opacity:var(--v-pressed-opacity)}@media(hover:hover){.v-slider-thumb:hover .v-slider-thumb__surface:before{transform:scale(2)}.v-slider-thumb:hover:not(.v-slider-thumb--focused) .v-slider-thumb__surface:before{opacity:var(--v-hover-opacity)}}}@layer vuetify-components{.v-slider-track__background{background-color:rgb(var(--v-theme-surface-variant))}@media(forced-colors:active){.v-slider-track__background{background-color:highlight}}.v-slider-track__fill{background-color:rgb(var(--v-theme-surface-variant))}@media(forced-colors:active){.v-slider-track__fill{background-color:highlight}}.v-slider-track__tick{background-color:rgb(var(--v-theme-surface-variant))}.v-slider-track__tick--filled{background-color:rgb(var(--v-theme-surface-light))}.v-slider-track{border-radius:6px}@media(forced-colors:active){.v-slider-track{border:thin solid buttontext}}.v-slider-track__background,.v-slider-track__fill{position:absolute;transition:.3s cubic-bezier(.25,.8,.5,1);border-radius:inherit}.v-slider--pressed .v-slider-track__background,.v-slider--pressed .v-slider-track__fill{transition:none}.v-input--error:not(.v-input--disabled) .v-slider-track__background,.v-input--error:not(.v-input--disabled) .v-slider-track__fill{background-color:currentColor}.v-slider-track__ticks{height:100%;width:100%;position:relative}.v-slider-track__tick{position:absolute;opacity:0;transition:.2s opacity cubic-bezier(.4,0,.2,1);border-radius:2px;width:var(--v-slider-tick-size);height:var(--v-slider-tick-size);transform:translate(calc(var(--v-slider-tick-size) / -2),calc(var(--v-slider-tick-size) / -2))}.v-locale--is-ltr.v-slider-track__tick--first .v-slider-track__tick-label,.v-locale--is-ltr .v-slider-track__tick--first .v-slider-track__tick-label{transform:none}.v-locale--is-rtl.v-slider-track__tick--first .v-slider-track__tick-label,.v-locale--is-rtl .v-slider-track__tick--first .v-slider-track__tick-label{transform:translate(100%)}.v-locale--is-ltr.v-slider-track__tick--last .v-slider-track__tick-label,.v-locale--is-ltr .v-slider-track__tick--last .v-slider-track__tick-label{transform:translate(-100%)}.v-locale--is-rtl.v-slider-track__tick--last .v-slider-track__tick-label,.v-locale--is-rtl .v-slider-track__tick--last .v-slider-track__tick-label{transform:none}.v-slider-track__tick-label{position:absolute;-webkit-user-select:none;user-select:none;white-space:nowrap}.v-slider.v-input--horizontal .v-slider-track{display:flex;align-items:center;width:100%;height:calc(var(--v-slider-track-size) + 2px);touch-action:pan-y}.v-slider.v-input--horizontal .v-slider-track__background{height:var(--v-slider-track-size)}.v-slider.v-input--horizontal .v-slider-track__fill{height:inherit}.v-slider.v-input--horizontal .v-slider-track__tick{margin-top:calc(calc(var(--v-slider-track-size) + 2px) / 2)}.v-locale--is-rtl.v-slider.v-input--horizontal .v-slider-track__tick,.v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-track__tick{transform:translate(calc(var(--v-slider-tick-size) / 2),calc(var(--v-slider-tick-size) / -2))}.v-slider.v-input--horizontal .v-slider-track__tick .v-slider-track__tick-label{margin-top:calc(var(--v-slider-track-size) / 2 + 8px)}.v-locale--is-ltr.v-slider.v-input--horizontal .v-slider-track__tick .v-slider-track__tick-label,.v-locale--is-ltr .v-slider.v-input--horizontal .v-slider-track__tick .v-slider-track__tick-label{transform:translate(-50%)}.v-locale--is-rtl.v-slider.v-input--horizontal .v-slider-track__tick .v-slider-track__tick-label,.v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-track__tick .v-slider-track__tick-label{transform:translate(50%)}.v-slider.v-input--horizontal .v-slider-track__tick--first{margin-inline-start:calc(var(--v-slider-tick-size) + 1px)}.v-locale--is-ltr.v-slider.v-input--horizontal .v-slider-track__tick--first .v-slider-track__tick-label,.v-locale--is-ltr .v-slider.v-input--horizontal .v-slider-track__tick--first .v-slider-track__tick-label,.v-locale--is-rtl.v-slider.v-input--horizontal .v-slider-track__tick--first .v-slider-track__tick-label,.v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-track__tick--first .v-slider-track__tick-label{transform:translate(0)}.v-slider.v-input--horizontal .v-slider-track__tick--last{margin-inline-start:calc(100% - var(--v-slider-tick-size) - 1px)}.v-locale--is-ltr.v-slider.v-input--horizontal .v-slider-track__tick--last .v-slider-track__tick-label,.v-locale--is-ltr .v-slider.v-input--horizontal .v-slider-track__tick--last .v-slider-track__tick-label{transform:translate(-100%)}.v-locale--is-rtl.v-slider.v-input--horizontal .v-slider-track__tick--last .v-slider-track__tick-label,.v-locale--is-rtl .v-slider.v-input--horizontal .v-slider-track__tick--last .v-slider-track__tick-label{transform:translate(100%)}.v-slider.v-input--vertical .v-slider-track{height:100%;display:flex;justify-content:center;width:calc(var(--v-slider-track-size) + 2px);touch-action:pan-x}.v-slider.v-input--vertical .v-slider-track__background{width:var(--v-slider-track-size)}.v-slider.v-input--vertical .v-slider-track__fill{width:inherit}.v-slider.v-input--vertical .v-slider-track__ticks{height:100%}.v-slider.v-input--vertical .v-slider-track__tick{margin-inline-start:calc(calc(var(--v-slider-track-size) + 2px) / 2);transform:translate(calc(var(--v-slider-tick-size) / -2),calc(var(--v-slider-tick-size) / 2))}.v-locale--is-rtl.v-slider.v-input--vertical .v-slider-track__tick,.v-locale--is-rtl .v-slider.v-input--vertical .v-slider-track__tick{transform:translate(calc(var(--v-slider-tick-size) / 2),calc(var(--v-slider-tick-size) / 2))}.v-slider.v-input--vertical .v-slider-track__tick--first{bottom:calc(0% + var(--v-slider-tick-size) + 1px)}.v-slider.v-input--vertical .v-slider-track__tick--last{bottom:calc(100% - var(--v-slider-tick-size) - 1px)}.v-slider.v-input--vertical .v-slider-track__tick .v-slider-track__tick-label{margin-inline-start:calc(var(--v-slider-track-size) / 2 + 12px);transform:translateY(-50%)}.v-slider-track__ticks--always-show .v-slider-track__tick,.v-slider--focused .v-slider-track__tick{opacity:1}.v-slider-track__background--opacity{opacity:.38}}.agent-model-settings-dialog[data-v-33309823]{display:grid;gap:18px}.agent-model-select-host[data-v-33309823]{min-width:0}.agent-model-select-menu{overflow-x:hidden}.agent-model-select-menu .v-list-item{min-width:0}.agent-model-select-menu .v-list-item-title,.agent-model-select-menu .v-list-item-subtitle{min-width:0;overflow-wrap:anywhere}.agent-model-select-menu .v-list-item-subtitle{white-space:normal}.agent-reasoning-slider[data-v-33309823]{min-width:0}.agent-setting-heading[data-v-33309823]{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:6px;font-size:.82rem}.agent-setting-heading strong[data-v-33309823]{color:rgb(var(--v-theme-primary));font-weight:600;text-align:end}.agent-reasoning-slider[data-v-33309823] .v-slider{margin-inline:4px}.agent-reasoning-slider[data-v-33309823] .v-slider-track__background{background:rgba(var(--v-theme-on-surface),.24);opacity:1}.agent-reasoning-slider[data-v-33309823] .v-slider-track__fill,.agent-reasoning-slider[data-v-33309823] .v-slider-thumb__surface{background:rgb(var(--v-theme-primary));opacity:1}.agent-reasoning-slider[data-v-33309823] .v-slider-thumb__surface{box-shadow:0 0 0 2px rgb(var(--v-theme-surface)),0 1px 5px #00000052}.agent-reasoning-slider[data-v-33309823] .v-slider-track__tick{background:rgba(var(--v-theme-on-surface),.58);opacity:1}.agent-reasoning-slider[data-v-33309823] .v-slider-track__tick--filled{background:rgb(var(--v-theme-primary))}.agent-setting-description[data-v-33309823]{margin-top:2px;color:rgba(var(--v-theme-on-surface),.62);font-size:.74rem;line-height:1.4}.agent-review-fields[data-v-c141bca2]{display:grid;gap:14px}.agent-review-error[data-v-c141bca2]{color:rgb(var(--v-theme-error))}.agent-session-header[data-v-1cae8321]{position:relative;z-index:2;flex:0 0 auto;background:rgb(var(--v-theme-surface))}.agent-session-header-info[data-v-1cae8321]{flex:1 1 auto;min-width:0}.agent-session-provider-title[data-v-1cae8321]{display:flex;min-width:0;align-items:center;gap:7px}.agent-session-model-label[data-v-1cae8321]{min-width:0;overflow:hidden;color:rgba(var(--v-theme-on-surface),.62);text-overflow:ellipsis;white-space:nowrap}.agent-session-header-status[data-v-1cae8321]{flex:0 0 auto;align-self:center;display:inline-flex;min-height:30px;align-items:center;gap:7px;padding:4px 8px;border-radius:8px;color:rgba(var(--v-theme-on-surface),.74);font-size:.75rem;white-space:nowrap}.agent-session-status-dot[data-v-1cae8321]{width:8px;height:8px;border-radius:50%;background:rgba(var(--v-theme-on-surface),.4)}.agent-session-status-dot[data-status=idle][data-v-1cae8321]{background:rgb(var(--v-theme-success))}.agent-session-status-dot[data-status=running][data-v-1cae8321]{background:rgb(var(--v-theme-primary))}.agent-session-status-dot[data-status=waiting_input][data-v-1cae8321]{background:rgb(var(--v-theme-warning))}.agent-session-status-dot[data-status=waiting_input][data-attention=input][data-v-1cae8321]{background:rgb(var(--v-theme-info))}.agent-session-status-dot[data-status=error][data-v-1cae8321]{background:rgb(var(--v-theme-error))}.agent-session-header-switch[data-v-1cae8321]{flex:0 0 auto;align-self:center;min-width:0;padding-inline:9px;font-size:.75rem;text-transform:none}.agent-session-header-switch[data-v-1cae8321] .v-btn__prepend{margin-inline-end:4px}.agent-session-header-switch[data-v-1cae8321] .v-btn__append{margin-inline-start:3px}.agent-session-switch-menu[data-v-1cae8321]{padding:4px}.agent-session-switch-menu[data-v-1cae8321] .v-list-item{min-height:32px;padding-inline:7px;border-radius:7px}.agent-session-switch-menu[data-v-1cae8321] .v-list-item__prepend{width:auto;margin-inline-end:7px}.agent-session-switch-provider-icon[data-v-1cae8321]{width:21px;height:21px;display:grid;place-items:center}.agent-session-token-usage[data-v-1cae8321]{margin-top:4px;color:rgba(var(--v-theme-on-surface),.62);font-size:.72rem}@media(max-width:1100px){.agent-session-header[data-v-1cae8321]{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:start;gap:5px 8px;padding-block:10px}.agent-session-header-info[data-v-1cae8321]{grid-column:2}.agent-session-header-status[data-v-1cae8321]{grid-column:3}.agent-session-header-switch[data-v-1cae8321]{grid-column:4;margin-inline-start:0}.agent-session-provider-title[data-v-1cae8321]{flex-wrap:wrap}}@media(max-width:520px){.agent-session-header[data-v-1cae8321]{padding-inline:10px}.agent-session-header-status[data-v-1cae8321]{width:30px;min-width:30px;justify-content:center;padding-inline:0}.agent-session-header-status-text[data-v-1cae8321]{display:none}.agent-session-header-switch[data-v-1cae8321]{width:38px;min-width:38px;padding-inline:5px}.agent-session-header-switch[data-v-1cae8321] .v-btn__content{display:none}.agent-session-header-switch[data-v-1cae8321] .v-btn__prepend{margin-inline:0}.agent-session-header-switch[data-v-1cae8321] .v-btn__append{display:none}}.agent-create[data-v-8cdd509d]{display:grid;gap:10px;padding:14px}.agent-provider-strip[data-v-5b1c74e5]{flex:0 0 auto;min-height:42px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 12px}.agent-provider-pill[data-v-5b1c74e5]{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border:1px solid rgba(var(--v-border-color),.18);border-radius:999px;background:rgba(var(--v-theme-on-surface),.045);color:rgba(var(--v-theme-on-surface),.72);font-size:.7rem;font-weight:500;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.agent-provider-pill[data-v-5b1c74e5]:hover,.agent-provider-pill[data-v-5b1c74e5]:focus-visible,.agent-provider-pill[data-expanded=true][data-v-5b1c74e5]{border-color:rgba(var(--v-theme-primary),.46);background:rgba(var(--v-theme-primary),.09);outline:none}.agent-provider-pill-name[data-v-5b1c74e5]{line-height:1}.agent-provider-pill-dot[data-v-5b1c74e5]{width:6px;height:6px;border-radius:50%;background:rgba(var(--v-theme-on-surface),.32)}.agent-provider-pill[data-state=ready] .agent-provider-pill-dot[data-v-5b1c74e5]{background:rgb(var(--v-theme-success))}.agent-provider-pill[data-state=warning] .agent-provider-pill-dot[data-v-5b1c74e5]{background:rgb(var(--v-theme-warning))}.agent-provider-pill[data-state=unavailable][data-v-5b1c74e5]{opacity:.55}.agent-provider-pill[data-state=unavailable] .agent-provider-pill-dot[data-v-5b1c74e5]{background:rgb(var(--v-theme-error))}.agent-provider-quota[data-v-5b1c74e5]{flex:0 0 auto;padding:8px 12px 10px;border-top:1px solid rgba(var(--v-border-color),.12)}.agent-provider-quota-header[data-v-5b1c74e5],.agent-provider-quota-extra[data-v-5b1c74e5]{display:flex;align-items:center;justify-content:space-between;gap:8px;color:rgba(var(--v-theme-on-surface),.7);font-size:.68rem;font-weight:600}.agent-provider-quota-header>span[data-v-5b1c74e5]:last-child{color:rgba(var(--v-theme-on-surface),.46);font-size:.62rem;font-weight:500;text-transform:uppercase}.agent-provider-quota-unavailable[data-v-5b1c74e5]{margin-top:7px;color:rgba(var(--v-theme-on-surface),.46);font-size:.64rem;line-height:1.4}.agent-provider-quota-row[data-v-5b1c74e5]{display:grid;grid-template-columns:max-content minmax(0,1fr) auto;align-items:center;gap:6px 8px;margin-top:7px}.agent-provider-quota-label[data-v-5b1c74e5],.agent-provider-quota-value[data-v-5b1c74e5],.agent-provider-quota-reset[data-v-5b1c74e5]{font-size:.64rem;white-space:nowrap}.agent-provider-quota-label[data-v-5b1c74e5]{color:rgba(var(--v-theme-on-surface),.64)}.agent-provider-quota-value[data-v-5b1c74e5],.agent-provider-quota-reset[data-v-5b1c74e5]{text-align:end}.agent-provider-quota-value[data-v-5b1c74e5]{color:rgba(var(--v-theme-on-surface),.72)}.agent-provider-quota-reset[data-v-5b1c74e5]{grid-column:2 / 4;margin-top:-3px;color:rgba(var(--v-theme-on-surface),.4)}.agent-provider-quota-track[data-v-5b1c74e5]{height:4px;overflow:hidden;border-radius:999px;background:rgba(var(--v-theme-on-surface),.1)}.agent-provider-quota-fill[data-v-5b1c74e5]{display:block;height:100%;border-radius:inherit;background:rgb(var(--v-theme-primary))}.agent-provider-quota-extra[data-v-5b1c74e5]{margin-top:8px;padding-top:7px;border-top:1px solid rgba(var(--v-border-color),.08);font-weight:500}.agent-sidebar[data-v-e6bcf543]{min-height:0;overflow:hidden;display:flex;flex-direction:column;color:rgb(var(--v-theme-on-surface))}.agent-error[data-v-e6bcf543]{display:flex;gap:8px;align-items:center;padding:10px 14px;color:rgb(var(--v-theme-error));font-size:.875rem;white-space:pre-wrap;overflow-wrap:anywhere}.agent-session-list[data-v-e6bcf543]{min-height:0;overflow-y:auto;flex:1 1 auto}.agent-session-provider-icon[data-v-e6bcf543]{margin-inline-end:10px;color:rgba(var(--v-theme-on-surface),.72)}.agent-status-dot[data-v-e6bcf543]{width:8px;height:8px;border-radius:50%;background:rgba(var(--v-theme-on-surface),.4)}.agent-status-dot[data-status=idle][data-v-e6bcf543]{background:rgb(var(--v-theme-success))}.agent-status-dot[data-status=running][data-v-e6bcf543]{background:rgb(var(--v-theme-primary))}.agent-status-dot[data-status=waiting_input][data-v-e6bcf543]{background:rgb(var(--v-theme-warning))}.agent-status-dot[data-status=waiting_input][data-attention=input][data-v-e6bcf543]{background:rgb(var(--v-theme-info))}.agent-status-dot[data-status=error][data-v-e6bcf543]{background:rgb(var(--v-theme-error))}@media(max-width:1100px){.agent-sidebar[data-v-e6bcf543]{min-height:0;max-height:calc(100dvh - var(--v-layout-top, 0px) - var(--app-content-block-start, 0px) - var(--app-content-block-end, 0px))}}.agent-layout[data-v-3189043d]{display:grid;grid-template-columns:minmax(0,.34fr) minmax(0,1fr);gap:16px;grid-template-rows:minmax(0,1fr);flex:1 1 0;min-block-size:0;min-inline-size:0;color:rgb(var(--v-theme-on-surface))}.agent-main[data-v-3189043d]{min-height:0;overflow:hidden;display:flex;flex-direction:column;color:rgb(var(--v-theme-on-surface))}.agent-session-controls-button[data-v-3189043d]{flex:0 0 auto}.agent-session-controls-menu[data-v-3189043d]{max-width:90vw}.agent-pending-interactions[data-v-3189043d]{padding-inline:12px;display:flex;flex-direction:column;min-block-size:min-content;gap:8px;flex:1 1 0;overflow:auto;overscroll-behavior:contain}@media(max-width:1100px){.agent-layout[data-v-3189043d]{grid-template-columns:1fr;min-height:0}}.agent-error[data-v-3189043d]{white-space:pre-wrap;overflow-wrap:anywhere}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
@layer vuetify-components{.v-snackbar{justify-content:center;z-index:10000;margin:8px;margin-inline-end:calc(8px + var(--v-scrollbar-offset));padding:var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left);--v-snackbar-current-offset: var(--v-snackbar-offset);transform:translateY(calc(var(--v-snackbar-direction) * (var(--v-snackbar-current-offset) + var(--v-snackbar-mobile-notch, 0px))));transition:transform .2s cubic-bezier(.4,0,.2,1)}.v-snackbar:not(.v-snackbar--center):not(.v-snackbar--top){align-items:flex-end}.v-snackbar__wrapper{align-items:center;display:flex;flex-wrap:wrap;max-width:672px;min-height:48px;min-width:344px;overflow:hidden;padding:0;transition:.35s cubic-bezier(.4,0,.2,1);transition-property:height,width}.v-snackbar__wrapper{border-radius:4px}.v-snackbar--variant-plain,.v-snackbar--variant-outlined,.v-snackbar--variant-text,.v-snackbar--variant-tonal{background:transparent;color:inherit}.v-snackbar--variant-plain{opacity:.62}.v-snackbar--variant-plain:focus,.v-snackbar--variant-plain:hover{opacity:1}.v-snackbar--variant-plain .v-snackbar__overlay{display:none}.v-snackbar--variant-elevated,.v-snackbar--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-snackbar--variant-elevated{box-shadow:0 1px 2px rgba(var(--v-shadow-color),var(--v-shadow-key-opacity, .3)),0 2px 6px 2px rgba(var(--v-shadow-color),var(--v-shadow-ambient-opacity, .15));--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent)}.v-snackbar--variant-flat{box-shadow:0 0 rgba(var(--v-shadow-color),var(--v-shadow-key-opacity, .3)),0 0 rgba(var(--v-shadow-color),var(--v-shadow-ambient-opacity, .15));--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 0%, transparent)}.v-snackbar--variant-outlined{border:thin solid currentColor}.v-snackbar--variant-text .v-snackbar__overlay{background:currentColor}.v-snackbar--variant-tonal .v-snackbar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;inset:0;pointer-events:none}.v-snackbar .v-snackbar__underlay{position:absolute}.v-snackbar--variant-outlined,.v-snackbar--variant-tonal{background:rgb(var(--v-theme-surface))}@media(forced-colors:active){.v-snackbar__wrapper{border:thick solid}}.v-snackbar__header{flex-basis:100%}.v-snackbar__header:after{content:"";display:block;flex-basis:100%}.v-snackbar__prepend{align-self:center;display:flex;margin-inline:16px 12px}.v-snackbar__prepend+.v-snackbar__content{padding-inline-start:0}.v-snackbar__title{font-weight:700}.v-snackbar__content{flex:1 1;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1.4285714286;margin-right:auto;padding:14px 16px;text-align:initial}.v-snackbar__actions{align-items:center;align-self:center;display:flex;margin-inline-end:8px}.v-snackbar__actions>.v-btn{padding:0 8px;min-width:auto}.v-snackbar__timer{width:100%;position:absolute}.v-snackbar__timer--top{top:0}.v-snackbar__timer--bottom{bottom:0}.v-snackbar__timer .v-progress-linear{transition:.2s linear}.v-snackbar--absolute{position:absolute;z-index:1}.v-snackbar--vertical .v-snackbar__actions{flex-basis:100%;justify-content:end;margin-bottom:8px}.v-snackbar--vertical .v-snackbar__actions:before{content:"";display:block;flex-basis:100%}.v-snackbar--center{align-items:center;justify-content:center}.v-snackbar--top{align-items:flex-start}@media(max-width:839.98px){.v-snackbar--top{--v-snackbar-mobile-notch: max(env(safe-area-inset-top), 0px)}}.v-snackbar--bottom{align-items:flex-end}@media(max-width:839.98px){.v-snackbar--bottom{--v-snackbar-mobile-notch: max(env(safe-area-inset-bottom), 0px)}}.v-snackbar--left,.v-snackbar--start{justify-content:flex-start}.v-snackbar--right,.v-snackbar--end{justify-content:flex-end}.v-snackbar--collapsed{--v-snackbar-current-offset: calc(var(--v-snackbar-gap) * var(--v-snackbar-index, 0))}.v-snackbar--collapsed .v-snackbar__wrapper{min-width:0;width:calc(var(--v-snackbar-collapsed-width) - 2 * var(--v-snackbar-gap) * var(--v-snackbar-index, 0));height:var(--v-snackbar-collapsed-height)}.v-snackbar--collapsed .v-snackbar__wrapper>*{opacity:0}.v-snackbar--collapsed.v-snackbar--start .v-snackbar__wrapper,.v-snackbar--collapsed.v-snackbar--left .v-snackbar__wrapper{transform:translate(calc(var(--v-snackbar-gap) * var(--v-snackbar-index, 0)))}.v-snackbar--collapsed.v-snackbar--end .v-snackbar__wrapper,.v-snackbar--collapsed.v-snackbar--right .v-snackbar__wrapper{transform:translate(calc(-1 * var(--v-snackbar-gap) * var(--v-snackbar-index, 0)))}.v-snackbar--collapsed .v-progress-linear{opacity:0}.v-snackbar .v-avatar{background:transparent}}@layer vuetify-final.transitions{.v-snackbar-transition-enter-active,.v-snackbar-transition-leave-active{transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-snackbar-transition-enter-active{transition-property:opacity,transform}@media(prefers-reduced-motion:reduce){.v-snackbar-transition-enter-active{transition-property:opacity}}.v-snackbar-transition-enter-from{opacity:0;transform:scale(.8)}.v-snackbar-transition-leave-active{transition-property:opacity}.v-snackbar-transition-leave-to{opacity:0}}
|
|
1
|
+
@layer vuetify-components{.v-snackbar{justify-content:center;z-index:10000;margin:8px;margin-inline-end:calc(8px + var(--v-scrollbar-offset));padding:var(--v-layout-top) var(--v-layout-right) var(--v-layout-bottom) var(--v-layout-left);--v-snackbar-current-offset: var(--v-snackbar-offset);transform:translateY(calc(var(--v-snackbar-direction) * (var(--v-snackbar-current-offset) + var(--v-snackbar-mobile-notch, 0px))));transition:transform .2s cubic-bezier(.4,0,.2,1)}.v-snackbar:not(.v-snackbar--center):not(.v-snackbar--top){align-items:flex-end}.v-snackbar__wrapper{align-items:center;display:flex;flex-wrap:wrap;max-width:672px;min-height:48px;min-width:344px;overflow:hidden;padding:0;transition:.35s cubic-bezier(.4,0,.2,1);transition-property:height,width}.v-snackbar__wrapper{border-radius:4px}.v-snackbar--variant-plain,.v-snackbar--variant-outlined,.v-snackbar--variant-text,.v-snackbar--variant-tonal{background:transparent;color:inherit}.v-snackbar--variant-plain{opacity:.62}.v-snackbar--variant-plain:focus,.v-snackbar--variant-plain:hover{opacity:1}.v-snackbar--variant-plain .v-snackbar__overlay{display:none}.v-snackbar--variant-elevated,.v-snackbar--variant-flat{background:rgb(var(--v-theme-surface-variant));color:rgb(var(--v-theme-on-surface-variant))}.v-snackbar--variant-elevated{box-shadow:0 1px 2px rgba(var(--v-shadow-color),var(--v-shadow-key-opacity, .3)),0 2px 6px 2px rgba(var(--v-shadow-color),var(--v-shadow-ambient-opacity, .15));--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 4%, transparent)}.v-snackbar--variant-flat{box-shadow:0 0 rgba(var(--v-shadow-color),var(--v-shadow-key-opacity, .3)),0 0 rgba(var(--v-shadow-color),var(--v-shadow-ambient-opacity, .15));--v-elevation-overlay: color-mix(in srgb, var(--v-elevation-overlay-color) 0%, transparent)}.v-snackbar--variant-outlined{border:thin solid currentColor}.v-snackbar--variant-text .v-snackbar__overlay{background:currentColor}.v-snackbar--variant-tonal .v-snackbar__underlay{background:currentColor;opacity:var(--v-activated-opacity);border-radius:inherit;inset:0;pointer-events:none}.v-snackbar .v-snackbar__underlay{position:absolute}.v-snackbar--variant-outlined,.v-snackbar--variant-tonal{background:rgb(var(--v-theme-surface))}@media(forced-colors:active){.v-snackbar__wrapper{border:thick solid}}.v-snackbar__header{flex-basis:100%}.v-snackbar__header:after{content:"";display:block;flex-basis:100%}.v-snackbar__prepend{align-self:center;display:flex;margin-inline:16px 12px}.v-snackbar__prepend+.v-snackbar__content{padding-inline-start:0}.v-snackbar__title{font-weight:700}.v-snackbar__content{flex:1 1;font-size:.875rem;font-weight:400;letter-spacing:.0178571429em;line-height:1.4285714286;margin-right:auto;padding:14px 16px;text-align:initial}.v-snackbar__actions{align-items:center;align-self:center;display:flex;margin-inline-end:8px}.v-snackbar__actions>.v-btn{padding:0 8px;min-width:auto}.v-snackbar__timer{width:100%;position:absolute}.v-snackbar__timer--top{top:0}.v-snackbar__timer--bottom{bottom:0}.v-snackbar__timer .v-progress-linear{transition:.2s linear}.v-snackbar--absolute{position:absolute;z-index:1}.v-snackbar--vertical .v-snackbar__actions{flex-basis:100%;justify-content:end;margin-bottom:8px}.v-snackbar--vertical .v-snackbar__actions:before{content:"";display:block;flex-basis:100%}.v-snackbar--center{align-items:center;justify-content:center}.v-snackbar--top{align-items:flex-start}@media(max-width:839.98px){.v-snackbar--top{--v-snackbar-mobile-notch: max(env(safe-area-inset-top), 0px)}}.v-snackbar--bottom{align-items:flex-end}@media(max-width:839.98px){.v-snackbar--bottom{--v-snackbar-mobile-notch: max(env(safe-area-inset-bottom), 0px)}}.v-snackbar--left,.v-snackbar--start{justify-content:flex-start}.v-snackbar--right,.v-snackbar--end{justify-content:flex-end}.v-snackbar--collapsed{--v-snackbar-current-offset: calc(var(--v-snackbar-gap) * var(--v-snackbar-index, 0))}.v-snackbar--collapsed .v-snackbar__wrapper{min-width:0;width:calc(var(--v-snackbar-collapsed-width) - 2 * var(--v-snackbar-gap) * var(--v-snackbar-index, 0));height:var(--v-snackbar-collapsed-height)}.v-snackbar--collapsed .v-snackbar__wrapper>*{opacity:0}.v-snackbar--collapsed.v-snackbar--start .v-snackbar__wrapper,.v-snackbar--collapsed.v-snackbar--left .v-snackbar__wrapper{transform:translate(calc(var(--v-snackbar-gap) * var(--v-snackbar-index, 0)))}.v-snackbar--collapsed.v-snackbar--end .v-snackbar__wrapper,.v-snackbar--collapsed.v-snackbar--right .v-snackbar__wrapper{transform:translate(calc(-1 * var(--v-snackbar-gap) * var(--v-snackbar-index, 0)))}.v-snackbar--collapsed .v-progress-linear{opacity:0}.v-snackbar .v-avatar{background:transparent}}@layer vuetify-final.transitions{.v-snackbar-transition-enter-active,.v-snackbar-transition-leave-active{transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.v-snackbar-transition-enter-active{transition-property:opacity,transform}@media(prefers-reduced-motion:reduce){.v-snackbar-transition-enter-active{transition-property:opacity}}.v-snackbar-transition-enter-from{opacity:0;transform:scale(.8)}.v-snackbar-transition-leave-active{transition-property:opacity}.v-snackbar-transition-leave-to{opacity:0}}.cloud-view,.cloud-panel{width:100%}.cloud-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 18px}.cloud-row-main{min-width:0}.cloud-row-title{font-size:14px;font-weight:500}.cloud-row-value{overflow:hidden;margin-top:3px;color:rgb(var(--v-theme-on-surface),.52);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.cloud-row .v-switch,.cloud-row .v-btn{flex:0 0 auto}.cloud-installation-row .cloud-row-main{min-width:0}.cloud-row-actions{display:flex;flex:0 0 auto;align-items:center;gap:4px}.cloud-restore-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;padding:12px 18px}.cloud-loading{padding:16px 18px}@media(max-width:640px){.cloud-row-actions{gap:2px}}.installation-id{overflow-wrap:anywhere;white-space:normal}
|