<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pantograph.git/libpanto/src/provider.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-07T18:15:28Z</updated>
<entry>
<title>Move libpanto projects to libpantograph dependency</title>
<updated>2026-07-07T18:15:28Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-07-07T17:29:23Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=621d7fee0ace729f8d44126032d2c6e13f72ee7f'/>
<id>urn:sha1:621d7fee0ace729f8d44126032d2c6e13f72ee7f</id>
<content type='text'>
Remove the in-repo libpanto sources and binding projects from pantograph.
Consume libpantograph through the Zig package URL at
code.tjp.lol/libpantograph.git, including the Lua module artifact used by
CLI extensions.
</content>
</entry>
<entry>
<title>libpanto ponytail-audit simplifications</title>
<updated>2026-06-23T15:34:55Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-23T00:18:28Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=538a5d926fa626a00cc3dc12c555f11f82867efd'/>
<id>urn:sha1:538a5d926fa626a00cc3dc12c555f11f82867efd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add Codex Responses support and session debugging</title>
<updated>2026-06-15T21:08:32Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-14T05:45:59Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=02b4c7a35ac0b714bc045d54fb4bb45d1ce4e490'/>
<id>urn:sha1:02b4c7a35ac0b714bc045d54fb4bb45d1ce4e490</id>
<content type='text'>
Teach provider config and auth resolution about the Codex Responses
dialect, including user-facing `style = "openai_responses"` with
`dialect = "codex"`. Serialize and parse Responses traffic with
provider-specific reasoning replay, assistant phase metadata, and robust
function-call assembly keyed by `output_index` so streamed tool inputs
survive proxy quirks and empty terminal payloads.

Also persist thinking origins and message metadata across sessions, add
the Anthropic interleaved-thinking header switch, write per-session
debug logs, and improve the TUI and scripts for inspecting tool output
and session costs.
</content>
</entry>
<entry>
<title>auth: openai_responses provider for Codex subscription (Tier 2)</title>
<updated>2026-06-15T21:08:32Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-13T18:22:18Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=eb19fd812e15de5a6930daf2fcd0b2b0757687c7'/>
<id>urn:sha1:eb19fd812e15de5a6930daf2fcd0b2b0757687c7</id>
<content type='text'>
Add the OpenAI Responses API wire dialect (openai_responses APIStyle +
OpenAIResponsesConfig), a request serializer (instructions/input items,
flat function tools, reasoning, store:false, include encrypted reasoning),
and a streaming state machine over the typed response.* SSE events mapping
to the shared block model. Wire dispatch, buildProviderConfig, the C-ABI
free switch, and the reasoning selectors. Ship a commented Codex example in
the default config.

Implemented from the Responses API docs + the open-source Codex client and
covered by fixture tests; live verification against a ChatGPT plan is still
required (documented).
</content>
</entry>
<entry>
<title>auth: thread provider extra_headers into request headers (C6)</title>
<updated>2026-06-15T21:08:32Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-13T17:52:00Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=9308feabc045a3afd7eeb304a2324d17d03246df'/>
<id>urn:sha1:9308feabc045a3afd7eeb304a2324d17d03246df</id>
<content type='text'>
Add provider.mergeHeaders and use it in both the openai_chat and
anthropic_messages providers so config extra_headers ride on the model
request, merged onto the built-in header set.
</content>
</entry>
<entry>
<title>improve errors: retries, surfacing provider errors to the user</title>
<updated>2026-06-12T22:04:37Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-12T20:49:51Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=ef4647f1d324cff43bb444ef4df6c253faed0d52'/>
<id>urn:sha1:ef4647f1d324cff43bb444ef4df6c253faed0d52</id>
<content type='text'>
</content>
</entry>
<entry>
<title>R1: move tool registry off Config onto Agent</title>
<updated>2026-06-07T16:57:49Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-07T16:57:49Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=d36a51358efbc48de3d5b732727455efc60acae1'/>
<id>urn:sha1:d36a51358efbc48de3d5b732727455efc60acae1</id>
<content type='text'>
The tool set is no longer part of the per-turn Config snapshot. Agent now
owns a ToolRegistry (created empty at init), populated via the new
Agent.registerTool / registerToolSource methods. openStream and
OpenStreamFn take the registry as an explicit parameter rather than reading
it from cfg.registry, so swapping provider/model between turns (setConfig)
no longer disturbs the tool set.

CLI migrated to register the Lua tool source onto the agent instead of a
locally-owned registry. Test harnesses updated to stage tools on the agent.
</content>
</entry>
<entry>
<title>refactor: Agent.run() -&gt; Stream -&gt; Stream.next() -&gt; Event</title>
<updated>2026-06-05T20:50:42Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-05T19:55:20Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=73645129a9de90f867908d35e77c9252bae4e534'/>
<id>urn:sha1:73645129a9de90f867908d35e77c9252bae4e534</id>
<content type='text'>
converted the main agent loop from push-based (into callbacks on a
Receiver vtable) to pull-based, where `next()` re-enters a state-machine
Stream until the next event can be returned.
</content>
</entry>
<entry>
<title>failure retries scheme</title>
<updated>2026-06-04T18:09:09Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-04T15:46:49Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=3f1ace16afc7877b0bfad374cb286d4d84140960'/>
<id>urn:sha1:3f1ace16afc7877b0bfad374cb286d4d84140960</id>
<content type='text'>
</content>
</entry>
<entry>
<title>compaction</title>
<updated>2026-06-02T22:37:32Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-02T21:00:44Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=8b88b886346460b1ab29edb03ad85bc3bb565a45'/>
<id>urn:sha1:8b88b886346460b1ab29edb03ad85bc3bb565a45</id>
<content type='text'>
</content>
</entry>
</feed>
