@@ -73,6 +73,7 @@ import {
7373} from "./tools.js" ;
7474import type {
7575 BackgroundTerminal ,
76+ EffortLevel ,
7677 NewSessionMeta ,
7778 Session ,
7879 ToolUseCache ,
@@ -558,6 +559,10 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
558559 const sdkModelId = toSdkModelId ( params . value ) ;
559560 await this . session . query . setModel ( sdkModelId ) ;
560561 this . session . modelId = params . value ;
562+ } else if ( params . configId === "effort" ) {
563+ const newEffort = params . value as EffortLevel ;
564+ this . session . effort = newEffort ;
565+ this . session . queryOptions . effort = newEffort ;
561566 }
562567
563568 this . session . configOptions = this . session . configOptions . map ( ( o ) =>
@@ -623,6 +628,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
623628
624629 const meta = params . _meta as NewSessionMeta | undefined ;
625630 const taskId = meta ?. persistence ?. taskId ;
631+ const effort = meta ?. claudeCode ?. options ?. effort as EffortLevel | undefined ;
626632
627633 // We want to create a new session id unless it is resume,
628634 // but not resume + forkSession.
@@ -673,6 +679,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
673679 onModeChange : this . createOnModeChange ( ) ,
674680 onProcessSpawned : this . options ?. onProcessSpawned ,
675681 onProcessExited : this . options ?. onProcessExited ,
682+ effort,
676683 } ) ;
677684
678685 // Use the same abort controller that buildSessionOptions gave to the query
@@ -682,6 +689,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
682689
683690 const session : Session = {
684691 query : q ,
692+ queryOptions : options ,
685693 input,
686694 cancelled : false ,
687695 settingsManager,
@@ -693,6 +701,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
693701 cachedReadTokens : 0 ,
694702 cachedWriteTokens : 0 ,
695703 } ,
704+ effort,
696705 configOptions : [ ] ,
697706 promptRunning : false ,
698707 pendingMessages : new Map ( ) ,
@@ -790,7 +799,11 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
790799 ) ,
791800 } ;
792801
793- const configOptions = this . buildConfigOptions ( permissionMode , modelOptions ) ;
802+ const configOptions = this . buildConfigOptions (
803+ permissionMode ,
804+ modelOptions ,
805+ effort ?? "high" ,
806+ ) ;
794807 session . configOptions = configOptions ;
795808
796809 if ( ! creationOpts . skipBackgroundFetches ) {
@@ -844,6 +857,7 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
844857 currentModelId : string ;
845858 options : SessionConfigSelectOption [ ] ;
846859 } ,
860+ currentEffort : EffortLevel = "high" ,
847861 ) : SessionConfigOption [ ] {
848862 const modeOptions = getAvailableModes ( ) . map ( ( mode ) => ( {
849863 value : mode . id ,
@@ -871,6 +885,20 @@ export class ClaudeAcpAgent extends BaseAcpAgent {
871885 category : "model" as SessionConfigOptionCategory ,
872886 description : "Choose which model Claude should use" ,
873887 } ,
888+ {
889+ id : "effort" ,
890+ name : "Effort" ,
891+ type : "select" ,
892+ currentValue : currentEffort ,
893+ options : [
894+ { value : "low" , name : "Low" } ,
895+ { value : "medium" , name : "Medium" } ,
896+ { value : "high" , name : "High" } ,
897+ { value : "max" , name : "Max" } ,
898+ ] ,
899+ category : "thought_level" as SessionConfigOptionCategory ,
900+ description : "Controls how much effort Claude puts into its response" ,
901+ } ,
874902 ] ;
875903 }
876904
0 commit comments