← All @molecule/* packages · App templates
@molecule/api-agent-transcript-codexProvider bond · agent-transcript · API (Node) · v1.0.0 · Apache-2.0
Reads Codex CLI sessions — the Markdown export and the rollout .jsonl — into a normalized agent session
npm install @molecule/api-agent-transcript-codexnpm · Source on GitHub · Implements @molecule/api-agent-transcript
@molecule/api-agent-transcript-codex is a provider bond on the API (Node) side: it implements the agent-transcript core interface (@molecule/api-agent-transcript) with a concrete vendor or library behind it.
Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.
import { readFileSync } from 'node:fs'
import { readTranscript, setProvider } from '@molecule/api-agent-transcript'
import { provider } from '@molecule/api-agent-transcript-codex'
setProvider(provider)
const session = readTranscript({
text: readFileSync('codex-session.md', 'utf8'),
fileName: 'codex-session.md',
})Works with: @molecule/api-agent-transcript
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Codex CLI transcript reader for @molecule/api-agent-transcript.
Reads both forms of a Codex CLI session into a normalized AgentSession:
the rollout log Codex keeps at ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl
(per-turn model, timestamps, and every file its apply_patch wrote), and
the Markdown file its /export → "Save to file" writes (# Codex conversation, then ## User / ## Assistant / ## Activity sections).
import { readFileSync } from 'node:fs'
import { readTranscript, setProvider } from '@molecule/api-agent-transcript'
import { provider } from '@molecule/api-agent-transcript-codex'
setProvider(provider)
const session = readTranscript({
text: readFileSync('codex-session.md', 'utf8'),
fileName: 'codex-session.md',
})
provider
npm install @molecule/api-agent-transcript-codex @molecule/api-agent-transcript
findPatches(input)Every patch in a tool call's input, whether the input is the raw patch, a JSON arguments object, or source code that passes the patch as a string.
function findPatches(input: string): string[]
input — The tool call's input or arguments string.Returns: The patch texts, in order.
looksLikeMarkdownExport(text)Whether a text is a Codex Markdown export.
function looksLikeMarkdownExport(text: string): boolean
text — The file's text.Returns: True when it opens with the export's title and has a role section.
looksLikeRollout(text)Whether a text is a Codex rollout.
function looksLikeRollout(text: string): boolean
text — The file's text.Returns: True when its first JSON line is a session_meta record.
readMarkdownExport(text)Read a Codex Markdown export.
function readMarkdownExport(text: string): AgentSession
text — The export's text.Returns: The normalized session.
readRollout(text)Read a Codex rollout.
function readRollout(text: string): AgentSession
text — The .jsonl text.Returns: The normalized session.
writesOfPatch(patch)The files a patch writes: an added file's whole text, an updated file's added lines.
function writesOfPatch(patch: string): AgentFileWrite[]
patch — One *** Begin Patch … *** End Patch block.Returns: The writes.
providerReads Codex CLI sessions: the rollout log (.jsonl) and the Markdown export.
const provider: AgentTranscriptReader
Implements @molecule/api-agent-transcript interface.
Setup function to register this provider with the core interface:
import { setProvider } from '@molecule/api-agent-transcript'
import { provider } from '@molecule/api-agent-transcript-codex'
export function setupAgentTranscriptCodex(): void {
setProvider(provider)
}
Peer dependencies:
@molecule/api-agent-transcript ^1.0.0@molecule/api-agent-transcript
The Markdown export names no model and no times; the rollout does
(turn_context.model, per-line timestamps). Use the rollout when a
per-paragraph model matters.
Only the section headers ## User, ## Assistant and ## Activity split
the export; the assistant's own ## headings stay part of its reply.
Dropped from user turns: the context Codex injects as whole-tag blocks
(<environment_context>, <user_instructions> …) and developer messages.
Files: an Add (export) / *** Add File (patch) is the whole file; an
Update contributes the lines it added. Patches are found wherever the
call carries them — a raw apply_patch input, JSON arguments, or the
string passed to tools.apply_patch(...) in code mode.
Verified against Codex CLI 0.156.1's own files.