@@ -408,34 +408,63 @@ export function renderStreamingGroup(
408408 ` ;
409409}
410410
411- 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 (
412440 group : 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 ) {
439468 const normalizedRole = normalizeRoleForGrouping ( group . role ) ;
440469 const assistantName = opts . assistantName ?? "Assistant" ;
441470 const 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 ) }
0 commit comments