@microsandbox/types
v0.7.8
Published
Shared task and wire contract types for microsandbox, as TypeScript.
Readme
@microsandbox/types
Shared task and wire contract types for microsandbox, as TypeScript.
This package is the type-only mirror of the cloud contract in the microsandbox-types Rust crate. It gives TypeScript consumers (the cloud front end and anything talking to the cloud API) the exact cloud wire shapes microsandbox uses, so a CloudSandboxSpec means the same thing on both sides of the wire. Only the domain types the cloud contract references are generated; the broader SDK/domain surface is not.
It contains no runtime code. Every export is a type; importing it adds nothing to your bundle.
Generated, Not Hand-Written
Three files are generated from the Rust crate with ts-rs, each carrying a // @generated header. Do not edit them:
src/cloud.ts— the package entry: the cloud wire types, which import and re-export their domain and snapshot dependencies.src/domain.ts— only the domain types the cloud twins transitively reference (EnvVar,Rlimit,NetworkPolicy, …).src/snapshot.ts— the canonical snapshot manifest schema embedded by cloud snapshot resources.
To change a shape, edit the Rust type and regenerate from the repo root:
cargo run -p microsandbox-types --features ts --bin microsandbox-types-generateInstall
npm install @microsandbox/typesUsage
Import the shapes you need with import type:
import type {
CloudCreateSandboxRequest,
CloudSnapshot,
CloudSnapshotOperation,
} from "@microsandbox/types";
function createSandbox(request: CloudCreateSandboxRequest) {
// POST the source-tagged request to the cloud API
}CloudCreateSnapshotRequest and CloudSnapshot are unions discriminated by
kind; the current public variant is "disk". CloudSnapshotOperation carries
that same kind and exposes only the public statuses queued, in_progress,
succeeded, and failed. Both snapshot creation results and disk-snapshot
restore requests use CloudSnapshotLocation to distinguish a managed artifact
ID from a host-volume path.
Generated Shape Notes
The bindings follow ts-rs conventions, which mirror the Rust serde representation:
- Cloud enums are internally tagged with a
typefield:CloudRootfsSourceis{ type: "bind"; … } | { type: "oci"; reference: string } | { type: "disk_image"; … }, andCloudVolumeMount/CloudHostPattern/CloudViolationActionfollow the same shape. CloudCreateSandboxRequestis a flat union discriminated bysource: "oci" | "bind" | "disk_image" | "disk_snapshot". Common sandbox fields stay flat on every variant; source-specific fields such asreference,path, anddisk_snapshot_refappear only where they apply. Servers also accept the legacyimagerequest shape withoutsourceduring migration.CloudCreateSnapshotRequestandCloudSnapshotare flat unions discriminated by the currentkind: "disk"; common snapshot fields stay flat beside the discriminator.- Lowercase domain enums like
StatVirtualizationare string-literal unions ("strict" | "relaxed" | "off"). - Optional Rust fields are
T | null; fields skipped when absent are?:optional. - Referenced domain and snapshot types live in
domain.tsandsnapshot.tsand are re-exported from the package entry, so a single import from@microsandbox/typessees the whole cloud contract.
Build And Typecheck
npm run build # tsc -> dist/
npm run typecheck # tsc --noEmit