cc-transcript 14.36.0__tar.gz → 14.37.1__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.36.0 → cc_transcript-14.37.1}/PKG-INFO +2 -2
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/extract/correct.py +61 -16
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/pyproject.toml +2 -2
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/Cargo.toml +0 -4
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/lib.rs +22 -19
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/python.rs +5 -1
- cc_transcript-14.36.0/rust/crates/cli/src/main.rs +0 -4
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/Cargo.lock +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/Cargo.toml +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/LICENSE +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/README.md +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/command.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/context.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/models.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/query.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/render.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/request.schema.json +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshots.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/Cargo.toml +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/lower.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/parse.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/codex/types.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/command.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/lib.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/parse.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/render.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_checkpoint.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_grep.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_grep_stream.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_grep_stream_tests.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_index.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_projection.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_regressions.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_stream.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_activity.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_ledger.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_ledger_tests.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_projection.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_text.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/toolcall.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/types.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/value.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/tests/sonic_arena_model.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/tests/std_allocation_model.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/render.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/snapshots.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/blocks.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/events.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/store.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/toolcall.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/toolresult.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/views/transcript.rs +0 -0
- {cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/py/src/watch.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cc-transcript
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.37.1
|
|
4
4
|
Classifier: Development Status :: 3 - Alpha
|
|
5
5
|
Classifier: Environment :: Console
|
|
6
6
|
Classifier: Intended Audience :: Developers
|
|
@@ -18,7 +18,7 @@ Requires-Dist: ruff>=0.8 ; extra == 'dev'
|
|
|
18
18
|
Requires-Dist: sqlite-vec>=0.1.9 ; extra == 'judge'
|
|
19
19
|
Requires-Dist: model2vec>=0.8.2 ; extra == 'judge'
|
|
20
20
|
Requires-Dist: numpy>=1.26 ; extra == 'judge'
|
|
21
|
-
Requires-Dist: spawnllm>=0.
|
|
21
|
+
Requires-Dist: spawnllm>=0.17.1,<0.18 ; extra == 'llm'
|
|
22
22
|
Provides-Extra: dev
|
|
23
23
|
Provides-Extra: judge
|
|
24
24
|
Provides-Extra: llm
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
:func:`extract_correction` harvests the candidate incorrect edits around a
|
|
4
4
|
feedback anchor (deterministically, via :mod:`cc_transcript.evidence`), then picks
|
|
5
5
|
the single edit the feedback faults and appends that one row to the shared
|
|
6
|
-
ledger. The pick is
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
tool call, never
|
|
6
|
+
ledger. The pick is a Jev label decision by default; when Jev errors or refuses
|
|
7
|
+
it falls back to an LLM call — lifted from cc-steer's enrich prompt — and to the
|
|
8
|
+
best-overlap candidate when no LLM backend is ready either (:func:`usable_backend`
|
|
9
|
+
returns None). The pick keys to the candidate's index, so the row carries the
|
|
10
|
+
real cross-language ``incorrect_digest`` from the harvested tool call, never
|
|
11
|
+
reconstructed content.
|
|
11
12
|
|
|
12
13
|
Behind the ``[llm]`` extra: this module imports pydantic at definition time and
|
|
13
14
|
``spawnllm`` lazily, so only LLM-capable consumers import it. A hook that merely
|
|
@@ -29,7 +30,7 @@ if TYPE_CHECKING:
|
|
|
29
30
|
from collections.abc import Sequence
|
|
30
31
|
from pathlib import Path
|
|
31
32
|
|
|
32
|
-
from spawnllm import LlmBackend, TModel
|
|
33
|
+
from spawnllm import Label, LlmBackend, TModel
|
|
33
34
|
|
|
34
35
|
from cc_transcript.activity import SessionActivity
|
|
35
36
|
from cc_transcript.corrections import Correction, CorrectionLog
|
|
@@ -38,6 +39,13 @@ if TYPE_CHECKING:
|
|
|
38
39
|
from cc_transcript.tools import Hunk
|
|
39
40
|
|
|
40
41
|
HUNK_BUDGET = Budget(tool_chars=600)
|
|
42
|
+
NO_CANDIDATE = "none"
|
|
43
|
+
|
|
44
|
+
PICK_QUESTION = """\
|
|
45
|
+
Which single candidate edit does the developer FEEDBACK fault? The candidates are edits an AI coding \
|
|
46
|
+
assistant made shortly before the feedback, newest first, each with the correction that later overwrote \
|
|
47
|
+
it when one was found; the correction ranked most likely by content overlap is tagged [likely fix]. \
|
|
48
|
+
Answer none when the feedback faults the approach, a command, or work outside these edits."""
|
|
41
49
|
|
|
42
50
|
PICK_PROMPT = """\
|
|
43
51
|
You are grounding one piece of developer FEEDBACK on an AI coding assistant's work
|
|
@@ -107,17 +115,37 @@ def candidate_block(index: int, pair: CandidatePair, *, anchor_turn: int, likely
|
|
|
107
115
|
)
|
|
108
116
|
|
|
109
117
|
|
|
110
|
-
def
|
|
118
|
+
def candidate_blocks(pairs: Sequence[CandidatePair], *, anchor_turn: int) -> str:
|
|
111
119
|
likely = likely_fix(pairs)
|
|
112
|
-
return
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
return "\n\n".join(
|
|
121
|
+
candidate_block(index, pair, anchor_turn=anchor_turn, likely=pair is likely)
|
|
122
|
+
for index, pair in enumerate(pairs, 1)
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
def build_pick_prompt(feedback: str, pairs: Sequence[CandidatePair], *, anchor_turn: int) -> str:
|
|
127
|
+
return PICK_PROMPT.format(candidates=candidate_blocks(pairs, anchor_turn=anchor_turn), feedback=feedback)
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
def pick_label(pairs: Sequence[CandidatePair]) -> Label:
|
|
131
|
+
from spawnllm import Label
|
|
132
|
+
|
|
133
|
+
return Label(
|
|
134
|
+
PICK_QUESTION,
|
|
135
|
+
{
|
|
136
|
+
NO_CANDIDATE: "The feedback is not about any of these edits",
|
|
137
|
+
**{
|
|
138
|
+
str(index): f"candidate {index}: {pair.incorrect.file_path} ({pair.incorrect.tool})"
|
|
139
|
+
for index, pair in enumerate(pairs, 1)
|
|
140
|
+
},
|
|
141
|
+
},
|
|
118
142
|
)
|
|
119
143
|
|
|
120
144
|
|
|
145
|
+
def pair_for(choice: str, pairs: Sequence[CandidatePair]) -> CandidatePair | None:
|
|
146
|
+
return None if choice == NO_CANDIDATE else pairs[int(choice) - 1]
|
|
147
|
+
|
|
148
|
+
|
|
121
149
|
def usable_backend() -> LlmBackend | None:
|
|
122
150
|
"""The first ready spawnllm backend for the ``review`` specialty, or None when none is ready.
|
|
123
151
|
|
|
@@ -132,11 +160,27 @@ def usable_backend() -> LlmBackend | None:
|
|
|
132
160
|
return None
|
|
133
161
|
|
|
134
162
|
|
|
163
|
+
async def jev_choice(pairs: Sequence[CandidatePair], *, feedback: str, anchor_turn: int) -> str | None:
|
|
164
|
+
from spawnllm import DecideError, DecideKeyMissing, LabelAnswer, decide
|
|
165
|
+
|
|
166
|
+
try:
|
|
167
|
+
decision = await decide(
|
|
168
|
+
{"candidate_edits": candidate_blocks(pairs, anchor_turn=anchor_turn), "feedback": feedback},
|
|
169
|
+
{"pick": pick_label(pairs)},
|
|
170
|
+
)
|
|
171
|
+
except (DecideError, DecideKeyMissing, TimeoutError):
|
|
172
|
+
return None
|
|
173
|
+
answer = decision.answers["pick"]
|
|
174
|
+
return answer.choice if isinstance(answer, LabelAnswer) else None
|
|
175
|
+
|
|
176
|
+
|
|
135
177
|
async def choose_pair(
|
|
136
178
|
pairs: Sequence[CandidatePair], *, feedback: str, anchor_turn: int, tier: TModel, backend: LlmBackend | None
|
|
137
179
|
) -> CandidatePair | None:
|
|
138
180
|
from spawnllm import extract
|
|
139
181
|
|
|
182
|
+
if (choice := await jev_choice(pairs, feedback=feedback, anchor_turn=anchor_turn)) is not None:
|
|
183
|
+
return pair_for(choice, pairs)
|
|
140
184
|
if backend is None:
|
|
141
185
|
return max(pairs, key=lambda pair: pair.overlap)
|
|
142
186
|
pick = await extract(
|
|
@@ -158,9 +202,10 @@ async def extract_correction(
|
|
|
158
202
|
) -> Correction | None:
|
|
159
203
|
"""Harvests around ``anchor`` and appends the one correction ``feedback`` faults.
|
|
160
204
|
|
|
161
|
-
The faulted candidate is
|
|
162
|
-
|
|
163
|
-
|
|
205
|
+
The faulted candidate is Jev's pick; when Jev errors or refuses, it is the
|
|
206
|
+
LLM's pick when ``backend`` is given, else the best-overlap candidate.
|
|
207
|
+
Idempotent per anchor: a no-op when this anchor already has a row, so
|
|
208
|
+
re-runs and overlapping producers never duplicate.
|
|
164
209
|
Returns the appended correction, or None when nothing is harvested or picked.
|
|
165
210
|
"""
|
|
166
211
|
if await log.for_anchor(anchor.session_id, anchor.event_uuid):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.
|
|
3
|
+
version = "14.37.1" # 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"
|
|
@@ -41,7 +41,7 @@ dev = [
|
|
|
41
41
|
"ty>=0.0.44",
|
|
42
42
|
"ruff>=0.8",
|
|
43
43
|
]
|
|
44
|
-
llm = ["spawnllm>=0.
|
|
44
|
+
llm = ["spawnllm>=0.17.1,<0.18"]
|
|
45
45
|
judge = [
|
|
46
46
|
"sqlite-vec>=0.1.9",
|
|
47
47
|
"model2vec>=0.8.2",
|
|
@@ -4,10 +4,6 @@ version = "0.9.0"
|
|
|
4
4
|
edition = "2021"
|
|
5
5
|
publish = false
|
|
6
6
|
|
|
7
|
-
[[bin]]
|
|
8
|
-
name = "cc-transcript"
|
|
9
|
-
path = "src/main.rs"
|
|
10
|
-
|
|
11
7
|
[dependencies]
|
|
12
8
|
cc-transcript-core = { path = "../core", features = ["command", "sqlite"] }
|
|
13
9
|
clap = { version = "4.5", features = ["derive", "env", "string"] }
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
//! The cc-transcript CLI: the clap twin of the retired click tree (cli.py),
|
|
2
|
-
//!
|
|
1
|
+
//! The cc-transcript CLI: the clap twin of the retired click tree (cli.py), run by the
|
|
2
|
+
//! `_native.cli_main` pyfunction.
|
|
3
3
|
|
|
4
4
|
use std::path::PathBuf;
|
|
5
5
|
use std::sync::atomic::{AtomicBool, Ordering};
|
|
6
|
+
use std::sync::OnceLock;
|
|
6
7
|
|
|
7
8
|
use clap::error::ErrorKind as ClapErrorKind;
|
|
8
|
-
use clap::{Args, Parser, Subcommand};
|
|
9
|
+
use clap::{Args, CommandFactory, FromArgMatches, Parser, Subcommand};
|
|
9
10
|
|
|
10
11
|
pub mod commands;
|
|
11
12
|
pub mod output;
|
|
@@ -18,6 +19,15 @@ use output::CliExit;
|
|
|
18
19
|
/// (cli.py watch_ catches KeyboardInterrupt); outside watch it means exit 130.
|
|
19
20
|
pub static WATCH_ACTIVE: AtomicBool = AtomicBool::new(false);
|
|
20
21
|
pub static WATCH_INTERRUPTED: AtomicBool = AtomicBool::new(false);
|
|
22
|
+
|
|
23
|
+
static VERSION: OnceLock<String> = OnceLock::new();
|
|
24
|
+
|
|
25
|
+
fn pkg_version() -> &'static str {
|
|
26
|
+
VERSION
|
|
27
|
+
.get()
|
|
28
|
+
.expect("run records the version before dispatch")
|
|
29
|
+
}
|
|
30
|
+
|
|
21
31
|
pub(crate) static SCAN_CANCELLATION: std::sync::Mutex<
|
|
22
32
|
Option<cc_transcript_core::snapshot::Cancellation>,
|
|
23
33
|
> = std::sync::Mutex::new(None);
|
|
@@ -40,16 +50,6 @@ pub fn install_sigint_handler() {
|
|
|
40
50
|
});
|
|
41
51
|
}
|
|
42
52
|
|
|
43
|
-
fn pkg_version() -> String {
|
|
44
|
-
let pyproject = include_str!("../../../../pyproject.toml");
|
|
45
|
-
pyproject
|
|
46
|
-
.lines()
|
|
47
|
-
.find_map(|line| line.strip_prefix("version = \""))
|
|
48
|
-
.and_then(|rest| rest.strip_suffix('"'))
|
|
49
|
-
.unwrap_or(env!("CARGO_PKG_VERSION"))
|
|
50
|
-
.to_string()
|
|
51
|
-
}
|
|
52
|
-
|
|
53
53
|
const KIND_CHOICES: [&str; 6] = ["user", "assistant", "system", "mode", "other", "attachment"];
|
|
54
54
|
const WHERE_CHOICES: [&str; 3] = ["text", "thinking", "tools"];
|
|
55
55
|
const LIST_PROVIDER_CHOICES: [&str; 3] = ["claude", "codex", "all"];
|
|
@@ -78,7 +78,6 @@ const CORPUS_INCOMPATIBLE: [&str; 15] = [
|
|
|
78
78
|
#[derive(Parser)]
|
|
79
79
|
#[command(
|
|
80
80
|
name = "cc-transcript",
|
|
81
|
-
version = pkg_version(),
|
|
82
81
|
about = "Investigate Claude Code transcripts: list, show, grep, and stats.",
|
|
83
82
|
disable_help_subcommand = true
|
|
84
83
|
)]
|
|
@@ -498,10 +497,14 @@ pub enum CorrectionsCmd {
|
|
|
498
497
|
Sql { statement: String },
|
|
499
498
|
}
|
|
500
499
|
|
|
501
|
-
/// Full-argv entry
|
|
502
|
-
///
|
|
503
|
-
pub fn run(argv: Vec<String
|
|
504
|
-
let
|
|
500
|
+
/// Full-argv entry for `_native.cli_main`: parses, dispatches, and returns the exit
|
|
501
|
+
/// code verbatim. `version` is what `--version` prints.
|
|
502
|
+
pub fn run(argv: Vec<String>, version: String) -> i32 {
|
|
503
|
+
let parsed = Cli::command()
|
|
504
|
+
.version(VERSION.get_or_init(|| version).as_str())
|
|
505
|
+
.try_get_matches_from(&argv)
|
|
506
|
+
.and_then(|matches| Cli::from_arg_matches(&matches));
|
|
507
|
+
let cli = match parsed {
|
|
505
508
|
Ok(cli) => cli,
|
|
506
509
|
Err(err) => {
|
|
507
510
|
let code = match err.kind() {
|
|
@@ -514,7 +517,7 @@ pub fn run(argv: Vec<String>) -> i32 {
|
|
|
514
517
|
};
|
|
515
518
|
let Some(cmd) = cli.cmd else {
|
|
516
519
|
// click: a bare group invocation prints help to stderr and exits 2.
|
|
517
|
-
let mut help =
|
|
520
|
+
let mut help = Cli::command();
|
|
518
521
|
eprint!("{}", help.render_long_help());
|
|
519
522
|
return 2;
|
|
520
523
|
};
|
|
@@ -1031,8 +1031,12 @@ fn tool_facts<'py>(
|
|
|
1031
1031
|
#[pyfunction]
|
|
1032
1032
|
fn cli_main(py: Python<'_>) -> PyResult<i32> {
|
|
1033
1033
|
let argv: Vec<String> = py.import("sys")?.getattr("argv")?.extract()?;
|
|
1034
|
+
let version: String = py
|
|
1035
|
+
.import("importlib.metadata")?
|
|
1036
|
+
.call_method1("version", ("cc-transcript",))?
|
|
1037
|
+
.extract()?;
|
|
1034
1038
|
cc_transcript_cli::install_sigint_handler();
|
|
1035
|
-
Ok(py.detach(|| cc_transcript_cli::run(argv)))
|
|
1039
|
+
Ok(py.detach(|| cc_transcript_cli::run(argv, version)))
|
|
1036
1040
|
}
|
|
1037
1041
|
|
|
1038
1042
|
#[pyo3_stub_gen::derive::gen_stub_pyfunction]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/data/afinn-en-165.tsv
RENAMED
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/sentiment/data/domain_overrides.tsv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/config.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/context.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/request.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/cc_transcript/snapshot_schema/response.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/literals/corrections.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/scan_grep_stream_tests.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_codex_append.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_ledger_tests.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_prepared_disk.rs
RENAMED
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_prepared_service.rs
RENAMED
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/src/snapshot_regressions.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.36.0 → cc_transcript-14.37.1}/rust/crates/core/tests/std_allocation_model.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|