@@ -216,6 +216,136 @@ internal class SwitchToRequest
216216 public string ModelId { get ; set ; } = string . Empty ;
217217}
218218
219+ public class SessionModeGetResult
220+ {
221+ /// <summary>The current agent mode.</summary>
222+ [ JsonPropertyName ( "mode" ) ]
223+ public string Mode { get ; set ; } = string . Empty ;
224+ }
225+
226+ internal class GetRequest
227+ {
228+ [ JsonPropertyName ( "sessionId" ) ]
229+ public string SessionId { get ; set ; } = string . Empty ;
230+ }
231+
232+ public class SessionModeSetResult
233+ {
234+ /// <summary>The agent mode after switching.</summary>
235+ [ JsonPropertyName ( "mode" ) ]
236+ public string Mode { get ; set ; } = string . Empty ;
237+ }
238+
239+ internal class SetRequest
240+ {
241+ [ JsonPropertyName ( "sessionId" ) ]
242+ public string SessionId { get ; set ; } = string . Empty ;
243+
244+ [ JsonPropertyName ( "mode" ) ]
245+ public string Mode { get ; set ; } = string . Empty ;
246+ }
247+
248+ public class SessionPlanReadResult
249+ {
250+ /// <summary>Whether plan.md exists in the workspace</summary>
251+ [ JsonPropertyName ( "exists" ) ]
252+ public bool Exists { get ; set ; }
253+
254+ /// <summary>The content of plan.md, or null if it does not exist</summary>
255+ [ JsonPropertyName ( "content" ) ]
256+ public object Content { get ; set ; }
257+ }
258+
259+ internal class ReadRequest
260+ {
261+ [ JsonPropertyName ( "sessionId" ) ]
262+ public string SessionId { get ; set ; } = string . Empty ;
263+ }
264+
265+ public class SessionPlanUpdateResult
266+ {
267+ }
268+
269+ internal class UpdateRequest
270+ {
271+ [ JsonPropertyName ( "sessionId" ) ]
272+ public string SessionId { get ; set ; } = string . Empty ;
273+
274+ [ JsonPropertyName ( "content" ) ]
275+ public string Content { get ; set ; } = string . Empty ;
276+ }
277+
278+ public class SessionPlanDeleteResult
279+ {
280+ }
281+
282+ internal class DeleteRequest
283+ {
284+ [ JsonPropertyName ( "sessionId" ) ]
285+ public string SessionId { get ; set ; } = string . Empty ;
286+ }
287+
288+ public class SessionWorkspaceListFilesResult
289+ {
290+ /// <summary>Relative file paths in the workspace files directory</summary>
291+ [ JsonPropertyName ( "files" ) ]
292+ public List < string > Files { get ; set ; } = new ( ) ;
293+ }
294+
295+ internal class ListFilesRequest
296+ {
297+ [ JsonPropertyName ( "sessionId" ) ]
298+ public string SessionId { get ; set ; } = string . Empty ;
299+ }
300+
301+ public class SessionWorkspaceReadFileResult
302+ {
303+ /// <summary>File content as a UTF-8 string</summary>
304+ [ JsonPropertyName ( "content" ) ]
305+ public string Content { get ; set ; } = string . Empty ;
306+ }
307+
308+ internal class ReadFileRequest
309+ {
310+ [ JsonPropertyName ( "sessionId" ) ]
311+ public string SessionId { get ; set ; } = string . Empty ;
312+
313+ [ JsonPropertyName ( "path" ) ]
314+ public string Path { get ; set ; } = string . Empty ;
315+ }
316+
317+ public class SessionWorkspaceCreateFileResult
318+ {
319+ }
320+
321+ internal class CreateFileRequest
322+ {
323+ [ JsonPropertyName ( "sessionId" ) ]
324+ public string SessionId { get ; set ; } = string . Empty ;
325+
326+ [ JsonPropertyName ( "path" ) ]
327+ public string Path { get ; set ; } = string . Empty ;
328+
329+ [ JsonPropertyName ( "content" ) ]
330+ public string Content { get ; set ; } = string . Empty ;
331+ }
332+
333+ public class SessionFleetStartResult
334+ {
335+ /// <summary>Whether fleet mode was successfully activated</summary>
336+ [ JsonPropertyName ( "started" ) ]
337+ public bool Started { get ; set ; }
338+ }
339+
340+ internal class StartRequest
341+ {
342+ [ JsonPropertyName ( "sessionId" ) ]
343+ public string SessionId { get ; set ; } = string . Empty ;
344+
345+ [ JsonPropertyName ( "prompt" ) ]
346+ public string ? Prompt { get ; set ; }
347+ }
348+
219349/// <summary>Typed server-scoped RPC methods (no session required).</summary>
220350public class ServerRpc
221351{
@@ -309,9 +439,21 @@ internal SessionRpc(JsonRpc rpc, string sessionId)
309439 _rpc = rpc ;
310440 _sessionId = sessionId ;
311441 Model = new ModelApi ( rpc , sessionId ) ;
442+ Mode = new ModeApi ( rpc , sessionId ) ;
443+ Plan = new PlanApi ( rpc , sessionId ) ;
444+ Workspace = new WorkspaceApi ( rpc , sessionId ) ;
445+ Fleet = new FleetApi ( rpc , sessionId ) ;
312446 }
313447
314448 public ModelApi Model { get ; }
449+
450+ public ModeApi Mode { get ; }
451+
452+ public PlanApi Plan { get ; }
453+
454+ public WorkspaceApi Workspace { get ; }
455+
456+ public FleetApi Fleet { get ; }
315457}
316458
317459public class ModelApi
@@ -340,13 +482,128 @@ public async Task<SessionModelSwitchToResult> SwitchToAsync(string modelId, Canc
340482 }
341483}
342484
485+ public class ModeApi
486+ {
487+ private readonly JsonRpc _rpc ;
488+ private readonly string _sessionId ;
489+
490+ internal ModeApi ( JsonRpc rpc , string sessionId )
491+ {
492+ _rpc = rpc ;
493+ _sessionId = sessionId ;
494+ }
495+
496+ /// <summary>Calls "session.mode.get".</summary>
497+ public async Task < SessionModeGetResult > GetAsync ( CancellationToken cancellationToken = default )
498+ {
499+ var request = new GetRequest { SessionId = _sessionId } ;
500+ return await CopilotClient . InvokeRpcAsync < SessionModeGetResult > ( _rpc , "session.mode.get" , [ request ] , cancellationToken ) ;
501+ }
502+
503+ /// <summary>Calls "session.mode.set".</summary>
504+ public async Task < SessionModeSetResult > SetAsync ( string mode , CancellationToken cancellationToken = default )
505+ {
506+ var request = new SetRequest { SessionId = _sessionId , Mode = mode } ;
507+ return await CopilotClient . InvokeRpcAsync < SessionModeSetResult > ( _rpc , "session.mode.set" , [ request ] , cancellationToken ) ;
508+ }
509+ }
510+
511+ public class PlanApi
512+ {
513+ private readonly JsonRpc _rpc ;
514+ private readonly string _sessionId ;
515+
516+ internal PlanApi ( JsonRpc rpc , string sessionId )
517+ {
518+ _rpc = rpc ;
519+ _sessionId = sessionId ;
520+ }
521+
522+ /// <summary>Calls "session.plan.read".</summary>
523+ public async Task < SessionPlanReadResult > ReadAsync ( CancellationToken cancellationToken = default )
524+ {
525+ var request = new ReadRequest { SessionId = _sessionId } ;
526+ return await CopilotClient . InvokeRpcAsync < SessionPlanReadResult > ( _rpc , "session.plan.read" , [ request ] , cancellationToken ) ;
527+ }
528+
529+ /// <summary>Calls "session.plan.update".</summary>
530+ public async Task < SessionPlanUpdateResult > UpdateAsync ( string content , CancellationToken cancellationToken = default )
531+ {
532+ var request = new UpdateRequest { SessionId = _sessionId , Content = content } ;
533+ return await CopilotClient . InvokeRpcAsync < SessionPlanUpdateResult > ( _rpc , "session.plan.update" , [ request ] , cancellationToken ) ;
534+ }
535+
536+ /// <summary>Calls "session.plan.delete".</summary>
537+ public async Task < SessionPlanDeleteResult > DeleteAsync ( CancellationToken cancellationToken = default )
538+ {
539+ var request = new DeleteRequest { SessionId = _sessionId } ;
540+ return await CopilotClient . InvokeRpcAsync < SessionPlanDeleteResult > ( _rpc , "session.plan.delete" , [ request ] , cancellationToken ) ;
541+ }
542+ }
543+
544+ public class WorkspaceApi
545+ {
546+ private readonly JsonRpc _rpc ;
547+ private readonly string _sessionId ;
548+
549+ internal WorkspaceApi ( JsonRpc rpc , string sessionId )
550+ {
551+ _rpc = rpc ;
552+ _sessionId = sessionId ;
553+ }
554+
555+ /// <summary>Calls "session.workspace.listFiles".</summary>
556+ public async Task < SessionWorkspaceListFilesResult > ListFilesAsync ( CancellationToken cancellationToken = default )
557+ {
558+ var request = new ListFilesRequest { SessionId = _sessionId } ;
559+ return await CopilotClient . InvokeRpcAsync < SessionWorkspaceListFilesResult > ( _rpc , "session.workspace.listFiles" , [ request ] , cancellationToken ) ;
560+ }
561+
562+ /// <summary>Calls "session.workspace.readFile".</summary>
563+ public async Task < SessionWorkspaceReadFileResult > ReadFileAsync ( string path , CancellationToken cancellationToken = default )
564+ {
565+ var request = new ReadFileRequest { SessionId = _sessionId , Path = path } ;
566+ return await CopilotClient . InvokeRpcAsync < SessionWorkspaceReadFileResult > ( _rpc , "session.workspace.readFile" , [ request ] , cancellationToken ) ;
567+ }
568+
569+ /// <summary>Calls "session.workspace.createFile".</summary>
570+ public async Task < SessionWorkspaceCreateFileResult > CreateFileAsync ( string path , string content , CancellationToken cancellationToken = default )
571+ {
572+ var request = new CreateFileRequest { SessionId = _sessionId , Path = path , Content = content } ;
573+ return await CopilotClient . InvokeRpcAsync < SessionWorkspaceCreateFileResult > ( _rpc , "session.workspace.createFile" , [ request ] , cancellationToken ) ;
574+ }
575+ }
576+
577+ public class FleetApi
578+ {
579+ private readonly JsonRpc _rpc ;
580+ private readonly string _sessionId ;
581+
582+ internal FleetApi ( JsonRpc rpc , string sessionId )
583+ {
584+ _rpc = rpc ;
585+ _sessionId = sessionId ;
586+ }
587+
588+ /// <summary>Calls "session.fleet.start".</summary>
589+ public async Task < SessionFleetStartResult > StartAsync ( string ? prompt , CancellationToken cancellationToken = default )
590+ {
591+ var request = new StartRequest { SessionId = _sessionId , Prompt = prompt } ;
592+ return await CopilotClient . InvokeRpcAsync < SessionFleetStartResult > ( _rpc , "session.fleet.start" , [ request ] , cancellationToken ) ;
593+ }
594+ }
595+
343596[ JsonSourceGenerationOptions (
344597 JsonSerializerDefaults . Web ,
345598 AllowOutOfOrderMetadataProperties = true ,
346599 DefaultIgnoreCondition = JsonIgnoreCondition . WhenWritingNull ) ]
347600[ JsonSerializable ( typeof ( AccountGetQuotaResult ) ) ]
348601[ JsonSerializable ( typeof ( AccountGetQuotaResultQuotaSnapshotsValue ) ) ]
602+ [ JsonSerializable ( typeof ( CreateFileRequest ) ) ]
603+ [ JsonSerializable ( typeof ( DeleteRequest ) ) ]
349604[ JsonSerializable ( typeof ( GetCurrentRequest ) ) ]
605+ [ JsonSerializable ( typeof ( GetRequest ) ) ]
606+ [ JsonSerializable ( typeof ( ListFilesRequest ) ) ]
350607[ JsonSerializable ( typeof ( ListRequest ) ) ]
351608[ JsonSerializable ( typeof ( Model ) ) ]
352609[ JsonSerializable ( typeof ( ModelBilling ) ) ]
@@ -357,9 +614,23 @@ public async Task<SessionModelSwitchToResult> SwitchToAsync(string modelId, Canc
357614[ JsonSerializable ( typeof ( ModelsListResult ) ) ]
358615[ JsonSerializable ( typeof ( PingRequest ) ) ]
359616[ JsonSerializable ( typeof ( PingResult ) ) ]
617+ [ JsonSerializable ( typeof ( ReadFileRequest ) ) ]
618+ [ JsonSerializable ( typeof ( ReadRequest ) ) ]
619+ [ JsonSerializable ( typeof ( SessionFleetStartResult ) ) ]
620+ [ JsonSerializable ( typeof ( SessionModeGetResult ) ) ]
621+ [ JsonSerializable ( typeof ( SessionModeSetResult ) ) ]
360622[ JsonSerializable ( typeof ( SessionModelGetCurrentResult ) ) ]
361623[ JsonSerializable ( typeof ( SessionModelSwitchToResult ) ) ]
624+ [ JsonSerializable ( typeof ( SessionPlanDeleteResult ) ) ]
625+ [ JsonSerializable ( typeof ( SessionPlanReadResult ) ) ]
626+ [ JsonSerializable ( typeof ( SessionPlanUpdateResult ) ) ]
627+ [ JsonSerializable ( typeof ( SessionWorkspaceCreateFileResult ) ) ]
628+ [ JsonSerializable ( typeof ( SessionWorkspaceListFilesResult ) ) ]
629+ [ JsonSerializable ( typeof ( SessionWorkspaceReadFileResult ) ) ]
630+ [ JsonSerializable ( typeof ( SetRequest ) ) ]
631+ [ JsonSerializable ( typeof ( StartRequest ) ) ]
362632[ JsonSerializable ( typeof ( SwitchToRequest ) ) ]
363633[ JsonSerializable ( typeof ( Tool ) ) ]
364634[ JsonSerializable ( typeof ( ToolsListResult ) ) ]
635+ [ JsonSerializable ( typeof ( UpdateRequest ) ) ]
365636internal partial class RpcJsonContext : JsonSerializerContext ;
0 commit comments