Skip to content

Commit 66b85bf

Browse files
github-actions[bot]stephentoubCopilot
authored
Update @github/copilot to 1.0.81-11 (#2409)
* Update @github/copilot to 1.0.81-11 - Updated nodejs and test harness dependencies - Re-ran code generators - Formatted generated code * Update permission context call sites Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Handle autopilot continuation idles Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Handle autopilot continuation idles across SDKs Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> * Export permission response capability Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Stephen Toub <stoub@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
1 parent f0a575a commit 66b85bf

43 files changed

Lines changed: 852 additions & 204 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎dotnet/src/Generated/Rpc.cs‎

Lines changed: 81 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dotnet/src/Generated/SessionEvents.cs‎

Lines changed: 69 additions & 64 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎dotnet/src/Session.cs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ void Handler(SessionEvent evt)
357357
}
358358
break;
359359

360-
case SessionIdleEvent:
360+
case SessionIdleEvent idleEvent when idleEvent.Data.Mode != SessionMode.Autopilot:
361361
LoggingHelpers.LogTiming(_logger, LogLevel.Debug, null,
362362
"CopilotSession.SendAndWaitAsync idle received. Elapsed={Elapsed}, SessionId={SessionId}",
363363
totalTimestamp,

‎dotnet/test/Unit/ClientSessionLifetimeTests.cs‎

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,6 +642,66 @@ public async Task Generated_Session_Rpc_Throws_When_Session_Disposed()
642642
await Assert.ThrowsAsync<ObjectDisposedException>(() => session.Rpc.Model.GetCurrentAsync());
643643
}
644644

645+
[Fact]
646+
public async Task SendAndWaitAsync_Skips_Autopilot_Continuation_Idle()
647+
{
648+
await using var server = await FakeCopilotServer.StartAsync();
649+
await using var client = new CopilotClient(new CopilotClientOptions { Connection = RuntimeConnection.ForUri(server.Url) });
650+
await using var session = await client.CreateSessionAsync(new SessionConfig
651+
{
652+
OnPermissionRequest = PermissionHandler.ApproveAll
653+
});
654+
655+
var sendTask = session.SendAndWaitAsync(new MessageOptions { Prompt = "keep going" });
656+
await WaitForRequestAsync(server, "session.send");
657+
658+
var continuationIdleProcessed = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
659+
using var subscription = session.On<SessionIdleEvent>(idle =>
660+
{
661+
if (idle.Data.Mode == SessionMode.Autopilot)
662+
{
663+
continuationIdleProcessed.TrySetResult();
664+
}
665+
});
666+
667+
DispatchEvent(session, new AssistantMessageEvent
668+
{
669+
Id = Guid.NewGuid(),
670+
Data = new AssistantMessageData
671+
{
672+
Content = "intermediate",
673+
MessageId = "assistant-1"
674+
}
675+
});
676+
DispatchEvent(session, new SessionIdleEvent
677+
{
678+
Id = Guid.NewGuid(),
679+
Data = new SessionIdleData { Mode = SessionMode.Autopilot }
680+
});
681+
682+
await continuationIdleProcessed.Task.WaitAsync(TimeSpan.FromSeconds(5));
683+
Assert.False(sendTask.IsCompleted);
684+
685+
DispatchEvent(session, new AssistantMessageEvent
686+
{
687+
Id = Guid.NewGuid(),
688+
Data = new AssistantMessageData
689+
{
690+
Content = "final",
691+
MessageId = "assistant-2"
692+
}
693+
});
694+
DispatchEvent(session, new SessionIdleEvent
695+
{
696+
Id = Guid.NewGuid(),
697+
Data = new SessionIdleData { Mode = SessionMode.Interactive }
698+
});
699+
700+
var result = await sendTask.WaitAsync(TimeSpan.FromSeconds(5));
701+
Assert.NotNull(result);
702+
Assert.Equal("final", result.Data.Content);
703+
}
704+
645705
[MethodImpl(MethodImplOptions.NoInlining)]
646706
private static async Task<WeakReference<CopilotSession>> CreateDroppedSessionAsync(CopilotClient client)
647707
{

‎go/rpc/zrpc.go‎

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎go/rpc/zsession_events.go‎

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)