[mirror] microsoft/vscode#308954 refactor(copilotcli): update action descriptions and adjust plan path handling#1476
Open
austindyoung wants to merge 7560 commits into
Open
[mirror] microsoft/vscode#308954 refactor(copilotcli): update action descriptions and adjust plan path handling#1476austindyoung wants to merge 7560 commits into
austindyoung wants to merge 7560 commits into
Conversation
When no section is selected (the default), shows a welcome page with: - Heading and subtitle explaining the editor - Getting Started banner that pre-fills /agent-customizations in chat - Card grid for categories (Agents, Skills, Instructions, Hooks, MCP Servers, Plugins) - Each card has Browse and Generate with AI buttons Design details: - All interactive elements are proper buttons for keyboard accessibility - Cards rebuild when visible sections change (harness switch) - Welcome container has tabindex for programmatic focus - selectedSection is now nullable (undefined = welcome page)
Co-authored-by: Copilot <copilot@github.com>
Register a NullChatTipService in the sessions layer to suppress the getting-started tips that flash briefly when switching between sessions. The empty-state tip was showing during session loading because the chat widget temporarily has zero items before messages arrive. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…icrosoft#308387) * Refactor enableThinking/reasoningEffort into IModelCapabilityOptions * Strip reasoningEffort from search/execution subagent loops * Fix stale comment referencing options.enableThinking
* agentHost: better IPC output channel fix Co-authored-by: Copilot <copilot@github.com> * comment Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com>
* Improve browser compatibility with modal editor * Update src/vs/workbench/contrib/browserView/electron-browser/overlayManager.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Change /agent-customizations to /agent-customization in the chat customizations welcome view getting started link. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* agentHost Adopt new tree-sitter * Bump in web * Fix test * fix tests
Fix cropped install button and polish gallery list items Move the install button out of the details footer to be a direct child of the gallery item container. This vertically centers the button alongside the text content via the parent's align-items:center layout. Add explicit description styling with truncation (ellipsis) for gallery items. Ensure the .details container has proper flex sizing with min-width:0 to prevent overflow. Apply outline-offset:-1px on the install button focus-visible state, matching the existing pattern, to prevent clipping by overflow:hidden ancestors. Fixes microsoft#308206 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…soft#308341) * chat: remove providerApi.enabled setting and legacy code paths The provider API is now permanently enabled. Remove the chat.customizations.providerApi.enabled setting, the false-path conditional that registered built-in CLI/Claude harnesses in core, the entire fetchCoreItemsForSection legacy item-loading pipeline, and related dead code (filterItemsForCore, applyBuiltinGroupKeys, storageToIcon, findPluginUri, isBuiltin/extensionLabel properties, kill-switch listener in mainThreadChatAgents2). CLI harness code is preserved for the sessions window. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * sessions: fix chat customizations editor empty by adding built-in itemProvider After removing fetchCoreItemsForSection (the IPromptsService fallback path), the sessions CLI harness had no itemProvider, causing the management editor to return [] for all sections while sidebar counts remained correct. Fix: add a built-in IExternalCustomizationItemProvider to the CLI harness in SessionsCustomizationHarnessService that wraps IPromptsService directly. This uses the same provider API path as core VS Code, keeping the architecture consistent. Also extends CustomizationHarnessServiceBase with Disposable so subclasses can register disposables via _register. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: dispose CustomizationHarnessServiceBase in tests after extending Disposable Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…icrosoft#308410) * SSH agent host: fall back to default key files when agent auth fails When using SSH agent authentication, ssh2 was only configured with the agent no fallback. If the key isn't loaded in the agent (commonsocket on macOS where keys load lazily on first use), authentication fails with "All configured authentication methods failed" even though the key exists on disk. Now _connectSSH also reads the first available default key file (~/.ssh/id_ed25519, id_rsa, etc.) and passes it alongside the agent config so ssh2 can try publickey auth as a fallback. Also deduplicates the default key path list into a static field. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: improve error handling and add tests - _findDefaultKeyFile now only ignores ENOENT/ENOTDIR errors and logs unexpected errors (e.g. EACCES) instead of swallowing them silently. - Add 3 focused tests for the auth config fallback behavior: agent auth with/without a default key, and keyfile auth skipping fallback. - Make _findDefaultKeyFile protected to allow test override. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix test: check agent key presence not value SSH_AUTH_SOCK is undefined in CI, so check that the 'agent' property was set on the config object rather than asserting it's non-undefined. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…erface (microsoft#308418) * feat(copilot): Updated the Copilot CLI optoins to support a model interface * Fix tests
* Copilot CLI: Controller API Changes * Fix tets * Fix tets * Update extensions/copilot/src/extension/chatSessions/vscode-node/sessionOptionGroupBuilder.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Fix TextmateSnippet clone method to correctly assign _children
…ation bug (microsoft#308876) Rename the `inSessions` task property to `inAgents` across all source, tests, JSON configs, and documentation. Also fix a bug in `updateTask` where `setProperty` with a numeric array index was inserting a duplicate entry instead of replacing the existing one. The fix replaces the entire tasks array with the updated entry mapped in at the correct index, consistent with how `removeTask` already works. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…idna Update distro
…ft#308883) * Fix 'Generate New Task' no-op on existing sessions sendAndCreateChat only works for new (untitled) sessions or when multi-chat is enabled. For existing/completed sessions it threw an error that was silently swallowed, making the action appear to do nothing. Add a _generateNewTask helper that checks the session status: - Untitled sessions: use sendAndCreateChat (existing first-chat flow) - Existing sessions: send /generate-run-commands directly to the active chat widget via acceptInput Fixes microsoft#308805 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review: use passed-in session, add sendAndCreateChat fallback - Use session.mainChat.resource instead of re-reading activeSession from global state, avoiding stale-reference bugs. - Fall back to sendAndCreateChat when no chat widget is found for the session, so the action is never a silent no-op. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Simplify _generateNewTask: consolidate sendAndCreateChat fallback Both the untitled and widget-not-found paths called sendAndCreateChat, so collapse the if/else into a single widget-first-then-fallback flow. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…inals-2 agentHost: integrate terminals with tool call
Add new chat session items on the ext host side
…odes (microsoft#308879) * fix: cache CCA disabled results with 5-min TTL to reduce /enabled traffic The checkCCAEnabled() method previously only cached enabled=true results (introduced in 19541d7). For the majority of users whose repos have CCA disabled, every provideChatSessionProviderOptions() call bypassed the cache and hit the jobs/:owner/:repo/enabled CAPI endpoint unconditionally. With growing adoption, this became significant upstream traffic. Fix: cache all /enabled results. enabled=true keeps the 30-min TTL. enabled=false/undefined uses a new 5-min TTL (CCA_DISABLED_CACHE_TTL_MS), short enough that users who just enabled CCA won't wait long, but long enough to dramatically reduce repeated calls. To support the shorter TTL for disabled entries without changing the enabled TTL, TtlCache.set() now accepts an optional per-entry ttlMs override that takes precedence over the cache-wide TTL. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: surface unexpected /enabled status codes (e.g. 429) in telemetry Previously, isCCAEnabled's default case returned { enabled: undefined } with no statusCode, swallowing 429 rate-limit and 5xx responses. Changes: - Widen CCAEnabledResult.statusCode from 401|403|422 to number so unexpected codes can be propagated - Return statusCode: response.status in isCCAEnabled's default case - Add sendTelemetryErrorEvent('copilot.codingAgent.CCAIsEnabledUnexpectedStatus') in checkCCAEnabled for any status code outside {401, 403, 422}, with isRateLimited flag for quick 429 filtering in dashboards Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * refactor: hoist knownStatusCodes to constant and add GDPR annotation - Extract CCA_KNOWN_STATUS_CODES to file-level Set to avoid re-creating it on every call and centralize the list of handled status codes - Add __GDPR__ comment block for the new copilot.codingAgent.CCAIsEnabledUnexpectedStatus telemetry error event Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* track tools inside thinking * Update src/vs/workbench/contrib/chat/browser/widget/chatContentParts/chatThinkingContentPart.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* polish: improve policy-blocked overlay with agents icon, button fixes, and product names * feat: add AgentsAppEnabled enterprise policy with parent policy identity propagation - Register chat.agentsApp.enabled configuration with policy support - Add agents_app_enabled to IPolicyData for account-level policy - Save parent VS Code policy identity (win32RegValueName/darwinBundleIdentifier) in bootstrap-meta before product.sub.json merge so the agents sub-app reads policies from the parent VS Code's registry/plist domain - Use parentPolicyConfig in main.ts when creating NativePolicyService - Improve policy-blocked overlay: agents icon, button width fix, keyboard fix, hardcoded 'Agents' name, Open VS Code scheme fix * chore: regenerate policyData.jsonc with AgentsAppEnabled policy * refactor: use existing ChatAgentMode policy instead of separate AgentsAppEnabled Piggyback on chat.agent.enabled (ChatAgentMode) policy to show the policy-blocked splash screen in the agents app, rather than introducing a separate AgentsAppEnabled policy. * polish: use sessions logo SVG, save parent urlProtocol, update overlay text - Replace codicon with sessions logo SVG (theme-aware light/dark) - Save parent urlProtocol in parentPolicyConfig for correct Open VS Code link - Update overlay title to 'Agents Disabled by Policy' - Update description to 'Your organization has disabled Agents via policy.' * fix: update Learn more link to agents docs * refactor: move sessions logo SVGs to shared location, update title
Restrict bare host detection to a conservative set of coding-related domain suffixes while continuing to treat explicit URLs and SSH remotes as domains. Add regression coverage for valid and invalid bare suffixes, multi-label hosts, explicit URLs, and dotted non-domain identifiers.
…icrosoft#308889) - Syncs agent-host-protocol to pick up the new `notify/sessionSummaryChanged` notification type, which lets clients keep cached session lists in sync without subscribing to every session URI individually. - Emits the notification from AgentHostStateManager: after the session reducer runs, an identity check on the summary object detects changes, which are debounced (100ms) and flushed as partial diffs. - Replaces the onDidAction-based subscription-peeking pattern in AgentHostSessionListController with the cleaner notification-based approach, removing the need for StateComponents/isSessionAction imports and the getSubscriptionUnmanaged call. - Adds unit tests for emission, coalescing, no-op suppression, and cleanup on session deletion. Adopts microsoft/agent-host-protocol#51 Fixes microsoft#305330 (Commit message generated by Copilot)
…mphibian Override ts implicit project defaults explicitly
* Update hidden Model B agent prompt for evals * Refine hidden Model B prompt tag structure * updating prompt to remove codex string * main merge * adding task execution tag * adding task execution tag
Mark chat codeblock and diff editor pools as simple widgets so their text models are not synced to the extension host. This was the original behavior before microsoft#204780 experimentally changed it. The tool editor pool was already marked as simple. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
terminal: use display command in approval actions (microsoft#308895) Use the display form of the command when computing terminal approval actions so wrapped unsandboxed commands do not leak into confirmation labels. Also update the runInTerminalTool regression test to assert the display command label.
…icrosoft#308913) * Add marketplace deeplink for Browse buttons in customizations editor The Browse buttons on MCP Servers and Plugins welcome page cards now open the section with the marketplace browse mode active instead of just navigating to the installed list. - Add public showBrowseMarketplace() to McpListWidget and PluginListWidget - Extend selectSectionById/selectSection with showMarketplace option - Add hidden aiCustomization.openMarketplace command for deeplink - Add selectSectionWithMarketplace callback to welcome page interface - Wire Browse buttons on MCP/Plugin cards to activate marketplace mode * Use example placeholder text for workflow input * Show New/Browse buttons in sessions, use natural language prompts - Enable showGenerateActions in sessions welcome page - In sessions, New button prefills chat with 'Create me a {type} that...' instead of calling generateCustomization via slash commands - Main Generate Workflow entrypoint uses 'Generate agent customizations.' instead of /agent-customization in sessions - Apply same changes to both prompt-launchers and classic welcome pages * Use /init instead of /agent-customization in core welcome pages * Remove showGenerateActions flag from IWelcomePageFeatures Generate actions are now always shown. The conditional was replaced with a simple promptType check. * Fix chat prefill to use singular type names with 'custom' prefix * Increase spacing between subtitle and Generate Workflow block * Shorten welcome page subtitle * Fix fixture: add missing selectSectionWithMarketplace callback
…hatModel (microsoft#308920) * perf: Fix CKS bug and don't store full instructions contents on the ChatModel * Add test
An Overview button with a home icon sits in the header row alongside the harness picker. When the harness picker is visible, the button shows only the icon; when hidden (single harness), it expands to a full-width button with label.
* Refactor inline summarization handling in ToolCallingLoop * Refactor conversation summarization settings and improve logging in AgentIntent * Refactor agent intent to improve telemetry and remove obsolete test file * Refactor inline summarization handling: remove unused properties and related tests * Remove unused summarization instruction from AgentPromptProps interface * Refactor AgentIntentInvocation to streamline model capabilities handling in background summarization * Update debugName for background summarization to reflect inline context * Update logging message in AgentIntentInvocation for clarity and remove unused test suite for inline summarization
…8928) Remove chat code block render-drop warnings that are no longer needed. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat: show breakpoint widget on Alt+click in gutter Add Alt+click handling in the editor gutter to quickly add or edit conditional breakpoints. When Alt+clicking on a line without breakpoints, the breakpoint widget opens in conditional breakpoint mode. When Alt+clicking on a line with existing breakpoints, the breakpoint widget opens for editing the first breakpoint. Fixes microsoft#203259 Co-authored-by: Rob Lourens <roblourens@gmail.com>
… test coverage (microsoft#308743) * refactor: streamline session option group selection logic and improve test coverage * refactor: enhance chat session initialization with new options structure and improve input state handling * Update extensions/copilot/src/extension/chatSessions/vscode-node/test/sessionOptionGroupBuilder.spec.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Updates * Fixes * Fixes * Updates * Updates * More updates * Fix tests --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* agentHost: subagents * agentHost: remove _meta.parentToolCallId dependency, subscribe to child sessions instead Inner tool calls from subagent sessions are no longer stored in the parent turn with _meta.parentToolCallId. Instead: - Server: _buildTurnsFromMessages skips inner events (parentToolCallId), _restoreSubagentSession builds child session turns from raw messages - Client: _enrichHistoryWithSubagentCalls subscribes to child sessions during history restore, injects serialized inner tool calls with subAgentInvocationId set Also fixes hygiene: replace 'in' operator with hasKey in agentSideEffects.test.ts, exclude .jsonl from copyright filter. * fix: set terminalCommandUri from terminal content blocks in stateToProgressAdapter completedToolCallToSerialized and toolCallStateToInvocation were not detecting terminal tools via ToolResultContentType.Terminal content blocks or setting terminalCommandUri/terminalToolSessionId, causing 6 test failures in CI. * comments Co-authored-by: Copilot <copilot@github.com> * revert diff --------- Co-authored-by: Copilot <copilot@github.com>
…microsoft#308939) Co-authored-by: Copilot <copilot@github.com>
…icrosoft#308948) feat: enhance welcome view to pre-select and deduplicate selected folder in chat session options
* Fix double compaction on first-turn budget exceeded When the first render of a turn throws BudgetExceededError and the background summarizer is Idle, we fall back to a synchronous foreground 'full' summarization via renderWithSummarization. That path did not set the 'summary applied this iteration' flag, so the post-render gate (>= 80% + Idle) would also kick off a background 'inline' compaction in the same buildPrompt call — producing both summarizeConversationHistory-full and summarizeConversationHistory-inline. - Set the flag on both foreground fallback call sites so the post-render gate correctly short-circuits. - Rename 'summaryAppliedThisIteration' to 'didSummarizeThisIteration' to better reflect that it covers any summarization work (pre-render bg apply, budget-exceeded bg apply, or foreground fallback). * Update extensions/copilot/src/extension/intents/node/agentIntent.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Automated mirror PR for DriftFence counterfactual telemetry.
Source PR: microsoft#308954
Source URL: microsoft#308954
Mirror branch: driftfence/mirror/pr-308954/latest
This PR is maintained by automation for telemetry and review links.