@@ -368,6 +368,15 @@ func TestSession(t *testing.T) {
368368 if answer2 .Data .Content == nil || ! strings .Contains (* answer2 .Data .Content , "2" ) {
369369 t .Errorf ("Expected resumed session answer to contain '2', got %v" , answer2 .Data .Content )
370370 }
371+
372+ // Can continue the conversation statefully
373+ answer3 , err := session2 .SendAndWait (t .Context (), copilot.MessageOptions {Prompt : "Now if you double that, what do you get?" })
374+ if err != nil {
375+ t .Fatalf ("Failed to send follow-up message: %v" , err )
376+ }
377+ if answer3 == nil || answer3 .Data .Content == nil || ! strings .Contains (* answer3 .Data .Content , "4" ) {
378+ t .Errorf ("Expected follow-up answer to contain '4', got %v" , answer3 )
379+ }
371380 })
372381
373382 t .Run ("should resume a session using a new client" , func (t * testing.T ) {
@@ -432,6 +441,15 @@ func TestSession(t *testing.T) {
432441 if ! hasSessionResume {
433442 t .Error ("Expected messages to contain 'session.resume'" )
434443 }
444+
445+ // Can continue the conversation statefully
446+ answer3 , err := session2 .SendAndWait (t .Context (), copilot.MessageOptions {Prompt : "Now if you double that, what do you get?" })
447+ if err != nil {
448+ t .Fatalf ("Failed to send follow-up message: %v" , err )
449+ }
450+ if answer3 == nil || answer3 .Data .Content == nil || ! strings .Contains (* answer3 .Data .Content , "4" ) {
451+ t .Errorf ("Expected follow-up answer to contain '4', got %v" , answer3 )
452+ }
435453 })
436454
437455 t .Run ("should throw error when resuming non-existent session" , func (t * testing.T ) {
@@ -565,99 +583,6 @@ func TestSession(t *testing.T) {
565583 }
566584 })
567585
568- t .Run ("should receive streaming delta events when streaming is enabled" , func (t * testing.T ) {
569- ctx .ConfigureForTest (t )
570-
571- session , err := client .CreateSession (t .Context (), & copilot.SessionConfig {
572- OnPermissionRequest : copilot .PermissionHandler .ApproveAll ,
573- Streaming : true ,
574- })
575- if err != nil {
576- t .Fatalf ("Failed to create session with streaming: %v" , err )
577- }
578-
579- var deltaContents []string
580- done := make (chan bool )
581-
582- session .On (func (event copilot.SessionEvent ) {
583- switch event .Type {
584- case "assistant.message_delta" :
585- if event .Data .DeltaContent != nil {
586- deltaContents = append (deltaContents , * event .Data .DeltaContent )
587- }
588- case "session.idle" :
589- close (done )
590- }
591- })
592-
593- _ , err = session .Send (t .Context (), copilot.MessageOptions {Prompt : "What is 2+2?" })
594- if err != nil {
595- t .Fatalf ("Failed to send message: %v" , err )
596- }
597-
598- // Wait for completion
599- select {
600- case <- done :
601- case <- time .After (60 * time .Second ):
602- t .Fatal ("Timed out waiting for session.idle" )
603- }
604-
605- // Should have received delta events
606- if len (deltaContents ) == 0 {
607- t .Error ("Expected to receive delta events, got none" )
608- }
609-
610- // Get the final message to compare
611- assistantMessage , err := testharness .GetFinalAssistantMessage (t .Context (), session )
612- if err != nil {
613- t .Fatalf ("Failed to get assistant message: %v" , err )
614- }
615-
616- // Accumulated deltas should equal the final message
617- accumulated := strings .Join (deltaContents , "" )
618- if assistantMessage .Data .Content != nil && accumulated != * assistantMessage .Data .Content {
619- t .Errorf ("Accumulated deltas don't match final message.\n Accumulated: %q\n Final: %q" , accumulated , * assistantMessage .Data .Content )
620- }
621-
622- // Final message should contain the answer
623- if assistantMessage .Data .Content == nil || ! strings .Contains (* assistantMessage .Data .Content , "4" ) {
624- t .Errorf ("Expected assistant message to contain '4', got %v" , assistantMessage .Data .Content )
625- }
626- })
627-
628- t .Run ("should pass streaming option to session creation" , func (t * testing.T ) {
629- ctx .ConfigureForTest (t )
630-
631- // Verify that the streaming option is accepted without errors
632- session , err := client .CreateSession (t .Context (), & copilot.SessionConfig {
633- OnPermissionRequest : copilot .PermissionHandler .ApproveAll ,
634- Streaming : true ,
635- })
636- if err != nil {
637- t .Fatalf ("Failed to create session with streaming: %v" , err )
638- }
639-
640- matched , _ := regexp .MatchString (`^[a-f0-9-]+$` , session .SessionID )
641- if ! matched {
642- t .Errorf ("Expected session ID to match UUID pattern, got %q" , session .SessionID )
643- }
644-
645- // Session should still work normally
646- _ , err = session .Send (t .Context (), copilot.MessageOptions {Prompt : "What is 1+1?" })
647- if err != nil {
648- t .Fatalf ("Failed to send message: %v" , err )
649- }
650-
651- assistantMessage , err := testharness .GetFinalAssistantMessage (t .Context (), session )
652- if err != nil {
653- t .Fatalf ("Failed to get assistant message: %v" , err )
654- }
655-
656- if assistantMessage .Data .Content == nil || ! strings .Contains (* assistantMessage .Data .Content , "2" ) {
657- t .Errorf ("Expected assistant message to contain '2', got %v" , assistantMessage .Data .Content )
658- }
659- })
660-
661586 t .Run ("should receive session events" , func (t * testing.T ) {
662587 ctx .ConfigureForTest (t )
663588
0 commit comments