# API
Open a `Service` with the managed Rust-library source root, Web-library source
and publication roots, and Rust-binary source and publication roots, plus a
crates.io token for Rust-library publication. The Web source and publication
roots must be disjoint. Call `execute` with a hidden session ID, one of the
exported tool names, a JSON argument value, and already-resolved ordered byte
objects. Rust-binary calls accept one resolved object per `objectIds` entry.
`kcode-web-libs/attach-object` accepts exactly one resolved object for its
`objectId`; `name` is the managed Web-library name and `path` is the relative
destination inside that library. It atomically stores those bytes at `path`;
other tools require an empty object list. The path extension determines whether
the entry remains opaque when reopened: common source/document extensions are
text and every other extension is an asset. Use the ordinary text write tools
for text-extension paths. Call `release` when the session ends.
Rust-library and Rust-binary checks automatically format their disposable build
source. Layout that rustfmt can repair does not produce a tool failure.
Rust-library checks include Chromium for managed Web-library release tests and
disable its incompatible inner process sandbox only inside the hardened
rootless Podman validation image. They preserve bounded stdout and stderr
diagnostics when a command fails.
Rust-binary checks preserve both streams as well.
`web_libraries_root()` returns the source root.
`web_publications_root()` returns the immutable Web publication root for the
integrating HTTP router.
`ToolExecution.text` is the exact model-facing result.
`ToolExecution.objects` contains exact ordered Rust-binary call output bytes
for the integrating server to store. It is empty for other tools.
`ToolExecution.snapshot` is present when a managed source box must be created or
updated. Web snapshots render opaque assets as path and byte size rather than
payload text or a digest. Rust-binary call text and objects are returned without
parsing, reformatting, wrapping, or storage.