From 37b646186d8d16826471971f148db382412a782f Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Thu, 26 Feb 2026 11:21:34 +0800 Subject: [PATCH] Refactor DebugDrawer to store submitted session metadata and update resolved config view with merged metadata --- web/pages/Assistants.tsx | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/web/pages/Assistants.tsx b/web/pages/Assistants.tsx index e33ffb8..7c3a648 100644 --- a/web/pages/Assistants.tsx +++ b/web/pages/Assistants.tsx @@ -1389,6 +1389,7 @@ export const DebugDrawer: React.FC<{ const wsReadyRef = useRef(false); const pendingResolveRef = useRef<(() => void) | null>(null); const pendingRejectRef = useRef<((e: Error) => void) | null>(null); + const submittedMetadataRef = useRef | null>(null); const assistantDraftIndexRef = useRef(null); const audioCtxRef = useRef(null); const playbackTimeRef = useRef(0); @@ -1958,7 +1959,6 @@ export const DebugDrawer: React.FC<{ const fetchRuntimeMetadata = async (): Promise> => { const localResolved = buildLocalResolvedRuntime(); - setResolvedConfigView(JSON.stringify(localResolved, null, 2)); const mergedMetadata: Record = { ...localResolved.sessionStartMetadata, ...(sessionMetadataExtras || {}), @@ -1974,6 +1974,16 @@ export const DebugDrawer: React.FC<{ if (!mergedMetadata.channel) { mergedMetadata.channel = 'web_debug'; } + submittedMetadataRef.current = mergedMetadata; + setResolvedConfigView( + JSON.stringify( + { + submittedSessionStartMetadata: mergedMetadata, + }, + null, + 2 + ) + ); return mergedMetadata; }; @@ -2140,7 +2150,16 @@ export const DebugDrawer: React.FC<{ if (type === 'config.resolved') { const resolved = payload?.config || payload?.data?.config; if (resolved) { - setResolvedConfigView(JSON.stringify({ config: resolved }, null, 2)); + setResolvedConfigView( + JSON.stringify( + { + submittedSessionStartMetadata: submittedMetadataRef.current, + engineResolvedConfig: resolved, + }, + null, + 2 + ) + ); } return; } @@ -2333,8 +2352,7 @@ export const DebugDrawer: React.FC<{ useEffect(() => { if (!isOpen) return; - const localResolved = buildLocalResolvedRuntime(); - setResolvedConfigView(JSON.stringify(localResolved, null, 2)); + setResolvedConfigView('Connect to load submitted session.start metadata...'); }, [isOpen, assistant, voices, llmModels, asrModels, tools]); const renderLocalVideo = (isSmall: boolean) => (