Skip to content

v0.220.0

@drewstone drewstone tagged this 13 Sep 00:22
* feat(coordination): let a spawn name an inline resource by path

A manager could hand a child a data file only by emitting the bytes
inside its own spawn call. Measured 2026-09-12: a 29,144-character
base64 payload reached three children as 15,928 characters with 11
substitutions, a fourth received the placeholder the manager meant to
replace, and seven blind-check attempts across two runs delivered no
data (#1207).

The spawn tool now accepts { kind: 'inline', name, path } under
profile.resources. The coordination server reads the file under the
manager's workspace root, substitutes it as content before the canonical
schema sees the profile, and returns a sha256 receipt per resource. A
path is refused when it is absolute, leaves the root (directly or through
a symlink), is not a regular file, exceeds 4 MiB, or is not UTF-8. The
root is set only for a loopback bridge driver, whose cwd is a directory
on this host; every other backend refuses a path with the reason.

* chore(api-surface): record the spawnResourceRoot option

* chore(release): 0.220.0

* fix(coordination): judge the opened descriptor, type every read failure, infer no root under a custom harness

Review findings on #1208: a containment check on a path alone can be
raced by the manager's own workspace changing under it, so the file is
opened first and the in-root real path must name the descriptor's inode;
an unreadable or vanished file is the typed invalid-profile refusal, not
a thrown tool failure; and a caller-supplied driveHarness is the actual
driver, so the bridge's cwd is not inferred as its workspace.
Assets 2
Loading