@@ -141,6 +141,83 @@ def test_conversation_settings_export_schema_groups_sections() -> None:
141141 "confirmation_mode" ,
142142 "security_analyzer" ,
143143 }
144+ assert verification_fields ["confirmation_mode" ].default is False
145+ assert (
146+ verification_fields ["confirmation_mode" ].prominence
147+ is SettingProminence .CRITICAL
148+ )
149+ assert verification_fields ["security_analyzer" ].default == "llm"
150+ assert verification_fields ["security_analyzer" ].choices [0 ].value == "llm"
151+ assert verification_fields ["security_analyzer" ].depends_on == ["confirmation_mode" ]
152+
153+
154+ def test_conversation_settings_model_dump_roundtrip () -> None :
155+ settings = ConversationSettings (
156+ max_iterations = 42 ,
157+ confirmation_mode = True ,
158+ security_analyzer = "none" ,
159+ )
160+
161+ restored = ConversationSettings .model_validate (settings .model_dump (mode = "json" ))
162+
163+ assert restored == settings
164+
165+
166+ def test_conversation_settings_create_request () -> None :
167+ settings = ConversationSettings (
168+ max_iterations = 77 ,
169+ confirmation_mode = True ,
170+ security_analyzer = "llm" ,
171+ )
172+ workspace = LocalWorkspace (working_dir = "/tmp" )
173+ agent = LLMAgentSettings (llm = LLM (model = "test-model" )).create_agent ()
174+
175+ request = settings .create_request (
176+ StartConversationRequest ,
177+ agent = agent ,
178+ workspace = workspace ,
179+ )
180+
181+ assert isinstance (request , StartConversationRequest )
182+ assert request .workspace == workspace
183+ assert request .max_iterations == 77
184+ assert isinstance (request .confirmation_policy , ConfirmRisky )
185+ assert isinstance (request .security_analyzer , LLMSecurityAnalyzer )
186+
187+ overridden_request = settings .create_request (
188+ StartConversationRequest ,
189+ agent = agent ,
190+ workspace = workspace ,
191+ max_iterations = 5 ,
192+ confirmation_policy = AlwaysConfirm (),
193+ security_analyzer = None ,
194+ )
195+
196+ assert overridden_request .max_iterations == 5
197+ assert isinstance (overridden_request .confirmation_policy , AlwaysConfirm )
198+ assert overridden_request .security_analyzer is None
199+
200+
201+ def test_conversation_settings_create_request_for_acp () -> None :
202+ settings = ConversationSettings (
203+ max_iterations = 77 ,
204+ confirmation_mode = True ,
205+ security_analyzer = "none" ,
206+ )
207+ workspace = LocalWorkspace (working_dir = "/tmp" )
208+ agent = ACPAgent (acp_command = ["echo" , "test" ])
209+
210+ request = settings .create_request (
211+ StartACPConversationRequest ,
212+ agent = agent ,
213+ workspace = workspace ,
214+ )
215+
216+ assert isinstance (request , StartACPConversationRequest )
217+ assert request .workspace == workspace
218+ assert request .max_iterations == 77
219+ assert isinstance (request .confirmation_policy , AlwaysConfirm )
220+ assert request .security_analyzer is None
144221
145222
146223# ---------------------------------------------------------------------------
0 commit comments