66
77import java .util .HashMap ;
88import java .util .Map ;
9+ import java .util .Optional ;
910import java .util .concurrent .CompletableFuture ;
1011import java .util .function .Function ;
1112
1213import com .github .copilot .rpc .CreateSessionRequest ;
1314import com .github .copilot .rpc .CommandWireDefinition ;
15+ import com .github .copilot .rpc .CopilotClientMode ;
1416import com .github .copilot .rpc .ResumeSessionConfig ;
1517import com .github .copilot .rpc .ResumeSessionRequest ;
1618import com .github .copilot .rpc .SectionOverride ;
@@ -93,6 +95,10 @@ static ExtractedTransforms extractTransformCallbacks(SystemMessageConfig systemM
9395 * @return the built request object
9496 */
9597 static CreateSessionRequest buildCreateRequest (SessionConfig config , String sessionId ) {
98+ return buildCreateRequest (config , sessionId , CopilotClientMode .COPILOT_CLI );
99+ }
100+
101+ static CreateSessionRequest buildCreateRequest (SessionConfig config , String sessionId , CopilotClientMode mode ) {
96102 var request = new CreateSessionRequest ();
97103 // Always request permission callbacks to enable deny-by-default behavior
98104 request .setRequestPermission (true );
@@ -114,7 +120,8 @@ static CreateSessionRequest buildCreateRequest(SessionConfig config, String sess
114120 request .setExcludedTools (config .getExcludedTools ());
115121 request .setProvider (config .getProvider ());
116122 config .getEnableSessionTelemetry ().ifPresent (request ::setEnableSessionTelemetry );
117- config .getEnableExperimentalMode ().ifPresent (request ::setIsExperimentalMode );
123+ experimentalModeForMode (mode , config .getEnableExperimentalMode ().orElse (null ))
124+ .ifPresent (request ::setIsExperimentalMode );
118125 if (config .getOnUserInputRequest () != null ) {
119126 request .setRequestUserInput (true );
120127 }
@@ -204,6 +211,11 @@ static CreateSessionRequest buildCreateRequest(SessionConfig config) {
204211 * @return the built request object
205212 */
206213 static ResumeSessionRequest buildResumeRequest (String sessionId , ResumeSessionConfig config ) {
214+ return buildResumeRequest (sessionId , config , CopilotClientMode .COPILOT_CLI );
215+ }
216+
217+ static ResumeSessionRequest buildResumeRequest (String sessionId , ResumeSessionConfig config ,
218+ CopilotClientMode mode ) {
207219 var request = new ResumeSessionRequest ();
208220 request .setSessionId (sessionId );
209221 // Always request permission callbacks to enable deny-by-default behavior
@@ -226,7 +238,8 @@ static ResumeSessionRequest buildResumeRequest(String sessionId, ResumeSessionCo
226238 request .setExcludedTools (config .getExcludedTools ());
227239 request .setProvider (config .getProvider ());
228240 config .getEnableSessionTelemetry ().ifPresent (request ::setEnableSessionTelemetry );
229- config .getEnableExperimentalMode ().ifPresent (request ::setIsExperimentalMode );
241+ experimentalModeForMode (mode , config .getEnableExperimentalMode ().orElse (null ))
242+ .ifPresent (request ::setIsExperimentalMode );
230243 if (config .getOnUserInputRequest () != null ) {
231244 request .setRequestUserInput (true );
232245 }
@@ -292,6 +305,13 @@ static ResumeSessionRequest buildResumeRequest(String sessionId, ResumeSessionCo
292305 return request ;
293306 }
294307
308+ private static Optional <Boolean > experimentalModeForMode (CopilotClientMode mode , Boolean supplied ) {
309+ if (mode == CopilotClientMode .EMPTY ) {
310+ return Optional .of (supplied != null ? supplied : false );
311+ }
312+ return Optional .ofNullable (supplied );
313+ }
314+
295315 /**
296316 * Configures a session with handlers from the given config.
297317 *
0 commit comments