
Security News
Deno Goes the Way of the Dinosaur
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.
@tangle-network/harness-sessions
Advanced tools
One reader for every coding-agent harness's native session (Claude Code, Codex, OpenCode, Pi): store layouts, a normalized session with messages, tool calls, served models, usage and ending errors, and projections to chat messages, OTLP spans and turns
One reader for every coding-agent harness's native session.
Each harness persists its session in its own store: Claude Code and Pi append JSONL, Codex appends a rollout JSONL, and OpenCode writes SQLite.
This package declares each store's layout once and parses each format into one normalized HarnessSession.
The session holds the messages, the tool calls with their inputs and results, every model call with the model that served it and its usage, and the error the session ended with.
npm install @tangle-network/harness-sessions
packages/cli-agent-registry) imports STORES and SessionFormatId from here; it keeps no second copy of where a harness writes.listCapture / readCapture.@tangle-network/agent-trace-contract and Node built-ins (node:sqlite for OpenCode).| Harness | Format | Store under HOME | Served model from | Usage |
|---|---|---|---|---|
claude-code | claude-code.projects-jsonl | .claude/projects/*/{id}.jsonl, subagents at */{id}/subagents/**/*.jsonl | provider response (message.model) | per response, counted once per message.id |
codex | codex.rollout-jsonl | .codex/sessions/*/*/*/rollout-*-{id}.jsonl | turn context (the configured model) | per response (last_token_usage); session total from total_token_usage |
opencode | opencode.sqlite | .local/share/opencode/opencode.db (shared by every session) | session record (providerID/modelID) | per step (step-finish) |
pi | pi.session-jsonl | .pi/agent/sessions/**/*_{id}.jsonl | session record (provider/model) | per assistant message |
Readers for Kimi, Factory, Gemini, Amp, Qwen, Copilot, Forge, Hermes, Prime and OpenClaw are added with the same real-data proof.
import { readerFor, listCapture, toChatMessages, toOtlpSpans, toTurns } from '@tangle-network/harness-sessions'
// Sessions in a HOME, through the harness's declared store
const reader = readerFor('pi')
for (const ref of await reader.locate('/home/agent')) {
const summary = await reader.summarize(ref) // constant memory; a 537 MB rollout reads in ~200 MB RSS
const session = await reader.read(ref) // full fidelity: nothing is truncated
}
// Sessions in a capture (provider retention layout today, raw-evidence archive v2 when given)
const { sessions, missing } = await listCapture(captureDir)
Projections trim; the reader never does:
toChatMessages(session): agent-eval's chat-with-tools messages.toOtlpSpans(session): contract spans (@tangle-network/agent-trace-contract), one LLM span per model call and one TOOL span per tool call.toTurns(session): the blog's turns, with the model, usage and error of each assistant turn.For callers that are not JavaScript:
harness-sessions read <file|home|capture> [--harness h] [--session id] [--summary] [--json]
requestedModel says which model it was sent to.usage is null when the harness recorded none; it is never reported as zero. input excludes cache reads and cache writes, which have their own fields.integrity.unparsedRecords and never stops a read (corruption: 'strict' throws instead). A record cut off at the end of a live copy is reported as a torn tail, not as corruption.ending.status is completed, error, aborted or open. open means the records stop mid-turn: the turn was still running or the process died.The fixtures are sessions that the real harness CLIs wrote while talking to the trace-proof scripted model; the tests assert that script. The proof against the readers this package replaces is a comparison over stored sessions, recorded with each release.
FAQs
One reader for every coding-agent harness's native session (Claude Code, Codex, OpenCode, Pi): store layouts, a normalized session with messages, tool calls, served models, usage and ending errors, and projections to chat messages, OTLP spans and turns
The npm package @tangle-network/harness-sessions receives a total of 1,487 weekly downloads. As such, @tangle-network/harness-sessions popularity was classified as popular.
We found that @tangle-network/harness-sessions demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
Cloudflare is acquiring Deno’s team, which will provide another year of bug fixes and security updates before ending support for the runtime.

Security News
Anthropic’s free OSS Scanner uses Mythos and other Claude models to find open source vulnerabilities and send maintainers reports with proposed fixes.

Security News
On Front Lines’ Early Adopters: CISO podcast, Andrew Becherer shares lessons from Datadog, weighs the long-term costs of AI-built tools, and explains how founders can actually gain a CISO’s trust.