Compile prerequisite extensions before starting watchers in watch-extensions - #15236
Merged
Merged
Conversation
|
E2E Tests 🚀 Note No feature tags detected. If this PR needs feature coverage, add the tag above and retrigger the workflow. |
softwarenerd
requested review from
Copilot and
jmcphers
and removed request for
Copilot
July 30, 2026 19:54
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.

Problem
Ext - Build Task is red almost all the time
Fix
Apply the same prerequisite ordering that
compile-extensionsalready uses towatch-extensions.Summary
watch-extensionsstarted every extension watcher in parallel, so extensions that consume an in-repo package's compiledout/(currentlypositron-data-explorer-duckdb->positron-data-explorer-protocol) could race: a watcher's clean step deletesout/while a dependent is already resolving its.d.tsfiles. This compiles the ordered prerequisites to completion first, then starts all watchers in parallel. Since watchers are long-lived, they can't be sequenced with each other, so the prerequisites' watchers use a newwatch-extension-no-clean:<name>variant that skips the clean step and preserves theout/that was just built for their dependents. The watch stream body is extracted into acreateWatchStream()helper so both variants share it; no behavior change for extensions that aren't prerequisites.Release Notes
New Features
Bug Fixes
Validation Steps
Build-only change, no e2e coverage applies.
git clean -xfd extensions/positron-data-explorer-*/outor equivalent), runnpm run watch-extensions.positron-data-explorer-protocolandpositron-data-explorer-duckdbcompile before the remaining watchers start, and that noCannot find module/unresolved-import errors appear for the DuckDB backend.npm run compile-extensionsis unchanged.