@@ -4012,6 +4012,62 @@ func TestResumeSessionRequest_ExpAssignments(t *testing.T) {
40124012 })
40134013}
40144014
4015+ func TestSessionRequests_FeatureFlags (t * testing.T ) {
4016+ featureFlags := map [string ]bool {
4017+ "ENABLED_TEST_FLAG" : true ,
4018+ "DISABLED_TEST_FLAG" : false ,
4019+ }
4020+
4021+ for _ , tc := range []struct {
4022+ name string
4023+ req any
4024+ }{
4025+ {"create" , createSessionRequest {FeatureFlags : & featureFlags }},
4026+ {"resume" , resumeSessionRequest {SessionID : "s1" , FeatureFlags : & featureFlags }},
4027+ } {
4028+ t .Run (tc .name , func (t * testing.T ) {
4029+ data , err := json .Marshal (tc .req )
4030+ if err != nil {
4031+ t .Fatalf ("Failed to marshal: %v" , err )
4032+ }
4033+ var payload map [string ]any
4034+ if err := json .Unmarshal (data , & payload ); err != nil {
4035+ t .Fatalf ("Failed to unmarshal: %v" , err )
4036+ }
4037+ got := payload ["featureFlags" ].(map [string ]any )
4038+ if got ["ENABLED_TEST_FLAG" ] != true || got ["DISABLED_TEST_FLAG" ] != false {
4039+ t .Errorf ("Unexpected featureFlags: %v" , got )
4040+ }
4041+ })
4042+ }
4043+
4044+ emptyFlags := map [string ]bool {}
4045+ for _ , tc := range []struct {
4046+ name string
4047+ req any
4048+ }{
4049+ {"create empty" , createSessionRequest {FeatureFlags : & emptyFlags }},
4050+ {"resume empty" , resumeSessionRequest {SessionID : "s1" , FeatureFlags : & emptyFlags }},
4051+ {"create unset" , createSessionRequest {}},
4052+ {"resume unset" , resumeSessionRequest {SessionID : "s1" }},
4053+ } {
4054+ t .Run (tc .name , func (t * testing.T ) {
4055+ data , err := json .Marshal (tc .req )
4056+ if err != nil {
4057+ t .Fatalf ("Failed to marshal: %v" , err )
4058+ }
4059+ var payload map [string ]any
4060+ if err := json .Unmarshal (data , & payload ); err != nil {
4061+ t .Fatalf ("Failed to unmarshal: %v" , err )
4062+ }
4063+ _ , present := payload ["featureFlags" ]
4064+ if strings .Contains (tc .name , "empty" ) != present {
4065+ t .Errorf ("featureFlags presence = %v for %s" , present , tc .name )
4066+ }
4067+ })
4068+ }
4069+ }
4070+
40154071func TestIsTerminal (t * testing.T ) {
40164072 t .Run ("IsTerminal is serialized in tool definition" , func (t * testing.T ) {
40174073 tool := Tool {
0 commit comments