mirror of
https://github.com/github/awesome-copilot.git
synced 2026-03-17 14:45:13 +00:00
* Update .NET Copilot SDK recipes for explicit permission handling (fix breaking change in SDK v0.1.28) * Update .NET Copilot SDK recipes for explicit permission handling
2.2 KiB
2.2 KiB
Session Persistence and Resumption
Save and restore conversation sessions across application restarts.
Example scenario
You want users to be able to continue a conversation even after closing and reopening your application.
Runnable example: recipe/persisting-sessions.cs
cd recipe dotnet run persisting-sessions.cs
Creating a session with a custom ID
using GitHub.Copilot.SDK;
await using var client = new CopilotClient();
await client.StartAsync();
// Create session with a memorable ID
var session = await client.CreateSessionAsync(new SessionConfig
{
SessionId = "user-123-conversation",
Model = "gpt-5",
OnPermissionRequest = PermissionHandler.ApproveAll
});
await session.SendAsync(new MessageOptions { Prompt = "Let's discuss TypeScript generics" });
// Session ID is preserved
Console.WriteLine(session.SessionId); // "user-123-conversation"
// Destroy session but keep data on disk
await session.DisposeAsync();
await client.StopAsync();
Resuming a session
await using var client = new CopilotClient();
await client.StartAsync();
// Resume the previous session
var session = await client.ResumeSessionAsync("user-123-conversation");
// Previous context is restored
await session.SendAsync(new MessageOptions { Prompt = "What were we discussing?" });
await session.DisposeAsync();
await client.StopAsync();
Listing available sessions
var sessions = await client.ListSessionsAsync();
foreach (var s in sessions)
{
Console.WriteLine($"Session: {s.SessionId}");
}
Deleting a session permanently
// Remove session and all its data from disk
await client.DeleteSessionAsync("user-123-conversation");
Getting session history
Retrieve all messages from a session:
var messages = await session.GetMessagesAsync();
foreach (var msg in messages)
{
Console.WriteLine($"[{msg.Type}] {msg.Data.Content}");
}
Best practices
- Use meaningful session IDs: Include user ID or context in the session ID
- Handle missing sessions: Check if a session exists before resuming
- Clean up old sessions: Periodically delete sessions that are no longer needed