Skip to content

Conversation

@jmoseley
Copy link

Allow configuration of infinite sessions and compaction thresholds.

- Add InfiniteSessionConfig type with thresholds
- Add infiniteSessions option to SessionConfig
- Expose workspacePath on CopilotSession
- Pass config to server and capture workspace path in create/resume
- Add InfiniteSessionConfig TypedDict with thresholds
- Add infinite_sessions option to SessionConfig
- Expose workspace_path property on CopilotSession
- Convert snake_case to camelCase for wire format
- Add InfiniteSessionConfig struct with pointer fields for optional values
- Add InfiniteSessions field to SessionConfig
- Add WorkspacePath() method to Session
- Pass config in CreateSession and capture path in create/resume
- Add InfiniteSessionConfig class with threshold properties
- Add InfiniteSessions property to SessionConfig
- Add WorkspacePath property to CopilotSession
- Pass config in CreateSessionAsync and capture path in create/resume
- Add InfiniteSessionConfig documentation to SessionConfig options
- Document workspacePath property on CopilotSession
- Add Infinite Sessions section with examples for each SDK
- Document compaction events
@jmoseley jmoseley requested a review from a team as a code owner January 21, 2026 22:26
Copilot AI review requested due to automatic review settings January 21, 2026 22:26
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds support for infinite sessions with automatic context compaction and workspace persistence across all language SDKs (Python, Node.js, Go, and .NET). Sessions can now automatically manage context window limits through background compaction and persist state to workspace directories.

Changes:

  • Added InfiniteSessionConfig type across all SDKs with configurable thresholds for background compaction and buffer exhaustion
  • Updated session objects to include workspace_path property that points to the session's persistent workspace directory
  • Modified create and resume session methods to accept infinite session configuration and return workspace paths
  • Added comprehensive documentation with usage examples for all supported languages

Reviewed changes

Copilot reviewed 17 out of 17 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
python/copilot/types.py Added InfiniteSessionConfig TypedDict and infinite_sessions field to SessionConfig
python/copilot/session.py Added workspace_path parameter and property to CopilotSession
python/copilot/client.py Updated create_session and resume_session to handle infinite sessions config and workspace path
python/README.md Added Infinite Sessions documentation section with Python examples
nodejs/src/types.ts Added InfiniteSessionConfig interface and infiniteSessions field to SessionConfig
nodejs/src/session.ts Added workspacePath parameter and getter to CopilotSession
nodejs/src/index.ts Exported InfiniteSessionConfig type
nodejs/src/client.ts Updated createSession and resumeSession to handle infinite sessions config and workspace path
nodejs/README.md Added Infinite Sessions documentation section with TypeScript examples
go/types.go Added InfiniteSessionConfig struct and InfiniteSessions field to SessionConfig
go/session.go Added workspacePath field and WorkspacePath() method to Session
go/client.go Updated CreateSession and ResumeSessionWithOptions to handle infinite sessions config and workspace path
go/README.md Added Infinite Sessions documentation section with Go examples
dotnet/src/Types.cs Added InfiniteSessionConfig class and InfiniteSessions property to SessionConfig
dotnet/src/Session.cs Added WorkspacePath parameter and property to CopilotSession
dotnet/src/Client.cs Updated CreateSessionAsync and ResumeSessionAsync to handle infinite sessions config and workspace path
dotnet/README.md Added Infinite Sessions documentation section with C# examples
Comments suppressed due to low confidence (1)

go/README.md:286

  • The function call references Float64(0.95) but should be copilot.Float64(0.95) to be consistent with the copilot.Bool(true) on line 284. This appears to be a missing package prefix.
        BufferExhaustionThreshold:     Float64(0.95), // Block at 95% until compaction completes

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

patniko
patniko previously approved these changes Jan 22, 2026
friggeri
friggeri previously approved these changes Jan 22, 2026
Copy link
Collaborator

@friggeri friggeri left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jmoseley not going to block based on this, but please add e2e tests if you feel like that would be warranted for this feature

@jmoseley jmoseley dismissed stale reviews from friggeri and patniko via 40ffae5 January 23, 2026 00:54
- Test compaction triggers with low thresholds (0.5%/1%)
- Test session.usage_info events show token limits
- Test assistant.usage events
- Test no compaction events when infinite sessions disabled
The compaction trigger test requires real API calls to get realistic
token counts. The replay proxy doesn't provide the token usage data
needed for the CLI to trigger compaction.
The test requires a CLI build with infinite sessions support.
Run locally with COPILOT_CLI_PATH pointing to a local CLI build.
Add e2e tests for context compaction to Go, Python, and .NET SDKs:
- Test that compaction triggers with low thresholds and emits events
- Test that no compaction events occur when infinite sessions disabled
- Verify session still works after compaction (context preserved via summary)

These tests mirror the existing Node.js compaction tests.
@jmoseley
Copy link
Author

Added e2e tests. They won't pass until we ship the release that supports infinite sessions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants