<feed xmlns='http://www.w3.org/2005/Atom'>
<title>pantograph.git/libpanto/src/config.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>anthropic credentials in oauth providers (eg copilot)</title>
<updated>2026-06-15T23:18:20Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-15T23:08:00Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=9f8719929dbd1326d9b327885c4da319c6d2673c'/>
<id>urn:sha1:9f8719929dbd1326d9b327885c4da319c6d2673c</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: clean-break named [auth.&lt;name&gt;] sessions + extra_headers</title>
<updated>2026-06-15T21:08:32Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-13T17:50:00Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=deb4ce4a1a76869771bfcdd758455c49815f0d13'/>
<id>urn:sha1:deb4ce4a1a76869771bfcdd758455c49815f0d13</id>
<content type='text'>
Replace provider-level api_key/api_key_env_var with named auth sessions:
providers now reference `auth = "&lt;name&gt;"` and credentials live under
`[auth.&lt;name&gt;]`. Adds the libpanto auth type surface (AuthConfig, TokenSet,
ResolvedCredential), a Header type and provider `extra_headers`, and rewires
the CLI config loader (parse [auth.&lt;name&gt;], require auth=, providers always
survive, eager api_key resolution). Updates the shipped default config.
</content>
</entry>
<entry>
<title>anthropic prompt caching</title>
<updated>2026-06-12T20:27:18Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-12T19:57:26Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=ecadcfa7a1e549d6ddb8611bdf44cac852064cea'/>
<id>urn:sha1:ecadcfa7a1e549d6ddb8611bdf44cac852064cea</id>
<content type='text'>
</content>
</entry>
<entry>
<title>fix anthropic thinking effort json placement</title>
<updated>2026-06-10T22:46:48Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-10T22:46:30Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=b435cf06b78853bec87bf238f526bc60679d7712'/>
<id>urn:sha1:b435cf06b78853bec87bf238f526bc60679d7712</id>
<content type='text'>
</content>
</entry>
<entry>
<title>anthropic thinking</title>
<updated>2026-06-09T17:56:35Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-09T17:56:15Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=a7fe265365ba5e8bfbd0e65c827d38c038be7b0f'/>
<id>urn:sha1:a7fe265365ba5e8bfbd0e65c827d38c038be7b0f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Plug the deep-embedder holes; remove public.zig escape hatch</title>
<updated>2026-06-07T20:49:20Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-07T20:49:20Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=1eddee33902757f7e06993825a3ad1011e7ec346'/>
<id>urn:sha1:1eddee33902757f7e06993825a3ad1011e7ec346</id>
<content type='text'>
Close the gap that forced the CLI to import internal libpanto namespaces,
then delete the transitional re-exports. The CLI now uses only the curated
public surface.

Additions to the public Agent facade:
- init/deinit (heap-pin the inner; the handle is a copyable value).
- addSystemMessage (.append) and setSystemPrompt (.replace).
- compact(override_system_prompt, extra) falling back to the config prompt.
- sessionId() accessor.

CompactionConfig gains compaction_prompt, which owns the compaction system
prompt for both auto-compaction and the explicit compact() default; the
Agent.compaction_system_prompt field is deleted. ConversationData is the
public name for the owned conversation value type (Session.load returns it,
Agent.init adopts it), distinct from the borrowed Conversation handle.

Agent.addSystemMessage/setSystemPrompt are kept on Agent (they persist with
the SystemMode) rather than dropped as the plan first proposed.
</content>
</entry>
<entry>
<title>R2: redesign session store with wire-format identity</title>
<updated>2026-06-07T17:35:49Z</updated>
<author>
<name>t</name>
<email>t@tjp.lol</email>
</author>
<published>2026-06-07T17:35:49Z</published>
<link rel='alternate' type='text/html' href='https://code.tjp.lol/pantograph.git/commit/?id=b14859b9726185ab873356390068e887b7f486d3'/>
<id>urn:sha1:b14859b9726185ab873356390068e887b7f486d3</id>
<content type='text'>
Replace the single-session SessionManager seam with a directory-backed
catalog. session_manager.zig -&gt; file_system_jsonl_store.zig; the old
machinery becomes internal SessionFile, and a new FileSystemJSONLStore
implements the redesigned SessionStore vtable (create/list/resolve/latest/
load/appendMessages) minting Session/SessionInfo handles.

Session logs now record wire-format provider identity
({api_style, base_url, model, reasoning}) instead of a single provider
string or CLI aliases; no api_key material is ever stored. Disk* content
types renamed Stored*; the rich audit-oriented write record is
PersistentMessage (in-memory Message + WireIdentity + provenance).

Agent.init now takes a Session; persist_provider/persist_model display
strings deleted (banner stays alias-based, resume picks default model).
Message.metadata round-trips. Dangling-prompt recovery dropped. CLI
migrated to the catalog store for run/resume/list. Clean break, no version
bump (old logs wiped).
</content>
</entry>
</feed>
