txcript 0.1.0

A typed intermediate representation for converting AI coding-agent session transcripts between harness formats (Claude Code, Codex, OpenCode, pi).
Documentation
[package]
name = "txcript"
version = "0.1.0"
edition = "2024"
description = "A typed intermediate representation for converting AI coding-agent session transcripts between harness formats (Claude Code, Codex, OpenCode, pi)."
license = "Apache-2.0"
repository = "https://github.com/skillsynchq/txcript"
readme = "README.md"
keywords = ["transcript", "claude", "codex", "agent", "wasm"]
categories = ["command-line-utilities", "wasm"]

[dependencies]
chrono = { version = "0.4.45", features = ["serde"] }
rusqlite = { version = "0.40.1", features = ["bundled"], optional = true }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
thiserror = "2.0.18"
uuid = { version = "1.23.4", features = ["v4", "v5"] }
wasm-bindgen = { version = "0.2.126", optional = true }

[dev-dependencies]
tempfile = "3.27.0"

# cdylib for the WASM/C-ABI output; rlib so the bin and tests still link it.
# Library name follows the package: `use txcript::…`, WASM artifact `txcript.wasm`.
[lib]
name = "txcript"
crate-type = ["cdylib", "rlib"]

[[bin]]
name = "txcript"
path = "src/bin/cli.rs"

[features]
default = ["opencode"]
# The OpenCode harness store reads OpenCode's SQLite database. The OpenCode
# codec itself is always available; only the on-disk store needs rusqlite.
opencode = ["dep:rusqlite"]
# WASM bindings (wasm32-unknown-unknown). uuid/js gives getrandom a JS backend
# for the rare empty-id fallback; build with --no-default-features so rusqlite
# (native SQLite) is excluded.
wasm = ["dep:wasm-bindgen", "uuid/js"]

[lints.clippy]
pedantic = { level = "warn", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"