Skip to content

chat: dispose leaked request and toast listeners#323230

Draft
roblourens wants to merge 2 commits into
mainfrom
agents/fix-leaked-disposables-in-lifecycle
Draft

chat: dispose leaked request and toast listeners#323230
roblourens wants to merge 2 commits into
mainfrom
agents/fix-leaked-disposables-in-lifecycle

Conversation

@roblourens

Copy link
Copy Markdown
Member

Summary

  • dispose request-scoped language model cancellation listeners when responses complete
  • register browser toast terminal listeners with the toast disposable store
  • add regression coverage for completed language model requests

Testing

  • npm run typecheck-client
  • npm run precommit
  • npm run gulp compile-client
  • scripts/test.sh --runGlob '**/mainThreadLanguageModels.test.js'\n- npm run valid-layers-check\n\n(Written by Copilot)

Own language model cancellation callbacks and browser toast event listeners so they are cleaned up with their request-scoped disposable stores. Add regression coverage for completed language model requests.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings June 27, 2026 00:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses disposable leaks in the workbench’s chat/language-model plumbing by ensuring request-scoped cancellation and toast listeners are properly cleaned up, and by adding a regression test intended to prevent reintroducing the leak.

Changes:

  • Dispose request-scoped language model cancellation listeners when a response completes.
  • Register browser toast click/close/error listeners in the toast’s disposable store.
  • Add a unit test intended to cover the request-completion disposal behavior.
Show a summary per file
File Description
src/vs/workbench/services/host/browser/toasts.ts Ensures toast event listeners are disposed along with the toast lifecycle.
src/vs/workbench/api/browser/mainThreadLanguageModels.ts Wraps per-request CTS + cancellation forwarding subscription in a disposable to prevent listener leaks.
src/vs/workbench/api/test/browser/mainThreadLanguageModels.test.ts Adds a regression test around request completion and cancellation-listener disposal.

Review details

  • Files reviewed: 3/3 changed files
  • Comments generated: 1
  • Review effort level: Low

Comment thread src/vs/workbench/api/test/browser/mainThreadLanguageModels.test.ts Outdated
Cancel the source token after response completion and verify cancellation is no longer forwarded to the extension host.

(Written by Copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants