@@ -830,4 +830,78 @@ describe("summarizationMiddleware", () => {
830830 ! ( AIMessage . isInstance ( firstPreserved ) && hasToolCalls ( firstPreserved ) )
831831 ) . toBe ( true ) ;
832832 } ) ;
833+
834+ it ( "should use default summaryPrefix when not provided" , async ( ) => {
835+ const summarizationModel = createMockSummarizationModel ( ) ;
836+ const model = createMockMainModel ( ) ;
837+
838+ const middleware = summarizationMiddleware ( {
839+ model : summarizationModel as any ,
840+ trigger : { tokens : 50 } ,
841+ keep : { messages : 2 } ,
842+ } ) ;
843+
844+ const agent = createAgent ( {
845+ model,
846+ middleware : [ middleware ] ,
847+ } ) ;
848+
849+ const messages = [
850+ new HumanMessage ( `Message 1: ${ "x" . repeat ( 200 ) } ` ) ,
851+ new AIMessage ( `Response 1: ${ "x" . repeat ( 200 ) } ` ) ,
852+ new HumanMessage ( `Message 2: ${ "x" . repeat ( 200 ) } ` ) ,
853+ new AIMessage ( `Response 2: ${ "x" . repeat ( 200 ) } ` ) ,
854+ new HumanMessage ( "Final question" ) ,
855+ ] ;
856+
857+ const result = await agent . invoke ( { messages } ) ;
858+
859+ // Verify summarization was triggered
860+ expect ( summarizationModel . invoke ) . toHaveBeenCalled ( ) ;
861+
862+ // Verify the default prefix is used
863+ const summaryMessage = result . messages [ 0 ] as HumanMessage ;
864+ expect ( summaryMessage . content ) . toContain (
865+ "Here is a summary of the conversation to date:"
866+ ) ;
867+ } ) ;
868+
869+ it ( "should use custom summaryPrefix when provided" , async ( ) => {
870+ const summarizationModel = createMockSummarizationModel ( ) ;
871+ const model = createMockMainModel ( ) ;
872+
873+ const customPrefix = "Custom summary prefix for testing:" ;
874+
875+ const middleware = summarizationMiddleware ( {
876+ model : summarizationModel as any ,
877+ trigger : { tokens : 50 } ,
878+ keep : { messages : 2 } ,
879+ summaryPrefix : customPrefix ,
880+ } ) ;
881+
882+ const agent = createAgent ( {
883+ model,
884+ middleware : [ middleware ] ,
885+ } ) ;
886+
887+ const messages = [
888+ new HumanMessage ( `Message 1: ${ "x" . repeat ( 200 ) } ` ) ,
889+ new AIMessage ( `Response 1: ${ "x" . repeat ( 200 ) } ` ) ,
890+ new HumanMessage ( `Message 2: ${ "x" . repeat ( 200 ) } ` ) ,
891+ new AIMessage ( `Response 2: ${ "x" . repeat ( 200 ) } ` ) ,
892+ new HumanMessage ( "Final question" ) ,
893+ ] ;
894+
895+ const result = await agent . invoke ( { messages } ) ;
896+
897+ // Verify summarization was triggered
898+ expect ( summarizationModel . invoke ) . toHaveBeenCalled ( ) ;
899+
900+ // Verify the custom prefix is used
901+ const summaryMessage = result . messages [ 0 ] as HumanMessage ;
902+ expect ( summaryMessage . content ) . toContain ( customPrefix ) ;
903+ expect ( summaryMessage . content ) . not . toContain (
904+ "Here is a summary of the conversation to date:"
905+ ) ;
906+ } ) ;
833907} ) ;
0 commit comments