Skip to content

refactor(sdk): build @vercel/sandbox with tsdown dual outputs#84

Merged
LukeSheard merged 4 commits intomainfrom
schniz/vercel-sandbox-tsdown-dual-output
Mar 20, 2026
Merged

refactor(sdk): build @vercel/sandbox with tsdown dual outputs#84
LukeSheard merged 4 commits intomainfrom
schniz/vercel-sandbox-tsdown-dual-output

Conversation

@Schniz
Copy link
Copy Markdown
Collaborator

@Schniz Schniz commented Mar 10, 2026

Summary

  • migrate @vercel/sandbox from custom TypeScript dual-build scripts to tsdown with unbundled esm + cjs outputs
  • add explicit export-map conditions for root and deep ./dist/*.js paths so import resolves .js and require resolves .cjs
  • add package export resolution tests to verify Node import and require behavior, and include a changeset for the SDK package

Validation

  • pnpm build (in packages/vercel-sandbox)
  • pnpm typecheck (in packages/vercel-sandbox)
  • pnpm test src/package-exports.test.ts (in packages/vercel-sandbox)

@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 10, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sandbox Ready Ready Preview, Comment, Open in v0 Mar 20, 2026 9:13pm
sandbox-cli Ready Ready Preview, Comment, Open in v0 Mar 20, 2026 9:13pm
sandbox-sdk Ready Ready Preview, Comment, Open in v0 Mar 20, 2026 9:13pm
sandbox-sdk-ai-example Ready Ready Preview, Comment, Open in v0 Mar 20, 2026 9:13pm

Request Review

Copy link
Copy Markdown
Member

@TooTallNate TooTallNate left a comment

Choose a reason for hiding this comment

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

:lgtm:

Wanted to point out though that the tsdown configuration in the sandbox package is different (outputs .mjs files). Might want to make that consistent, but up to you.

Comment thread packages/vercel-sandbox/tsdown.config.ts Outdated
Resolve conflicts: keep "type": "module" from branch, take version
bump and log streaming improvements from main, use .js extensions
in test imports.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace wildcard dist exports with explicit ./dist/auth/index.js subpath
export and remove deprecated `bundle: true` option from tsdown config.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@LukeSheard LukeSheard merged commit cf13a34 into main Mar 20, 2026
12 checks passed
@LukeSheard LukeSheard deleted the schniz/vercel-sandbox-tsdown-dual-output branch March 20, 2026 21:36
pranaygp added a commit that referenced this pull request Mar 20, 2026
* origin/malte/serde:
  add workflow-code-runner example app
  refactor(sdk): build @vercel/sandbox with tsdown dual outputs (#84)
@github-actions github-actions Bot mentioned this pull request Apr 1, 2026
marc-vercel added a commit that referenced this pull request Apr 2, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## sandbox@2.5.7

### Patch Changes

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

## @vercel/sandbox@1.9.1

### Patch Changes

- Build and publish both ESM and CJS outputs for the SDK package.
([#84](#84))

- Support useworkflow serialization for sandboxes and commands
([#72](#72))

- Fix a Size mismatch when encoding binaries during write operations
([#127](#127))

- Accept `string` and `Uint8Array` in `writeFiles()` content, not just
`Buffer`. ([#128](#128))

## sandbox-filesystem-snapshots@0.0.12

### Patch Changes

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

## workflow-code-runner@0.1.1

### Patch Changes

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Marc Codina <marc.codina@vercel.com>
marc-vercel pushed a commit that referenced this pull request Apr 8, 2026
- migrate `@vercel/sandbox` from custom TypeScript dual-build scripts to
`tsdown` with unbundled `esm` + `cjs` outputs
- add explicit export-map conditions for root and deep `./dist/*.js`
paths so `import` resolves `.js` and `require` resolves `.cjs`
- add package export resolution tests to verify Node `import` and
`require` behavior, and include a changeset for the SDK package

- `pnpm build` (in `packages/vercel-sandbox`)
- `pnpm typecheck` (in `packages/vercel-sandbox`)
- `pnpm test src/package-exports.test.ts` (in `packages/vercel-sandbox`)

---------

Co-authored-by: Luke Phillips-Sheard <luke.phillips-sheard@vercel.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Luke PS <LukeSheard@users.noreply.github.com>
marc-vercel added a commit that referenced this pull request Apr 8, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

- Build and publish both ESM and CJS outputs for the SDK package.
([#84](#84))

- Support useworkflow serialization for sandboxes and commands
([#72](#72))

- Fix a Size mismatch when encoding binaries during write operations
([#127](#127))

- Accept `string` and `Uint8Array` in `writeFiles()` content, not just
`Buffer`. ([#128](#128))

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

- Updated dependencies
\[[`cf13a34221c2b83c25c73d94929d05e0a697aecf`](cf13a34),
[`772989c59a3c27efa98153cdc54b6e35c1c15eae`](772989c),
[`184cd42d8d3b1ea1df354529cb6ba103a33e18d3`](184cd42),
[`451c42efb94ab9c9dc330b4742071ac01008044d`](451c42e)]:
    -   @vercel/sandbox@1.9.1

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Marc Codina <marc.codina@vercel.com>
marc-vercel added a commit that referenced this pull request Apr 8, 2026
Rebasing `named-sandboxes`. Commits that I am moving:

1. cf13a34 — refactor(sdk): build @vercel/sandbox with tsdown dual
outputs (#84)
2. 772989c — Support "use workflow" serialization for Sandbox and
Command (#72)
3. cc74dbf — fix(sandbox): read package.json with fs instead of ESM
import (#119)
4. a6b8ce9 — feat(skill): update beta documentation for default snapshot
expiration (#125)
5. 184cd42 — patch(vercel-sandbox): count length by bytes and not ASCII
for binaries (#127)
6. 451c42e — feat(sandbox): accept string and Uint8Array in writeFiles
content (#128)
7. ad52dec — Version Packages (#122)
8. b91b9e4 — fix(sandbox): initialize API client in Command before
reading output (#130)
9. 28237b8 — refactor(workflow-code-runner): inline Sandbox calls in
workflow function (#129)
10. 0786e18 — Version Packages (#131)
11. 9555162 — fix(sandbox): handle abort signal and early stream close
in runCommand (#135)
12. db4e5f3 — Version Packages (#137)

I had to resolve multiple merge conflicts, specially with the commits 1
and 2. I've also added some tests for them because they were touching
`sandbox.ts` for serializing and deserializing, and in this branch we
moved most of the logic to `session.ts`.

---------

Co-authored-by: Gal Schlezinger <gal@spitfire.co.il>
Co-authored-by: Luke Phillips-Sheard <luke.phillips-sheard@vercel.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Luke PS <LukeSheard@users.noreply.github.com>
Co-authored-by: Malte Ubl <cramforce@users.noreply.github.com>
Co-authored-by: Pranay Prakash <pranay.gp@gmail.com>
Co-authored-by: Nathan Rajlich <n@n8.io>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Phil Z <pbzona@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.

4 participants