When a reader asks the coder to read a conversation — a Claude Code or Codex session on this machine — the whole capability loop should carry it: the model finds the capability by describing it, the plugin loads under the approval ladder, its tool materializes, the call runs in the sandbox, and everything relevant shows in the interface as it happens — the capability search, the load, the call, and the conversation itself.
What exists: the capability tool with the digest-pinned catalog (#27), the walking-skeleton host and packet ABI (#26), and the foreign_sessions plugin — deliberately metadata-only: it lists sessions and never reads one back.
What this adds:
- A
read_conversation guest plugin (Rust, packet-v0, on the owned PDK): given a source (claude or codex) and a session id — or the newest session matching a working-directory filter — it reads the session's records through the read-only mounts and returns the conversation as ordered turns (role, text), bounded by turn and character ceilings, with totals so a truncated read says what it left out.
- A manifest whose description is written for the capability search: asking to "read a convo" or "read that conversation back" must match it.
- The loop proven end to end in
openagents coder: one natural-language request produces the capability call, the approval, the load notice, the tool call, and the transcript in the interface.
Bounds: read-only mounts on the two state directories, no hosts, no writes; output ceilings keep one call's packet bounded. The plugin never resumes or continues a session — reading is the whole capability.
When a reader asks the coder to read a conversation — a Claude Code or Codex session on this machine — the whole capability loop should carry it: the model finds the capability by describing it, the plugin loads under the approval ladder, its tool materializes, the call runs in the sandbox, and everything relevant shows in the interface as it happens — the capability search, the load, the call, and the conversation itself.
What exists: the capability tool with the digest-pinned catalog (#27), the walking-skeleton host and packet ABI (#26), and the foreign_sessions plugin — deliberately metadata-only: it lists sessions and never reads one back.
What this adds:
read_conversationguest plugin (Rust, packet-v0, on the owned PDK): given a source (claude or codex) and a session id — or the newest session matching a working-directory filter — it reads the session's records through the read-only mounts and returns the conversation as ordered turns (role, text), bounded by turn and character ceilings, with totals so a truncated read says what it left out.openagents coder: one natural-language request produces the capability call, the approval, the load notice, the tool call, and the transcript in the interface.Bounds: read-only mounts on the two state directories, no hosts, no writes; output ceilings keep one call's packet bounded. The plugin never resumes or continues a session — reading is the whole capability.