From 80484260aafe1803bae5f29f905a901b6a9f3876 Mon Sep 17 00:00:00 2001 From: npmrun <1549469775@qq.com> Date: Sat, 15 Aug 2026 11:30:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=9C=A8=E7=BB=84=E4=BB=B6=E5=8A=A0?= =?UTF-8?q?=E8=BD=BD=E6=97=B6=E8=87=AA=E5=8A=A8=E8=8E=B7=E5=8F=96=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E5=88=97=E8=A1=A8=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BB=A3?= =?UTF-8?q?=E7=90=86=E5=88=87=E6=8D=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/agent/AgentSwitcher.vue | 4 +--- app/composables/useAgentSessions.ts | 24 +++++++++++++++++++++++- packages/drizzle-pkg/db.sqlite | Bin 692224 -> 765952 bytes 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/components/agent/AgentSwitcher.vue b/app/components/agent/AgentSwitcher.vue index 3695e4f..ece1051 100644 --- a/app/components/agent/AgentSwitcher.vue +++ b/app/components/agent/AgentSwitcher.vue @@ -36,9 +36,6 @@ async function loadAgents() { } function toggle() { - if (!open.value && agents.value.length === 0) { - loadAgents(); - } open.value = !open.value; } @@ -56,6 +53,7 @@ function handleClickOutside(e: MouseEvent) { } onMounted(() => { + loadAgents(); document.addEventListener("click", handleClickOutside); }); diff --git a/app/composables/useAgentSessions.ts b/app/composables/useAgentSessions.ts index 596bcd0..16c0f20 100644 --- a/app/composables/useAgentSessions.ts +++ b/app/composables/useAgentSessions.ts @@ -28,6 +28,16 @@ export function useAgentSessions(agentSlug: string) { sessions.value.find((s) => s.id === currentSessionId.value) ?? null, ); + function syncSessionToUrl(id: string | null) { + if (import.meta.server) return; + const route = useRoute(); + const router = useRouter(); + const current = route.query.session; + const target = id ?? undefined; + if (current === target) return; + router.replace({ query: { ...route.query, session: target } }); + } + async function fetchSessions() { loading.value = true; try { @@ -62,17 +72,20 @@ export function useAgentSessions(agentSlug: string) { async function selectSession(id: string) { currentSessionId.value = id; + syncSessionToUrl(id); } async function newSession(): Promise { const latest = sessions.value[0]; if (latest && latest.lastActiveAt === latest.createdAt) { currentSessionId.value = latest.id; + syncSessionToUrl(latest.id); return latest; } const session = await createSession(); if (session) { currentSessionId.value = session.id; + syncSessionToUrl(session.id); } return session; } @@ -96,12 +109,15 @@ export function useAgentSessions(agentSlug: string) { if (currentSessionId.value === id) { if (sessions.value.length > 0) { currentSessionId.value = sessions.value[0]?.id ?? null; + syncSessionToUrl(currentSessionId.value); } else { const session = await createSession(); if (session) { currentSessionId.value = session.id; + syncSessionToUrl(session.id); } else { currentSessionId.value = null; + syncSessionToUrl(null); } } } @@ -162,10 +178,16 @@ export function useAgentSessions(agentSlug: string) { if (initialized.value) return; await auth.refresh(); await fetchSessions(); - if (sessions.value.length === 0) { + const route = useRoute(); + const urlSessionId = route.query.session; + const urlSessionStr = typeof urlSessionId === "string" ? urlSessionId : null; + if (urlSessionStr && sessions.value.some((s) => s.id === urlSessionStr)) { + currentSessionId.value = urlSessionStr; + } else if (sessions.value.length === 0) { await newSession(); } else { currentSessionId.value = sessions.value[0]?.id ?? null; + syncSessionToUrl(currentSessionId.value); } initialized.value = true; } diff --git a/packages/drizzle-pkg/db.sqlite b/packages/drizzle-pkg/db.sqlite index 3bea3ffd6d355b26bc5eebf36fa2bc0090b7a843..17ebbed75938d4289014db4eb4d7394cd09bdbf4 100644 GIT binary patch delta 61497 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 mv_o~2JlWWMZv9u?YctyYf=;EXz@p5Ms(k#r