Refactor DebugDrawer to store submitted session metadata and update resolved config view with merged metadata

This commit is contained in:
Xin Wang
2026-02-26 11:21:34 +08:00
parent 14b4b3d966
commit 37b646186d

View File

@@ -1389,6 +1389,7 @@ export const DebugDrawer: React.FC<{
const wsReadyRef = useRef(false); const wsReadyRef = useRef(false);
const pendingResolveRef = useRef<(() => void) | null>(null); const pendingResolveRef = useRef<(() => void) | null>(null);
const pendingRejectRef = useRef<((e: Error) => void) | null>(null); const pendingRejectRef = useRef<((e: Error) => void) | null>(null);
const submittedMetadataRef = useRef<Record<string, any> | null>(null);
const assistantDraftIndexRef = useRef<number | null>(null); const assistantDraftIndexRef = useRef<number | null>(null);
const audioCtxRef = useRef<AudioContext | null>(null); const audioCtxRef = useRef<AudioContext | null>(null);
const playbackTimeRef = useRef<number>(0); const playbackTimeRef = useRef<number>(0);
@@ -1958,7 +1959,6 @@ export const DebugDrawer: React.FC<{
const fetchRuntimeMetadata = async (): Promise<Record<string, any>> => { const fetchRuntimeMetadata = async (): Promise<Record<string, any>> => {
const localResolved = buildLocalResolvedRuntime(); const localResolved = buildLocalResolvedRuntime();
setResolvedConfigView(JSON.stringify(localResolved, null, 2));
const mergedMetadata: Record<string, any> = { const mergedMetadata: Record<string, any> = {
...localResolved.sessionStartMetadata, ...localResolved.sessionStartMetadata,
...(sessionMetadataExtras || {}), ...(sessionMetadataExtras || {}),
@@ -1974,6 +1974,16 @@ export const DebugDrawer: React.FC<{
if (!mergedMetadata.channel) { if (!mergedMetadata.channel) {
mergedMetadata.channel = 'web_debug'; mergedMetadata.channel = 'web_debug';
} }
submittedMetadataRef.current = mergedMetadata;
setResolvedConfigView(
JSON.stringify(
{
submittedSessionStartMetadata: mergedMetadata,
},
null,
2
)
);
return mergedMetadata; return mergedMetadata;
}; };
@@ -2140,7 +2150,16 @@ export const DebugDrawer: React.FC<{
if (type === 'config.resolved') { if (type === 'config.resolved') {
const resolved = payload?.config || payload?.data?.config; const resolved = payload?.config || payload?.data?.config;
if (resolved) { if (resolved) {
setResolvedConfigView(JSON.stringify({ config: resolved }, null, 2)); setResolvedConfigView(
JSON.stringify(
{
submittedSessionStartMetadata: submittedMetadataRef.current,
engineResolvedConfig: resolved,
},
null,
2
)
);
} }
return; return;
} }
@@ -2333,8 +2352,7 @@ export const DebugDrawer: React.FC<{
useEffect(() => { useEffect(() => {
if (!isOpen) return; if (!isOpen) return;
const localResolved = buildLocalResolvedRuntime(); setResolvedConfigView('Connect to load submitted session.start metadata...');
setResolvedConfigView(JSON.stringify(localResolved, null, 2));
}, [isOpen, assistant, voices, llmModels, asrModels, tools]); }, [isOpen, assistant, voices, llmModels, asrModels, tools]);
const renderLocalVideo = (isSmall: boolean) => ( const renderLocalVideo = (isSmall: boolean) => (