Conversation
This isn't fully hooked up since input states don't have a full lifecycle yet in the service Co-authored-by: Copilot <copilot@github.com>
… and full-color icon - Add custom BaseActionViewItem widget that renders the Open in VS Code button with a slide-in label animation on hover/focus and a full-color VS Code logo that desaturates at rest via CSS filter - Reorder the button before the Run Tasks button (order 7 vs 8) - Use ICommandService.executeCommand directly in onClick to bypass precondition-gated ActionRunner.run() which silently blocked clicks - Add protocol handler fallback in electron-browser action for dev builds where no sibling app is configured (launchSiblingApp fails) - Quality-tinted hover backgrounds (blue/green/orange) based on product quality, matching the companion Open in Agents button in VS Code core Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Only set data-product-quality attribute when productService.quality is defined (not in dev builds where quality is undefined) - CSS default background-image uses the bundled ./vscode-icon.svg shield (shown in dev builds where no quality attribute is present) - Added per-quality CSS rules pointing to ../../../../../workbench/browser/media/code-icon.svg — the file that vscode-distro overwrites at packaging time with the quality-specific branded VS Code icon (stable/insider/exploration) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- widget: replace ICommandService.executeCommand with this.action.run() and remove the now-unused ICommandService dependency - electron contribution: also check productService.embedded fields in hasSibling to align with launchSiblingApp's own resolution logic in siblingApp.ts which switches on process.isEmbeddedApp - CSS: scope filter and label transitions inside .monaco-enable-motion blocks and add .monaco-reduce-motion overrides, following the pattern established by other sessions titlebar widgets Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: sandy081 <10746682+sandy081@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
…12356) * Move agentPluginsHome to IUserDataProfile and IEnvironmentService - Add agentPluginsHome to IEnvironmentService (platform level) - Add agentPluginsHome to IUserDataProfile (same value for all profiles) - Remove agentPluginsHome from IWorkbenchEnvironmentService - Remove agentPluginsHome getter from NativeWorkbenchEnvironmentService - Update AgentPluginRepositoryService to read from IUserDataProfileService - Update toUserDataProfile signature with new agentPluginsHome parameter - Update all test files and consumers Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback - Remove redundant agentPluginsHome override in embedded app (already correct from environment service since dataFolderName is shared) - Add agentPluginsHome to isUserDataProfile type guard Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Add --agent-plugins-dir to --transient feature Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Derive agentPluginsPath from extensions parent directory Agent plugins are now stored as a sibling of the extensions directory (e.g., ~/.vscode-insiders/agent-plugins/ next to ~/.vscode-insiders/extensions/). This means --extensions-dir and --transient automatically co-locate agent plugins without needing a separate --agent-plugins-dir flag. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix test: only co-locate agent-plugins when extensions-dir is explicitly set Avoid calling this.extensionsPath in the default agentPluginsPath fallback, which breaks tests where environment args are empty objects. Instead, check args['extensions-dir'] directly and only co-locate when it is explicitly overridden. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Revert env service change; only co-locate agent-plugins in --transient Keep agentPluginsPath original logic in environment service. The --transient handler in cli.ts passes --agent-plugins-dir explicitly to co-locate agent plugins under the same temp parent directory. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Compute host agent-plugins path for embedded Agents app Extract getAgentPluginsPath as a shared function. In the embedded Agents app, compute the host VS Code's agent-plugins directory using quality-specific dataFolderName, matching the hostUserRoamingDataHome pattern. Add --agent-plugins-dir to --transient feature. Add agentPluginsHome to isUserDataProfile type guard. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix warnings * simplify Co-authored-by: Copilot <copilot@github.com> * fix Co-authored-by: Copilot <copilot@github.com> * fix Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot <copilot@github.com>
* agentHost: finish implementing host-level settings * pr comments
Use service assessor
Meant to filter archived, not done
Co-authored-by: Copilot <copilot@github.com>
…nk navigation (#312398) Previously the customizations sidebar only worked for copilotcli sessions. This change extends support to any session type that has a registered content provider, making it work for claude-code and other AHP harnesses. - Remove hardcoded copilotcli gate in mainThreadChatAgents2; now any session type with a registered content provider schema is accepted - Wire ICustomizationHarnessService into count widgets so they use the active harness's itemProvider when available (avoids count mismatches for remote item providers) - Add getActiveItemProvider() utility and update getCustomizationTotalCount() to accept an optional itemProvider for harness-backed sessions - Each sidebar customization link now deep-links to its section in the management editor via selectSectionById - Use reader.store pattern instead of MutableDisposable + manual rebind for itemProvider change subscriptions - Add tests for getActiveItemProvider and getCustomizationTotalCount with itemProvider; add ICustomizationHarnessService mock to widget fixture - Update AI_CUSTOMIZATIONS.md to reflect the new multi-harness sessions behavior
* adding allowRead and testing with defaults * Rename terminal sandbox read allow list * Remove Copilot settings change from sandbox PR * changes * changes * Updating sandbox runtime package * Updating tests * Add macOS test cases for denyRead/allowRead behavior and ~ path handling Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/ec5cf3c2-6c7b-4577-bdbb-8ac3d42bdfb0 Co-authored-by: dileepyavan <52841896+dileepyavan@users.noreply.github.com> * changes for readonly home dir * skipping integrated tests for sandbox * running srt in tmp_dir for linux * running srt in tmp_dir for linux --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
This path comparison sometimes failed on a trailing slash of case differences on case-insensitive systems
…-vscode-button sessions: update Open in VS Code titlebar button with hover animation and full-color icon
tools: fix run task tool not finding tools consistently
* Make localIndex setting public Co-authored-by: Copilot <copilot@github.com> * fix the namespace * update desc --------- Co-authored-by: Copilot <copilot@github.com>
…picker (#312028) * Chat: show provider group name in model picker detail When resolving grouped language model providers, replace model metadata detail with the configured group name. This lets users distinguish duplicate models from multiple instances of the same vendor (for example Local vs Remote Ollama). Also adds a unit test that verifies two groups from the same vendor produce distinct detail labels in the picker metadata. Signed-off-by: Charlie Fish <contact@charlie.fish> * Chat: only override model detail with group name when needed Co-authored-by: Copilot <copilot@github.com> * Chat: use group name as default model detail instead of provider name --------- Signed-off-by: Charlie Fish <contact@charlie.fish> Co-authored-by: Copilot <copilot@github.com>
fix: prevent tool deferral when tool_search is not in request (#311946) When a custom agent restricts tools to only MCP tools, tool_search gets filtered out but toolSearchEnabled remained true. This caused all tools to get defer_loading=true, which Anthropic rejects with 'At least one tool must have defer_loading=false'. Add a defense-in-depth check in both Messages API and Responses API: verify tool_search is actually present in the request's tool list before enabling tool deferral. This aligns with the BYOK path which already had this guard.
…2261) * Mobile titlebar: live session title + web host widget on welcome On phone layouts the desktop titlebar is hidden and replaced by a mobile-specific bar above the grid. Two issues fixed here: 1. The title was hardcoded to "New Session" because `setTitle()` was never called. It now subscribes to `ISessionsManagementService.activeSession.title` via `autorun` and updates live. 2. On the home/empty (welcome) screen there was no way to pick an agent host or connect on mobile web. The host filter widget (dropdown + connection status/connect button) from the web titlebar is now surfaced in the mobile titlebar's center slot while the welcome view is visible. ## Implementation - New `MobileTitlebarPart` under `browser/parts/mobile/` replaces the old `MobileTopBar`. It hosts a hamburger, a center slot with a title element and a `MenuWorkbenchToolBar` for a new `Menus.MobileTitleBarCenter` menu id, and a new-session button. The center slot switches between title and toolbar based on `SessionsWelcomeVisibleContext` AND whether the toolbar has any contributed items, so empty menus (e.g., desktop/electron) fall back to showing the title. - Instantiated via `IInstantiationService.createInstance` so it can consume `ISessionsManagementService` / `IContextKeyService`. - `hostFilter.contribution.ts` registers a second menu entry on `Menus.MobileTitleBarCenter` (gated by `IsWeb && !AuxiliaryWindow && HasAgentHosts && SessionsWelcomeVisible`) plus a matching `IActionViewItemService.register()` call reusing the existing `HostFilterActionViewItem`. No new widget code. - Layering is preserved: `browser/` never imports from `contrib/`; the mobile part only knows about the menu id. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: touch + a11y for mobile titlebar widgets - MobileTitlebarPart: render the session title as a <button> so it is keyboard-focusable and handles touch via native button semantics. - HostFilterActionViewItem: register Gesture.addTarget on both the dropdown pill and the connection button, and listen for TouchEventType.Tap alongside CLICK so iOS taps work reliably. Use dom.EventHelper.stop for consistency. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix mobile titlebar host widget gating: use IsNewChatSessionContext SessionsWelcomeVisibleContext is only true during the first-run walkthrough overlay, not on the home/new-session screen. As a result the host picker was never registered into the mobile titlebar's center slot (the MenuWorkbenchToolBar reported zero items and the title stayed visible). Switch the gate to IsNewChatSessionContext, which is true whenever a new (empty) chat session is active, so the widget shows on the phone home screen and hides once a real session starts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix host filter layout on mobile titlebar The '.monaco-action-bar .action-item' base rule sets display:block with higher specificity than '.agent-host-filter-combo', which caused the dropdown pill and connect button inside the li to stack vertically on the mobile titlebar. Qualify the combo selector with the action-item class to override that rule and restore the intended horizontal layout. Also switch '.mobile-top-bar-actions' to flex-direction: column so future mobile titlebar actions can stack while each compound item still lays out its internal controls as a row. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Remove unicode char from mobileTitlebarPart comment Replace hamburger unicode with [menu] to satisfy hygiene check. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improve browser experience in Agents app * feedback
…12257) Drop [hostname] from remote agent host session labels on web On web the titlebar host filter dropdown already scopes sessions to a single host, making the '[<hostname>]' suffix in the session workspace label and the host label in the session card description redundant. On web only: - Omit the providerLabel from remote agent host session workspace labels so group headers show just '<reponame>' instead of '<reponame> [<host>]'. - Skip the host description on session cards (active sessions fall back to 'Working...' / 'Input needed' / 'Failed' status text). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* fix: post-install script doesn't check for existing sources Co-authored-by: Copilot <copilot@github.com> * Update resources/linux/debian/postinst.template Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * fix: also scan Dir::Etc::sourcelist in has_existing_repo_source Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/b5d0d54b-bcba-40d2-ae60-e5c15f38e959 Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com> * fix: check our own managed files before has_existing_repo_source Agent-Logs-Url: https://github.com/microsoft/vscode/sessions/a7ac5d3d-6a46-40a4-b04b-75aaa68fcea9 Co-authored-by: rzhao271 <7199958+rzhao271@users.noreply.github.com> --------- Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* agents: persist agent-host workspace selection across reload
The workspace picker filtered restore through ISessionsManagementService.activeProviderId,
which auto-locked to whichever provider registered first. Stored entries owned by
late-registering providers (e.g. local-agent-host, contributed at AfterRestored) were
filtered out and never restored.
setActiveProvider has never had a caller in the sessions module since it was added
in # sessions.activeProviderId was never written, so the value was always304626
just 'first provider to arrive'. Removed the unused interface members, storage key,
init logic, and the picker's filter that was the actual bug. The titlebar widget's
dead read of activeProviderId is also removed.
Adds a regression test covering the case where the stored workspace's provider
registers after another provider. (Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address Copilot review: fix stale comments
- Remove stale 'Restore or auto-select active provider' comment in
SessionsManagementService that referred to removed logic.
- Reword test comment to not assert specific contribution phases since
both providers actually register at WorkbenchPhase.AfterRestored;
the race is registration order within the phase, not sync vs async.
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Wait for stored provider before falling back; upgrade on register
Fix the actual reload-window scenario: if storage has a checked entry whose
provider isn't registered yet, the picker no longer falls back to an unrelated
recent workspace. When that provider later registers, the picker upgrades the
selection to the checked entry instead of staying locked on the fallback.
Strengthens the regression test to seed both a (resolvable) early-provider
recent and a checked late-provider the realistic shape that exposedentry
the remaining bug.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Only auto-upgrade workspace selection before user has explicitly picked
Adds a `_userHasPicked` gate so that late provider registrations only move the
selection from a fallback to the stored "checked" entry while the user hasn't
yet acted in this session. Once they explicitly pick (or clear) a workspace,
background provider activity never moves the selection out from under them.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: wait for session types when restoring agent-host selection
When a stored agent-host workspace is restored late (after the provider
registers async on window reload), the picker now fires
onDidSelectWorkspace at the right time, but the provider's session types
may not be loaded yet (e.g., the agent host is still connecting). This
caused createNewSession to throw, which left the new chat view without
an active session and hid the agent-host-specific config pickers (model,
permissions, isolation) until the user re-clicked the workspace picker.
Make _createNewSession resilient: if the provider isn't registered yet,
do nothing (the picker will re-fire when it arrives); if the provider
is registered but has no session types yet, wait once for
onDidChangeSessionTypes, then create. A MutableDisposable cancels any
pending wait when the user picks a different workspace.
Also remove the now-redundant construct-time onDidChangeProviders
fallback in render(): the picker handles that path itself by firing
onDidSelectWorkspace, which is already wired to _onWorkspaceSelected.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: simplify picker upgrade and session creation paths
The picker no longer needs a special 'pending checked entry' suppression:
on every providers-change, if the user hasn't explicitly picked yet,
just re-restore from storage and swap if it differs from the current
selection. This naturally upgrades a fallback to the user's checked
entry once that provider arrives.
Trade-off: when both a fallback recent and a checked recent are stored,
the fallback may briefly appear before being replaced. The user-intent
gate ('_userHasPicked') still prevents background swaps after the user
picks. Test updated to reflect this.
Also fold the now-redundant _doCreateNewSession helper back into
_createNewSession.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: drop dead provider-not-registered branch in _createNewSession
The picker only fires onDidSelectWorkspace once the provider is
registered (the upgrade happens in onDidChangeProviders), and render()
only calls _createNewSession when restoredProject is set, which itself
requires a registered provider. So the missing-provider check was
unreachable. Keep just the session-types-empty wait, which is the
actual fix for the missing-model-picker bug.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: drop carried-over sessionTypeId if invalid for new provider
When the workspace picker upgrades to a different provider after
restore (e.g. fallback EH CLI -> stored local agent host), we were
passing the previous active session's sessionType to createNewSession.
If that type doesn't exist on the new provider (e.g. EH CLI's 'agents'
on a local agent host), createNewSession throws and the previous
session stays leaving the wrong pickers visible until theactive
user re-clicks the workspace.
Drop the sessionTypeId in that case so the wait-for-types branch /
default-pick can produce a valid session.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: upgrade picker to checked remote workspace once it connects
For SSH remote agent hosts, the provider registers immediately but its
connectionStatus starts in Connecting. The picker treated it as
unavailable at restore time and fell back to a different workspace.
The connection-status autorun then only re-restored when the selection
was so the fallback stuck even after the SSH connectionempty
settled.
Apply the same 'if !userHasPicked, swap to checked if different' rule
in the connection-status autorun as in onDidChangeProviders, so the
picker upgrades once the remote finishes connecting.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: honor checked workspace pick across remote connection state
Previously the picker treated Connecting/Disconnected remotes as
'unavailable' and fell back to a different workspace at restore, then
swapped to the user's checked entry once the remote came online. This
caused brief flicker for SSH remotes that hadn't reconnected yet, and
a sticky wrong selection if the connection was slow or failed.
Restore the user's checked workspace immediately as long as its
provider is registered, regardless of connection status. Reflect the
remote state in the trigger label instead:
* Connecting -> spinner icon (loading~spin)
* Disconnected -> grayed (disabledForeground)
* Connected -> normal
Disconnect no longer clears the the gear menu in theselection
picker dropdown lets the user reconnect or pick something else, but
their explicit pick is preserved across reconnects, disconnects, and
provider registration races.
The new chat view's wait-for-session-types branch already handles the
'selection exists but provider not ready' case, so session creation
just waits until the AHP connection completes.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agents: drop trigger styling and connection-status autorun
Upstream now styles offline workspace items in the dropdown. The
trigger label no longer needs spinner/grayed states, and the picker
no longer needs to auto-clear/restore the selection on every
connection-state change. Keep only the bits needed to restore the
user's checked workspace across window reloads:
- _userHasPicked gate + onDidChangeProviders re-restore (handles
agent-host providers that register asynchronously at startup)
- _restoreCheckedWorkspace ignores connection status (so an SSH
remote in the Connecting state at restore-time still restores
the user's pick instead of falling back)
(Written by Copilot)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Move SSH disconnect fallback from view pane into picker
When restoring a checked workspace whose provider is in Connecting state,
the picker now watches connectionStatus and clears the selection if the
Disconnected). This fires
onDidSelectWorkspace(undefined), which triggers the view pane's existing
_onWorkspaceSelected(undefined) handler to call unsetNewSession().
Previously this was handled in _createNewSession by clearing the pending
session-type wait, but that only abandoned the it left the pickerwait
still showing the stale SSH workspace, causing the UI to be out of sync
(picker showing SSH folder, session using default copilot).
The picker is the right owner of this logic because it owns _selectedWorkspace.
Changes:
- sessionWorkspacePicker: add MutableDisposable _connectionStatusWatch and
_watchForConnectionFailure helper; call it after initial restore and
after onDidChangeProviders upgrade; clear it in _selectProject/clearSelection
- newChatViewPane: remove the redundant Disconnected autorun from
_createNewSession (the picker fires onDidSelectWorkspace(undefined) which
already clears _pendingSessionTypeWait via _onWorkspaceSelected)
- test: add 'connecting provider that fails falls back to no selection'
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix SSH fallback: watch from Disconnected, fall back only after Connecting
Remote providers register with an initial status of Disconnected and
Connected/Disconnected.
The previous _watchForConnectionFailure guard required initial status
to be Connecting, so it always bailed out immediately.
Fix: watch from any non-Connected initial state, but only fall back
when Disconnected is observed *after* a Connecting transition has
occurred. A provider that is Disconnected and never starts connecting
(permanently offline prior pick) has its selection preserved as before.
... lifecycle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add grace-period fallback for restored remote that never connects
Provider state transitions can race ahead of the picker's autorun
by the time we observe, status may already be Disconnectedsubscription
without us ever seeing a Connecting transition. The previous logic only
fired the fallback on an observed transition to Disconnected, so it never
triggered in this case and the picker was left showing an unreachable
remote with no session.
Add a 5-second grace-period timer alongside the autorun: if the provider
hasn't reached Connected by then, fall back. Keep the autorun for the
fast cases (immediate Disconnected transition cancels the wait early;
Connected cancels the timer). Both signals route through the same
fallback() helper.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add tests for restored-remote grace-period fallback
Three new tests covering the scenarios that the unit test for the previous
'observed Disconnected transition' approach missed:
- restored remote that never connects falls back after grace period
(the bug the user hit: status starts and stays Disconnected,
no observable transition, but the picker still falls back)
- restored remote that connects within grace period keeps selection
(success cancels the timer)
- user pick during connect cancels the fallback
(explicit picks aren't clobbered by a late timer firing)
Also rename the existing 'restore picks checked entry even when remote is
disconnected' test (before grace period)' to make the time scopeto '
explicit.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Address Copilot review: grammar fix and fire events on provider removal
'never move' in _userHasPicked comment
- When the selected workspace's provider is removed, also clear
_connectionStatusWatch and fire _onDidChangeSelection +
_onDidSelectWorkspace(undefined) so NewChatWidget calls unsetNewSession()
and the grace-period timer/autorun are cancelled
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Use disposableTimeout instead of manual setTimeout/clearTimeout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <copilot@github.com>
Bumps [openssl](https://github.com/rust-openssl/rust-openssl) from 0.10.75 to 0.10.78. - [Release notes](https://github.com/rust-openssl/rust-openssl/releases) - [Commits](rust-openssl/rust-openssl@openssl-v0.10.75...openssl-v0.10.78) --- updated-dependencies: - dependency-name: openssl dependency-version: 0.10.78 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Raymond Zhao <7199958+rzhao271@users.noreply.github.com>
Add onDidDispose event for chat sessions input states
Rework title menu item to use View > Browser command Co-authored-by: Copilot <copilot@github.com>
* Fix Copilot CLI mission control remote flows Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Refine mission control remote events Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Use shared integration id for Mission Control Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix remote Mission Control session sync Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nt (#311988) * Plan agent: graceful degradation when Explore sub-agent is disabled * feat: 3-tier discovery prompt and fix SwitchAgentTool config mismatch - buildAgentBody takes (exploreEnabled, searchSubagentEnabled) for Explore → search subagent → generic fallback discovery tiers - SwitchAgentTool uses getExperimentBasedConfig instead of direct vscode.workspace.getConfiguration, matching PlanAgentProvider - Listen for SearchSubagentToolEnabled config changes - 7 new tests for discovery tiers, config listener, and explore toggle
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )