Repository navigation
Description
npm already has @sandbox-kit/contracts, @sandbox-kit/sandbox, @sandbox-kit/daytona, and @sandbox-kit/modal at 0.1.5. Publish 0.1.6 for all four after #37 lands on main. That PR adds the shared filesystem on the sandbox handle for Daytona and Modal. The Go release is #39.
Applications install the core package and one provider. Publish contracts as well: @sandbox-kit/sandbox depends on it at an exact version, and this release adds generated filesystem option and FileInfo types. Each provider depends on @sandbox-kit/sandbox at an exact version, and both providers gain filesystem adapters, so sandbox, Daytona, and Modal ship together. Publish contracts first, then sandbox, then the providers.
Packages
| Package | Publish | Why |
|---|---|---|
@sandbox-kit/contracts |
0.1.6 |
Generated wire types add FileInfo, FileType, and the filesystem option messages (FileReadOptions, FileWriteOptions, FileCopyOptions, MakeDirectoryOptions, ListDirectoryOptions, StatOptions, RemoveOptions). |
@sandbox-kit/sandbox |
0.1.6 |
Public sandbox.filesystem with the eight shared calls. Path validation, file field constants, and ms timeouts on file options. Pin @sandbox-kit/contracts to 0.1.6. |
@sandbox-kit/daytona |
0.1.6 |
Filesystem adapter: whole-second timeouts on read/write/copy, omitted/zero timeout passed as 0 (no Daytona transfer default), local path classification, copyToLocal creates missing local parents. Pin @sandbox-kit/sandbox to 0.1.6. |
@sandbox-kit/modal |
0.1.6 |
Filesystem adapter over Modal file APIs; local path classification before native copy; parents default true. Pin @sandbox-kit/sandbox to 0.1.6. |
Leave these unpublished:
sdks/typescript(@sandbox-kit/typescript-workspace, already"private": true)examples/typescript/(private projects,file:dependencies)tooling/website/(docs site ships frommainvia Pages; not an npm package)
Leave @daytona/sdk at 0.225.0 and modal at 0.11.1.
flowchart LR
contracts["@sandbox-kit/contracts 0.1.6"] --> sandboxTs["@sandbox-kit/sandbox 0.1.6"]
sandboxTs --> daytonaTs["@sandbox-kit/daytona 0.1.6"]
sandboxTs --> modalTs["@sandbox-kit/modal 0.1.6"]
What 0.1.6 changes
Daytona and Modal share one filesystem on the sandbox handle. The eight calls are readFile, writeFile, copyFromLocal, copyToLocal, makeDirectory, listDirectory, stat, and remove. Lifecycle stays on the handle. Closing the client or handle does not delete files or the sandbox.
A sandbox path must be absolute. A relative, blank, or NUL path fails in Kit before the provider is called; the field is path. Read and write move bytes. Copy uses a path on the caller's disk; a missing local source is not found and a local directory is an invalid argument, both with field local_path, before the provider call. copyToLocal creates missing local parent directories. An existing local directory destination is rejected with the same field.
parents defaults to true on makeDirectory. Daytona rejects parents: false. Modal requires the parent when parents is false. TypeScript Daytona read, write, and copy take a whole number of seconds (2000 → 2s; 1500 is rejected, field timeout). An omitted or zero timeout on those four calls is passed as 0 so Daytona adds no transfer limit; the abort signal carries the client deadline. Directory, list, stat, and remove use the abort signal, so 1500 is a valid deadline.
Guides under docs/filesystem.md / the site filesystem page and the provider READMEs describe the same surface. Runnable examples live under examples/typescript/<provider>/filesystem/.
Steps
Do this on current main after #37 merges. Do not move the 0.1.5 releases.
- Set
"version": "0.1.6"insdks/typescript/contracts,sdks/typescript/sandbox,sdks/typescript/providers/daytona, andsdks/typescript/providers/modal. - Set
@sandbox-kit/contractsto0.1.6in the sandbox package. Set@sandbox-kit/sandboxto0.1.6in both provider packages. - From
sdks/typescript, runnpm install. From the repo root, runGOWORK=off go run ./tooling/cmd/sandbox-kit test typescript. - Dry-run each pack. Confirm the tarball contains
dist/,README.md, andLICENSE, and that dependencies are version numbers, notfile::
cd sdks/typescript/contracts && npm pack --dry-run
cd ../sandbox && npm pack --dry-run
cd ../providers/daytona && npm pack --dry-run
cd ../providers/modal && npm pack --dry-run- Publish in dependency order.
prepublishOnlydeletesdist/and rebuilds it. Publish from the commit that contains the version bump and the merged filesystem changes:
cd sdks/typescript/contracts && npm publish
cd ../sandbox && npm publish
cd ../providers/daytona && npm publish
cd ../providers/modal && npm publish- Confirm the registry:
npm view @sandbox-kit/contracts@0.1.6 version
npm view @sandbox-kit/sandbox@0.1.6 version
npm view @sandbox-kit/sandbox@0.1.6 dependencies
npm view @sandbox-kit/daytona@0.1.6 dependencies
npm view @sandbox-kit/modal@0.1.6 dependencies@sandbox-kit/sandbox must depend on @sandbox-kit/contracts at 0.1.6. Each provider dependency list must show @sandbox-kit/sandbox at 0.1.6.
Apps install the core client and one provider:
npm install @sandbox-kit/sandbox@0.1.6 @sandbox-kit/daytona@0.1.6
# or @sandbox-kit/modal@0.1.6Checklist
- Add a shared filesystem for Daytona and Modal #37 is on
main - Filesystem guides and public comments are on
main - Companion Go release issue is linked (Publish the Go SDK at v0.1.4 #39)
- Bump the four package versions and the exact dependency pins to
0.1.6 -
sandbox-kit test typescriptpasses - Dry-run packs include
dist/,README.md, andLICENSE - Publish
@sandbox-kit/contracts@0.1.6 - Publish
@sandbox-kit/sandbox@0.1.6 - Publish
@sandbox-kit/daytona@0.1.6 - Publish
@sandbox-kit/modal@0.1.6 -
npm viewshows the0.1.6pins
Activity