Commit Graph
156036 Commits
Author SHA1 Message Date
Kyle CutlerandCopilot 129ffaba5a Support prompting the user to share an existing browser tab (#313256)
* Support prompting the user to share an existing browser tab

* feedback

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-29 09:58:45 -07:00
Martin AeschlimannandCopilot 3bf522af17 add ChatSessionCustomizationType.userInvocable (#313260)
* add ChatSessionCustomizationType.userInvocable

* Update src/vs/workbench/contrib/chat/browser/aiCustomization/promptsServiceCustomizationItemProvider.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>
2026-04-29 16:57:33 +00:00
Raymond Zhao d1ce2fc8c8 chore: remove cleanup step (#313264) 2026-04-29 16:56:37 +00:00
Matt Bierner 9b74dd466c Merge pull request #313133 from microsoft/dev/mjbvz/copilot-eslint-unify
Use root eslint for copilot
2026-04-29 09:55:27 -07:00
Paul 83bc012e66 Fix issue with hover reappearing on Esc, Alt-tab, link click etc. (#313117) 2026-04-29 09:39:04 -07:00
Megan Rogge cdbdcc39c8 Fix RunInTerminalTool hang when shell exits before/during execute() (#313249)
The rich execute strategy subscribed to onExit/onDisposed AFTER awaiting
xtermReadyPromise. If the pty had already exited before execute() was
entered, those emitters had already fired and been disposed, so
Event.toPromise() subscribed to a dead emitter and never resolved -
hanging the run-in-terminal tool until the agent's 60-minute outer
timeout (16 X_AGENT_STILL_RESPONDING failures observed in eval run
25073061392).

- Add synchronous up-front check for instance.isDisposed / exitCode in
  both rich and basic strategies; resolve immediately with the captured
  exit code rather than subscribing to a fired-and-disposed emitter.
- In the rich strategy, move the Promise.race lifecycle subscription
  setup BEFORE 'await this._instance.xtermReadyPromise' so onExit /
  onDisposed are wired synchronously at function entry, closing the
  race window where the pty exits during xterm initialization.
- Add unit tests for both branches in rich and basic strategies.

Fixes #313248
2026-04-29 16:19:31 +00:00
Matt Bierner 1c4bbc26c1 Re-run npm i 2026-04-29 09:05:44 -07:00
Megan Rogge 7f1de65fa2 Terminal: prevent paste auto-exec when clipboard has trailing newline (#313254)
Strip trailing newline on terminal paste in auto mode

Prevents clipboard-hijack scenarios from auto-executing pasted commands
when the shell does not support bracketed paste mode. Right-click /
Ctrl+V paste of a command followed by a newline previously executed
immediately; now the trailing newline is stripped so the user must press
Enter to run the command.
2026-04-29 16:04:48 +00:00
Megan Rogge 21b99b6c8a Resolve parent directory when realpath fails with ENOENT in edit confirmation (#313252) 2026-04-29 16:04:41 +00:00
Megan Rogge 6707517391 Detect chevron-style interactive prompts in agent terminal (#313244)
Fixes #312576
2026-04-29 16:04:02 +00:00
Harald KirschnerandCopilot 380d7101a2 telemetry: add workspaceChunkSearch.tryInit event for cold-init tracking (#313127)
* telemetry: add workspaceChunkSearch.tryInit event for cold-init tracking

Adds telemetry to track duration and outcome of workspace chunk search
cold initialization (getPreferredType + service creation). Records
success, noEmbeddingType, alreadyInitialized, or error outcomes.
Not fired for fast paths (no auth, already initialized).

Related: microsoft/vscode#313070

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* fix: type outcome as string literal union per review

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-29 09:02:07 -07:00
Matt Bierner b14478b0fe npm i 2026-04-29 08:51:36 -07:00
Tyler James LeonhardtandCopilot 8244e9b00c Refactor Claude Agent core code (#313163)
* handle steering the way the SDK wants it (via priority)
* pass along properties via the queued request (rather than setting them when we get the message) so that we can set them when the message is to be yielded to the SDK
* Tons of code simplification

There's still more simplification to do... but this is getting unwieldy so let's start here.

Co-authored-by: Copilot <copilot@github.com>
2026-04-29 08:45:44 -07:00
Martin AeschlimannandCopilot 21ef72b45b add pluginUri and extensionId to ICustomizationItem: fix slash command qualification (#313217)
* add pluginUri and  extensionId to ICustomizationItem: fix slash command qualification

* Update src/vs/workbench/contrib/chat/browser/agentSessions/agentHost/agentHostLocalCustomizations.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* update

* update

* update

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-29 15:35:37 +00:00
Josh SpicerandCopilot 974736ed9a sessions: add customizations overview header action (#312868)
* sessions: add home button to customizations header to open welcome page

Add a home icon button to the 'Customizations' collapsible header in the
Agents sidebar. The button:
- Appears on hover of the header row (opacity transition)
- Opens the AI Customizations management editor and navigates to the
  welcome/overview page via showWelcomePage()
- Supports keyboard (Enter/Space), click, and touch tap (iOS)
- Shows a tooltip via IHoverService: 'Open Customizations Overview'
- Does not interfere with the existing collapse/expand toggle

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: move customizations home button to leading position

Move the home button to the start of the header (before the toggle pill)
and make it always visible. This makes the entrypoint more discoverable
for new users since it's no longer hidden behind a hover state.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: align home icon with section icons below

Use matching padding (4px 8px) so the home icon's horizontal position
matches the agent/skill/instruction icons listed below the header.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: refine home icon alignment to match section rows

Remove font-size and explicit height overrides; instead mirror the
sidebar-action-button layout exactly (padding 4px 8px + gap 10px) so
the home icon naturally sizes and aligns with the section icons.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: align home icon and tighten color hierarchy in customizations header

- Drop the header button's left padding and set the home button's right
  padding to 10px so 'Customizations' sits exactly 10px after the home
  icon, matching the icon->label gap of the section rows below.
- Remove the home icon's opacity dim; use the strong agentsPanel
  foreground so the home icon and 'Customizations' label render at the
  same color weight.
- Apply --vscode-descriptionForeground to the section rows below the
  header so they read as secondary content under the prominent header.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: bump home icon size to match bold header weight

Codicons are a single-weight font, so font-weight has no effect on
icons. Increase the home icon's font-size to 18px so its visual stroke
weight matches the bold 'Customizations' label.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: revert home icon size bump

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: replace home button with 'Manage customizations' footer link

Move the entrypoint to the customizations welcome page from a header
icon to a footer link below the section list. The footer:
- Sits inside the collapsible content (collapses with the section)
- Uses subtle descriptionForeground styling with a top border separator
- Includes a right-arrow that nudges on hover for affordance
- Supports click, touch tap (iOS), and keyboard (Enter/Space)
- Restores the original header layout (no padding/color hacks)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: add customizations overview header action

Replace the footer-style Customizations entrypoint with a dedicated header home action so the overview remains accessible in both expanded and collapsed states.

Add focused browser coverage for opening the welcome page without toggling collapse.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: align customizations overview action with counts

Nudge the Customizations header overview action left so it visually aligns with the per-section count column.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* sessions: simplify customizations overview editor check

Use the concrete AI Customizations management editor type instead of a structural showWelcomePage guard when opening the overview from the sidebar header action.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-29 15:18:46 +00:00
Johannes Rieken cf647dbc0e chore: move inline chat stuff around (#313242)
feat: add inline chat progress messages and prompts for user feedback
2026-04-29 17:14:52 +02:00
Megan Rogge 8f9e979124 add logging (#313080)
terminal: add shell integration trace logging
2026-04-29 17:12:15 +02:00
Sandeep SomavarapuandCopilot 4a46ed2793 Fix deleting sub-session when it is not active (#313200)
When a child chat in a multi-chat group was removed, _refreshSessionCache
would first remove it from _sessionCache and invalidate grouping caches.
Then _refreshSessionCacheMultiChat would try to resolve the removed chat's
group ID, but since the caches were already rebuilt without the removed
chat, _getGroupIdForChat fell back to the chat's own ID instead of the
parent group's ID. This caused the child to be treated as a 'truly removed'
standalone session rather than a group membership change, so no 'changed'
event was fired for the parent group.

Fix: resolve group IDs for removed sessions BEFORE removing them from the
cache and invalidating grouping caches.

Fixes #311987

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-29 17:08:20 +02:00
Matt Bierner 75d676cce9 Merge branch 'main' into dev/mjbvz/copilot-eslint-unify 2026-04-29 08:00:31 -07:00
Henning Dieterichs 19b3119b33 Pin @github/copilot to exact 1.0.34 and regenerate lockfiles
The previous reverts only changed the spec to ^1.0.34, but the resolved entries in the lockfiles still pointed at 1.0.38 (with 1.0.38 tarballs and integrity hashes). Since ^1.0.34 satisfies 1.0.38, npm ci would still install the broken version. Pin to exact 1.0.34 in all three package.json files and regenerate the lockfiles.
2026-04-29 16:46:30 +02:00
Henning Dieterichs 6087b944fe Revert "agents: bump @github/copilot to 1.0.38 (#313073)"
This reverts commit 83cbe74699.
2026-04-29 16:46:30 +02:00
Peng LyuandCopilot f2cc84be85 Revert Copilot CLI version 1.0.34 (#313125)
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 16:46:30 +02:00
Ulugbek Abdullaev 344028732a nes: feat: ghost-text-like behavior (#313206)
* nes: feat: ghost-text-like behavior

* adddresss review
2026-04-29 15:35:21 +02:00
Sandeep SomavarapuandCopilot a654c5067a Fix deleting forked session showing wrong confirmation dialog (#313205)
When clicking X on a sub-session tab, deleteChat checks chatIds.length
before finding the specific chat by URI. If the grouping cache doesn't
include the forked chat (e.g. due to stale sessionParentId metadata),
_getChatIdsInGroup returns only the main chat. The chatIds.length <= 1
check then falls through to deleteSession, which shows 'delete this
session?' and deletes the entire session including the worktree.

Fix: find the specific chat by URI first. Only fall through to
deleteSession if the chat IS found in the group AND it's the last one.

Fixes #313148

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-29 14:53:38 +02:00
Johannes RiekenandCopilot c76e907f98 make v2 default mode for inline chat (#313184)
* remove old inline chat from extension

* refactor: remove deprecated inline chat V2 configuration and related checks

Co-authored-by: Copilot <copilot@github.com>

* refactor: update context keys for inline chat and clean up unused variables

* address copilot review: fix typo and rename forInlineAndInlineChatIntent

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-29 12:50:58 +02:00
shaypetandAlex Ross 0e01add334 Add compareBranch to TitleAndDescriptionProvider for enhanced PR context (#312326)
* feat: add compareBranch to TitleAndDescriptionProvider for enhanced PR context

* feat: enhance PR description to include escaped compare branch name

* Update extensions/copilot/src/extension/prompts/node/github/pullRequestDescriptionPrompt.tsx

Co-authored-by: Alex Ross <38270282+alexr00@users.noreply.github.com>

* feat: update pull request user message to include escaped compare branch name

---------

Co-authored-by: Alex Ross <38270282+alexr00@users.noreply.github.com>
2026-04-29 12:23:45 +02:00
Bhavya U 224020150a Filter non-deferred tools from Responses tool search output (#313169) 2026-04-29 07:41:50 +00:00
Johannes RiekenandCopilot af98efcce1 chore: Refactor/rename inline chat affordance and controller components (#313168)
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 07:38:52 +00:00
Johannes Rieken 40b9c37eef Merge pull request #312688 from microsoft/joh/following-crayfish
refactor: improve formatting verification and update lint-staged commands
2026-04-29 09:38:31 +02:00
Kyle CutlerandCopilot a08b83eb65 Browser: better window lifecycle handling (#313149)
Co-authored-by: Copilot <copilot@github.com>
2026-04-29 06:26:08 +02:00
Zhichao Li b1c43e9589 Merge pull request #313138 from microsoft/zhichli/otel-tool-definitions
OTel: include tool parameters and emit tool definitions on child chat spans
2026-04-28 19:28:08 -07:00
Kyle CutlerandCopilot ba8300edc2 Browser: centralize handling for agent sharing unsupported (#313139)
* Browser: centralize handling for agent sharing unsupported

Co-authored-by: Copilot <copilot@github.com>

* feedback

Co-authored-by: Copilot <copilot@github.com>

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-29 02:21:25 +00:00
Paul 161a11c507 Update style for chat input notification to latest design (#313137) 2026-04-29 01:14:41 +00:00
Robo b236b361fe ci: start the full app to verify signature on macOS (#313013)
* ci: start the full app to verify signature on macOS

* chore: bump timeout for x64 on rosetta
2026-04-28 17:10:34 -07:00
Zhichao Li c78e55e3a4 Address review: truncate tool definitions and clarify normalizer JSDoc
- Wrap GenAiAttr.TOOL_DEFINITIONS / tools_available toolDefinitions in truncateForOTel to avoid exceeding the 64KB OTel attribute cap with large tool catalogs.

- Drop misleading tool_search variant from toToolDefinitions JSDoc; the implementation requires a name and emits type:'function', so OpenAI client-side tool_search entries are intentionally skipped.
2026-04-28 17:07:57 -07:00
Megan Rogge 8cdcb0603d terminalChat: fix OutputMonitor dispose race that stalls run_in_terminal (#313106) 2026-04-28 20:02:31 -04:00
Courtney Webster 69ad8c1659 Merge pull request #313094 from microsoft/dutch-dragonfly
Remove ask section from onboarding
2026-04-28 18:54:59 -05:00
Anthony KimandCopilot 9b1a678bf9 Allow write to /tmp when allow all commands in session (#312838)
* Allow write to /tmp when allow all commands in session

Co-authored-by: Copilot <copilot@github.com>

* add tests

* add support fror windows temp

* fix: handle backslash-separated Windows paths in temp dir check

---------

Co-authored-by: Copilot <copilot@github.com>
2026-04-28 16:50:21 -07:00
Rob LourensandCopilot 55ae04b9ce Fix reasoning bunching on agent host session restore (live path) (#313129)
The live event mapper cleared _currentMarkdownPartId on tool_start but
not _currentReasoningPartId. Within a single chat turn, the Copilot SDK
emits multiple rounds of (reasoning -> message -> tool calls); every
later round's reasoning was appended onto the very first reasoning
ResponsePart, which sits before any ToolCall. On restore from
in-process state, all reasoning rendered bunched at the top.

Symmetric to the history-replay fix in #312559, which only covered the
cold-restore path through _buildTurnsFromMessages.

Tests added in agentEventMapper.test.ts covering both tool_start and
tool_complete as the trigger for a new reasoning round.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 16:11:55 -07:00
Rob LourensandCopilot 5bd6db722a agent-host: fix skill names, descriptions, and prompt attachments (#313077)
* agent-host: fix skill names, descriptions, and prompt attachments

- Local AH skills now use frontmatter name/description from
  findAgentSkills (was always 'SKILL' from filename).
- Remote AH skills now parse SKILL.md to populate description, and
  emit the SKILL.md URI rather than the skill folder URI so prompt
  decoration parsing works.
- Both AH chat session contributions now declare
  supportsPromptAttachments: true.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agent-host: address Copilot review feedback

- Drop redundant basename(file.uri) fallback in local skill naming;
  basename(dirname(...)) already always returns a string.
- Skip remote folder-style skills whose SKILL.md cannot be read,
  rather than emitting a URI that downstream parseNew would fail on.
- Add coverage for skill metadata parsing, SKILL.md URI rewrite, and
  the unreadable-skill skip behavior in the remote provider tests.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* agent-host: fix existing bundle test for SKILL.md read requirement

The 'hides synthetic bundle but still expands its contents' test
mocked a folder-style skill but not its SKILL.md. With the recent
change that skips folder skills whose SKILL.md cannot be read, the
mock now needs to satisfy that read.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-28 22:55:42 +00:00
4701612e86 Agents web: Host filtering improvements and mobile improvements (#313062)
* sessions: mobile UI improvements — filter chips, terminal view, diff view, tool cards

- Feature 1: Add horizontally scrollable filter chips below session list header on phone layout.
  Chips for Completed, In Progress, and Failed status filters; active state highlights chip.

- Feature 2: Improve touch targets for collapsible tool cards in chat on mobile.
  Minimum 44px height for tool card toggle buttons and always-visible chevron.

- Feature 3: Add dedicated full-screen mobile terminal view overlay.
  Tapping a terminal tool invocation on phone opens a full-screen output view with
  back navigation, monospace output, and copy/search footer actions.

- Feature 4: Add dedicated full-screen mobile diff view overlay.
  Tapping a file change on phone opens a Diff/File segmented control view with
  inline unified diff (colored +/- gutters) and full file content tab.

All features are phone-only (IsPhoneLayoutContext). Desktop behavior is unchanged.
Layer rules preserved: sessions/browser imports only vs/workbench/services;
contrib-layer command handlers bridge to local-interface view functions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* MVP

Co-authored-by: Copilot <copilot@github.com>

* Review

* Clean up

* Filter fixes

* Search 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>
2026-04-28 15:53:37 -07:00
Matt Bierner eed2fb43ec Merge pull request #313102 from microsoft/dev/mjbvz/alive-whale
Bump dom purify in extensions
2026-04-28 15:38:59 -07:00
Matt BiernerandCopilot 02893233ba Also install root deps
Co-authored-by: Copilot <copilot@github.com>
2026-04-28 15:35:33 -07:00
Matt Bierner e8291e3676 Merge pull request #313123 from mjbvz/dev/mjbvz/remaining-spider
Fix circular import in terminal suggest
2026-04-28 15:33:36 -07:00
Matt Bierner 371c4a0a73 Use root eslint for copilot 2026-04-28 15:20:59 -07:00
dileepyavan b5f0a81fbb On agent mode change, ignore stateful marker (#312951)
* on agent mode change, ignore stateful marker

* updates to modechange
2026-04-28 15:19:22 -07:00
Zhichao Li b1206355fa fix: include tool parameters and emit tool definitions on chat spans
- toolCallingLoop emits tool definitions with parameters (tool inputSchema) on the agent span and tools_available event, per OTel GenAI semantic conventions (fixes #300318).

- chatMLFetcher and BYOK providers (anthropic, gemini) now also set gen_ai.tool.definitions on each chat {model} child span so trace viewers can render the tool catalog per LLM call (fixes #299934).

- toToolDefinitions normalizer extended to handle OpenAI Responses API, Anthropic input_schema, and VS Code inputSchema shapes.
2026-04-28 15:13:21 -07:00
Matt Bierner c9dedcf8eb Fix circular import in terminal suggest
Found while trying to switch us to use esbuild for extension emit
2026-04-28 15:12:15 -07:00
Paul 0ebc49192d CSS fixes for chat status hover (#313099) 2026-04-28 14:44:29 -07:00
Megan Rogge 624a18bd28 Fix steady increase in terminal benchmark agent timeouts since 4/16 (#313059) 2026-04-28 17:31:43 -04:00