@@ -346,6 +346,98 @@ internal class StartRequest
346346 public string ? Prompt { get ; set ; }
347347}
348348
349+ public class Agent
350+ {
351+ /// <summary>Unique identifier of the custom agent</summary>
352+ [ JsonPropertyName ( "name" ) ]
353+ public string Name { get ; set ; } = string . Empty ;
354+
355+ /// <summary>Human-readable display name</summary>
356+ [ JsonPropertyName ( "displayName" ) ]
357+ public string DisplayName { get ; set ; } = string . Empty ;
358+
359+ /// <summary>Description of the agent's purpose</summary>
360+ [ JsonPropertyName ( "description" ) ]
361+ public string Description { get ; set ; } = string . Empty ;
362+ }
363+
364+ public class SessionAgentListResult
365+ {
366+ /// <summary>Available custom agents</summary>
367+ [ JsonPropertyName ( "agents" ) ]
368+ public List < Agent > Agents { get ; set ; } = new ( ) ;
369+ }
370+
371+ public class SessionAgentGetCurrentResult
372+ {
373+ /// <summary>Currently selected custom agent, or null if using the default agent</summary>
374+ [ JsonPropertyName ( "agent" ) ]
375+ public object ? Agent { get ; set ; }
376+ }
377+
378+ /// <summary>The newly selected custom agent</summary>
379+ public class SessionAgentSelectResultAgent
380+ {
381+ /// <summary>Unique identifier of the custom agent</summary>
382+ [ JsonPropertyName ( "name" ) ]
383+ public string Name { get ; set ; } = string . Empty ;
384+
385+ /// <summary>Human-readable display name</summary>
386+ [ JsonPropertyName ( "displayName" ) ]
387+ public string DisplayName { get ; set ; } = string . Empty ;
388+
389+ /// <summary>Description of the agent's purpose</summary>
390+ [ JsonPropertyName ( "description" ) ]
391+ public string Description { get ; set ; } = string . Empty ;
392+ }
393+
394+ public class SessionAgentSelectResult
395+ {
396+ /// <summary>The newly selected custom agent</summary>
397+ [ JsonPropertyName ( "agent" ) ]
398+ public SessionAgentSelectResultAgent Agent { get ; set ; } = new ( ) ;
399+ }
400+
401+ internal class SelectRequest
402+ {
403+ [ JsonPropertyName ( "sessionId" ) ]
404+ public string SessionId { get ; set ; } = string . Empty ;
405+
406+ [ JsonPropertyName ( "name" ) ]
407+ public string Name { get ; set ; } = string . Empty ;
408+ }
409+
410+ public class SessionAgentDeselectResult
411+ {
412+ }
413+
414+ internal class DeselectRequest
415+ {
416+ [ JsonPropertyName ( "sessionId" ) ]
417+ public string SessionId { get ; set ; } = string . Empty ;
418+ }
419+
420+ public class SessionCompactionCompactResult
421+ {
422+ /// <summary>Whether compaction completed successfully</summary>
423+ [ JsonPropertyName ( "success" ) ]
424+ public bool Success { get ; set ; }
425+
426+ /// <summary>Number of tokens freed by compaction</summary>
427+ [ JsonPropertyName ( "tokensRemoved" ) ]
428+ public double TokensRemoved { get ; set ; }
429+
430+ /// <summary>Number of messages removed during compaction</summary>
431+ [ JsonPropertyName ( "messagesRemoved" ) ]
432+ public double MessagesRemoved { get ; set ; }
433+ }
434+
435+ internal class CompactRequest
436+ {
437+ [ JsonPropertyName ( "sessionId" ) ]
438+ public string SessionId { get ; set ; } = string . Empty ;
439+ }
440+
349441[ JsonConverter ( typeof ( JsonStringEnumConverter < SessionModeGetResultMode > ) ) ]
350442public enum SessionModeGetResultMode
351443{
@@ -455,6 +547,8 @@ internal SessionRpc(JsonRpc rpc, string sessionId)
455547 Plan = new PlanApi ( rpc , sessionId ) ;
456548 Workspace = new WorkspaceApi ( rpc , sessionId ) ;
457549 Fleet = new FleetApi ( rpc , sessionId ) ;
550+ Agent = new AgentApi ( rpc , sessionId ) ;
551+ Compaction = new CompactionApi ( rpc , sessionId ) ;
458552 }
459553
460554 public ModelApi Model { get ; }
@@ -466,6 +560,10 @@ internal SessionRpc(JsonRpc rpc, string sessionId)
466560 public WorkspaceApi Workspace { get ; }
467561
468562 public FleetApi Fleet { get ; }
563+
564+ public AgentApi Agent { get ; }
565+
566+ public CompactionApi Compaction { get ; }
469567}
470568
471569public class ModelApi
@@ -605,14 +703,76 @@ public async Task<SessionFleetStartResult> StartAsync(string? prompt, Cancellati
605703 }
606704}
607705
706+ public class AgentApi
707+ {
708+ private readonly JsonRpc _rpc ;
709+ private readonly string _sessionId ;
710+
711+ internal AgentApi ( JsonRpc rpc , string sessionId )
712+ {
713+ _rpc = rpc ;
714+ _sessionId = sessionId ;
715+ }
716+
717+ /// <summary>Calls "session.agent.list".</summary>
718+ public async Task < SessionAgentListResult > ListAsync ( CancellationToken cancellationToken = default )
719+ {
720+ var request = new ListRequest { SessionId = _sessionId } ;
721+ return await CopilotClient . InvokeRpcAsync < SessionAgentListResult > ( _rpc , "session.agent.list" , [ request ] , cancellationToken ) ;
722+ }
723+
724+ /// <summary>Calls "session.agent.getCurrent".</summary>
725+ public async Task < SessionAgentGetCurrentResult > GetCurrentAsync ( CancellationToken cancellationToken = default )
726+ {
727+ var request = new GetCurrentRequest { SessionId = _sessionId } ;
728+ return await CopilotClient . InvokeRpcAsync < SessionAgentGetCurrentResult > ( _rpc , "session.agent.getCurrent" , [ request ] , cancellationToken ) ;
729+ }
730+
731+ /// <summary>Calls "session.agent.select".</summary>
732+ public async Task < SessionAgentSelectResult > SelectAsync ( string name , CancellationToken cancellationToken = default )
733+ {
734+ var request = new SelectRequest { SessionId = _sessionId , Name = name } ;
735+ return await CopilotClient . InvokeRpcAsync < SessionAgentSelectResult > ( _rpc , "session.agent.select" , [ request ] , cancellationToken ) ;
736+ }
737+
738+ /// <summary>Calls "session.agent.deselect".</summary>
739+ public async Task < SessionAgentDeselectResult > DeselectAsync ( CancellationToken cancellationToken = default )
740+ {
741+ var request = new DeselectRequest { SessionId = _sessionId } ;
742+ return await CopilotClient . InvokeRpcAsync < SessionAgentDeselectResult > ( _rpc , "session.agent.deselect" , [ request ] , cancellationToken ) ;
743+ }
744+ }
745+
746+ public class CompactionApi
747+ {
748+ private readonly JsonRpc _rpc ;
749+ private readonly string _sessionId ;
750+
751+ internal CompactionApi ( JsonRpc rpc , string sessionId )
752+ {
753+ _rpc = rpc ;
754+ _sessionId = sessionId ;
755+ }
756+
757+ /// <summary>Calls "session.compaction.compact".</summary>
758+ public async Task < SessionCompactionCompactResult > CompactAsync ( CancellationToken cancellationToken = default )
759+ {
760+ var request = new CompactRequest { SessionId = _sessionId } ;
761+ return await CopilotClient . InvokeRpcAsync < SessionCompactionCompactResult > ( _rpc , "session.compaction.compact" , [ request ] , cancellationToken ) ;
762+ }
763+ }
764+
608765[ JsonSourceGenerationOptions (
609766 JsonSerializerDefaults . Web ,
610767 AllowOutOfOrderMetadataProperties = true ,
611768 DefaultIgnoreCondition = JsonIgnoreCondition . WhenWritingNull ) ]
612769[ JsonSerializable ( typeof ( AccountGetQuotaResult ) ) ]
613770[ JsonSerializable ( typeof ( AccountGetQuotaResultQuotaSnapshotsValue ) ) ]
771+ [ JsonSerializable ( typeof ( Agent ) ) ]
772+ [ JsonSerializable ( typeof ( CompactRequest ) ) ]
614773[ JsonSerializable ( typeof ( CreateFileRequest ) ) ]
615774[ JsonSerializable ( typeof ( DeleteRequest ) ) ]
775+ [ JsonSerializable ( typeof ( DeselectRequest ) ) ]
616776[ JsonSerializable ( typeof ( GetCurrentRequest ) ) ]
617777[ JsonSerializable ( typeof ( GetRequest ) ) ]
618778[ JsonSerializable ( typeof ( ListFilesRequest ) ) ]
@@ -628,6 +788,13 @@ public async Task<SessionFleetStartResult> StartAsync(string? prompt, Cancellati
628788[ JsonSerializable ( typeof ( PingResult ) ) ]
629789[ JsonSerializable ( typeof ( ReadFileRequest ) ) ]
630790[ JsonSerializable ( typeof ( ReadRequest ) ) ]
791+ [ JsonSerializable ( typeof ( SelectRequest ) ) ]
792+ [ JsonSerializable ( typeof ( SessionAgentDeselectResult ) ) ]
793+ [ JsonSerializable ( typeof ( SessionAgentGetCurrentResult ) ) ]
794+ [ JsonSerializable ( typeof ( SessionAgentListResult ) ) ]
795+ [ JsonSerializable ( typeof ( SessionAgentSelectResult ) ) ]
796+ [ JsonSerializable ( typeof ( SessionAgentSelectResultAgent ) ) ]
797+ [ JsonSerializable ( typeof ( SessionCompactionCompactResult ) ) ]
631798[ JsonSerializable ( typeof ( SessionFleetStartResult ) ) ]
632799[ JsonSerializable ( typeof ( SessionModeGetResult ) ) ]
633800[ JsonSerializable ( typeof ( SessionModeSetResult ) ) ]
0 commit comments