Skip to content

Create a common SDK folder. Rename csharp to dotnet SDK and TS to node.#642

Merged
MGudgin merged 2 commits into
mainfrom
user/stscha/sdk-reorg
Jul 14, 2026
Merged

Create a common SDK folder. Rename csharp to dotnet SDK and TS to node.#642
MGudgin merged 2 commits into
mainfrom
user/stscha/sdk-reorg

Conversation

@shschaefer

@shschaefer shschaefer commented Jul 13, 2026

Copy link
Copy Markdown
Collaborator

📖 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

⚠️ CI YAML edits (GitHub Actions working-dirs/cache paths + ADO templates) can only be verified by inspection locally — first real validation is the PR's CI run.

✅ Checklist

📋 Issue Type

  • Bug fix
  • Feature
  • Task
Microsoft Reviewers: Open in CodeFlow

Copilot AI review requested due to automatic review settings July 13, 2026 22:13
@shschaefer shschaefer requested a review from a team as a code owner July 13, 2026 22:13

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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) and sdk/dotnet/ (.NET/C#), updating path references repo-wide.
  • Rename the FFI codegen cargo feature csharpsdkdotnetsdk and 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

Comment thread scripts/versioning/check-schema-versions.js Outdated
@shschaefer shschaefer requested a review from MGudgin July 14, 2026 03:33

@MGudgin MGudgin left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@MGudgin MGudgin merged commit cf3b348 into main Jul 14, 2026
22 checks passed
@MGudgin MGudgin deleted the user/stscha/sdk-reorg branch July 14, 2026 17:35
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants