Skip to content

sessions: experimental setting for local agent host as default provider#319653

Merged
sandy081 merged 2 commits into
mainfrom
sandy081/sessions-local-agent-host-default-provider
Jun 2, 2026
Merged

sessions: experimental setting for local agent host as default provider#319653
sandy081 merged 2 commits into
mainfrom
sandy081/sessions-local-agent-host-default-provider

Conversation

@sandy081
Copy link
Copy Markdown
Member

@sandy081 sandy081 commented Jun 2, 2026

What

Adds an experimental setting chat.agentHost.defaultSessionsProvider (default false, gated behind chat.agentHost.enabled). When enabled, the local agent host becomes the default sessions provider: its session types are surfaced before every other provider's in the Agents window (new-session picker, type filter, etc.). When disabled, the Copilot Chat sessions provider keeps precedence (current behavior).

How

Rather than hardcoding provider ordering in the orchestration layer, ordering now flows through the provider contract:

  • ISessionsProvider.order — new required number property. Lower values sort first; default 0; ties keep registration order.
  • SessionsManagementService_getOrderedProviders() does a stable sort by order and is used by both getAllSessionTypes() and getSessionTypesForFolder(). The management service stays provider-agnostic.
  • Providers own their order:
    • BaseAgentHostSessionsProvider defaults order to 0.
    • LocalAgentHostSessionsProvider overrides order to return -1 when the setting is enabled (else 1), and fires onDidChangeSessionTypes when the setting toggles so the list re-sorts live.
    • CopilotChatSessionsProvider / LocalChatSessionsProvider set explicit order = 0.
  • The setting is registered as experimental (tags: ['experimental'] + experiment: { mode: 'startup' }).

Notes for reviewers

  • The setting id constant lives in src/vs/sessions/common/agentHostSessionsProvider.ts.
  • SessionsManagementService now initializes its session-types cache at construction.
  • Added unit tests asserting session types are ordered by provider order. Updated SESSIONS.md.

Validated with compile-check-ts-native, valid-layers-check, hygiene, and the affected browser unit tests.

Introduce an experimental `chat.agentHost.defaultSessionsProvider` setting
(default `false`, gated behind `chat.agentHost.enabled`). When enabled, the
local agent host's session types are surfaced before other providers'.

Ordering is driven by a new `order` property on `ISessionsProvider` (lower
sorts first, default `0`, ties keep registration order) so the management
service stays provider-agnostic. The local agent host provider sets its order
reactively from the setting and fires `onDidChangeSessionTypes` on change.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 2, 2026 22:06
@sandy081 sandy081 self-assigned this Jun 2, 2026
@sandy081 sandy081 added this to the 1.124.0 milestone Jun 2, 2026
@sandy081 sandy081 enabled auto-merge (squash) June 2, 2026 22:07
@vs-code-engineering
Copy link
Copy Markdown
Contributor

vs-code-engineering Bot commented Jun 2, 2026

📬 CODENOTIFY

The following users are being notified based on files changed in this PR:

@lszomoru

Matched files:

  • src/vs/sessions/services/sessions/browser/sessionsManagementService.ts
  • src/vs/sessions/services/sessions/common/sessionsProvider.ts
  • src/vs/sessions/services/sessions/test/browser/sessionsManagementService.test.ts

Copy link
Copy Markdown
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 an experimental mechanism for controlling which Sessions provider’s session types appear first in the Agents window by pushing provider precedence into the provider contract (ISessionsProvider.order) and sorting providers in the sessions management layer accordingly. It also introduces an experimental setting (chat.agentHost.defaultSessionsProvider) that, when enabled, makes the local agent host provider surface its session types ahead of others.

Changes:

  • Add a required ISessionsProvider.order property and sort providers by this order (stable) when collecting/session-filtering session types.
  • Make the local agent host provider’s order reactive to the new experimental setting and trigger resorting by firing onDidChangeSessionTypes.
  • Update docs and add unit tests asserting ordering behavior.
Show a summary per file
File Description
src/vs/sessions/SESSIONS.md Documents provider order and the experimental setting behavior.
src/vs/sessions/services/sessions/test/browser/sessionsManagementService.test.ts Adds tests to assert session type ordering by provider order.
src/vs/sessions/services/sessions/common/sessionsProvider.ts Introduces required order: number on ISessionsProvider.
src/vs/sessions/services/sessions/browser/sessionsManagementService.ts Implements provider ordering via _getOrderedProviders() and applies it to type collection/filtering.
src/vs/sessions/contrib/providers/localChatSessions/browser/localChatSessionsProvider.ts Sets explicit provider order = 0.
src/vs/sessions/contrib/providers/copilotChatSessions/browser/copilotChatSessionsProvider.ts Sets explicit provider order = 0.
src/vs/sessions/contrib/providers/agentHost/browser/localAgentHostSessionsProvider.ts Makes provider order reactive to the experimental setting and re-fires type-change events on toggle.
src/vs/sessions/contrib/providers/agentHost/browser/localAgentHost.contribution.ts Registers the new experimental setting for local agent host default-provider behavior.
src/vs/sessions/contrib/providers/agentHost/browser/baseAgentHostSessionsProvider.ts Provides a default order implementation for agent-host-backed providers.
src/vs/sessions/contrib/chat/test/browser/sessionWorkspacePicker.test.ts Updates test provider mocks to include required order.
src/vs/sessions/common/agentHostSessionsProvider.ts Adds the exported setting id constant for chat.agentHost.defaultSessionsProvider.

Copilot's findings

  • Files reviewed: 11/11 changed files
  • Comments generated: 1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@sandy081 sandy081 merged commit 1637b48 into main Jun 2, 2026
25 checks passed
@sandy081 sandy081 deleted the sandy081/sessions-local-agent-host-default-provider branch June 2, 2026 23:06
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.

3 participants