




















@@ -408,34 +408,63 @@ export function renderStreamingGroup(
408408 `;
409409}
410410411-export function renderMessageGroup(
411+type RenderMessageGroupOptions = {
412+onOpenSidebar?: (content: SidebarContent) => void;
413+sessionKey?: string;
414+agentId?: string;
415+showReasoning: boolean;
416+showToolCalls?: boolean;
417+autoExpandToolCalls?: boolean;
418+isToolMessageExpanded?: (messageId: string) => boolean | undefined;
419+onToggleToolMessageExpanded?: (messageId: string, expanded?: boolean) => void;
420+isToolExpanded?: (toolCardId: string) => boolean;
421+onToggleToolExpanded?: (toolCardId: string) => void;
422+onRequestUpdate?: () => void;
423+assistantName?: string;
424+assistantAvatar?: string | null;
425+userName?: string | null;
426+userAvatar?: string | null;
427+basePath?: string;
428+localMediaPreviewRoots?: readonly string[];
429+assistantAttachmentAuthToken?: string | null;
430+canvasPluginSurfaceUrl?: string | null;
431+embedSandboxMode?: EmbedSandboxMode;
432+allowExternalEmbedUrls?: boolean;
433+contextWindow?: number | null;
434+onDelete?: () => void;
435+};
436+437+type GroupedMessageRenderOptions = Parameters<typeof renderGroupedMessage>[2];
438+439+function buildGroupedMessageRenderOptions(
412440group: MessageGroup,
413-opts: {
414-onOpenSidebar?: (content: SidebarContent) => void;
415-sessionKey?: string;
416-agentId?: string;
417-showReasoning: boolean;
418-showToolCalls?: boolean;
419-autoExpandToolCalls?: boolean;
420-isToolMessageExpanded?: (messageId: string) => boolean | undefined;
421-onToggleToolMessageExpanded?: (messageId: string, expanded?: boolean) => void;
422-isToolExpanded?: (toolCardId: string) => boolean;
423-onToggleToolExpanded?: (toolCardId: string) => void;
424-onRequestUpdate?: () => void;
425-assistantName?: string;
426-assistantAvatar?: string | null;
427-userName?: string | null;
428-userAvatar?: string | null;
429-basePath?: string;
430-localMediaPreviewRoots?: readonly string[];
431-assistantAttachmentAuthToken?: string | null;
432-canvasPluginSurfaceUrl?: string | null;
433-embedSandboxMode?: EmbedSandboxMode;
434-allowExternalEmbedUrls?: boolean;
435-contextWindow?: number | null;
436-onDelete?: () => void;
437-},
438-) {
441+item: MessageGroup["messages"][number],
442+index: number,
443+opts: RenderMessageGroupOptions,
444+): GroupedMessageRenderOptions {
445+return {
446+isStreaming: group.isStreaming && index === group.messages.length - 1,
447+sessionKey: opts.sessionKey,
448+agentId: opts.agentId,
449+duplicateCount: item.duplicateCount ?? 1,
450+showReasoning: opts.showReasoning,
451+showToolCalls: opts.showToolCalls ?? true,
452+autoExpandToolCalls: opts.autoExpandToolCalls ?? false,
453+isToolMessageExpanded: opts.isToolMessageExpanded,
454+onToggleToolMessageExpanded: opts.onToggleToolMessageExpanded,
455+isToolExpanded: opts.isToolExpanded,
456+onToggleToolExpanded: opts.onToggleToolExpanded,
457+onRequestUpdate: opts.onRequestUpdate,
458+canvasPluginSurfaceUrl: opts.canvasPluginSurfaceUrl,
459+basePath: opts.basePath,
460+localMediaPreviewRoots: opts.localMediaPreviewRoots,
461+assistantAttachmentAuthToken: opts.assistantAttachmentAuthToken,
462+embedSandboxMode: opts.embedSandboxMode,
463+allowExternalEmbedUrls: opts.allowExternalEmbedUrls,
464+};
465+}
466+467+export function renderMessageGroup(group: MessageGroup, opts: RenderMessageGroupOptions) {
439468const normalizedRole = normalizeRoleForGrouping(group.role);
440469const assistantName = opts.assistantName ?? "Assistant";
441470const resolvedUserName = resolveLocalUserName({
@@ -539,26 +568,7 @@ export function renderMessageGroup(
539568 renderGroupedMessage(
540569 item.message,
541570 item.key,
542- {
543- isStreaming: group.isStreaming && index === group.messages.length - 1,
544- sessionKey: opts.sessionKey,
545- agentId: opts.agentId,
546- duplicateCount: item.duplicateCount ?? 1,
547- showReasoning: opts.showReasoning,
548- showToolCalls: opts.showToolCalls ?? true,
549- autoExpandToolCalls: opts.autoExpandToolCalls ?? false,
550- isToolMessageExpanded: opts.isToolMessageExpanded,
551- onToggleToolMessageExpanded: opts.onToggleToolMessageExpanded,
552- isToolExpanded: opts.isToolExpanded,
553- onToggleToolExpanded: opts.onToggleToolExpanded,
554- onRequestUpdate: opts.onRequestUpdate,
555- canvasPluginSurfaceUrl: opts.canvasPluginSurfaceUrl,
556- basePath: opts.basePath,
557- localMediaPreviewRoots: opts.localMediaPreviewRoots,
558- assistantAttachmentAuthToken: opts.assistantAttachmentAuthToken,
559- embedSandboxMode: opts.embedSandboxMode,
560- allowExternalEmbedUrls: opts.allowExternalEmbedUrls,
561- },
571+ buildGroupedMessageRenderOptions(group, item, index, opts),
562572 opts.onOpenSidebar,
563573 ),
564574 )}
@@ -596,26 +606,7 @@ export function renderMessageGroup(
596606 renderGroupedMessage(
597607 item.message,
598608 item.key,
599- {
600- isStreaming: group.isStreaming && index === group.messages.length - 1,
601- sessionKey: opts.sessionKey,
602- agentId: opts.agentId,
603- duplicateCount: item.duplicateCount ?? 1,
604- showReasoning: opts.showReasoning,
605- showToolCalls: opts.showToolCalls ?? true,
606- autoExpandToolCalls: opts.autoExpandToolCalls ?? false,
607- isToolMessageExpanded: opts.isToolMessageExpanded,
608- onToggleToolMessageExpanded: opts.onToggleToolMessageExpanded,
609- isToolExpanded: opts.isToolExpanded,
610- onToggleToolExpanded: opts.onToggleToolExpanded,
611- onRequestUpdate: opts.onRequestUpdate,
612- canvasPluginSurfaceUrl: opts.canvasPluginSurfaceUrl,
613- basePath: opts.basePath,
614- localMediaPreviewRoots: opts.localMediaPreviewRoots,
615- assistantAttachmentAuthToken: opts.assistantAttachmentAuthToken,
616- embedSandboxMode: opts.embedSandboxMode,
617- allowExternalEmbedUrls: opts.allowExternalEmbedUrls,
618- },
609+ buildGroupedMessageRenderOptions(group, item, index, opts),
619610 opts.onOpenSidebar,
620611 ),
621612 )}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。