github AgentWorkforce/burn reader-v0.22.0
@relayburn/reader@0.22.0

latest releases: analyze-v0.29.0, mcp-v0.29.0, ledger-v0.29.0...
12 hours ago

[0.22.0] - 2026-04-26

Added

  • Claude parser emits fork and continuation SessionRelationshipRecord rows (#112). Closes the deferred-work item from #77/#42: the Claude passive reader now populates the full RelationshipType lattice instead of only root / subagent. Per-file evidence — in-log sessionId mismatches against the on-disk filename, the first user line's parentUuid, the first non-empty version field, all in-file uuids, and /resume / /continue slash-command markers — is collected during the existing parse pass and surfaced as a new evidence: ClaudeRelationshipEvidence field on ParseResult / ParseIncrementalResult. A /resume marker emits a local continuation row with relatedSessionId set to the resumed-from id; a new exported reconcileClaudeSessionRelationships(inputs) helper takes per-file evidence from a multi-file pass and emits the cross-file fork / continuation rows that single-file parsers can't surface. Existing root / subagent rows are stamped with sourceSessionId (foreign in-log id) and sourceVersion whenever the file carries them. Reconciliation strategy is append, not mutate: a prior root row and a later continuation / fork row for the same session id produce different relationshipIdHash values, so both rows coexist on disk and consumers prefer the more specific row when both are present. Re-ingesting a session is idempotent — the writer's existing dedup folds duplicates. New ParseOptions.fileSessionId lets callers pin the canonical session id explicitly; when omitted but sessionPath is set, the parser derives it from the .jsonl basename.
  • Codex parser populates TurnRecord.fidelity (#84). parseCodexSession and parseCodexSessionIncremental now stamp fidelity on every emitted turn at granularity: 'per-turn', mirroring the Claude parser. Coverage flags follow the rollout source: hasInputTokens / hasOutputTokens / hasReasoningTokens / hasCacheReadTokens flip to true only when a token_count event with total_token_usage arrived between task_started and task_complete; turns whose source omitted token counts now report class: 'partial' (the numeric usage fields still default to 0, but the coverage flag is the honest signal). hasToolCalls / hasToolResultEvents / hasRawContent are capability flags — true even on tool-less turns. hasCacheCreateTokens and hasSessionRelationships stay false (Codex rollouts have no cache-create or parent-tracking concept yet — the latter waits on #42 / #63). Closes the unknown === 0 requirement from #41 for Codex sessions.
  • OpenCode parser populates TurnRecord.fidelity (#89, follow-up to #41 / #76). parseOpencodeSession and parseOpencodeSessionIncremental now stamp fidelity on every emitted turn at granularity: 'per-turn'. Usage coverage flags (hasInputTokens, hasOutputTokens, hasReasoningTokens, hasCacheReadTokens, hasCacheCreateTokens) reflect presence on the upstream tokens block — folded across both the assistant message and any step-finish parts that carry tokens — so a turn that never received cache fields reports hasCacheReadTokens: false instead of silently rendering cacheRead === 0. Capability flags (hasToolCalls, hasToolResultEvents, hasSessionRelationships, hasRawContent) are always true. Closes the "0 vs unknown" ambiguity for OpenCode in summarizeFidelity and hasMinimumFidelity.

Don't miss a new burn release

NewReleases is sending notifications on new releases.