Contributing to the Copilot Studio Extension for VS Code
May 7, 2026 · View on GitHub
Thank you for your interest in the Copilot Studio extension! This project is the source code for the Copilot Studio extension in the Visual Studio Code Marketplace.
Current Build State
Source code is complete; build requires internal dependencies.
This repository contains the full source code that produces the shipping extension. However, the build currently requires NuGet packages from an internal feed that is not accessible to external contributors.
| Area | Status |
|---|---|
| Source code | Complete — matches the published extension |
| Build | Requires internal Microsoft.Agents.* NuGet packages. External builds are not supported yet. |
| Unit tests | 530 unit tests + 13 LSP journal tests pass internally |
| VSIX packaging | Builds internally for 6 platform targets (win32-x64, win32-arm64, linux-x64, linux-arm64, darwin-x64, darwin-arm64) |
Roadmap to external buildability
The internal NuGet dependency comes from the cloud sync module (PullAgent), which uses Microsoft's internal Dataverse authoring SDK. We are replacing this with delegated use of PAC (Power Platform CLI), which will eliminate the internal package requirements entirely.
Once that migration is complete:
nuget.configwill reference only nuget.orgdotnet buildanddotnet testwill work for external contributors- This file will be updated to reflect the fully open contribution model
In the meantime, the source code is available for review, issue filing with source context, and understanding the extension's architecture.
Repository Structure
src/
LanguageServers/ # .NET language server (C#)
CLaSP/ # Common Language Server Protocol framework
PowerPlatformLS/ # Language server solution (11 projects)
vscode-extensions/ # VS Code extension (TypeScript)
microsoft-powerplatformlang-extension/ # Extension entry point
shared/ # Shared TypeScript modules
docs/ # Architecture documentation
assets/ # Shared assets (BotSchema.json)
build/ # Build infrastructure
Reporting Issues
Please use GitHub Issues. We provide issue templates for bug reports and feature requests.
For bugs, we recommend using the extension's built-in issue reporter:
- Open the Command Palette (
Ctrl+Shift+P/Cmd+Shift+P) - Run Help: Copilot Studio: Report Issue
This automatically includes diagnostic information like your session ID, which helps us investigate more efficiently.
Submitting Changes
Note: External pull requests that require building the project cannot be validated until the internal NuGet dependencies are removed (see roadmap above). We welcome contributions and will review them as capacity allows — documentation fixes, TypeScript extension changes, and issue reports are particularly easy to accept during this period.
- Fork the repository and create a feature branch from
main. - Make your changes, following the existing code style.
- Ensure your changes do not introduce new warnings or errors (where possible — see Build State above).
- Submit a pull request with a clear description of the change and its motivation.
Pull Request Guidelines
- Keep PRs focused — one logical change per PR.
- Include a summary of what changed and why.
- Reference any related issues (e.g.,
Fixes #123). - For bug fixes, describe how to reproduce the original problem.
Development Prerequisites
To build this project, you currently need access to an internal NuGet feed. We are working to remove this requirement (see roadmap above).
The toolchain requirements are:
- .NET 10 SDK or later
- Node.js 22 LTS or later
- Visual Studio Code
Internal Development (Microsoft Employees)
If you have access to the internal NuGet feed that provides the
Microsoft.Agents.* packages, you can build and test the full project today.
1. Configure the internal NuGet source
The repo's nuget.config lists only nuget.org. Because it does not use
<clear />, NuGet automatically merges it with your user-level configuration.
Add the internal feed to your user-level config once:
dotnet nuget add source <feed-url> --name CCI-Dependency \
--configfile ~/.nuget/NuGet/NuGet.Config
The feed URL is available from your team's internal onboarding documentation or the ObjectModel monorepo's
nuget.config.
After this, dotnet restore resolves all six Microsoft.Agents.* packages
automatically — three from nuget.org and three from the internal feed.
2. Build and test the language server
dotnet build src/LanguageServers/PowerPlatformLS/PowerPlatformLS.sln
dotnet test src/LanguageServers/PowerPlatformLS/PowerPlatformLS.sln
3. Build the VS Code extension
cd src/vscode-extensions/microsoft-powerplatformlang-extension
npm install
npm run check-types
node esbuild.js --production
npm lockfile and registry policy
The committed npm lockfiles must be independent of the registry or feed used for
restore. The repository-level npm config at src/vscode-extensions/.npmrc
therefore sets omit-lockfile-registry-resolved=true and intentionally does not
set registry.
That .npmrc setting is what prevents npm install, npm uninstall, and
dependency updates from adding registry/feed-specific resolved URLs to
committed package-lock.json files.
If you need a private registry or feed for restore, configure it in your user npm
config or in CI restore-time configuration. Do not add registry or feed URLs to
committed .npmrc or package-lock.json files. When npm commands update a
lockfile, review the resulting diff to verify registry/feed URLs were not
introduced.
Working toward external buildability
Four Microsoft.Agents.* packages are currently only available on the
internal feed: Platform.Content, Platform.Content.Internal,
ObjectModel.Dataverse, and ObjectModel.NodeGenerators. We are eliminating
these by migrating PullAgent to delegate through
PAC CLI.
When that work completes, nuget.config will reference only nuget.org and
external contributors will be able to build, test, and submit verified PRs.
Contributions that advance this migration are especially valuable.
Code of Conduct
This project has adopted the Microsoft Open Source Code of Conduct. See CODE_OF_CONDUCT.md for details.
License
This project is licensed under the MIT License.