<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dot.git/skills/pi-subagent/run-agent.sh, branch master</title>
<subtitle>Shell, editor and terminal configuration, and the tools that go with them
</subtitle>
<id>https://git.soarez.net/sz/dot.git/atom?h=master</id>
<link rel='self' href='https://git.soarez.net/sz/dot.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/'/>
<updated>2026-10-21T11:39:32+00:00</updated>
<entry>
<title>pi-subagent: opt-in sessions, to follow up, resume after a timeout, or fork</title>
<updated>2026-10-21T11:39:32+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-21T11:39:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=9faef45275e9ab24e10bfed878f6890ba76a1bb0'/>
<id>urn:sha1:9faef45275e9ab24e10bfed878f6890ba76a1bb0</id>
<content type='text'>
run-agent.sh still runs with --no-session by default. --session saves the
run as session &lt;name&gt; under &lt;workdir&gt;/sessions/; --followup TEXT sends the
next message in it, from any provider and model; --fork FROM starts &lt;name&gt;
as a copy of FROM. A follow-up or fork inherits --tools, --thinking, --cwd
and --context-files, so a read-only subagent stays read-only, and the
earlier round's files move to &lt;name&gt;.round&lt;N&gt;.*.

Sessions are opened by file path: by id, pi looks only among sessions
started in the current directory and otherwise silently creates an empty
one, exit 0. A fresh retry moves the old session aside, since pi would
resume it given the same id.

pi-review-panel launches members with --session, so a contradiction can be
put to both reviewers before it is settled; verdicts are still tallied from
the original reviews.

From dot request 20261021-123436-work-laptop-d0adf2.
</content>
</entry>
<entry>
<title>skills: pi-subagent, extracted from pi-review-panel, which now runs on it</title>
<updated>2026-10-21T11:23:28+00:00</updated>
<author>
<name>Igor Soarez</name>
<email>igor@soarez.org</email>
</author>
<published>2026-10-21T11:23:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.soarez.net/sz/dot.git/commit/?id=32123f167dd5a7cdcbdaf6e5c144f40654d236fc'/>
<id>urn:sha1:32123f167dd5a7cdcbdaf6e5c144f40654d236fc</id>
<content type='text'>
The panel's mechanics -- headless pi runs that don't hang, answer
extraction, billed cost, retries, verifying what comes back -- are not
review-specific. pi-subagent covers one delegated task, one brief fanned out
to several models, or a job split into parallel parts; pi-review-panel keeps
only what a review adds.

run-agent.sh replaces run-member.sh and fixes what it got wrong:

- `timeout` is not on a Mac without coreutils, which failed every member
  with exit 127; it falls back to gtimeout, then perl's alarm (142 -&gt; 124).
- pi exits 0 when the provider refuses the request, or the answer is empty;
  both are now exit 1, with stopReason and error in the cost file.
- a retry moves the earlier attempt to &lt;name&gt;.attempt&lt;N&gt;.* instead of
  overwriting its cost file.

New options: --tools (an allowlist; read,grep,find,ls is read-only by
construction), --cwd, --context-files, --brief, --deliver. status.sh
replaces the `pgrep -f run-member.sh` loop, which counted every panel on the
machine, and prints the cost table.

From dot request 20261021-114826-work-laptop-2b868c.
</content>
</entry>
</feed>
