<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pantograph.git/src/lua_bridge.zig, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://code.tjp.lol/pantograph.git/atom?h=main</id>
<link rel='self' href='https://code.tjp.lol/pantograph.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/'/>
<updated>2026-07-03T18:10:09Z</updated>
<entry>
<title>Stage and apply event-field overrides at tool lifecycle boundaries</title>
<updated>2026-07-03T18:10:09Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-07-02T16:29:53Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=c4d7f70ff831cfcdad0f2a6224f9a14f86905de6'/>
<id>urn:sha1:c4d7f70ff831cfcdad0f2a6224f9a14f86905de6</id>
<content type='text'>
Stage writable event-field overrides by tool call id so they can be applied at the correct point in the turn lifecycle. Capture input overrides from tool_call_complete, capture output overrides from tool_result, and clear staged overrides defensively at turn start and shutdown.

Also honor user_message text overrides when starting a turn, add the helper that applies staged overrides to the agent at dispatch boundaries, and cover the behavior with tests for staged input/output overrides.
</content>
</entry>
<entry>
<title>Add addUserText helper; update all call sites</title>
<updated>2026-06-10T18:17:27Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-10T16:06:07Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=bb85e867bc938138f29fb45230169af1ba60761c'/>
<id>urn:sha1:bb85e867bc938138f29fb45230169af1ba60761c</id>
<content type='text'>
Conversation.addUserMessage now takes a []ContentBlock (symmetric with
addAssistantMessage). Introduce a thin addUserText wrapper in agent.zig
for the plain-text case and update every call site in agent.zig and
anthropic_messages_json.zig accordingly.
</content>
</entry>
<entry>
<title>expose `panto` to extensions as a require()able module, not a global</title>
<updated>2026-06-10T15:55:05Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-10T15:46:00Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=9bf1d800f2a24ed71221c64370c98ee8d907314b'/>
<id>urn:sha1:9bf1d800f2a24ed71221c64370c98ee8d907314b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>event lifecycle</title>
<updated>2026-06-09T14:52:47Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-09T06:00:56Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=97b10466d83d488ad2cb9e084159a445af74c845'/>
<id>urn:sha1:97b10466d83d488ad2cb9e084159a445af74c845</id>
<content type='text'>
</content>
</entry>
<entry>
<title>further libpanto public API name cleanup</title>
<updated>2026-06-08T03:56:57Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-08T03:56:51Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=75dedacfbeab1fea281d1bce124b920dcf878844'/>
<id>urn:sha1:75dedacfbeab1fea281d1bce124b920dcf878844</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Migrate panto CLI onto the public.zig surface</title>
<updated>2026-06-07T17:42:41Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-07T17:42:41Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=11818552dad254649af012df3b4277633943d2b6'/>
<id>urn:sha1:11818552dad254649af012df3b4277633943d2b6</id>
<content type='text'>
Move the CLI off the internal libpanto module namespaces onto the curated
public API: data-type aliases (Config family, Message/MessageRole/
effectiveSystemBlocks, Event, Pricing/PricingRegistry, the session seam,
FileSystemJSONLStore, ContentBlockType), process lifecycle (panto.init/
deinit), and ResultParts.fromText/fromTextOwned/deinit in place of the
freestanding textResult/ownedTextResult/freeResultParts.

The CLI remains on two flagged internal namespaces, panto.agent and
panto.conversation: it is a deep embedder that drives the loop below the
curated Agent/Conversation facades (system-prompt seeding through the
agent, compaction_system_prompt, the open_stream_fn test seam, standalone
Conversation values, compactAndPersist). These stay re-exported from
public.zig as a documented deep-embedder escape hatch; trimming the
transitional block removed every other internal re-export.
</content>
</entry>
<entry>
<title>image uploads</title>
<updated>2026-06-03T18:34:13Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-03T15:11:36Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=ac5c4898dfa0a9e57424336774893dfc72b132e9'/>
<id>urn:sha1:ac5c4898dfa0a9e57424336774893dfc72b132e9</id>
<content type='text'>
</content>
</entry>
<entry>
<title>lua /commands</title>
<updated>2026-06-03T04:09:31Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-03T01:41:56Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=442888c6c306cfff0708c3d4bbbeda685cec2e75'/>
<id>urn:sha1:442888c6c306cfff0708c3d4bbbeda685cec2e75</id>
<content type='text'>
</content>
</entry>
<entry>
<title>finish lua runtime makeover</title>
<updated>2026-05-27T12:26:36Z</updated>
<author>
<name>T</name>
<email>t@tjp.lol</email>
</author>
<published>2026-05-27T02:14:37Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=1f0915edbe0213e8bc134922f10933468d35a172'/>
<id>urn:sha1:1f0915edbe0213e8bc134922f10933468d35a172</id>
<content type='text'>
- new multi-tool registration via ToolSource
- thread per source-or-standalone-tool
- switched to zig 0.16 Io threading interface
- cli: include `luv` package and run concurrent lua tools via libuv
- one single long-lived lua_State for the whole cli program
</content>
</entry>
<entry>
<title>basic lua tools</title>
<updated>2026-05-26T17:14:57Z</updated>
<author>
<name>T</name>
<email>t@tjp.lol</email>
</author>
<published>2026-05-26T17:10:15Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=e65ea596306721d3a2327cf6230e7106db77a414'/>
<id>urn:sha1:e65ea596306721d3a2327cf6230e7106db77a414</id>
<content type='text'>
</content>
</entry>
</feed>
