feat(operator): Phase 6 — relay-mode read (screen) + stop-condition engine (watch)
Completes the remote-drive triad for a broker-owned sandbox the operator can't exec into directly: keys (in) → watch (wait) → screen (out). - _sbx:data PTY-relay frames are absorbed into a capped rolling terminal buffer (not surfaced as chat); `screen` returns it ansi-stripped (or raw). sandbox. strip_ansi handles CSI/OSC/CR noise so output greps cleanly. - `watch` is a formal stop-condition engine: blocks until a regex matches in the screen buffer or chat events, or an idle-quiescence window, or a hard timeout, then reports which fired — the autonomy loop's principled wait. - Skill doctrine updated with the type→wait→read relay loop. 28 offline tests green. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -72,12 +72,18 @@ $HH sbx down # tear your container do
|
||||
When the **room** has a sandbox and you're granted, `exec`/`write`/`get` target
|
||||
it directly (you're co-located on the host) — no launch needed.
|
||||
|
||||
**Keystroke relay** — drive the room's *shared* terminal live, like a human:
|
||||
**Keystroke relay** — drive the room's *shared* terminal live, like a human.
|
||||
The relay loop is **type → wait → read**:
|
||||
```bash
|
||||
$HH keys "ls -la" enter # type + run
|
||||
$HH keys ctrl-c # interrupt the running program
|
||||
$HH keys --help-keys # print the full vocabulary
|
||||
$HH keys "make build" enter # type + run
|
||||
$HH watch --for "BUILD (SUCCESS|FAIL)" --in screen --timeout 120 # wait
|
||||
$HH screen # read the relayed terminal (ansi-stripped)
|
||||
$HH keys ctrl-c # interrupt the running program
|
||||
$HH keys --help-keys # print the full vocabulary
|
||||
```
|
||||
`watch` is the stop-condition engine — it blocks until a regex matches (in
|
||||
`screen` output or chat `events`), or `--idle N` quiet, or `--timeout` — then
|
||||
reports which fired. This is how you stay autonomous without busy-polling.
|
||||
|
||||
### Keystroke cheat-sheet (how to *stop* things matters most)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user