resource() returns a handle
that the SDK checkpoints during execution and restores in a fork.
This example uses the Vercel AI SDK
and the E2B driver below. Install e2b and set E2B_API_KEY for sandbox access.
agent.ts
Declaring what a step changes
resources on defineTool, wrapTool, and step() identifies what the call
may change:
- Default: none.
["workspace"]: the named resource.
Checkpoint policy
Pass acheckpoints options object for each resource. The kernel preserves its
policy across dispatches and forks:
Failed calls and calls cancelled after starting count. Replay, denied calls,
and LLM calls do not. A due capture runs after the body and before its outcome
returns. Capture failure leaves that outcome intact and the resource uncovered.
Writing a driver
Pass an object implementingResourceDriver<Handle, Binding>:
Methods can return values or promises.
resource() infers the handle type from
the driver. The kernel stores the JSON binding and checkpoint references; the
driver stores the captured contents. Keep driverId and configuration stable
for each resource key.
Fork coverage
A fork point is covered when every registered resource has matching captured state. Every event can be forked. An uncovered fork uses the newest earlier checkpoint, or the initial environment if none exists; copied results still replay and may describe changes absent from the restored state. By default, coverage ends at the next live step. A driver can setcoverageReuse = true to keep it until an affecting tool or local step starts.
Use this when all changes happen through declared tools and steps.
A driver throws CheckpointUnavailable
if the selected checkpoint is expired or missing, failing the forked execution.
See Forks for the kernel flow.