cc-transcript 14.40.0__tar.gz → 14.40.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.40.0 → cc_transcript-14.40.1}/PKG-INFO +1 -1
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/pyproject.toml +1 -1
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/command.rs +163 -3
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/Cargo.lock +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/Cargo.toml +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/LICENSE +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/README.md +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/command.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/context.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/extract/correct.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/models.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/query.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/render.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/request.schema.json +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshots.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/Cargo.toml +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/lib.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/Cargo.toml +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/lower.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/parse.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/types.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/lib.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/parse.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/render.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_checkpoint.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep_stream.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep_stream_tests.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_index.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_projection.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_regressions.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_stream.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_activity.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_ledger.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_ledger_tests.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_projection.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_text.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/toolcall.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/types.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/value.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/tests/sonic_arena_model.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/tests/std_allocation_model.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/python.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/render.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/snapshots.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/blocks.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/events.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/store.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/toolcall.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/toolresult.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/transcript.rs +0 -0
- {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/watch.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.40.
|
|
3
|
+
version = "14.40.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"
|
|
@@ -124,6 +124,8 @@ pub struct Command {
|
|
|
124
124
|
// A stage of a `|`/`|&` pipeline: its stdout is consumed by the pipe. Set at parse time.
|
|
125
125
|
#[doc(hidden)]
|
|
126
126
|
pub pipe_stage: bool,
|
|
127
|
+
#[doc(hidden)]
|
|
128
|
+
pub inherits_heredoc: bool,
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
impl PartialEq for Command {
|
|
@@ -219,7 +221,7 @@ impl Command {
|
|
|
219
221
|
// Parity: command.py Command.unwrapped — returns self when nothing is stripped.
|
|
220
222
|
pub fn unwrapped(&self) -> Command {
|
|
221
223
|
let argv = self.argv();
|
|
222
|
-
let stripped =
|
|
224
|
+
let stripped = self.stripped(&argv);
|
|
223
225
|
if stripped.len() == argv.len() {
|
|
224
226
|
return self.clone();
|
|
225
227
|
}
|
|
@@ -239,12 +241,49 @@ impl Command {
|
|
|
239
241
|
host_delta: self.host_delta,
|
|
240
242
|
contexts: self.contexts.clone(),
|
|
241
243
|
pipe_stage: self.pipe_stage,
|
|
244
|
+
inherits_heredoc: self.inherits_heredoc,
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
// zsh runs `-v` as a program once an option it does not know follows it, and a wrapper, a path, a
|
|
249
|
+
// quote, an escape or an expansion can each make a shell run something else. Only the bare
|
|
250
|
+
// spelling is provably the builtin's lookup, so the source text itself has to read as one.
|
|
251
|
+
fn command_lookup(&self, argv: &[&str]) -> bool {
|
|
252
|
+
let tokens: Vec<&str> = self
|
|
253
|
+
.raw
|
|
254
|
+
.split([' ', '\t'])
|
|
255
|
+
.filter(|token| !token.is_empty())
|
|
256
|
+
.collect();
|
|
257
|
+
let silencers = tokens
|
|
258
|
+
.iter()
|
|
259
|
+
.rev()
|
|
260
|
+
.take_while(|token| LOOKUP_SILENCERS.contains(token))
|
|
261
|
+
.count();
|
|
262
|
+
let flags = argv
|
|
263
|
+
.iter()
|
|
264
|
+
.skip(1)
|
|
265
|
+
.take_while(|arg| lookup_flag(arg))
|
|
266
|
+
.count();
|
|
267
|
+
argv.first() == Some(&"command")
|
|
268
|
+
&& tokens[..tokens.len() - silencers] == *argv
|
|
269
|
+
&& argv[1..=flags].iter().any(|flag| flag.contains(['v', 'V']))
|
|
270
|
+
&& argv[1 + flags..].iter().all(|name| program_name(name))
|
|
271
|
+
&& self.redirects.iter().all(silencer)
|
|
272
|
+
&& !self.inherits_heredoc
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
fn stripped<'a>(&self, argv: &[&'a str]) -> Vec<&'a str> {
|
|
276
|
+
if self.command_lookup(argv) {
|
|
277
|
+
argv.to_vec()
|
|
278
|
+
} else {
|
|
279
|
+
strip_wrappers(argv, &self.words)
|
|
242
280
|
}
|
|
243
281
|
}
|
|
244
282
|
|
|
245
283
|
// Parity: command.py Command.prefix — over the unwrapped argv; empty pick falls back to the tool.
|
|
246
284
|
pub fn prefix(&self) -> Option<String> {
|
|
247
|
-
let argv =
|
|
285
|
+
let argv = self.argv();
|
|
286
|
+
let argv = self.stripped(&argv);
|
|
248
287
|
match argv.first() {
|
|
249
288
|
None | Some(&"") => None,
|
|
250
289
|
Some(&exe) if MULTI_LEVEL_TOOLS.contains(&exe) => Some(
|
|
@@ -263,7 +302,8 @@ impl Command {
|
|
|
263
302
|
if argv.is_empty() {
|
|
264
303
|
return false;
|
|
265
304
|
}
|
|
266
|
-
let
|
|
305
|
+
let own = self.argv();
|
|
306
|
+
let unwrapped = self.stripped(&own);
|
|
267
307
|
unwrapped.len() >= argv.len() && unwrapped[..argv.len()] == *argv
|
|
268
308
|
}
|
|
269
309
|
|
|
@@ -974,6 +1014,9 @@ fn with_redirects(
|
|
|
974
1014
|
if redirects.is_empty() {
|
|
975
1015
|
return parts;
|
|
976
1016
|
}
|
|
1017
|
+
let heredoc = redirects
|
|
1018
|
+
.iter()
|
|
1019
|
+
.any(|redirect| matches!(redirect.kind, NodeKind::HereDoc { .. }));
|
|
977
1020
|
let redirects = build_redirects(redirects, src);
|
|
978
1021
|
if parts.is_empty() {
|
|
979
1022
|
return vec![(
|
|
@@ -988,6 +1031,7 @@ fn with_redirects(
|
|
|
988
1031
|
}
|
|
989
1032
|
for (cmd, _) in &mut parts {
|
|
990
1033
|
cmd.redirects.extend(redirects.iter().cloned());
|
|
1034
|
+
cmd.inherits_heredoc |= heredoc;
|
|
991
1035
|
}
|
|
992
1036
|
parts
|
|
993
1037
|
}
|
|
@@ -1395,6 +1439,34 @@ fn wrapper_skip(wrapper: &str, tokens: &[&str]) -> usize {
|
|
|
1395
1439
|
i.min(tokens.len())
|
|
1396
1440
|
}
|
|
1397
1441
|
|
|
1442
|
+
const LOOKUP_SILENCERS: &[&str] = &[
|
|
1443
|
+
">/dev/null",
|
|
1444
|
+
"1>/dev/null",
|
|
1445
|
+
"2>/dev/null",
|
|
1446
|
+
"&>/dev/null",
|
|
1447
|
+
"2>&1",
|
|
1448
|
+
">&2",
|
|
1449
|
+
"1>&2",
|
|
1450
|
+
];
|
|
1451
|
+
|
|
1452
|
+
fn lookup_flag(arg: &str) -> bool {
|
|
1453
|
+
arg.strip_prefix('-')
|
|
1454
|
+
.is_some_and(|flags| !flags.is_empty() && flags.bytes().all(|b| b"pvV".contains(&b)))
|
|
1455
|
+
}
|
|
1456
|
+
|
|
1457
|
+
fn silencer(redirect: &Redirect) -> bool {
|
|
1458
|
+
let fd = redirect.fd.map(|fd| fd.to_string()).unwrap_or_default();
|
|
1459
|
+
LOOKUP_SILENCERS.contains(&format!("{fd}{}{}", redirect.op, redirect.target).as_str())
|
|
1460
|
+
}
|
|
1461
|
+
|
|
1462
|
+
fn program_name(arg: &str) -> bool {
|
|
1463
|
+
!arg.is_empty()
|
|
1464
|
+
&& !arg.starts_with('-')
|
|
1465
|
+
&& arg
|
|
1466
|
+
.bytes()
|
|
1467
|
+
.all(|b| b.is_ascii_alphanumeric() || b"_.+/-".contains(&b))
|
|
1468
|
+
}
|
|
1469
|
+
|
|
1398
1470
|
// Drop each leading wrapper plus its skippable args. The head matches on the dequoted word value
|
|
1399
1471
|
// (`"sudo"` → `sudo`), basenamed (`/usr/bin/sudo` → `sudo`); argv and words slice in lockstep.
|
|
1400
1472
|
fn strip_wrappers<'a>(argv: &[&'a str], words: &[Word]) -> Vec<&'a str> {
|
|
@@ -1646,6 +1718,94 @@ mod tests {
|
|
|
1646
1718
|
}
|
|
1647
1719
|
}
|
|
1648
1720
|
|
|
1721
|
+
#[test]
|
|
1722
|
+
fn bare_command_lookup_wraps_nothing() {
|
|
1723
|
+
for raw in [
|
|
1724
|
+
"command -v orca ccx cc-notes",
|
|
1725
|
+
"command -V rm",
|
|
1726
|
+
"command -pv rm",
|
|
1727
|
+
"command -p -v rm",
|
|
1728
|
+
"command -v sudo rm",
|
|
1729
|
+
"command -v /usr/bin/g++ python3.13",
|
|
1730
|
+
"command -v",
|
|
1731
|
+
"command -v rm >/dev/null 2>&1",
|
|
1732
|
+
"command -v rm &>/dev/null",
|
|
1733
|
+
"command -v rm 2>/dev/null",
|
|
1734
|
+
"command\t-v rm >&2",
|
|
1735
|
+
] {
|
|
1736
|
+
let line = CommandLine::parse(raw);
|
|
1737
|
+
let cmd = line.primary().unwrap();
|
|
1738
|
+
assert_eq!(cmd.unwrapped(), *cmd, "unwrapping {raw}");
|
|
1739
|
+
assert_eq!(cmd.prefix().as_deref(), Some("command"), "prefix of {raw}");
|
|
1740
|
+
assert!(!cmd.runs(&["rm"]), "{raw} runs nothing");
|
|
1741
|
+
}
|
|
1742
|
+
for raw in [
|
|
1743
|
+
"if ! command -v rm >/dev/null 2>&1; then echo y; fi",
|
|
1744
|
+
"x=$(command -v rm 2>/dev/null)",
|
|
1745
|
+
"(command -v rm) >/dev/null 2>&1",
|
|
1746
|
+
] {
|
|
1747
|
+
let line = CommandLine::parse(raw);
|
|
1748
|
+
let lookups: Vec<String> = line
|
|
1749
|
+
.parts
|
|
1750
|
+
.iter()
|
|
1751
|
+
.map(|(cmd, _)| cmd.unwrapped().executable)
|
|
1752
|
+
.filter(|executable| executable != "echo")
|
|
1753
|
+
.collect();
|
|
1754
|
+
assert_eq!(lookups, ["command"], "unwrapping {raw}");
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
#[test]
|
|
1759
|
+
fn command_the_shell_may_not_read_as_a_lookup_still_wraps() {
|
|
1760
|
+
for raw in [
|
|
1761
|
+
"command rm /x",
|
|
1762
|
+
"command -p rm /x",
|
|
1763
|
+
"command -- rm /x",
|
|
1764
|
+
"command -v -- rm /x",
|
|
1765
|
+
"command -v -i rm /x",
|
|
1766
|
+
"command -i -v rm /x",
|
|
1767
|
+
"command -v - rm /x",
|
|
1768
|
+
"command -v >/dev/null -i rm /x",
|
|
1769
|
+
"command -$f rm /x",
|
|
1770
|
+
"command -${v} rm /x",
|
|
1771
|
+
"command \"-v\" rm /x",
|
|
1772
|
+
"command -v $X rm /x",
|
|
1773
|
+
"command -v \"$X\" rm /x",
|
|
1774
|
+
"command -v * rm /x",
|
|
1775
|
+
"command -v ~ rm /x",
|
|
1776
|
+
"command -v \"\"~ rm /x",
|
|
1777
|
+
"command -v =rm /x rm",
|
|
1778
|
+
"command $(printf env) -v rm /x",
|
|
1779
|
+
"command -v $(printf -- -i) rm /x",
|
|
1780
|
+
"command `printf env` -v rm /x",
|
|
1781
|
+
"command -v rm ignored<(rm /x)",
|
|
1782
|
+
"command >\"/dev/null$(rm /x)\" -v rm",
|
|
1783
|
+
"command -v rm > /dev/null",
|
|
1784
|
+
"command -v rm >/tmp/out",
|
|
1785
|
+
"command -v rm <<EOF\n$(rm /x)\nEOF",
|
|
1786
|
+
"(command -v rm) >\"$(printf /dev/null)\"",
|
|
1787
|
+
"(command -v rm) <<EOF\n$(printf x)\nEOF",
|
|
1788
|
+
"{ command -v rm; } <<EOF\n$(printf x)\nEOF",
|
|
1789
|
+
"if command -v rm; then :; fi <<EOF\n$(printf x)\nEOF",
|
|
1790
|
+
"(command -v rm) <<<x",
|
|
1791
|
+
"{ command -v rm; } >/tmp/out",
|
|
1792
|
+
"command\\\nx -v rm /x",
|
|
1793
|
+
"\\command -v rm /x",
|
|
1794
|
+
"A=1 command -v rm /x",
|
|
1795
|
+
"./command -v rm /x",
|
|
1796
|
+
"/usr/bin/command -v rm /x",
|
|
1797
|
+
"command command -v rm /x",
|
|
1798
|
+
"sudo command -v rm /x",
|
|
1799
|
+
"/usr/bin/env command -v rm /x",
|
|
1800
|
+
"env -u command -v rm /x",
|
|
1801
|
+
] {
|
|
1802
|
+
let line = CommandLine::parse(raw);
|
|
1803
|
+
let cmd = line.head().unwrap().unwrapped();
|
|
1804
|
+
assert_ne!(cmd.executable, "command", "unwrapping {raw}");
|
|
1805
|
+
assert!(cmd.argv().contains(&"rm"), "unwrapping {raw}");
|
|
1806
|
+
}
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1649
1809
|
#[test]
|
|
1650
1810
|
fn operand_skip_only_consumes_a_digit_led_duration() {
|
|
1651
1811
|
// A non-digit token in the duration slot is the command, not the duration — never hidden.
|
|
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
|
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/afinn-en-165.tsv
RENAMED
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.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.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/config.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/context.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/request.schema.json
RENAMED
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.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
|
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.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.40.0 → cc_transcript-14.40.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.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_codex_append.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.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.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_disk.rs
RENAMED
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_service.rs
RENAMED
|
File without changes
|
|
File without changes
|
{cc_transcript-14.40.0 → cc_transcript-14.40.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.40.0 → cc_transcript-14.40.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
|
|
File without changes
|