Use this page for internals, test loops, local demo generation, and extension points.
npm ci
cargo --versionThe repo supports a context pack for agent onboarding:
# Build/update local context pack
chorus agent-context build
# Install pre-push hook that syncs pack on main pushes when needed
chorus agent-context install-hooksThe active pack (.agent-context/current/) is tracked in git. Recovery snapshots (.agent-context/snapshots/) and build history are git-ignored and stay local.
scripts/
read_session.cjs # Node.js CLI implementation
adapters/ # Node.js agent adapters
codex.cjs
gemini.cjs
claude.cjs
cursor.cjs
registry.cjs
utils.cjs
conformance.sh # Cross-implementation parity tests
test_edge_cases.sh # Edge-case and error code tests
validate_schemas.sh # JSON schema validation
check_readme_examples.sh
cli/
src/
main.rs # Rust CLI entry point
agents.rs # Session parsing, redaction, error codes
report.rs # Compare and report logic
adapters/ # Rust agent adapters
mod.rs # AgentAdapter trait + registry
codex.rs
gemini.rs
claude.rs
cursor.rs
schemas/
handoff.schema.json # Handoff packet schema
read-output.schema.json # Read command output schema
list-output.schema.json # List command output schema
error.schema.json # Structured error output schema
fixtures/
session-store/ # Test session files per agent
golden/ # Canonical expected outputs for conformance
# Full Node-side check bundle
npm run check
# Rust unit tests
cargo test --manifest-path cli/Cargo.tomlEquivalent granular checks:
# Cross-implementation conformance (Node vs Rust parity)
bash scripts/conformance.sh
# Edge-case tests
bash scripts/test_edge_cases.sh
# JSON schema validation
bash scripts/validate_schemas.sh
# README command verification
bash scripts/check_readme_examples.sh
# npm package content verification
bash scripts/check_package_contents.shRequirements:
puppeteerinnode_modulesimg2webpon PATH (brew install webp)- Recorder defaults are tuned for README clarity (
1080x640, lossless WebP).
npm install --save-dev puppeteer
node scripts/record_demo.js --input fixtures/demo/player-status.html --output docs/demo-status.webp --duration-ms 21000
node scripts/record_demo.js --input fixtures/demo/player-handoff.html --output docs/demo-handoff.webp --duration-ms 20000
node scripts/record_demo.js --input fixtures/demo/player-setup.html --output docs/demo-setup.webp --duration-ms 20000
node scripts/record_demo.js --input fixtures/demo/player-agent-context.html --output docs/demo-agent-context.webp --duration-ms 20000
node scripts/record_demo.js --input fixtures/demo/player-trash-talk.html --output docs/demo-trash-talk.webp --duration-ms 17000
npm uninstall puppeteer- Rust: Create
cli/src/adapters/<agent>.rsimplementingAgentAdapter, register inmod.rs. - Node: Create
scripts/adapters/<agent>.cjsexportingresolve,read,list, register inregistry.cjs. - Add agent name to enums in
schemas/*.schema.json. - Add fixtures in
fixtures/session-store/<agent>/and golden files infixtures/golden/. - Add conformance and edge-case tests.
- Contribution process:
CONTRIBUTING.md - Protocol contract:
PROTOCOL.md - Context pack details:
AGENT_CONTEXT.md