<feed xmlns='http://www.w3.org/2005/Atom'>
<title>panto-subagents.git/subagents, branch main</title>
<subtitle>Subagents and dynamic workflows extension for panto
</subtitle>
<id>https://code.tjp.lol/panto-subagents.git/atom?h=main</id>
<link rel='self' href='https://code.tjp.lol/panto-subagents.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/'/>
<updated>2026-09-03T13:57:03Z</updated>
<entry>
<title>Show full subagents.lua source when expanded; guide toward templated prompts</title>
<updated>2026-09-03T13:57:03Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-09-03T13:41:51Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=2f429aae8468f249dd40baaf815975d5e02b1030'/>
<id>urn:sha1:2f429aae8468f249dd40baaf815975d5e02b1030</id>
<content type='text'>
The expanded progress board capped the executed Lua at 128 lines (and 32KB),
so long workflow sources ended in an ellipsis even after Ctrl-O. Expanded
now renders the whole source; collapsed still shows the first four lines.

Add a "Program, don't transcribe" section to the system guidance so the
primary writes shorter sources: one [[template]] with {name} placeholders
filled by gsub with a table, loops over data instead of per-child copies,
shared system prompts in `agents`, and file references instead of quoted
contents. A single templating mechanism is named on purpose to remove
choice.

Co-Authored-By: Claude Fable 5.1 &lt;noreply@anthropic.com&gt;
Claude-Session: https://claude.ai/code/session_01ETqhv5FVD8Z14BEBsXeHHC
</content>
</entry>
<entry>
<title>Defer workflow completion wake until callback unwinds</title>
<updated>2026-09-02T16:47:37Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-09-02T16:47:15Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=b206f895d9d3e82fcd2dc028d993b66ab0734011'/>
<id>urn:sha1:b206f895d9d3e82fcd2dc028d993b66ab0734011</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Sort completed subagents above active ones</title>
<updated>2026-09-02T15:30:55Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-09-02T15:30:11Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=fd2b3dfd85d8d87716481425216abc5e8cdd9c1b'/>
<id>urn:sha1:fd2b3dfd85d8d87716481425216abc5e8cdd9c1b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Expose background workflow activity events</title>
<updated>2026-09-02T14:26:58Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-31T16:17:11Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=997d80bc69a6363e8c65a987dace0e30d761522d'/>
<id>urn:sha1:997d80bc69a6363e8c65a987dace0e30d761522d</id>
<content type='text'>
Bracket each background workflow with lifecycle events and emit its primary
wake before completion so integrations do not report a premature idle state.
</content>
</entry>
<entry>
<title>Show executed Lua in subagent progress boards</title>
<updated>2026-09-02T14:26:44Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-31T16:17:11Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=7a31ae2163f4ce1c6807da1737203d1063839c14'/>
<id>urn:sha1:7a31ae2163f4ce1c6807da1737203d1063839c14</id>
<content type='text'>
Render subagents.lua source in both collapsed and expanded progress views so
inspection-only calls remain understandable and survive session replay.
</content>
</entry>
<entry>
<title>Use Panto terminal width helpers for progress rendering</title>
<updated>2026-08-26T15:17:36Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-26T15:16:23Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=ed872974d799312c7114a63474c6bc7bc2179e2c'/>
<id>urn:sha1:ed872974d799312c7114a63474c6bc7bc2179e2c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Keep subagent boards pinned while background workflows run</title>
<updated>2026-08-21T20:12:35Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-21T20:11:28Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=9f6287025c288e2cd687d0bbecd3c8fb4867effa'/>
<id>urn:sha1:9f6287025c288e2cd687d0bbecd3c8fb4867effa</id>
<content type='text'>
A background subagents.lua workflow outlives the tool call that started
it, so settling the outer result unpinned a board whose agents were still
working. Track a per-tool-call workflow count and derive the pin from
both the tool being active and that count, so the board only returns to
transcript order once its last workflow finishes.

Also show the reasoning level alongside the model on agent cards.
</content>
</entry>
<entry>
<title>Add workflow cancellation controls</title>
<updated>2026-08-21T17:26:48Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-21T17:26:48Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=49a6001dde72622df9410b738322e9a23e68ddee'/>
<id>urn:sha1:49a6001dde72622df9410b738322e9a23e68ddee</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Expose a json codec to the subagents.lua sandbox</title>
<updated>2026-08-20T21:32:46Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-20T21:30:59Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=4183fdc7d3667fb4c2af72ff0098c15168c9e950'/>
<id>urn:sha1:4183fdc7d3667fb4c2af72ff0098c15168c9e950</id>
<content type='text'>
Model-authored workflow Lua could reach string, table, math, and utf8 but
had no way to parse an agent's report, so any fan-out over discovered work
had to invent an ad-hoc line format and hand-roll string.gmatch. Hand the
guest panto.ext.json instead. decode returns nil plus a message rather
than raising: the sandbox deliberately has no pcall, so a raising decoder
would let one malformed agent line kill an entire workflow.

Teach the pattern in the injected guidance too: deterministic Lua owns the
loops, counts, ordering, and gates, agents supply discovery and judgment,
and a worker that feeds Lua ends its report with one parseable line. The
existing static-graph example stays; a discover-then-fan-out example joins
it.
</content>
</entry>
<entry>
<title>Replace lyaml with api7-lua-tinyyaml and prepare the 0.1.0 release</title>
<updated>2026-08-20T19:39:46Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-08-20T18:49:36Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/panto-subagents.git/commit/?id=a08d854d52cf5492a7763bccc1ce475dcc057cba'/>
<id>urn:sha1:a08d854d52cf5492a7763bccc1ce475dcc057cba</id>
<content type='text'>
lyaml binds the system libyaml, which luarocks does not vendor, so
installing the rock failed wherever that library was absent, taking the
whole extension down on a stock macOS machine. api7-lua-tinyyaml is pure
Lua and matches lyaml on every quoting, escaping and block-scalar form
profiles use.

What the subset costs: anchors and aliases are not resolved, and plain
multi-line scalars raise. The raise surfaces through the existing parse
warning, but an unresolved alias came back as the literal "*alias"
string and would have become a profile name, so frontmatter.parse now
detects those keys, drops them, and warns.

Point source.url at code.tjp.lol with a v0.1.0 tag, replacing a GitHub
URL that never existed. Add a LICENSE file and mise release tasks, and
fix the README dependency-install command, which called a luarocks.cmd
function that does not exist.
</content>
</entry>
</feed>
