UNPKG

@tanstack/ai-sandbox

Version:

Provider-agnostic sandbox layer for TanStack AI — run harness adapters inside isolated sandboxes (defineSandbox, defineWorkspace, withSandbox) with a uniform SandboxHandle, workspace bootstrap, policy, and resumable lifecycle.

39 lines (34 loc) 1.69 kB
/** * Capability tokens the sandbox layer owns and provides. * * - `SandboxCapability` is PROVIDED by `withSandbox` and REQUIRED by harness * adapters (`requires: [SandboxCapability]`). * - `SandboxInstanceStoreCapability` lives in * `./instance-store` (same package). `LocksCapability` / `withLocks` live in * `@tanstack/ai/locks` and are not re-exported here. */ import { createCapability } from '@tanstack/ai' import type { SandboxHandle } from './contracts' import type { SandboxPolicy } from './policy' import type { ToolBridgeProvisioner } from './tool-bridge' export const SandboxCapability = createCapability<SandboxHandle>()('sandbox') /** * The active sandbox policy, provided by `withSandbox` from the definition. * Harness adapters read it to map allow/ask/deny rules onto their native * permission system. */ export const SandboxPolicyCapability = createCapability<SandboxPolicy>()('sandbox-policy') /** * Provisions the MCP tool-bridge endpoint for a run. OPTIONALLY provided by a * serverless/edge orchestrator (e.g. a Durable Object) to override the default * `node:http` host transport. Harness adapters read it via `getOptional` and * fall back to `nodeHttpBridgeProvisioner` when absent. */ export const ToolBridgeProvisionerCapability = createCapability<ToolBridgeProvisioner>()('tool-bridge-provisioner') /** Destructured accessors for adapters: `getSandbox(ctx)` reads the handle. */ export const [getSandbox, provideSandbox] = SandboxCapability export const [getSandboxPolicy, provideSandboxPolicy] = SandboxPolicyCapability export const [getToolBridgeProvisioner, provideToolBridgeProvisioner] = ToolBridgeProvisionerCapability