From 3a5d27d6c300cf5d0f576a109b97eaa1495f50e7 Mon Sep 17 00:00:00 2001 From: Xin Wang Date: Sun, 1 Mar 2026 23:14:08 +0800 Subject: [PATCH] Implement runtime configuration debugging in DebugDrawer by adding a new function to format session metadata and WebSocket configuration. Update the display logic to enhance clarity and user experience, including renaming UI elements for better context. --- web/pages/Assistants.tsx | 53 ++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/web/pages/Assistants.tsx b/web/pages/Assistants.tsx index adf0dc4..ffa4c41 100644 --- a/web/pages/Assistants.tsx +++ b/web/pages/Assistants.tsx @@ -2897,6 +2897,27 @@ export const DebugDrawer: React.FC<{ return sanitized; }; + const formatRuntimeConfigDebugView = (args: { + submittedSessionStartMetadata?: Record | null; + wsResolvedConfig?: Record | null; + }): string => { + const hasWsResolved = Boolean(args.wsResolvedConfig && Object.keys(args.wsResolvedConfig).length > 0); + const payload: Record = { + protocol: 'ws_v1', + wsConfigResolvedEvent: hasWsResolved ? 'received' : 'not_emitted', + note: hasWsResolved + ? 'Optional ws config.resolved event received.' + : 'ws config.resolved is optional and disabled by default. Showing local session.start metadata preview.', + }; + if (args.submittedSessionStartMetadata) { + payload.submittedSessionStartMetadata = args.submittedSessionStartMetadata; + } + if (hasWsResolved) { + payload.wsResolvedConfig = args.wsResolvedConfig; + } + return JSON.stringify(payload, null, 2); + }; + const buildDynamicVariablesPayload = (): { variables: Record; error?: string } => { const variables: Record = {}; const nonEmptyRows = dynamicVariables @@ -3018,13 +3039,9 @@ export const DebugDrawer: React.FC<{ } submittedMetadataRef.current = mergedMetadata; setResolvedConfigView( - JSON.stringify( - { - submittedSessionStartMetadata: mergedMetadata, - }, - null, - 2 - ) + formatRuntimeConfigDebugView({ + submittedSessionStartMetadata: mergedMetadata, + }) ); return mergedMetadata; }; @@ -3440,14 +3457,10 @@ export const DebugDrawer: React.FC<{ const resolved = payload?.config || payload?.data?.config; if (resolved) { setResolvedConfigView( - JSON.stringify( - { - submittedSessionStartMetadata: submittedMetadataRef.current, - engineResolvedConfig: resolved, - }, - null, - 2 - ) + formatRuntimeConfigDebugView({ + submittedSessionStartMetadata: submittedMetadataRef.current, + wsResolvedConfig: resolved, + }) ); } return; @@ -3718,7 +3731,11 @@ export const DebugDrawer: React.FC<{ useEffect(() => { if (!isOpen) return; - setResolvedConfigView('Connect to load submitted session.start metadata...'); + setResolvedConfigView( + formatRuntimeConfigDebugView({ + submittedSessionStartMetadata: submittedMetadataRef.current, + }) + ); }, [isOpen, assistant, voices, llmModels, asrModels, tools]); const renderLocalVideo = (isSmall: boolean) => ( @@ -3908,12 +3925,12 @@ export const DebugDrawer: React.FC<{ className="w-full px-3 py-2 text-left text-xs text-muted-foreground hover:text-foreground flex items-center justify-between" onClick={() => setResolvedConfigOpen((v) => !v)} > - Resolved Runtime Config + Session Config Debug {resolvedConfigOpen && (
-              {resolvedConfigView || 'Connect to load resolved config...'}
+              {resolvedConfigView || 'Preparing session.start metadata preview...'}
             
)}