loopd: subagent spawn on the background slot

Co-Authored-By: ornith-1.5-35b-a3b <agent@wntrmute.dev>
This commit is contained in:
2026-10-03 19:59:25 -07:00
co-authored by ornith-1.5-35b-a3b
parent fe145fb83a
commit 4491e1b80d
13 changed files with 471 additions and 12 deletions
+26
View File
@@ -1243,3 +1243,29 @@ session.
**Check.** `sessions/heartbeat/0.jsonl` gains a new `User` whose text starts with `It is ` and an
RFC 3339 timestamp.
## subagent-id
**What you see.** A `subagent` call is denied as invalid-arguments. The tool result names the
child id that would not fit and this entry:
```text
Denied: the arguments are not valid for this tool: child session id `sub-…` would not fit; see docs/runbook.md#subagent-id.
```
**Why.** A session id is `[a-z0-9-]`, at most 64 bytes. The child is `sub-<parent>-<n>` with
`n` the parent's next call id. A parent already near that limit, or a nested chain of
`sub-` prefixes, cannot spawn another child.
**Confirm.**
```sh
printf '%s' '<the id named in the denial>' | wc -c
```
**Fix.** Do the work in the current session, or start a shorter parent id (`bxctl chat` without
a long `--session`). Nested children share one background slot; a parallel pool is out of
scope.
**Check.** A `subagent` call from a short parent (`chat-*`, `mm-*`, `heartbeat`) completes and
writes `sessions/sub-<parent>-<n>/`.