Staging¶
The input/output plumbing between the host workspace and the conduit: stage a workspace in before a run, collect and fetch declared output globs back out after it.
resoluto.sandbox.stage_inputs
async
¶
Extract every input archive under inbox/ into the workspace; returns the keys staged.
Source code in src/resoluto/sandbox/staging.py
resoluto.sandbox.put_dir
async
¶
put_dir(
store,
prefix,
local_dir,
*,
name="workspace",
exclude=_DEFAULT_EXCLUDES,
protect=frozenset(),
paths=None,
)
Tar local_dir and put it under inbox/; returns the object key.
paths (each relative to local_dir) scopes the archive to just those subtrees. Pass the
caller's paths so a run only ever stages the inputs it uses — never the surrounding
workspace (deps, sibling repos, or the object store itself). None = the whole dir.
Source code in src/resoluto/sandbox/staging.py
resoluto.sandbox.collect_outputs
async
¶
Tar the declared output paths and put them under outbox/; returns the object key.
Source code in src/resoluto/sandbox/staging.py
resoluto.sandbox.fetch_outputs
async
¶
Extract every output archive under outbox/ into dest_dir; returns the keys fetched.
allowed_paths (the caller's declared output_paths) scopes what is materialized: only members
matching those globs land in dest_dir, so an untrusted guest cannot smuggle undeclared files
into the caller's workspace. None extracts everything (low-level/legacy use).