@@ -275,6 +275,104 @@ describe("ClaudeAdapterLive", () => {
275275 ) ;
276276 } ) ;
277277
278+ it . effect ( "ignores unsupported max effort for Sonnet 4.6" , ( ) => {
279+ const harness = makeHarness ( ) ;
280+ return Effect . gen ( function * ( ) {
281+ const adapter = yield * ClaudeAdapter ;
282+ yield * adapter . startSession ( {
283+ threadId : THREAD_ID ,
284+ provider : "claudeAgent" ,
285+ model : "claude-sonnet-4-6" ,
286+ runtimeMode : "full-access" ,
287+ modelOptions : {
288+ claudeAgent : {
289+ effort : "max" ,
290+ } ,
291+ } ,
292+ } ) ;
293+
294+ const createInput = harness . getLastCreateQueryInput ( ) ;
295+ assert . equal ( createInput ?. options . effort , undefined ) ;
296+ } ) . pipe (
297+ Effect . provideService ( Random . Random , makeDeterministicRandomService ( ) ) ,
298+ Effect . provide ( harness . layer ) ,
299+ ) ;
300+ } ) ;
301+
302+ it . effect ( "ignores adaptive effort for Haiku 4.5" , ( ) => {
303+ const harness = makeHarness ( ) ;
304+ return Effect . gen ( function * ( ) {
305+ const adapter = yield * ClaudeAdapter ;
306+ yield * adapter . startSession ( {
307+ threadId : THREAD_ID ,
308+ provider : "claudeAgent" ,
309+ model : "claude-haiku-4-5" ,
310+ runtimeMode : "full-access" ,
311+ modelOptions : {
312+ claudeAgent : {
313+ effort : "high" ,
314+ } ,
315+ } ,
316+ } ) ;
317+
318+ const createInput = harness . getLastCreateQueryInput ( ) ;
319+ assert . equal ( createInput ?. options . effort , undefined ) ;
320+ } ) . pipe (
321+ Effect . provideService ( Random . Random , makeDeterministicRandomService ( ) ) ,
322+ Effect . provide ( harness . layer ) ,
323+ ) ;
324+ } ) ;
325+
326+ it . effect ( "forwards Claude thinking toggle into SDK settings for Haiku 4.5" , ( ) => {
327+ const harness = makeHarness ( ) ;
328+ return Effect . gen ( function * ( ) {
329+ const adapter = yield * ClaudeAdapter ;
330+ yield * adapter . startSession ( {
331+ threadId : THREAD_ID ,
332+ provider : "claudeAgent" ,
333+ model : "claude-haiku-4-5" ,
334+ runtimeMode : "full-access" ,
335+ modelOptions : {
336+ claudeAgent : {
337+ thinking : false ,
338+ } ,
339+ } ,
340+ } ) ;
341+
342+ const createInput = harness . getLastCreateQueryInput ( ) ;
343+ assert . deepEqual ( createInput ?. options . settings , {
344+ alwaysThinkingEnabled : false ,
345+ } ) ;
346+ } ) . pipe (
347+ Effect . provideService ( Random . Random , makeDeterministicRandomService ( ) ) ,
348+ Effect . provide ( harness . layer ) ,
349+ ) ;
350+ } ) ;
351+
352+ it . effect ( "ignores Claude thinking toggle for non-Haiku models" , ( ) => {
353+ const harness = makeHarness ( ) ;
354+ return Effect . gen ( function * ( ) {
355+ const adapter = yield * ClaudeAdapter ;
356+ yield * adapter . startSession ( {
357+ threadId : THREAD_ID ,
358+ provider : "claudeAgent" ,
359+ model : "claude-sonnet-4-6" ,
360+ runtimeMode : "full-access" ,
361+ modelOptions : {
362+ claudeAgent : {
363+ thinking : false ,
364+ } ,
365+ } ,
366+ } ) ;
367+
368+ const createInput = harness . getLastCreateQueryInput ( ) ;
369+ assert . equal ( createInput ?. options . settings , undefined ) ;
370+ } ) . pipe (
371+ Effect . provideService ( Random . Random , makeDeterministicRandomService ( ) ) ,
372+ Effect . provide ( harness . layer ) ,
373+ ) ;
374+ } ) ;
375+
278376 it . effect ( "forwards claude fast mode into SDK settings" , ( ) => {
279377 const harness = makeHarness ( ) ;
280378 return Effect . gen ( function * ( ) {
@@ -325,13 +423,14 @@ describe("ClaudeAdapterLive", () => {
325423 ) ;
326424 } ) ;
327425
328- it . effect ( "maps ultrathink to max effort and prefixes the prompt " , ( ) => {
426+ it . effect ( "treats ultrathink as a prompt keyword instead of a session effort " , ( ) => {
329427 const harness = makeHarness ( ) ;
330428 return Effect . gen ( function * ( ) {
331429 const adapter = yield * ClaudeAdapter ;
332430 const session = yield * adapter . startSession ( {
333431 threadId : THREAD_ID ,
334432 provider : "claudeAgent" ,
433+ model : "claude-sonnet-4-6" ,
335434 runtimeMode : "full-access" ,
336435 modelOptions : {
337436 claudeAgent : {
@@ -344,6 +443,7 @@ describe("ClaudeAdapterLive", () => {
344443 threadId : session . threadId ,
345444 input : "Investigate the edge cases" ,
346445 attachments : [ ] ,
446+ model : "claude-sonnet-4-6" ,
347447 modelOptions : {
348448 claudeAgent : {
349449 effort : "ultrathink" ,
@@ -352,7 +452,7 @@ describe("ClaudeAdapterLive", () => {
352452 } ) ;
353453
354454 const createInput = harness . getLastCreateQueryInput ( ) ;
355- assert . equal ( createInput ?. options . effort , "max" ) ;
455+ assert . equal ( createInput ?. options . effort , undefined ) ;
356456 const promptText = yield * Effect . promise ( ( ) => readFirstPromptText ( createInput ) ) ;
357457 assert . equal ( promptText , "Ultrathink:\nInvestigate the edge cases" ) ;
358458 } ) . pipe (
0 commit comments