cc-transcript 14.34.0__tar.gz → 14.36.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/Cargo.lock +1 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/PKG-INFO +1 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/config.schema.json +1 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/pyproject.toml +1 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/Cargo.toml +1 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/lower.rs +120 -9
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/parse.rs +13 -3
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/types.rs +3 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/lib.rs +3 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/parse.rs +742 -39
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/render.rs +1 -1
- cc_transcript-14.36.0/rust/crates/core/src/scan_checkpoint.rs +606 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_grep.rs +68 -28
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_grep_stream.rs +359 -81
- cc_transcript-14.36.0/rust/crates/core/src/scan_grep_stream_tests.rs +3145 -0
- cc_transcript-14.36.0/rust/crates/core/src/scan_index.rs +937 -0
- cc_transcript-14.36.0/rust/crates/core/src/scan_projection.rs +223 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot.rs +6736 -2200
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_activity.rs +601 -23
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_codec.rs +114 -12
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_codex_append.rs +15 -9
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_labels.rs +151 -7
- cc_transcript-14.36.0/rust/crates/core/src/snapshot_ledger.rs +1286 -0
- cc_transcript-14.36.0/rust/crates/core/src/snapshot_ledger_tests.rs +13315 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_memory.rs +112 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_owned.rs +96 -18
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared.rs +1 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared_disk.rs +361 -60
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared_service.rs +1076 -528
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_projection.rs +153 -34
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_root_warm.rs +14 -15
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/toolcall.rs +33 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/types.rs +25 -10
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/value.rs +17 -4
- cc_transcript-14.36.0/rust/crates/core/tests/sonic_arena_model.rs +242 -0
- cc_transcript-14.36.0/rust/crates/core/tests/std_allocation_model.rs +165 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/python.rs +2 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/render.rs +3 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/snapshot_decode.rs +7 -5
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/blocks.rs +41 -2
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/events.rs +2 -1
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/store.rs +4 -3
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/toolcall.rs +20 -7
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/transcript.rs +4 -4
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/watch.rs +2 -1
- cc_transcript-14.34.0/rust/crates/core/src/scan_checkpoint.rs +0 -371
- cc_transcript-14.34.0/rust/crates/core/src/scan_grep_stream_tests.rs +0 -1616
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/Cargo.toml +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/LICENSE +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/README.md +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/command.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/context.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/extract/correct.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/models.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/query.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/render.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/context.schema.json +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/request.schema.json +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/response.schema.json +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshots.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/Cargo.toml +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/corpus.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/lib.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/main.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/command.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_regressions.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_stream.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_regressions.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_text.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/snapshots.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.34.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/toolresult.rs +0 -0
{cc_transcript-14.34.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/config.schema.json
RENAMED
|
@@ -81,6 +81,7 @@
|
|
|
81
81
|
},
|
|
82
82
|
"max_retained_bytes": {
|
|
83
83
|
"default": 1073741824,
|
|
84
|
+
"description": "Hard cap on retained accounted bytes. It must be at least the store's startup footprint (the pre-sized delivery and expired-query tables plus the default tool registries); a smaller value is rejected as an invalid configuration. Background admissions are capped at max_retained_bytes - reserved_hook_accounted_bytes, so a footprint above that difference refuses every background admission while foreground hook admissions proceed.",
|
|
84
85
|
"exclusiveMinimum": 0,
|
|
85
86
|
"maximum": 9007199254740991,
|
|
86
87
|
"title": "Max Retained Bytes",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.
|
|
3
|
+
version = "14.36.0" # informational — releases stamp the version from the git tag
|
|
4
4
|
description = "Grep every Claude Code session you've ever run."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "PolyForm-Noncommercial-1.0.0"
|
|
@@ -15,6 +15,7 @@ chrono = { version = "0.4", default-features = false, features = ["std", "serde"
|
|
|
15
15
|
memchr = "2.7"
|
|
16
16
|
once_cell = "1"
|
|
17
17
|
regex = "1"
|
|
18
|
+
regex-syntax = "0.8"
|
|
18
19
|
# Gated behind `command`: a real bash AST (rable) backs the command parser. The Swift/CI build
|
|
19
20
|
# takes core with default-features off, so this stays out of the python-free path.
|
|
20
21
|
rable = { version = "0.2.1", optional = true }
|
|
@@ -9,6 +9,7 @@ use crate::codex::types::{
|
|
|
9
9
|
CodexEntry, CodexItem, CodexSession, EventMsg, ResponseItem, ResponseItemPayload,
|
|
10
10
|
};
|
|
11
11
|
use crate::pystr;
|
|
12
|
+
use crate::snapshot_memory::{pins_arena, SourceArena};
|
|
12
13
|
use crate::types::{
|
|
13
14
|
AssistantEntry, ContentBlock, Entry, EntryMeta, OtherEntry, ToolResultBlock, ToolUseBlock,
|
|
14
15
|
UserContent, UserEntry,
|
|
@@ -547,15 +548,17 @@ fn payload_tag(payload: &ResponseItemPayload) -> &str {
|
|
|
547
548
|
}
|
|
548
549
|
|
|
549
550
|
fn payload_raw(payload: &ResponseItemPayload) -> Value {
|
|
551
|
+
payload_dom(payload).cloned().unwrap_or_default()
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
fn payload_dom(payload: &ResponseItemPayload) -> Option<&Value> {
|
|
550
555
|
use ResponseItemPayload as R;
|
|
551
556
|
match payload {
|
|
552
|
-
R::ToolSearchCall { arguments, .. } => arguments
|
|
553
|
-
R::LocalShellCall { action, .. } | R::WebSearchCall { action, .. } =>
|
|
554
|
-
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
R::Other { raw, .. } => raw.clone(),
|
|
558
|
-
_ => Value::default(),
|
|
557
|
+
R::ToolSearchCall { arguments, .. } => Some(arguments),
|
|
558
|
+
R::LocalShellCall { action, .. } | R::WebSearchCall { action, .. } => action.as_ref(),
|
|
559
|
+
R::GhostSnapshot(v) => Some(v),
|
|
560
|
+
R::Other { raw, .. } => Some(raw),
|
|
561
|
+
_ => None,
|
|
559
562
|
}
|
|
560
563
|
}
|
|
561
564
|
|
|
@@ -592,6 +595,10 @@ fn event_tag(em: &EventMsg) -> &str {
|
|
|
592
595
|
}
|
|
593
596
|
|
|
594
597
|
fn event_raw(em: &EventMsg) -> Value {
|
|
598
|
+
event_dom(em).cloned().unwrap_or_default()
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
fn event_dom(em: &EventMsg) -> Option<&Value> {
|
|
595
602
|
use EventMsg as E;
|
|
596
603
|
match em {
|
|
597
604
|
E::ExecCommandEnd(v)
|
|
@@ -607,11 +614,75 @@ fn event_raw(em: &EventMsg) -> Value {
|
|
|
607
614
|
| E::CollabAgentSpawnEnd(v)
|
|
608
615
|
| E::CollabWaitingEnd(v)
|
|
609
616
|
| E::CollabCloseEnd(v)
|
|
610
|
-
| E::Other { raw: v, .. } => v
|
|
611
|
-
_ =>
|
|
617
|
+
| E::Other { raw: v, .. } => Some(v),
|
|
618
|
+
_ => None,
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
pub(crate) fn line_dom(item: &CodexItem) -> Option<&Value> {
|
|
623
|
+
use ResponseItemPayload as R;
|
|
624
|
+
match item {
|
|
625
|
+
CodexItem::SessionMeta(m) => Some(&m.raw),
|
|
626
|
+
CodexItem::TurnContext(v) => Some(v),
|
|
627
|
+
CodexItem::WorldState(w) => Some(&w.state),
|
|
628
|
+
CodexItem::ResponseItem(ri) => match &ri.payload {
|
|
629
|
+
R::FunctionCallOutput { output, .. } | R::CustomToolCallOutput { output, .. } => {
|
|
630
|
+
Some(output)
|
|
631
|
+
}
|
|
632
|
+
payload => payload_dom(payload),
|
|
633
|
+
},
|
|
634
|
+
CodexItem::EventMsg(em) => event_dom(em),
|
|
635
|
+
CodexItem::Compacted(_)
|
|
636
|
+
| CodexItem::InterAgentCommunicationMetadata { .. }
|
|
637
|
+
| CodexItem::Other(_) => None,
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
fn retains_line(entry: &Entry) -> bool {
|
|
642
|
+
match entry {
|
|
643
|
+
Entry::Other(other) => pins_arena(&other.raw),
|
|
644
|
+
_ => entry
|
|
645
|
+
.tool_results()
|
|
646
|
+
.any(|result| result.tool_use_result.as_ref().is_some_and(pins_arena)),
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
fn lowered_arenas(source: &CodexEntry, entry: &Entry) -> Vec<SourceArena> {
|
|
651
|
+
match (&source.item, entry) {
|
|
652
|
+
(CodexItem::Other(other), Entry::Other(lowered)) => pins_arena(&lowered.raw)
|
|
653
|
+
.then(|| SourceArena {
|
|
654
|
+
root: lowered.raw.clone(),
|
|
655
|
+
source_len: other.raw.len(),
|
|
656
|
+
})
|
|
657
|
+
.into_iter()
|
|
658
|
+
.collect(),
|
|
659
|
+
_ => source
|
|
660
|
+
.source
|
|
661
|
+
.iter()
|
|
662
|
+
.filter(|_| retains_line(entry))
|
|
663
|
+
.cloned()
|
|
664
|
+
.collect(),
|
|
612
665
|
}
|
|
613
666
|
}
|
|
614
667
|
|
|
668
|
+
pub(crate) fn session_arenas(
|
|
669
|
+
session: &CodexSession,
|
|
670
|
+
entries: &[Entry],
|
|
671
|
+
) -> Vec<(usize, SourceArena)> {
|
|
672
|
+
assert_eq!(session.entries.len(), entries.len());
|
|
673
|
+
session
|
|
674
|
+
.entries
|
|
675
|
+
.iter()
|
|
676
|
+
.zip(entries)
|
|
677
|
+
.enumerate()
|
|
678
|
+
.flat_map(|(index, (source, entry))| {
|
|
679
|
+
lowered_arenas(source, entry)
|
|
680
|
+
.into_iter()
|
|
681
|
+
.map(move |arena| (index, arena))
|
|
682
|
+
})
|
|
683
|
+
.collect()
|
|
684
|
+
}
|
|
685
|
+
|
|
615
686
|
#[cfg(test)]
|
|
616
687
|
mod tests {
|
|
617
688
|
use std::collections::HashSet;
|
|
@@ -1339,4 +1410,44 @@ mod tests {
|
|
|
1339
1410
|
"050b lifted turns must expose the interrupted user entry"
|
|
1340
1411
|
);
|
|
1341
1412
|
}
|
|
1413
|
+
|
|
1414
|
+
#[test]
|
|
1415
|
+
fn lowered_entries_record_the_arenas_they_keep() {
|
|
1416
|
+
let lines = [
|
|
1417
|
+
r#"{"timestamp":"2026-07-19T00:00:00Z","type":"response_item","payload":{"type":"function_call_output","call_id":"c","output":{"stdout":"x"}}}"#,
|
|
1418
|
+
r#"{"timestamp":"2026-07-19T00:00:01Z","type":"response_item","payload":{"type":"function_call","call_id":"c","name":"exec","arguments":"{}"}}"#,
|
|
1419
|
+
r#"{"timestamp":"2026-07-19T00:00:02Z","type":"event_msg","payload":{"type":"task_started","turn_id":"t"}}"#,
|
|
1420
|
+
r#"{"timestamp":"2026-07-19T00:00:03Z","type":"turn_context","payload":{"cwd":"/w","model":"m"}}"#,
|
|
1421
|
+
r#"{"timestamp":"2026-07-19T00:00:04Z","type":"mystery","payload":{"k":1}}"#,
|
|
1422
|
+
r#"{"timestamp":"2026-07-19T00:00:05Z","type":"response_item","payload":{"type":"function_call_output","call_id":"d","output":"plain"}}"#,
|
|
1423
|
+
];
|
|
1424
|
+
let session = parse_codex_bytes(lines.join("\n").as_bytes());
|
|
1425
|
+
let entries = lower(&session).entries;
|
|
1426
|
+
assert_eq!(
|
|
1427
|
+
session
|
|
1428
|
+
.entries
|
|
1429
|
+
.iter()
|
|
1430
|
+
.map(|entry| entry.source.as_ref().map(|source| source.source_len))
|
|
1431
|
+
.collect::<Vec<_>>(),
|
|
1432
|
+
[
|
|
1433
|
+
Some(lines[0].len()),
|
|
1434
|
+
None,
|
|
1435
|
+
None,
|
|
1436
|
+
Some(lines[3].len()),
|
|
1437
|
+
None,
|
|
1438
|
+
Some(lines[5].len())
|
|
1439
|
+
]
|
|
1440
|
+
);
|
|
1441
|
+
assert_eq!(
|
|
1442
|
+
session_arenas(&session, &entries)
|
|
1443
|
+
.iter()
|
|
1444
|
+
.map(|(entry, arena)| (*entry, arena.source_len))
|
|
1445
|
+
.collect::<Vec<_>>(),
|
|
1446
|
+
[
|
|
1447
|
+
(0, lines[0].len()),
|
|
1448
|
+
(3, lines[3].len()),
|
|
1449
|
+
(4, lines[4].len())
|
|
1450
|
+
]
|
|
1451
|
+
);
|
|
1452
|
+
}
|
|
1342
1453
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
use memchr::memchr_iter;
|
|
2
2
|
use sonic_rs::{JsonContainerTrait, JsonValueTrait, Value};
|
|
3
3
|
|
|
4
|
+
use crate::codex::lower::line_dom;
|
|
4
5
|
use crate::codex::types::{
|
|
5
6
|
CodexEntry, CodexItem, CodexOther, CodexSession, Compacted, EventMsg, ResponseItem,
|
|
6
7
|
ResponseItemPayload, SessionMeta, TokenUsage, TokenUsageInfo, WorldState,
|
|
7
8
|
};
|
|
8
9
|
use crate::parse::parse_timestamp;
|
|
9
|
-
use crate::
|
|
10
|
+
use crate::snapshot_memory::{pins_arena, SourceArena};
|
|
11
|
+
use crate::value::{deduplicated, field, field_str};
|
|
10
12
|
|
|
11
13
|
const AVG_CODEX_LINE_BYTES: usize = 700;
|
|
12
14
|
|
|
@@ -65,14 +67,21 @@ fn parse_codex_line(line: &[u8], line_index: usize, entries: &mut Vec<CodexEntry
|
|
|
65
67
|
return;
|
|
66
68
|
}
|
|
67
69
|
match sonic_rs::from_slice::<Value>(line) {
|
|
68
|
-
Ok(
|
|
69
|
-
|
|
70
|
+
Ok(parsed) => {
|
|
71
|
+
let (value, source_len) = deduplicated(&parsed).unwrap_or_else(|| (parsed, line.len()));
|
|
70
72
|
let timestamp = field_str(&value, "timestamp").and_then(|s| parse_timestamp(s).ok());
|
|
71
73
|
let item = parse_codex_item(&value, line);
|
|
74
|
+
let source = line_dom(&item)
|
|
75
|
+
.is_some_and(pins_arena)
|
|
76
|
+
.then(|| SourceArena {
|
|
77
|
+
root: value,
|
|
78
|
+
source_len,
|
|
79
|
+
});
|
|
72
80
|
entries.push(CodexEntry {
|
|
73
81
|
line_index,
|
|
74
82
|
timestamp,
|
|
75
83
|
item,
|
|
84
|
+
source,
|
|
76
85
|
});
|
|
77
86
|
}
|
|
78
87
|
Err(_) => entries.push(CodexEntry {
|
|
@@ -82,6 +91,7 @@ fn parse_codex_line(line: &[u8], line_index: usize, entries: &mut Vec<CodexEntry
|
|
|
82
91
|
ty: None,
|
|
83
92
|
raw: String::from_utf8_lossy(line).into_owned(),
|
|
84
93
|
}),
|
|
94
|
+
source: None,
|
|
85
95
|
}),
|
|
86
96
|
}
|
|
87
97
|
}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
use chrono::{DateTime, FixedOffset};
|
|
2
2
|
use sonic_rs::Value;
|
|
3
3
|
|
|
4
|
+
use crate::snapshot_memory::SourceArena;
|
|
5
|
+
|
|
4
6
|
#[derive(Debug)]
|
|
5
7
|
pub struct CodexEntry {
|
|
6
8
|
pub line_index: usize,
|
|
7
9
|
pub timestamp: Option<DateTime<FixedOffset>>,
|
|
8
10
|
pub item: CodexItem,
|
|
11
|
+
pub source: Option<SourceArena>,
|
|
9
12
|
}
|
|
10
13
|
|
|
11
14
|
#[derive(Debug)]
|
|
@@ -31,6 +31,8 @@ pub mod rng;
|
|
|
31
31
|
pub mod scan;
|
|
32
32
|
pub mod scan_checkpoint;
|
|
33
33
|
pub mod scan_grep;
|
|
34
|
+
pub mod scan_index;
|
|
35
|
+
pub mod scan_projection;
|
|
34
36
|
pub mod scan_stream;
|
|
35
37
|
#[cfg(feature = "sqlite")]
|
|
36
38
|
pub mod schema;
|
|
@@ -38,6 +40,7 @@ pub mod snapshot;
|
|
|
38
40
|
pub mod snapshot_activity;
|
|
39
41
|
pub mod snapshot_codec;
|
|
40
42
|
pub mod snapshot_labels;
|
|
43
|
+
pub mod snapshot_ledger;
|
|
41
44
|
pub mod snapshot_memory;
|
|
42
45
|
pub mod snapshot_owned;
|
|
43
46
|
pub mod snapshot_prepared;
|