@frixaco/shair
v1.2.2
Published
Convert local AI agent session exports into a unified JSON schema.
Maintainers
Readme
@frixaco/shair
Convert local AI agent sessions into one unified JSON shape.
Supported sources:
claudecodexfactoryopencodepi
What it does
- exports all detected local sessions for a provider into a shared block-based schema
- validates every converted session against the unified schema
- supports both CLI usage and a small library API
- keeps provider-specific raw details in metadata for fidelity
The schema is documented in UNIFIED_SESSION_SHAPE.md.
CLI
Published usage:
npx @frixaco/shair claude
bunx @frixaco/shair codexLocal development usage:
pnpm export-session claude
pnpm export-session codexExport all sessions for one provider:
npx @frixaco/shair codex
npx @frixaco/shair claude
npx @frixaco/shair opencode
npx @frixaco/shair pi
npx @frixaco/shair factoryExport one session by its provider and session ID:
npx @frixaco/shair codex 019f9f8e-2583-7772-aa27-b0842aec620bDefault behavior:
- reads from the provider's real local session storage first:
codex:~/.codex/{sessions,archived_sessions}and~/.codex-local/...claude:~/.claude/projects,~/.claude-code/projects,~/.claude-local/projectsfactory:~/.factory/sessionsopencode:~/.local/share/opencode/opencode.dband~/Library/Application Support/opencode/opencode.dbwhen presentpi:~/.pi/agent/sessions
- falls back to
data/<source>/for file-backed providers when no runtime sessions are found - writes normalized output to
exported/<source>/<session-id>.jsonunder the current project/workspace root
Useful options:
npx @frixaco/shair codex --input tests/fixtures/codex/source.jsonl --pretty
npx @frixaco/shair factory --out-dir ./tmp/factory-exports
npx @frixaco/shair claude --fail-fastOpenCode can also target a specific database file or install directory:
npx @frixaco/shair opencode --input ~/.local/share/opencode/opencode.db
npx @frixaco/shair opencode --input ~/.local/share/opencodeHelp:
npx @frixaco/shair --helpLibrary API
import { convertSessionFile, convertSessionText } from "@frixaco/shair";
const session = convertSessionFile("codex", "path/to/session.jsonl");Main exports:
convertSessionFileconvertSessionTextgetConvertervalidateUnifiedSessionassertUnifiedSession
Development
Build:
pnpm buildRun the full verification suite:
pnpm checkPublish smoke test:
pnpm pack
tmpdir="$(mktemp -d)"
cd "$tmpdir"
npm init -y
npm install /path/to/frixaco-shair-1.2.2.tgz
npx @frixaco/shair --helpRepo Notes
data/contains local source sessions used for sampling and audit workexported/contains generated normalized outputref/is prior art only, not the active implementation
