fix(cli): deduplicate Node asset destinations - #39900
Merged
Merged
Conversation
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Prevent Node SEA builds from copying the same asset key to one destination concurrently. This removes the intermittent Windows
EBUSYfailure while preserving the CLI-owned shell parser assets.Before / After
Before: OpenTUI and the CLI shell parser manifest both emitted
web-tree-sitter/tree-sitter.wasm.copyNodeAssetslaunched both copies concurrently against the same destination, which Windows intermittently rejected as busy or locked.After:
collectNodeAssetsemits exactly one entry per SEA asset key. Later explicit CLI entries take precedence, so each destination receives one copy and the shell parser remains bound to the CLI dependency version.How
Scope
This changes Node SEA asset collection only. It does not add generic filesystem retries or alter runtime asset extraction.
Testing
bun run test -- test/node-assets.test.tsbun typecheckbun run build:node(all Linux, macOS, and Windows targets)