Conversation
- Moves copilot eslint config into top level eslint config - Adopts some standard rules - Suppress a few new shared rules
Co-authored-by: Copilot <copilot@github.com>
These lint checks should already be handled by the full pr lint checks
…t and color transition on hover/focus
- Unrelated: fix local agent host being broken on main following some overnight cleanups - Register a JSON schema for agent session settings (only when they're open since it has a perf cost) - When there are multiple custom approval buttons, show them in a dropdown similar to other tool calls.
In advance of host-level settings, replaces our ad-hoc setting handling with a IAgentConfigurationService. This handles inheritance correctly. We also have a 'schema builder' now that allows for better type safety as we produce and consume schema. - New `IAgentConfigurationService` with `getEffectiveValue`, `getEffectiveWorkingDirectory`, and `updateSessionConfig`. Owns the inheritance chain so every consumer composes layers identically. - New schema builder (`schemaProperty<T>` / `createSchema`) with phantom TypeScript types + derived runtime validators. `assertValid` throws a `ProtocolError(InvalidParams)` annotated with the offending dotted path (e.g. `permissions.allow[2]`); `validate` is the boolean form; `values()` validates at write sites; `validateOrDefault()` sanitizes untrusted input at protocol boundaries. - `platformSessionSchema` centralizes the `autoApprove` + `permissions` property descriptors that `copilotAgent.resolveSessionConfig` previously duplicated; agents compose via `...platformSessionSchema .definition`. - `getEffectiveValue` validates each layer against a caller-supplied schema and falls through when a layer's value is malformed, logging the path-annotated reason. - Wire DI through `AgentService` (local `InstantiationService` scope) so `AgentSideEffects` and `SessionPermissionManager` resolve `ILogService` and `IAgentConfigurationService` via DI rather than plain-class plumbing. - `copilotAgent.resolveSessionConfig` collapses to a single schema construction + `validateOrDefault` call; duplicated schema literals removed. - Tests: 33 new unit tests covering schema validation, path-annotated errors, `validateOrDefault`, and the full precedence chain in `AgentConfigurationService`
…r open new window based on environment
…oard accessibility and focus handling Co-authored-by: Copilot <copilot@github.com>
… item handling Co-authored-by: Copilot <copilot@github.com>
…ndling Co-authored-by: Copilot <copilot@github.com>
…consistency Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
…r improved clarity and consistency Co-authored-by: Copilot <copilot@github.com>
…ved tooltip handling Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…dget for cleaner implementation Co-authored-by: Copilot <copilot@github.com>
…and correct localization key for the label Co-authored-by: Copilot <copilot@github.com>
…gin name (#312196) When a plugin's skill name matches the plugin name, the canonical command ID was producing a redundant format like `plugin-name:plugin-name`. This change collapses that to just `plugin-name` so users can invoke `/plugin-name` instead of `/plugin-name:plugin-name`. - Adds a check in getCanonicalPluginCommandId to return just the prefix when it equals the normalized command name (Commit message generated by Copilot)
…ermissions setting
The import was declared but never used in the file, causing a TS6133 compilation error.
Co-authored-by: Copilot <copilot@github.com>
…12197) * fix(config): enable session controller by default in CLI settings * eol
sessions: fix missing remote toggle for local agent host, duplicate permissions setting
* fix: prevent endless rAF loop in layout when widget is hidden The layout methods in mcpListWidget, pluginListWidget, and aiCustomizationListWidget would defer to requestAnimationFrame when searchAndButtonContainer.offsetHeight was 0, assuming the browser hadn't reflowed yet. When the widget is created while permanently hidden (e.g. in component explorer or when the view isn't visible), offsetHeight stays 0 forever, causing an infinite rAF loop. Add a _layoutDeferred flag so the deferral happens at most once. If offsetHeight is still 0 after the retry, proceed with zero heights instead of the next real layout call when the widgetlooping becomes visible will compute correct dimensions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: keep layout retry guard across deferred layout Keep _layoutDeferred set while the deferred layout call runs so a second offsetHeight === 0 measurement cannot schedule another requestAnimationFrame. This makes the retry truly one-shot in all three AI customization list widgets. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update integration id for cli.
…312189) * sessions: improve connection stability and terminal reconnection - WebSocketClientTransport: fail-fast on send to dead socket with force-close and _closeFired guard to prevent double onClose events - AgentHostPty: add reconnect() method with 10s hydration timeout and buffer clear before snapshot replay - AgentHostTerminalService: add reconnectTerminals() scoped by oldClientId, track active ptys with dispose cleanup - RemoteAgentHostContribution: trigger terminal reconnection on clientId change during reconnect - Telemetry: add socket/close, socket/sendDropped, socket/visibilityResumed, terminal/recovery events - Fix isMeasurement on boolean fields in existing telemetry * Update src/vs/sessions/common/sessionsTelemetry.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * address review: gate terminal reconnect on clientId change, add reconnect tests --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Fixes #312210 This is using the old search endpoint. We'll start switching over the new one once it's ready Co-authored-by: Copilot <copilot@github.com>
fix issue with nohup
Use main eslint config for copilot extension too
…2176) * use CustomizationHarnessService to get and resolve slash command * Update src/vs/workbench/contrib/chat/browser/widget/input/editor/chatInputEditorContrib.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/vs/workbench/contrib/chat/test/common/customizationHarnessService.test.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Update src/vs/workbench/contrib/chat/common/customizationHarnessService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… disposable leak (#312211) fix disposable leak
* Improve hover rendering * Fix comment
* Refactor browser creation flow, add ownership model Co-authored-by: Copilot <copilot@github.com> * Opening in background Co-authored-by: Copilot <copilot@github.com> * feedback Co-authored-by: Copilot <copilot@github.com> * simplify Co-authored-by: Copilot <copilot@github.com> * fix Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com>
and make sure that git stuff is gated behind workspace trust. Co-authored-by: Copilot <copilot@github.com>
Add basic github lexical search
* Get task buttons working for Claude By hard coding it along with CLI... * feedback
…312234) * mcp: add .mcp.json workspace discovery and server collision handling Adds support for discovering MCP servers from .mcp.json files at workspace folder roots using the Claude-style format, and introduces collision-aware enablement logic for servers with duplicate names. - Adds WorkspaceDotMcpDiscovery to discover servers from .mcp.json files in workspace folder roots, with file watching and throttled updates. - Adds McpCollisionEnablementModel that disables lower-priority servers when multiple servers share the same label, controlled by a new chat.mcp.collisionBehavior setting (disable or suffix). - Promotes collection 'order' from presentation.order to a required top-level field on McpCollectionDefinition for clearer priority semantics. - Adds ITransaction support to EnablementModel.setEnabled for atomic multi-server enablement changes. - Adds an 'Enable Server' action in the server options quick pick and a 'Disabled' codelens for disabled servers in config files. - Adds language features (codelens, diagnostics, inlay hints) for .mcp.json files. - Adds comprehensive tests for the collision enablement model. (Commit message generated by Copilot) * address copilot review feedback * restore suffix collision behavior option
…312219) * sessions: fix spinner animation restart and respect reduced motion Fix the session list spinner (loading icon) animation restarting on every tree re-render. The tree calls renderElement on all visible rows whenever the list is spliced, which clears elementDisposables and recreates the icon autorun. The icon CSS selector tracking was stored in a local variable that reset to undefined each time, causing the spinner DOM to be rebuilt and the CSS animation to restart. Move the icon selector tracking onto the template object so it persists across renderSession calls for the same row. The spinner element now stays alive and its animation continues smoothly. Also add reduced motion support: when the user has reduced motion enabled (via workbench.reduceMotion or system preference), show the static session-in-progress codicon instead of the animated loading spinner. The icon reactively updates when the preference changes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * address PR feedback: hoist motion signal, fix stale icon color - Hoist observableSignalFromEvent to a renderer-level field so it's shared across all rows instead of recreated on every renderSession. - Always update iconSpan.style.color even when the selector hasn't changed, fixing stale color when the same codicon is used with different theme colors (e.g. circleFilled for both NeedsInput and unread states). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- 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 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 : )