[mirror] microsoft/vscode#309666 chat: route AI customization list through item sources#1699
Open
austindyoung wants to merge 7783 commits intomainfrom
Open
[mirror] microsoft/vscode#309666 chat: route AI customization list through item sources#1699austindyoung wants to merge 7783 commits intomainfrom
austindyoung wants to merge 7783 commits intomainfrom
Conversation
* Redesign chat customizations welcome page
- Extract welcome page into dedicated AICustomizationWelcomePage class
and aiCustomizationWelcome.css for better code organization
- Replace old banner + card grid with:
- 'Analyze Your Project and Configure AI' input box that opens
/agent-customization in chat with user's description
- 2x3 category card grid (Agents, Skills, Instructions, Hooks,
MCP Servers, Plugins) with actionable chip buttons
- Chips prepopulate chat with specific prompts (e.g. 'Create a
code review agent', 'Enforce coding style')
- Remove redundant 'Chat Customizations' heading (already in tab)
- Remove redundant 'browse by type' pills (cards serve same purpose)
- Improve chip contrast with visible borders and link-colored text
- Tighten card padding and description sizing for cleaner layout
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Polish welcome page: bigger input, separator, more copy
- Make input box taller with rounded corners and inner submit button
styled like a chat input (pill-shaped submit that fills on hover)
- Add section divider line between input area and card grid
- Add 'Or configure individual customizations:' label above grid
- Expand description copy to mention codebase analysis
- Bump card label font-weight to 600 and restore 12px desc size
- Restore card padding to 14px for better breathing room
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Rework welcome page: stacked list, better input, centered divider
- Replace 2x3 card grid with full-width stacked category list
where each row shows icon, label, description, and chip buttons
inline on a single line
- Input box uses cornerRadius-large, proper padding matching chat
input style, submit button inside with pill shape
- Separator now shows centered text: 'or configure individually'
with lines extending on both sides
- Reduce max-width to 680px and remove all excess whitespace
- Remove card/grid CSS entirely
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Improve welcome page hierarchy and command styling
- Restore strong page intro with 'Chat Customizations' heading and
descriptive copy from the original welcome page
- Increase overall scale: wider content, larger workflow heading,
larger description text, and roomier input box
- Break each section into title row, description row, and command row
instead of compressing everything into a single line
- Restyle example actions as monospace command-like entries such as
'/create-skill ...' to better communicate they prepopulate chat
- Make category rows roomier with card-like boundaries and better
visual hierarchy
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Simplify welcome page into launcher-style sections
- Replace boxed customization cards with lightweight stacked sections
separated by subtle rules
- Keep the centered 'or configure individually' separator
- Increase overall scale for the intro, workflow heading, copy, and input
- Make command examples look like real slash commands with plain
command-link styling instead of pill buttons
- Separate each section into title, description, and command rows for
clearer hierarchy
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Revert welcome page to original design (keep file separation)
Restore the original welcome page layout from main exactly as it was:
- 'Chat Customizations' heading + subtitle
- 'Configure Your AI' getting-started banner
- Responsive card grid with Browse and Generate with AI buttons
The only structural change kept is the file separation:
welcome page logic lives in aiCustomizationWelcomePage.ts and
welcome CSS lives in media/aiCustomizationWelcome.css.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Add centered 'or configure individually' divider between banner and cards
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Replace Configure Your AI banner with chat-style input box
Swap the old getting-started banner for a clean input box styled
like the chat input part: cornerRadius-large, input-background,
submit arrow inside. No highlight borders or extra UI chrome.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix input box focus outlines to match chat input part
Remove the double-outline: the inner monaco-inputbox and the native
input element both had their own focus borders showing through. Force
border/outline to none on both inner elements and let only the outer
container show the single focus border. Use transparent as default
border (matching chat input) and add overflow: hidden to clip inner
outlines at the rounded corners.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix inner input box border by passing transparent inputBoxStyles
The InputBox sets an inline style border via applyStyles() which
cannot be overridden by CSS. Pass inputBorder: transparent and
inputBackground: transparent so the inner box is invisible and
only the outer container provides the border.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Refactor agent customizations welcome page
Split the Agent Customizations welcome page into classic and prompt-launcher variants, add a configuration switch for selecting the implementation, and add component fixtures for the welcome page variants.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Polish customization welcome page variants
Refine the classic and prompt-launcher welcome pages so the workflow entry point is more prominent and the category actions are simpler and better aligned.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Swap welcome variants and fix sessions chat prefill
Move the polished workflow-box layout into promptLaunchers (now the default) and restore classic to the origin/main baseline. Add prefillChat callback so the Generate Workflow input works in both the sessions app (via NewChatViewPane.sendQuery) and core VS Code (via workbench.action.chat.open). Enable the getting-started banner in sessions. Fix double-box input styling and card footer alignment.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Fix input focus outline and polish welcome page layout
Replace InputBox widget with plain <input> element to eliminate the focus border that the global .monaco-workbench input[type=text]:focus rule was applying. Move helper text above the input, match input-row rounding to the outer card, and add strong specificity overrides for all focus states.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Set update.showReleaseNotes to false in the sessions app configuration defaults so release notes do not auto-open after a version update. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…Search/externalIngestIndex.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…citation agentHost: support askQuestions/elicitation and InProgress
Avoid hardcoding external ingest embedding type
…#308834) * Add performance workflow and heap-snapshot-analysis skills Add two agent skills for memory/performance investigations: - vscode-performance-workflow: Drives repeatable VS Code scenarios, captures heap snapshots, and includes bundled chat smoke runners (chat-memory-smoke, chat-session-switch-smoke). - heap-snapshot-analysis: Parses V8 heap snapshots, compares before/after, and traces retainer paths. Both skills include scratchpad folders (gitignored) for one-off investigation scripts organized in dated subfolders with findings.md. (Written by Copilot) * Rename skill to auto-perf-optimize (Written by Copilot) * workspace Co-authored-by: Copilot <copilot@github.com> * this * Comments Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com>
…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
…uageModelAccess.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…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>
…t/migrate-5043 Change OTLP endpoint from gRPC to HTTP in montoring docs
… terminal notifications (microsoft#309555) Fix microsoft#309523
* Fix crash from nulled _session in ChatModel.dispose() Remove the _session = undefined line that breaks the back-reference from requests to the ChatModel during dispose. This causes a crash in chatListRenderer when the _onDidUpdateViewModel event fires and accesses template.currentElement.sessionResource on a stale item whose session has been nulled out. The _requests array is already emptied right after, so the back-references are broken when the requests are GC'd with the model. Fixes microsoft#309568 (Written by Copilot) * Keep safe GC cleanup, only remove _session null-out Restore the _requests.length, dataSerializer, and _editingSession cleanup — these null out fields on the ChatModel itself and are safe. Only the (r as any)._session = undefined line needs to be removed since it breaks getters accessed by stale event listeners. (Written by Copilot)
…309547) (microsoft#309588) fix microsoft#309547 - guard scopedTools derived against disposed widget The derived observable created in getModeRequestOptions() outlives the ChatWidget. When MCP tool changes trigger a recompute after the widget is disposed, this.input is undefined (MutableDisposable cleared), crashing on .currentModeObs. Add a disposal guard to return the last snapshot instead. (Written by Copilot) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…uestions` carousel (microsoft#309596)
…izing - Swap Skip/Continue without Signing In button styles (Skip → ghost, Continue → secondary) - Fix focus rings on primary-colored buttons using double-ring box-shadow pattern - Add focus-visible styling for doc links (Agents tutorial) - Fix focus ring clipping on Agents tutorial link - Bump theme card label font-size from 10px to 12px Fixes microsoft#309377 Fixes microsoft#309380 Fixes microsoft#309381 Fixes microsoft#309386
* convert html server to esm * update html language service * update * update * update json * update css * update * update * update jsonc-parser
…pport - Make theme cards individually tabbable (tabindex=0) instead of roving tabindex - Separate focus (outline ring) from selected (border+box-shadow) for clear visual distinction - Add high contrast overrides using contrastBorder/contrastActiveBorder - Fix focus clipping by changing step-content overflow to visible and adding grid padding Fixes microsoft#309517
…l-narwhal Use core vscode*d.ts files for copilot extension
* Add Agents app banner to welcome page footer Add a banner button in the welcome page footer that allows users to try out the new Agents app. The banner includes: - A button with the agent icon and 'Try out the new Agents app' label that executes the workbench.action.openAgentsWindow command - A 'Learn more' link that opens code.visualstudio.com - Telemetry logging for both actions - CSS styling for the banner with proper theming integration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Update * update * Feedback --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…9639) The reasoningEffort telemetry property on response.success and response.error events was only reading from requestBody.reasoning?.effort (Responses API / OpenAI), missing Claude models which set effort via requestBody.output_config?.effort (Messages API). This adds a fallback to output_config.effort so both events capture the reasoning effort level regardless of which API path is used. Co-authored-by: Kevin Kent <kevinkent@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…ft#309638) Cache breakpoints in the summarization prompt cause the prompt-tsx budget trimmer to throw BudgetExceededError ('No lowest priority node found') when all remaining children contain cache points. The trimmer resets its eviction candidate each time it encounters a cache point, and when every child has one, it never finds a node to evict. These breakpoints were already stripped from the output messages by stripCacheBreakpoints() before sending to the model, so they served no purpose in the summarization render. Fix: pass enableCacheBreakpoints: false when rendering ConversationHistorySummarizationPrompt.
…rosoft#309642) Decouple ISession.sessionType from resource URI scheme in RemoteAgentHostSessionsProvider - Remote copilot agents now use COPILOT_CLI_SESSION_TYPE as their logical session type, aligning with local and cloud copilot sessions, while keeping the unique per-connection ID as the resource URI scheme and language model vendor. - Extract model picker into remoteAgentHostModelPicker.ts and consolidate side-effect imports into remoteAgentHost.contribution.ts. - Replace DEFAULT_AGENT_PROVIDER with explicit WELL_KNOWN_AGENT_SESSION_TYPES mapping from agent host provider names to local session types. - Update tests and documentation. (Written by Copilot)
…icrosoft#309626) * Propagate CAPI server experiment context through telemetry pipeline * test
VS Code Onboarding TPI Fixes
From microsoft#309331 Co-authored-by: Copilot <copilot@github.com>
* Update rate limit message * Improve rate limit messages for better user clarity * removing 'ed' in case not fixed on server * nvm, it was fixed --------- Co-authored-by: SteVen Batten <sbatten@microsoft.com>
The official component-detection-manifest schema uses camelCase keys. This file used PascalCase (e.g. "Registrations", "Component"), which caused the OSS license tool to crash silently. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Addresses code quality issues from council review: - Extract shared isChatExtensionItem() to aiCustomizationItemSourceUtils - Move storageToIcon() to aiCustomizationIcons (pure function, no class dep) - Extract shared expandHookFileItems() utility, deduplicating hook file parsing from PromptsServiceCustomizationItemProvider and ProviderCustomizationItemSource - Replace fragile backward-index splice loops in applyLocalFilters with idiomatic .filter() chains - Cache ProviderCustomizationItemSource per active harness descriptor to avoid redundant event composition on every call Co-authored-by: Copilot <223556219+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#309666
Source URL: microsoft#309666
Mirror branch: driftfence/mirror/pr-309666/latest
This PR is maintained by automation for telemetry and review links.