Create a common SDK folder. Rename csharp to dotnet SDK and TS to node.#642
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Reorganizes the repository’s language SDKs under a single sdk/ root, renaming the TypeScript SDK folder to sdk/node/ and the .NET SDK folder to sdk/dotnet/, and updates all tooling/docs/CI references accordingly (including the mxc_ffi csbindgen feature rename to dotnetsdk).
Changes:
- Move/rename SDK directories to
sdk/node/(Node/npm) andsdk/dotnet/(.NET/C#), updating path references repo-wide. - Rename the FFI codegen cargo feature
csharpsdk→dotnetsdkand update codegen gates/scripts. - Update CI (GitHub Actions + ADO) working directories/caches and documentation links to reflect the new layout.
Show a summary per file
| File | Description |
|---|---|
| tests/playground/package.json | Update SDK binary copy path to new sdk/node/bin/... layout. |
| src/ffi/mxc_ffi/Cargo.toml | Rename csbindgen feature to dotnetsdk. |
| src/ffi/mxc_ffi/build.rs | Point generated P/Invoke output to sdk/dotnet/... and gate on dotnetsdk. |
| src/core/wxc_common/src/wire.rs | Update comments referencing generated wire TS output path. |
| src/core/wxc_common/src/ts_emit.rs | Update docs/regeneration command to sdk/node/src/generated/wire.ts. |
| src/core/wxc_common/src/lib.rs | Update module comment to new wire.ts output path. |
| src/core/mxc_engine/src/policy.rs | Update SDK source-path references in comments. |
| sdk/node/tsconfig.json | Node SDK TypeScript build config under new folder. |
| sdk/node/tests/unit/wire-conformance-state-aware.test.ts | State-aware wire conformance oracle under new SDK path. |
| sdk/node/tests/unit/tsconfig.json | Unit-test TS build config for Node SDK. |
| sdk/node/tests/unit/test-helpers.ts | Unit test helpers for Node SDK. |
| sdk/node/tests/unit/state-aware-types.test.ts | Compile-time/runtime tests for state-aware public types. |
| sdk/node/tests/unit/policy.test.ts | Unit tests for policy discovery behaviors. |
| sdk/node/tests/unit/logger.test.ts | Unit tests for FileLogger. |
| sdk/node/tests/unit/errors.test.ts | Unit tests for typed error surface. |
| sdk/node/tests/unit/conformance-helpers.ts | Shared type-level helpers for wire conformance tests. |
| sdk/node/tests/integration/wslc-e2e.test.ts | WSLC integration coverage under new SDK layout. |
| sdk/node/tests/integration/windows-process-container.test.ts | Windows process-container integration suite under new SDK layout. |
| sdk/node/tests/integration/tsconfig.json | Integration-test TS build config. |
| sdk/node/tests/integration/test_issues.md | Document known integration test issues. |
| sdk/node/tests/integration/run-tests.js | Integration test runner script. |
| sdk/node/tests/integration/package.test.ts | Validate packaged binaries presence/expectations. |
| sdk/node/tests/integration/package.json | Integration test package for local install of SDK tarball. |
| sdk/node/tests/integration/macos-seatbelt.test.ts | Seatbelt integration tests under new SDK layout. |
| sdk/node/tests/integration/linux-process-container.test.ts | LXC integration tests under new SDK layout. |
| sdk/node/tests/integration/linux-bubblewrap.test.ts | Bubblewrap integration tests under new SDK layout. |
| sdk/node/tests/integration/isolation-session-state-aware.test.ts | IsolationSession state-aware integration tests. |
| sdk/node/tests/integration/common.test.ts | Cross-platform dry-run / platform support integration tests. |
| sdk/node/tests/integration/.npmrc | Ensure file: installs are packed copies (Windows junction avoidance). |
| sdk/node/tests/integration/.gitignore | Ignore integration build artifacts. |
| sdk/node/test-platform.cjs | Add platform-detection test script under new SDK root. |
| sdk/node/src/state-aware.ts | Node SDK state-aware lifecycle functions. |
| sdk/node/src/state-aware-types.ts | Node SDK state-aware public types/brands. |
| sdk/node/src/state-aware-helper.ts | Envelope building, parsing, and spawn helpers for state-aware calls. |
| sdk/node/src/platform.ts | Fix monorepo dev resolution paths for src/target after move to sdk/node. |
| sdk/node/src/logger.ts | File-based logger utility in Node SDK. |
| sdk/node/src/index.ts | Public entry point exports for Node SDK. |
| sdk/node/src/generated/wire.ts | Regenerated wire types path references. |
| sdk/node/src/errors.ts | Typed error surface for Node SDK. |
| sdk/node/src/diagnostic.ts | Diagnostic console pipe logging for Node SDK. |
| sdk/node/show-buildlab.cjs | Add BuildLab registry helper script. |
| sdk/node/README.md | Update SDK README links and internal references to new layout. |
| sdk/node/package.json | Node SDK package manifest under sdk/node. |
| sdk/node/package-lock.json | Lockfile updates under new SDK directory. |
| sdk/node/LICENSE.md | License file moved under Node SDK folder. |
| sdk/node/CHANGELOG.md | Changelog under Node SDK folder. |
| sdk/node/.gitignore | Ignore build/test artifacts under Node SDK directory. |
| sdk/dotnet/README.md | Update .NET SDK README paths and dotnetsdk feature references. |
| sdk/dotnet/Microsoft.Mxc.Sdk/SandboxPolicy.cs | .NET SDK policy POCOs under new layout. |
| sdk/dotnet/Microsoft.Mxc.Sdk/RunResult.cs | .NET SDK run result model. |
| sdk/dotnet/Microsoft.Mxc.Sdk/Native/NativeLibraryResolver.cs | .NET native library resolver for dev + packaged layouts. |
| sdk/dotnet/Microsoft.Mxc.Sdk/MxcSandbox.cs | .NET SDK public entry point for run-to-completion API. |
| sdk/dotnet/Microsoft.Mxc.Sdk/MxcException.cs | .NET SDK typed exception wrapper. |
| sdk/dotnet/Microsoft.Mxc.Sdk/Microsoft.Mxc.Sdk.csproj | Update repo-relative source dir and cargo feature to dotnetsdk. |
| sdk/dotnet/Microsoft.Mxc.Sdk/ErrorCode.cs | .NET error-code enum aligned to native constants. |
| sdk/dotnet/Microsoft.Mxc.Sdk.Tests/MxcSandboxTests.cs | .NET SDK tests under new location. |
| sdk/dotnet/Microsoft.Mxc.Sdk.Tests/Microsoft.Mxc.Sdk.Tests.csproj | .NET SDK test project file. |
| sdk/dotnet/Microsoft.Mxc.Sdk.slnx | Solution file under new SDK root. |
| sdk/dotnet/Microsoft.Mxc.Sdk.Sample/Program.cs | Sample program under new SDK root. |
| sdk/dotnet/Microsoft.Mxc.Sdk.Sample/Microsoft.Mxc.Sdk.Sample.csproj | Sample project file. |
| sdk/dotnet/.gitignore | Ignore generated bindings/build outputs under dotnet SDK folder. |
| scripts/versioning/check-sdk-types-codegen.js | Update committed wire.ts path to sdk/node/.... |
| scripts/versioning/check-schema-versions.js | Update schema-version gate paths to sdk/node/.... |
| scripts/check-version-sync.js | Update Node SDK + .NET SDK version sync paths. |
| scripts/check-dotnet-errorcode-parity.js | Rename/update parity gate to dotnet SDK location. |
| scripts/check-dotnet-bindings-codegen.js | Rename/update csbindgen drift gate to dotnet SDK location + feature. |
| README.md | Update SDK links/paths to sdk/node. |
| docs/versioning.md | Update referenced SDK file paths. |
| docs/telemetry/telemetry.md | Update SDK license override doc paths to sdk/node. |
| docs/state-aware-lifecycle/mxc-state-aware-sandbox-api.md | Update referenced SDK file paths to sdk/node. |
| docs/state-aware-lifecycle/mxc-state-aware-sandbox-api-overview.md | Update referenced SDK file paths to sdk/node. |
| docs/schema-codegen.md | Update SDK wire emitter + oracle paths to sdk/node. |
| docs/sandbox-policy/v1/policy.md | Update referenced SDK file paths. |
| docs/process-container/os-version-support.md | Update SDK README link to sdk/node/README.md. |
| docs/process-container/guide.md | Update SDK mapping/type file paths to sdk/node. |
| docs/nanvix-microvm/nanvix-integration-plan.md | Update referenced SDK file paths. |
| docs/macos-support/seatbelt-backend.md | Update SDK bin path to sdk/node/bin/.... |
| docs/isolation-session/state-aware-typescript-initial-plan.md | Update referenced SDK test-helper path. |
| docs/bwrap-support/bubblewrap-backend-plan.md | Update referenced SDK file paths. |
| docs/authoring-a-new-feature.md | Update referenced SDK file paths. |
| CONTRIBUTING.md | Update SDK location references to sdk/node. |
| build.sh | Update SDK_DIR to sdk/node. |
| build.bat | Update Node SDK bin paths and .NET runtimes staging paths. |
| build-mac.sh | Update SDK_DIR to sdk/node. |
| .github/workflows/SDK.Unit.Test.Job.yml | Update workflow working directory + lockfile cache path. |
| .github/workflows/SDK.Integration.Test.Job.yml | Update integration working directory + artifact path traversal. |
| .github/workflows/Package.NpmSdk.Job.yml | Update packaging working directory and artifact staging paths. |
| .azure-pipelines/templates/Vpack.Package.Job.yml | Read Node SDK version from sdk/node/package.json. |
| .azure-pipelines/templates/SDK.Unit.Test.Job.yml | Update ADO SDK dir + npm cache key paths. |
| .azure-pipelines/templates/SDK.Integration.Test.Job.yml | Update ADO integration dir + npm cache key paths. |
| .azure-pipelines/templates/Package.NpmSdk.Job.yml | Update ADO SDK dir + npm cache key paths. |
| .azure-pipelines/.npm/.npmrc | Update comment describing where pipeline copies .npmrc. |
Review details
- Files reviewed: 44/104 changed files
- Comments generated: 1
- Review effort level: Low
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
MGudgin
approved these changes
Jul 14, 2026
caarlos0
added a commit
to caarlos0/mxc
that referenced
this pull request
Jul 14, 2026
Integrate 8 upstream commits, notably: - microsoft#642 restructured the SDK tree: sdk/ -> sdk/node/ (TypeScript) and csharp/ -> sdk/dotnet/ (C#). Git followed the renames and carried this branch's Seatbelt-proxy edits into the moved sdk/node/ files. - microsoft#623 (Bubblewrap: mask denied files with a /dev/null bind) touched bwrap_runner.rs, which this branch also changed (LinuxProxyCoordinator -> UnixProxyCoordinator rename). The two edits are orthogonal and auto-merged: the merged file has both UnixProxyCoordinator and the new resolve_denied_paths / build_args_classified masking. - microsoft#582/microsoft#615/microsoft#616/microsoft#645/microsoft#646/microsoft#644 (version-axis formalization, GA networking specs, SDK DACL-tier streaming fix, triage gates). Resolve the single conflict in mxc_engine/src/policy.rs: upstream only rewrote a comment's stale SDK path (sdk/src/sandbox.ts -> sdk/node/src/sandbox.ts), but this branch had already deleted those comment lines when dropping the "proxy not supported on macOS" rejection and renaming the host-rule flag. Keeping this branch's rewrite subsumes upstream's intent (the stale path reference no longer exists). Validated on the CI-pinned Rust 1.93 toolchain: mxc_engine / mxc-sdk / seatbelt_common / wxc_common / unix_test_proxy / mxc_darwin build + test green (incl. macos_proxy_is_accepted_and_mapped); bwrap_common and seatbelt_common cross-check clean on x86_64-unknown-linux-gnu with -D warnings; clippy -D warnings clean; version-sync OK; SDK (now sdk/node) build + unit tests green (3 pre-existing PowerShell-on-macOS failures only). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: d3191c12-2deb-452b-8379-3abbcd5eeb68 Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
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.
📖 Description
Reorganize the language SDKs under a single sdk/ root and give each folder a name that reflects its runtime, so the layout matches the "one Rust core, multiple language bindings" architecture.
Folder moves (history preserved via git mv ):
• sdk/ (TypeScript) → sdk/node/ — it's the Node/npm SDK ( @microsoft/mxc-sdk )
• csharp/ → sdk/dotnet/ — it's the .NET SDK ( Microsoft.Mxc.Sdk )
Consequential renames (the binding is .NET, implemented in C#):
• Gate scripts scripts/check-csharp-.js → scripts/check-dotnet-.js
• Cargo feature csharpsdk → dotnetsdk (gates csbindgen codegen in mxc_ffi/build.rs )
Reference updates (paths only — no package/assembly/namespace changes): FFI codegen output path ( build.rs ), all gate/versioning scripts, build.bat / build.sh / build-mac.sh , GitHub Actions + ADO pipeline templates, .npmrc , tests/playground , root/SDK/ docs/ markdown, .github/copilot-instructions.md , and Rust doc comments. Regenerated sdk/node/src/generated/wire.ts and the NativeMethods.g.cs output path.
The npm package name @microsoft/mxc-sdk , the C# assembly/namespace Microsoft.Mxc.Sdk , and all public APIs are unchanged.
🔗 References
Follow-up to #635 (the Rust-SDK / FFI refactor). No functional/behavioral change.
🔍 Validation
All green locally:
• Gates: version-sync, check-dotnet-errorcode-parity (16 codes), check-dotnet-bindings-codegen (4 entry points, builds mxc_ffi --features dotnetsdk ), schema-codegen, sdk-types-codegen, schema-versions, validate-configs
• dotnet test sdk/dotnet/Microsoft.Mxc.Sdk.slnx : 5/5 passed
• npm test (sdk/node): 181 passed, 0 failed
• dotnet build : succeeded — confirms the csproj GenerateNativeBindings target invokes cargo build --features dotnetsdk correctly
• Repo-wide sweep confirms no stale sdk/ts , sdk/csharp , check-csharp- , or csharpsdk references remain
✅ Checklist
Cargo.lock, thedependency-feed-checkcheck passes (see docs/pull-requests.md)📋 Issue Type
Microsoft Reviewers: Open in CodeFlow