Fix repository retention leaks in git and github extensions
ProgressManager subscribed to workspace.onDidChangeConfiguration and
repository.onDidChangeOperations in its constructor but discarded both
subscriptions, so the global configuration emitter pinned every Repository
ever created.
GitHubBranchProtectionProviderManager registered a branch protection provider
per opened repository into a single DisposableStore that was only disposed when
the feature was turned off. There was no onDidCloseRepository handling, and the
providers themselves were never disposed. Track them per repository root
instead and dispose on close.
Also make DisposableStore dispose anything added after it has been disposed,
so the async registration in GitHubBranchProtectionProvider's constructor
cannot outlive the provider.
Refs #327438
(Written by Copilot)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: 041724a6-5bc9-4e5f-98b2-a910995f083c
* OTel visibility in Copilot Chat UI (#47)
* [msrc/1.123] 114763
* Add maxAttributeSizeChars configuration to OpenTelemetry settings
---------
Co-authored-by: Zhichao Li <zhichli@microsoft.com>
(cherry picked from commit 042dc59dbb51f58ef03a6909d5dfb0292a6b2576)
(cherry picked from commit be6ab8b589)
* Prompt before connecting to non-loopback remote host:port authorities (#46)
A direct `<host>:<port>` remote authority (no resolver `+` prefix) bypasses
resolver extensions and connects straight to the given server. Since this form
can originate from untrusted sources (e.g. the `remoteAuthority` of a
`.code-workspace` file), a crafted workspace could silently point the window's
extension host backend at an attacker-controlled server.
Centralize a confirmation prompt at the connection point in the renderer:
when resolving a direct authority whose host is not loopback (localhost,
127.0.0.1, ::1), ask the user to confirm before connecting and abort if
declined. Add `isLoopbackHost` helper and tests.
(cherry picked from commit 9505d0fca49eadb707c450d18dcb41a46b720a9e)
(cherry picked from commit 9673132502)
* GitHub - improve host parsing (#48)
(cherry picked from commit 4b6e2467dbd828018d602f73cc25d1b11f699d2c)
(cherry picked from commit 9fea92e141)
* path traversal fix (#50)
* fix path traversal
* fix compilation
(cherry picked from commit 9b31ff896671125cbfc65f33731c4a99660d6201)
(cherry picked from commit a703741497)
* Path - improve isEqualOrParent calculation (#49)
(cherry picked from commit 0f1ba1ea103757f3023cc1f9c3eb7327c3ec4b02)
(cherry picked from commit 5927baa7af)
---------
Co-authored-by: Zhichao Li <Li.Zhichao@microsoft.com>
Co-authored-by: Zhichao Li <zhichli@microsoft.com>
Co-authored-by: Alexandru Dima <alexdima@microsoft.com>
Co-authored-by: Ladislau Szomoru <lszomoru@microsoft.com>
Co-authored-by: Sandeep Somavarapu <sasomava@microsoft.com>
* sessions - fix chat input shrinking at narrow widths (#299498)
style - set width to 100% for `interactive-input-part`
* modal - force focus into first modal editor always
* fix: update precondition for FixDiagnosticsAction and hide input widget on command execution (#299499)
fixes https://github.com/microsoft/vscode/issues/299251
* refactor: remove workspace context service dependency from FolderPicker
* Add logging for agent feedback actions
* modal - some fixes to actions and layout
* modal - surface some editor actions in a new toolbar (#299582)
* modal - surface some editor actions in a new toolbar
* ccr
* keybindings - remove "Edit as JSON" as its now available from the title menu
* settings - remove "Edit as JSON" as its now available from the title menu
* update hover fixes
* terminal fixes
* terminal improvements
* Sessions: fix auth scopes of gh FSP
* sessions customizations: make it easier to scan mcp/plugin marketplac… (#299636)
sessions customizations: make it easier to scan mcp/plugin marketplace list
* sessions: add built-in prompt files with override support (#299629)
* sessions: add built-in prompt files with override support
Ship bundled .prompt.md files with the Sessions app that appear as
slash commands out of the box. Built-in prompts use a BUILTIN_STORAGE
constant (cast as PromptsStorage) defined in the aiCustomization layer,
avoiding changes to the core PromptsStorage enum and prompt service types.
- AgenticPromptsService discovers prompts from vs/sessions/prompts/
at runtime via FileAccess and injects them into the listing pipeline
- Override logic: user/workspace prompts with matching names take
precedence over built-in ones
- Built-in prompts open as read-only in the management editor
- Sessions tree view, workspace service, and counts handle BUILTIN_STORAGE
- Add /create-pr as the first built-in prompt
- Bundle prompt files via gulpfile resource includes
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Update src/vs/workbench/contrib/chat/browser/aiCustomization/aiCustomizationManagement.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* sessions: use AICustomizationPromptsStorage type for builtin storage
Adopt the new AICustomizationPromptsStorage union type in the sessions
tree view method signature. Use string-keyed Records and targeted casts
at the PromptsStorage boundary to stay type-safe.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: remove PromptsStorage casts, widen IStorageSourceFilter
Use AICustomizationPromptsStorage in sessions-local interfaces
(IAICustomizationGroupItem, IAICustomizationFileItem) and widen
IStorageSourceFilter.sources to readonly string[] so BUILTIN_STORAGE
flows through without casts. The only remaining cast is at the
IPromptPath creation boundary in AgenticPromptsService.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* sessions: move BUILTIN_STORAGE to sessions common layer
Move AICustomizationPromptsStorage type and BUILTIN_STORAGE constant
from the workbench browser UI module to sessions/contrib/chat/common
so that AgenticPromptsService (a service) does not depend on UI code.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* sessions: fix ESLint dangerous type assertion in builtin prompts (#299663)
Replace the `as IPromptPath` cast in discoverBuiltinPrompts with a
createBuiltinPromptPath factory function that contains the type
narrowing in one place, satisfying the code-no-dangerous-type-assertions
ESLint rule.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
* Enhance Agent Sessions Control and Renderer with observable active session resource
* fix terminal
* Enable model management in NewChatWidget
* review feedback
* different competion settings for copilot markdown and plaintext
---------
Co-authored-by: Benjamin Pasero <benjamin.pasero@gmail.com>
Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
Co-authored-by: Johannes Rieken <johannes.rieken@gmail.com>
Co-authored-by: BeniBenj <besimmonds@microsoft.com>
Co-authored-by: Osvaldo Ortega <osortega@microsoft.com>
Co-authored-by: Josh Spicer <23246594+joshspicer@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Single quoted string usage is already enforced everywhere except our tests. Having this inconsistent style can confuse contributors and code generation
Starting with converting over tests in the `extensions` dir