For #271167
This makes it so our built-in extensions can mostly be built using `tsc` on the command line. Previously the extensions were picking up a lot of typing info from the root `node_modules` that meant they weren't truly independent
* observale map/set
* adds tool sets, let mcp contribute tool set, update commands
* add `languageModelToolSets` contribution point that allows extensions to define set of tools
* only homogenous tool sets hide the tools they contain (that is set and all its tools are from the same source)
* make sure checking/unchecking buckets works
* make it more clear that the action is about tool configuration (not selecting/attaching)
* simplify `IToolSet#tools`
* support `*.toolset.json` files
* one bucket for all MCP servers
* use mcp icon
* use `.toolsets.json` suffix
* [tools config-pick] keep parents, peek sort order
* * add "Configure Tool Sets" actions
* make it `toolsets.jsonc` and register schema etc pp
* fix some tools picker issues
* add tool sets validation
* * tools completions
* Add ToolDataSource.Internal constant
* add missing return
* make tool set a class
* allow a tool set to contain other tool sets
* use dynamic schema for `toolsets.jsonc` language features
* fix tests
- There's an mcpDiscoveryRegistry that allows components to register in
how they discover MCP servers.
- Config discovery is one of these. Figured out all the bits for a
standalone file config shebang. Duplication there that could be
cleaned up but it works.
- The others are remote and local filesystem discovery. I ended up
making another message channel for the main process/remote server to
get a couple environment variables we need since I didn't see anything
generic for this already(?)

* feat: move from yarn to npm
* chore: skip yarn.lock files
* fix: playwright download
* chore: fix compile and hygiene
* chore: bump vsce@2.17.0
Refs 8b49e9dfdf
* test: update results for bat and sh colorizer tests
* fix: add missing lock files for windows
* fix: switch to legacy-peer-deps
* chore: update markdown-it@14.1.0
Refs 737c95a129
esbuild step in extensions-ci-pr was previously using markdown-it
from root which had userland punycode and was able to compile successfully.
* ci: increase pr timeout for windows integration tests
* chore: fix product build
* build: ignore extension dev dependency for rcedit
* build: fix working directory inside container
* build: fix dependency generation
* npm: update dependencies
* ci: use global npmrc
* ci: update cache
* ci: setup global npmrc for private npm auth
* build: fix extension bundling
* chore: sync npm dependencies
* ci: debug env variables for container
* ci: fix win32 cli pipeline
* build: fix npmrc config usage for build/ and remote/ dirs
* fix: windows build
* fix: container builds
* fix: markdown-language-features tests and bundling
```
[03:58:22] Error: Command failed: /Users/demohan/.nvm/versions/node/v20.15.1/bin/node /Users/demohan/github/vscode/extensions/markdown-language-features/esbuild-notebook.js --outputRoot /Users/demohan/github/vscode/.build/extensions/markdown-language-features
✘ [ERROR] Could not resolve "punycode"
extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
14 │ var punycode = require('punycode');
╵ ~~~~~~~~~~
The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```
Adds userland package based on beed9aee2c
* fix: container builds for distro
* chore: update yarn occurrences
* fixup! chore: bump vsce@2.17.0
Uses the closest version to `main` branch that does not
include d3cc84cdec
while still having the fix 8b49e9dfdf
* chore: sync npm dependencies
* chore: sync npm dependencies
* chore: sync npm dependencies
* chore: throw error when yarn is used for installation
* chore: add review feedback
* chore: switch exec => run where needed
* chore: npm sync dependencies
* fix: markdown-language-features bundling
```
✘ [ERROR] Could not resolve "punycode"
extensions/markdown-language-features/node_modules/markdown-it/lib/index.js:14:27:
14 │ var punycode = require('punycode');
╵ ~~~~~~~~~~
The package "punycode" wasn't found on the file system but is built into node. Are you trying to bundle for node? You can use "platform: 'node'" to do that, which will remove this error.
```
Adds missing userland package based on markdown-it/markdown-it@beed9ae,
can be removed once we update markdown-it >= 14.1.0
* ci: rename no-yarn-lock-changes.yml
* chore: sync npm dependencies
* ci: restore no-yarn-lock-changes.yml
We can disable it in a separate PR to keep the required
checks happy and also need workflow edit perms.
* chore: sync npm dependencies
* ci: rebuild cache
* ci: fix no-package-lock-changes.yml
* chore: bump distro
* chore: rm yarn.lock files
* chore: rm yarn.lock files without dependencies
* chore: add vscode-selfhost-import-aid to postinstall dirs
* chore: bump distro
* Added ${rootNameShort} formatting
* Add unit tests for label that use rootNameShort
* move `Verbose` interface to a better location
* more support
* 💄
* fix tests
Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
* Add explorer.autorevealExclude setting
* Update setting name, only check sibling once
* linting
* Correct boolean order and add catch for force reveal
* Check for force instead of converting
* Do not make revealexcludes inherit from file.excludes
* Linting