* remove input chevrons and add dividers between each dropdown label
* fix some agent host scenarios
* fix labels hiding/compacting
* nuke all chevrons in the pickers
* address some comments
* fix padding + add back chevrons for title
---------
Co-authored-by: copilot <copilot@github.com>
PreferredExtensionsPagedModel.populateResolvedExtensions sorted numeric Map keys with the default Array.prototype.sort, which compares values as strings. When the resolved map spans both 2-digit and 3+ digit indices (e.g. 20 and 100), lexicographic sort places 100 before 20. The loop then re-keys '100 -> 100 - adjust' before processing 20, which can overwrite a still-occupied lower slot and silently drop an extension from the paged model. Pass an ascending numeric comparator.
* Cloud Agent: Tasks API experimental setting and backend
Introduces a CloudAgentBackend seam with two implementations:
- JobsApiBackend wraps the existing sweagentd Jobs API (default, no behavior change).
- TaskApiBackend implements the new Mission Control Task API and currently uses a StubTaskApiClient pending CAPI routing.
Selection is controlled by the new 'github.copilot.chat.cloudAgentBackend.version' setting ('v1' = Jobs API, 'v2' = Task API). The setting is tagged experimental and defaults to 'v1', preserving existing behavior for legacy users.
* Review comments
* Address PR review feedback
- TaskArtifactPullData: add optional 'number' field separate from db id
- Add ListTaskEventsOptions for event-specific pagination/filters
- Relax sendFollowUp success check (only undefined is failure)
- Drop unused _configurationService field; read config locally in ctor
- Document that cloudAgentBackend.version requires reload
Adds support for the `git-subdir` plugin source kind in marketplace.json files,
matching the Claude Code marketplace schema. The `git-subdir` source clones an
arbitrary git URL and installs a plugin from a subdirectory of that repository,
useful for monorepos that publish many plugins from a single repo.
- Extends `IGitUrlPluginSource` with an optional `path` field.
- Accepts both `"source": "url"` and `"source": "git-subdir"` discriminants
when parsing marketplace.json. `git-subdir` requires both `url` and
`path`; the .git suffix is not required (Azure DevOps / AWS CodeCommit).
- Updates `GitUrlPluginSource` to resolve the install URI as repo-root + path
(mirroring the existing GitHub sub-path handling), while the clone target
remains the repository root.
- Includes `path` in update detection (`hasSourceChanged`) and the
human-readable label (`getPluginSourceLabel`).
Fixes https://github.com/microsoft/vscode/issues/310850
(Commit message generated by Copilot)
agentHost: enable subagent test for Claude real SDK
- Refactor IRealSdkProviderConfig.subagentToolName (string) to
subagentToolNames (readonly string[]) so providers that expose multiple
subagent-kind tools can list them all.
- Claude registers both 'Task' and 'Agent' as subagent tools; the model
may pick either. Listing both exempts both from the 'parent must not
contain inner tool calls' assertion.
- Flip supportsSubagents to true for Claude now that subagent routing
works end-to-end.
* agentHost: adopt channel-based AHP wire model
Adopts the channel-based Agent Host Protocol revision from
microsoft/agent-host-protocol#127. Subscriptions, action delivery, and
protocol notifications now all route over named channels identified by a
top-level `channel: URI` field, replacing the pre-channels subscribe /
dispatch / notify model.
- Renames `ROOT_STATE_URI` from `agenthost:/root` to `ahp-root://` and
adds an `isAhpRootChannel` helper that tolerates both the canonical
wire form and the workbench `URI` round-tripped form (`ahp-root:`).
- Threads a `channel` parameter through every action dispatch path:
`IAgentService.dispatchAction`, `IAgentConnection.dispatch`,
`AgentHostStateManager.dispatchServerAction` / `dispatchClientAction`,
and `AgentSubscriptionManager.dispatchOptimistic`. Individual action
payloads no longer carry `session` / `terminal` / `changeset` fields;
the envelope carries the channel.
- Replaces the `{ method: 'notification', params: { notification } }`
wrapper with top-level JSON-RPC methods (`root/sessionAdded`,
`root/sessionRemoved`, `root/sessionSummaryChanged`, `auth/required`).
Each notification's params now carry their own `channel: URI` field.
- Renames the per-command identifying field to `channel` for the channel-
scoped commands (`createSession`, `disposeSession`, `createTerminal`,
`disposeTerminal`, `fetchTurns`, `completions`,
`invokeChangesetOperation`). Connection-level commands hard-code the
root channel string.
- Updates the subscribe result to `{ snapshot? }` and the
`SubscribeParams` / `UnsubscribeParams` field name from `resource` to
`channel`.
- Drops the removed `ProtocolNotification`, `NotificationType`,
`NotificationMethodParams`, and `NotificationMap` exports; provides a
thin compat `NotificationType` constant keyed by method name for
consumers that still discriminate notification variants.
- Adapts `AgentSubscription` routing to switch on `envelope.channel`
rather than inspecting per-action URI fields (`_isRelevantEnvelope`
replaces `_isRelevantAction`).
- Migrates all producers (`agentService`, `agentSideEffects`,
`agentConfigurationService`, `agentHostChangesetService`,
`agentHostTerminalManager`, `agentHostStateManager`,
`protocolServerHandler`, Claude/Copilot agent sessions, terminal
manager, etc.) and consumers (workbench session handler, terminal
contribution, pty, customization harness, provider tests) to the new
shapes.
(Commit message generated by Copilot)
* agentHost: address Copilot review for channels migration
Addresses feedback from Copilot's review of #317251:
- Update real-SDK integration test helpers and protocol integration
tests to use the channel-based command shapes (rename `session` /
`resource` to `channel`, add `channel: 'ahp-root://'` to
connection-level commands, drop `session` from action payloads, route
via params-level `channel`).
- Treat the canonical `ahp-root://` and the URI-normalized `ahp-root:`
forms as equivalent in `_isRelevantToClient` so root broadcasts reach
a client that subscribed using either form (mirrors `isAhpRootChannel`
already in use elsewhere).
- Drop a `..` hop from the `NotificationType` import path in the local
and remote session-provider tests; import from
`state/sessionActions.js` directly.
- Drop a stale post-merge `session: SESSION_STR` in
`claudeMapSessionEvents.test.ts:Test 9.5` and the matching
`requestResourceAccess` test expectation in
`agentHostFileSystemProvider.test.ts` so they match the new
channel-based shapes (root cause of the macOS browser CI failure).
(Commit message generated by Copilot)
* tests
* import
Remove the deduplicationKey concept from ISession and SessionsManagementService.
Previously, local and remote agent-host providers could both expose the same
underlying agent session, causing duplicates in the sidebar. The
deduplicationKey (set to the session URI string) was used to filter these out
in getSessions().
The deduplication is removed entirely. Duplicate sessions from different
providers will now appear as separate entries, which is acceptable given the
rarity of the local+remote overlap scenario.
- Remove deduplicationKey from ISession interface
- Remove deduplicationKey field from AgentHostSessionAdapter
- Remove deduplicateSessions() function and its call in getSessions()
- Remove the now-unused LOCAL_AGENT_HOST_PROVIDER_ID import
- Remove deduplicateSessions test suite
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
chore: update @vscode/codicons to version 0.0.46-11 in package.json and package-lock.json
Co-authored-by: mrleemurray <mrleemurray@users.noreply.github.com>