cc-transcript 14.32.0__tar.gz → 14.33.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.32.0 → cc_transcript-14.33.0}/PKG-INFO +1 -1
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/request.schema.json +6 -1
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/pyproject.toml +1 -1
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot.rs +47 -19
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_projection.rs +195 -97
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/Cargo.lock +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/LICENSE +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/README.md +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/command.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/context.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/extract/correct.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/models.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/query.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/render.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/config.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/context.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/response.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshots.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/corpus.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/main.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/lower.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/codex/types.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/parse.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/scan.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/scan_grep.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/scan_regressions.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_activity.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_codec.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_labels.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_memory.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_owned.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_prepared.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_regressions.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/snapshot_text.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/types.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/value.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/python.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/render.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/snapshot_decode.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/snapshots.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/blocks.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/events.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/store.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/toolcall.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/toolresult.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/views/transcript.rs +0 -0
- {cc_transcript-14.32.0 → cc_transcript-14.33.0}/rust/crates/py/src/watch.rs +0 -0
{cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/snapshot_schema/request.schema.json
RENAMED
|
@@ -2006,6 +2006,10 @@
|
|
|
2006
2006
|
"title": "Origin",
|
|
2007
2007
|
"type": "string"
|
|
2008
2008
|
},
|
|
2009
|
+
"thinking": {
|
|
2010
|
+
"title": "Thinking",
|
|
2011
|
+
"type": "boolean"
|
|
2012
|
+
},
|
|
2009
2013
|
"window": {
|
|
2010
2014
|
"anyOf": [
|
|
2011
2015
|
{
|
|
@@ -2024,7 +2028,8 @@
|
|
|
2024
2028
|
"required": [
|
|
2025
2029
|
"kind",
|
|
2026
2030
|
"window",
|
|
2027
|
-
"origin"
|
|
2031
|
+
"origin",
|
|
2032
|
+
"thinking"
|
|
2028
2033
|
],
|
|
2029
2034
|
"title": "SignalTexts",
|
|
2030
2035
|
"type": "object"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.
|
|
3
|
+
version = "14.33.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"
|
|
@@ -2488,9 +2488,8 @@ impl NativeStore {
|
|
|
2488
2488
|
.projections
|
|
2489
2489
|
.values()
|
|
2490
2490
|
.map(|cursor| {
|
|
2491
|
-
crate::snapshot_memory::value_charge(&cursor.request)
|
|
2492
|
-
|
|
2493
|
-
.opaque_dom_accounted_bytes
|
|
2491
|
+
let charge = crate::snapshot_memory::value_charge(&cursor.request);
|
|
2492
|
+
charge.owned_capacity_bytes + charge.opaque_dom_accounted_bytes
|
|
2494
2493
|
})
|
|
2495
2494
|
.sum();
|
|
2496
2495
|
let graph_bytes: usize = state
|
|
@@ -2669,24 +2668,25 @@ impl NativeStore {
|
|
|
2669
2668
|
let cap = self.memory_cap(context)?;
|
|
2670
2669
|
if number(&Self::gauges(state), "retained_total_accounted_bytes")?
|
|
2671
2670
|
.saturating_add(additional)
|
|
2672
|
-
|
|
2671
|
+
<= cap
|
|
2673
2672
|
{
|
|
2674
|
-
|
|
2675
|
-
.lock()
|
|
2676
|
-
.expect("classified snapshots")
|
|
2677
|
-
.retain(|_, snapshot| Arc::strong_count(snapshot) > 1);
|
|
2678
|
-
let leased: HashSet<_> = state
|
|
2679
|
-
.leases
|
|
2680
|
-
.values()
|
|
2681
|
-
.map(|lease| lease.snapshot.id.clone())
|
|
2682
|
-
.collect();
|
|
2683
|
-
state.latest.retain(|_, snapshot| {
|
|
2684
|
-
leased.contains(&snapshot.id) || Arc::strong_count(snapshot) > 1
|
|
2685
|
-
});
|
|
2686
|
-
state
|
|
2687
|
-
.carried_classifications
|
|
2688
|
-
.retain(|_, carried| Arc::strong_count(carried) > 1);
|
|
2673
|
+
return Ok(());
|
|
2689
2674
|
}
|
|
2675
|
+
self.classified
|
|
2676
|
+
.lock()
|
|
2677
|
+
.expect("classified snapshots")
|
|
2678
|
+
.retain(|_, snapshot| Arc::strong_count(snapshot) > 1);
|
|
2679
|
+
let leased: HashSet<_> = state
|
|
2680
|
+
.leases
|
|
2681
|
+
.values()
|
|
2682
|
+
.map(|lease| lease.snapshot.id.clone())
|
|
2683
|
+
.collect();
|
|
2684
|
+
state
|
|
2685
|
+
.latest
|
|
2686
|
+
.retain(|_, snapshot| leased.contains(&snapshot.id) || Arc::strong_count(snapshot) > 1);
|
|
2687
|
+
state
|
|
2688
|
+
.carried_classifications
|
|
2689
|
+
.retain(|_, carried| Arc::strong_count(carried) > 1);
|
|
2690
2690
|
if number(&Self::gauges(state), "retained_total_accounted_bytes")?
|
|
2691
2691
|
.saturating_add(additional)
|
|
2692
2692
|
> cap
|
|
@@ -7068,6 +7068,34 @@ mod tests {
|
|
|
7068
7068
|
);
|
|
7069
7069
|
}
|
|
7070
7070
|
|
|
7071
|
+
#[test]
|
|
7072
|
+
fn projection_reservations_preserve_exact_admission_caps_and_release_capacity() {
|
|
7073
|
+
for background in [false, true] {
|
|
7074
|
+
let store = store();
|
|
7075
|
+
let mut owner = context("a");
|
|
7076
|
+
if background {
|
|
7077
|
+
owner.insert("work_class", json!("background"));
|
|
7078
|
+
}
|
|
7079
|
+
let baseline = store.retained_accounted_bytes();
|
|
7080
|
+
let cap = if background {
|
|
7081
|
+
32 * 1024 * 1024 - 4096
|
|
7082
|
+
} else {
|
|
7083
|
+
32 * 1024 * 1024
|
|
7084
|
+
};
|
|
7085
|
+
let reservation = store.reserve_projection(&owner, cap - baseline).unwrap();
|
|
7086
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7087
|
+
let refused = store.reserve_projection(&owner, 1);
|
|
7088
|
+
assert!(matches!(refused, Err(error) if error.status == Status::RetainedLimit));
|
|
7089
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7090
|
+
drop(reservation);
|
|
7091
|
+
assert_eq!(store.retained_accounted_bytes(), baseline);
|
|
7092
|
+
let reused = store.reserve_projection(&owner, cap - baseline).unwrap();
|
|
7093
|
+
assert_eq!(store.retained_accounted_bytes(), cap);
|
|
7094
|
+
drop(reused);
|
|
7095
|
+
assert_eq!(store.retained_accounted_bytes(), baseline);
|
|
7096
|
+
}
|
|
7097
|
+
}
|
|
7098
|
+
|
|
7071
7099
|
#[test]
|
|
7072
7100
|
fn escaped_borrowed_entries_remain_accounted_after_release() {
|
|
7073
7101
|
let source = Source::new(&format!("{}\n", user("a")));
|
|
@@ -1160,6 +1160,7 @@ fn signal_event<'a>(
|
|
|
1160
1160
|
work: &mut Work<'a, '_>,
|
|
1161
1161
|
index: usize,
|
|
1162
1162
|
origin: &str,
|
|
1163
|
+
thinking: bool,
|
|
1163
1164
|
) -> Result<Vec<Vec<&'a str>>, SnapshotError> {
|
|
1164
1165
|
work.charge_range(index..index + 1)?;
|
|
1165
1166
|
let event = work.snapshot.entry(index);
|
|
@@ -1193,7 +1194,7 @@ fn signal_event<'a>(
|
|
|
1193
1194
|
for (ordinal, block) in event.blocks().iter().enumerate() {
|
|
1194
1195
|
work.cancel.check(work.limits.deadline_unix_ms)?;
|
|
1195
1196
|
match block {
|
|
1196
|
-
ContentBlock::Thinking(text) if !text.is_empty() => plans.push(vec![text]),
|
|
1197
|
+
ContentBlock::Thinking(text) if thinking && !text.is_empty() => plans.push(vec![text]),
|
|
1197
1198
|
ContentBlock::ToolUse(tool) => {
|
|
1198
1199
|
let call = work
|
|
1199
1200
|
.snapshot
|
|
@@ -1258,6 +1259,9 @@ fn signal_query(
|
|
|
1258
1259
|
if !["any", "assistant"].contains(&origin) {
|
|
1259
1260
|
return Err(invalid("invalid signal origin"));
|
|
1260
1261
|
}
|
|
1262
|
+
let thinking = field(query, "thinking")?
|
|
1263
|
+
.as_bool()
|
|
1264
|
+
.ok_or_else(|| invalid("thinking must be boolean"))?;
|
|
1261
1265
|
let window = field(query, "window")?;
|
|
1262
1266
|
let mut plans = Vec::new();
|
|
1263
1267
|
if window.as_str() == Some("current_turn") {
|
|
@@ -1272,7 +1276,7 @@ fn signal_query(
|
|
|
1272
1276
|
.max(work.snapshot.activity.turn_bounds(turn).unwrap().start);
|
|
1273
1277
|
}
|
|
1274
1278
|
for index in range {
|
|
1275
|
-
plans.extend(signal_event(work, index, origin)?);
|
|
1279
|
+
plans.extend(signal_event(work, index, origin, thinking)?);
|
|
1276
1280
|
}
|
|
1277
1281
|
} else {
|
|
1278
1282
|
let count = count(query, "window")?;
|
|
@@ -1282,7 +1286,7 @@ fn signal_query(
|
|
|
1282
1286
|
if length >= count {
|
|
1283
1287
|
break;
|
|
1284
1288
|
}
|
|
1285
|
-
let texts = signal_event(work, index, origin)?;
|
|
1289
|
+
let texts = signal_event(work, index, origin, thinking)?;
|
|
1286
1290
|
length += texts.len();
|
|
1287
1291
|
events.push(texts);
|
|
1288
1292
|
}
|
|
@@ -1336,77 +1340,58 @@ fn workflow_query(
|
|
|
1336
1340
|
scalar(json!(matched), work)
|
|
1337
1341
|
}
|
|
1338
1342
|
|
|
1339
|
-
fn
|
|
1340
|
-
|
|
1341
|
-
range: &Range<usize>,
|
|
1342
|
-
produce: impl FnOnce(&mut Work) -> Result<T, SnapshotError>,
|
|
1343
|
-
) -> Result<T, SnapshotError> {
|
|
1343
|
+
fn render_window(work: &Work, range: &Range<usize>) -> Result<Range<usize>, SnapshotError> {
|
|
1344
|
+
let limit = work.limits.max_output_bytes;
|
|
1344
1345
|
let mut input = OutputCounter {
|
|
1345
|
-
remaining:
|
|
1346
|
-
.limits
|
|
1347
|
-
.max_output_bytes
|
|
1348
|
-
.checked_sub(64)
|
|
1349
|
-
.ok_or_else(output_limit)?
|
|
1350
|
-
/ 16,
|
|
1346
|
+
remaining: limit.checked_sub(64).ok_or_else(output_limit)? / 16,
|
|
1351
1347
|
};
|
|
1352
|
-
let
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
.
|
|
1361
|
-
.
|
|
1362
|
-
.
|
|
1363
|
-
|
|
1348
|
+
let activity = &work.snapshot.activity;
|
|
1349
|
+
let mut start = range.end;
|
|
1350
|
+
let mut turn = 0;
|
|
1351
|
+
let mut bounds = 0..0;
|
|
1352
|
+
let mut pending = HashSet::new();
|
|
1353
|
+
for index in range.clone().rev() {
|
|
1354
|
+
work.cancel.check(work.limits.deadline_unix_ms)?;
|
|
1355
|
+
if !bounds.contains(&index) {
|
|
1356
|
+
turn = activity.turn_of_event(index).expect("view turn");
|
|
1357
|
+
bounds = activity.turn_bounds(turn).expect("view turn");
|
|
1358
|
+
pending.clear();
|
|
1359
|
+
}
|
|
1360
|
+
let entry = work.snapshot.entry(index);
|
|
1361
|
+
pending.extend(entry.blocks().iter().filter_map(|block| match block {
|
|
1362
|
+
ContentBlock::ToolResult(result) => Some(result.tool_use_id.as_str()),
|
|
1363
|
+
_ => None,
|
|
1364
|
+
}));
|
|
1365
|
+
let fits = snapshot_codec::write_json(&mut input, entry, limit).is_ok()
|
|
1366
|
+
&& entry.blocks().iter().all(|block| match block {
|
|
1367
|
+
ContentBlock::ToolUse(tool) if pending.contains(tool.id.as_str()) => {
|
|
1368
|
+
snapshot_codec::write_json(&mut input, tool.name.as_str(), limit).is_ok()
|
|
1369
|
+
}
|
|
1370
|
+
_ => true,
|
|
1371
|
+
})
|
|
1372
|
+
&& (index != bounds.start
|
|
1373
|
+
|| snapshot_codec::write_json(
|
|
1374
|
+
&mut input,
|
|
1375
|
+
activity.prompt(turn).expect("view turn"),
|
|
1376
|
+
limit,
|
|
1377
|
+
)
|
|
1378
|
+
.is_ok());
|
|
1379
|
+
if !fits {
|
|
1380
|
+
break;
|
|
1381
|
+
}
|
|
1382
|
+
start = index;
|
|
1383
|
+
}
|
|
1384
|
+
let window = start..range.end;
|
|
1385
|
+
if !window.is_empty() {
|
|
1386
|
+
let first = activity.turn_of_event(window.start).expect("view turn");
|
|
1387
|
+
let last = activity.turn_of_event(window.end - 1).expect("view turn");
|
|
1388
|
+
let mut clones = limit;
|
|
1364
1389
|
for index in first..=last {
|
|
1365
|
-
let copied =
|
|
1366
|
-
.snapshot
|
|
1367
|
-
.activity
|
|
1368
|
-
.projected_bytes(index)
|
|
1369
|
-
.expect("view turn");
|
|
1390
|
+
let copied = activity.projected_bytes(index).expect("view turn");
|
|
1370
1391
|
clones = clones.checked_sub(copied).ok_or_else(output_limit)?;
|
|
1371
|
-
let bounds = work
|
|
1372
|
-
.snapshot
|
|
1373
|
-
.activity
|
|
1374
|
-
.turn_bounds(index)
|
|
1375
|
-
.expect("view turn");
|
|
1376
|
-
work.charge_range(bounds.clone())?;
|
|
1377
|
-
let mut names = std::collections::HashMap::new();
|
|
1378
|
-
for position in bounds {
|
|
1379
|
-
let entry = work.snapshot.entry(position);
|
|
1380
|
-
snapshot_codec::write_json(&mut input, entry, work.limits.max_output_bytes)
|
|
1381
|
-
.map_err(|_| output_limit())?;
|
|
1382
|
-
for block in entry.blocks() {
|
|
1383
|
-
match block {
|
|
1384
|
-
ContentBlock::ToolUse(tool) => {
|
|
1385
|
-
names.insert(tool.id.as_str(), tool.name.as_str());
|
|
1386
|
-
}
|
|
1387
|
-
ContentBlock::ToolResult(result) => {
|
|
1388
|
-
if let Some(name) = names.get(result.tool_use_id.as_str()) {
|
|
1389
|
-
snapshot_codec::write_json(
|
|
1390
|
-
&mut input,
|
|
1391
|
-
name,
|
|
1392
|
-
work.limits.max_output_bytes,
|
|
1393
|
-
)
|
|
1394
|
-
.map_err(|_| output_limit())?;
|
|
1395
|
-
}
|
|
1396
|
-
}
|
|
1397
|
-
_ => {}
|
|
1398
|
-
}
|
|
1399
|
-
}
|
|
1400
|
-
}
|
|
1401
|
-
snapshot_codec::write_json(
|
|
1402
|
-
&mut input,
|
|
1403
|
-
work.snapshot.activity.prompt(index).expect("view turn"),
|
|
1404
|
-
work.limits.max_output_bytes,
|
|
1405
|
-
)
|
|
1406
|
-
.map_err(|_| output_limit())?;
|
|
1407
1392
|
}
|
|
1408
1393
|
}
|
|
1409
|
-
|
|
1394
|
+
Ok(window)
|
|
1410
1395
|
}
|
|
1411
1396
|
|
|
1412
1397
|
fn render_query(
|
|
@@ -1418,24 +1403,30 @@ fn render_query(
|
|
|
1418
1403
|
let tool_results = field(query, "tool_results")?
|
|
1419
1404
|
.as_bool()
|
|
1420
1405
|
.ok_or_else(|| invalid("tool_results must be boolean"))?;
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1406
|
+
let window = render_window(work, &range)?;
|
|
1407
|
+
let lift = lift_range(work, &window, None)?;
|
|
1408
|
+
let session = view(&lift, &window, work.snapshot);
|
|
1409
|
+
let mut parts: Vec<_> = session
|
|
1410
|
+
.turn_views()
|
|
1411
|
+
.map(|(_, prompt, events, uses)| {
|
|
1412
|
+
render::render_turn_parts(
|
|
1413
|
+
prompt,
|
|
1414
|
+
events,
|
|
1415
|
+
&uses.iter().map(|use_| &use_.call).collect::<Vec<_>>(),
|
|
1416
|
+
&budget,
|
|
1417
|
+
tool_results,
|
|
1418
|
+
)
|
|
1419
|
+
})
|
|
1420
|
+
.filter(|text| !text.is_empty())
|
|
1421
|
+
.collect();
|
|
1422
|
+
let omitted = window.start - range.start;
|
|
1423
|
+
if omitted != 0 {
|
|
1424
|
+
parts.insert(
|
|
1425
|
+
0,
|
|
1426
|
+
format!("[{omitted} earlier events omitted: over the render budget]"),
|
|
1427
|
+
);
|
|
1428
|
+
}
|
|
1429
|
+
scalar(json!(parts.join("\n\n")), work)
|
|
1439
1430
|
}
|
|
1440
1431
|
|
|
1441
1432
|
#[derive(serde::Serialize)]
|
|
@@ -2785,19 +2776,103 @@ mod tests {
|
|
|
2785
2776
|
let mut cap = limits();
|
|
2786
2777
|
cap.max_output_bytes = 128;
|
|
2787
2778
|
let cancel = Cancellation::default();
|
|
2788
|
-
let
|
|
2789
|
-
|
|
2790
|
-
visits.set(visits.get() + 1);
|
|
2791
|
-
Ok(())
|
|
2792
|
-
});
|
|
2793
|
-
assert!(matches!(produced,Err(error) if error.status==Status::OutputLimit));
|
|
2794
|
-
assert_eq!(visits.get(), 0);
|
|
2779
|
+
let work = Work::new(&snap, &cap, &cancel);
|
|
2780
|
+
assert_eq!(render_window(&work, &(0..1)).unwrap(), 1..1);
|
|
2795
2781
|
let req = request(json!({"kind":"user_text"}), json!([]));
|
|
2796
2782
|
assert!(
|
|
2797
2783
|
matches!(project(&snap,&req,&cap,&cancel,0),Err(error) if error.status==Status::OutputLimit)
|
|
2798
2784
|
);
|
|
2799
2785
|
}
|
|
2800
2786
|
|
|
2787
|
+
fn render_request(selectors: Value) -> Value {
|
|
2788
|
+
request(
|
|
2789
|
+
json!({"kind":"render","budget":{"turn_chars":100,"tool_chars":100},"tool_results":false}),
|
|
2790
|
+
selectors,
|
|
2791
|
+
)
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
fn long_turn(calls: usize, input_bytes: usize) -> Vec<Value> {
|
|
2795
|
+
std::iter::once(user("u", "start the long run"))
|
|
2796
|
+
.chain((0..calls).flat_map(|call| {
|
|
2797
|
+
let id = format!("bash-{call}");
|
|
2798
|
+
[
|
|
2799
|
+
tool(
|
|
2800
|
+
&format!("call-{call}"),
|
|
2801
|
+
&id,
|
|
2802
|
+
"Bash",
|
|
2803
|
+
json!({"command":format!("echo {call} {}", "x".repeat(input_bytes))}),
|
|
2804
|
+
),
|
|
2805
|
+
tool_result(&format!("result-{call}"), &id, format!("done {call}")),
|
|
2806
|
+
]
|
|
2807
|
+
}))
|
|
2808
|
+
.collect()
|
|
2809
|
+
}
|
|
2810
|
+
|
|
2811
|
+
#[test]
|
|
2812
|
+
fn render_inside_one_long_turn_charges_only_the_window() {
|
|
2813
|
+
let snap = snapshot(&long_turn(400, 2048));
|
|
2814
|
+
let count = snap.event_count;
|
|
2815
|
+
let cap = long_turn_limits();
|
|
2816
|
+
let mut whole_turn = OutputCounter {
|
|
2817
|
+
remaining: (cap.max_output_bytes - 64) / 16,
|
|
2818
|
+
};
|
|
2819
|
+
assert!((0..count).any(|index| {
|
|
2820
|
+
snapshot_codec::write_json(&mut whole_turn, snap.entry(index), cap.max_output_bytes)
|
|
2821
|
+
.is_err()
|
|
2822
|
+
}));
|
|
2823
|
+
let cancel = Cancellation::default();
|
|
2824
|
+
let request =
|
|
2825
|
+
render_request(json!([{"kind":"event_range","start":count - 6,"stop":count}]));
|
|
2826
|
+
let result = project(&snap, &request, &cap, &cancel, 0).unwrap();
|
|
2827
|
+
assert!(result.complete);
|
|
2828
|
+
let text = result.data["value"].as_str().unwrap();
|
|
2829
|
+
assert!(!text.contains("omitted"));
|
|
2830
|
+
assert!(text.contains("echo 397") && text.contains("echo 399"));
|
|
2831
|
+
assert!(!text.contains("echo 396"));
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
fn long_turn_limits() -> WorkLimits {
|
|
2835
|
+
WorkLimits {
|
|
2836
|
+
max_read_bytes: 64 * 1024 * 1024,
|
|
2837
|
+
max_events: 10_000,
|
|
2838
|
+
max_output_bytes: 2 * 1024 * 1024,
|
|
2839
|
+
..limits()
|
|
2840
|
+
}
|
|
2841
|
+
}
|
|
2842
|
+
|
|
2843
|
+
#[test]
|
|
2844
|
+
fn over_budget_render_keeps_the_newest_events_and_names_the_omission() {
|
|
2845
|
+
let snap = snapshot(&long_turn(400, 2048));
|
|
2846
|
+
let count = snap.event_count;
|
|
2847
|
+
let cap = long_turn_limits();
|
|
2848
|
+
let cancel = Cancellation::default();
|
|
2849
|
+
let work = Work::new(&snap, &cap, &cancel);
|
|
2850
|
+
let window = render_window(&work, &(0..count)).unwrap();
|
|
2851
|
+
assert_eq!(window.end, count);
|
|
2852
|
+
assert!(window.start > 1 && window.len() > 6);
|
|
2853
|
+
let result = project(&snap, &render_request(json!([])), &cap, &cancel, 0).unwrap();
|
|
2854
|
+
assert!(result.complete);
|
|
2855
|
+
let text = result.data["value"].as_str().unwrap();
|
|
2856
|
+
let marker = format!(
|
|
2857
|
+
"[{} earlier events omitted: over the render budget]\n\n",
|
|
2858
|
+
window.start
|
|
2859
|
+
);
|
|
2860
|
+
assert!(text.starts_with(&marker));
|
|
2861
|
+
assert!(text.contains("echo 399"));
|
|
2862
|
+
assert!(!text.contains("start the long run"));
|
|
2863
|
+
let single = snapshot(&[user("u", &"y".repeat(32768))]);
|
|
2864
|
+
let tiny = WorkLimits {
|
|
2865
|
+
max_output_bytes: 1024,
|
|
2866
|
+
..limits()
|
|
2867
|
+
};
|
|
2868
|
+
let result = project(&single, &render_request(json!([])), &tiny, &cancel, 0).unwrap();
|
|
2869
|
+
assert!(result.complete);
|
|
2870
|
+
assert_eq!(
|
|
2871
|
+
result.data["value"].as_str(),
|
|
2872
|
+
Some("[1 earlier events omitted: over the render budget]")
|
|
2873
|
+
);
|
|
2874
|
+
}
|
|
2875
|
+
|
|
2801
2876
|
#[test]
|
|
2802
2877
|
fn text_preflight_counts_escaping_and_keeps_unicode_prefixes() {
|
|
2803
2878
|
let parts = ["\n\t\u{0}", "\"\\😀"];
|
|
@@ -2902,7 +2977,7 @@ mod tests {
|
|
|
2902
2977
|
let all = run(
|
|
2903
2978
|
&snap,
|
|
2904
2979
|
&request(
|
|
2905
|
-
json!({"kind":"signal_texts","window":"current_turn","origin":"any"}),
|
|
2980
|
+
json!({"kind":"signal_texts","window":"current_turn","origin":"any","thinking":true}),
|
|
2906
2981
|
json!([]),
|
|
2907
2982
|
),
|
|
2908
2983
|
);
|
|
@@ -2927,7 +3002,7 @@ mod tests {
|
|
|
2927
3002
|
let last = run(
|
|
2928
3003
|
&snap,
|
|
2929
3004
|
&request(
|
|
2930
|
-
json!({"kind":"signal_texts","window":3,"origin":"assistant"}),
|
|
3005
|
+
json!({"kind":"signal_texts","window":3,"origin":"assistant","thinking":true}),
|
|
2931
3006
|
json!([]),
|
|
2932
3007
|
),
|
|
2933
3008
|
);
|
|
@@ -2938,6 +3013,29 @@ mod tests {
|
|
|
2938
3013
|
.map(|value| value.as_str().unwrap())
|
|
2939
3014
|
.collect();
|
|
2940
3015
|
assert_eq!(actual, ["finding failure", "second", "todo subject"]);
|
|
3016
|
+
let prose = run(
|
|
3017
|
+
&snap,
|
|
3018
|
+
&request(
|
|
3019
|
+
json!({"kind":"signal_texts","window":"current_turn","origin":"assistant","thinking":false}),
|
|
3020
|
+
json!([]),
|
|
3021
|
+
),
|
|
3022
|
+
);
|
|
3023
|
+
let actual: Vec<_> = prose.data["values"]
|
|
3024
|
+
.as_array()
|
|
3025
|
+
.unwrap()
|
|
3026
|
+
.iter()
|
|
3027
|
+
.map(|value| value.as_str().unwrap())
|
|
3028
|
+
.collect();
|
|
3029
|
+
assert_eq!(
|
|
3030
|
+
actual,
|
|
3031
|
+
[
|
|
3032
|
+
"visible",
|
|
3033
|
+
"task details",
|
|
3034
|
+
"finding failure",
|
|
3035
|
+
"second",
|
|
3036
|
+
"todo subject"
|
|
3037
|
+
]
|
|
3038
|
+
);
|
|
2941
3039
|
}
|
|
2942
3040
|
|
|
2943
3041
|
#[test]
|
|
@@ -2954,7 +3052,7 @@ mod tests {
|
|
|
2954
3052
|
let result = run(
|
|
2955
3053
|
&snap,
|
|
2956
3054
|
&request(
|
|
2957
|
-
json!({"kind":"signal_texts","window":10,"origin":"any"}),
|
|
3055
|
+
json!({"kind":"signal_texts","window":10,"origin":"any","thinking":true}),
|
|
2958
3056
|
json!([]),
|
|
2959
3057
|
),
|
|
2960
3058
|
);
|
|
@@ -2968,7 +3066,7 @@ mod tests {
|
|
|
2968
3066
|
let zero = run(
|
|
2969
3067
|
&snap,
|
|
2970
3068
|
&request(
|
|
2971
|
-
json!({"kind":"signal_texts","window":0,"origin":"any"}),
|
|
3069
|
+
json!({"kind":"signal_texts","window":0,"origin":"any","thinking":true}),
|
|
2972
3070
|
json!([]),
|
|
2973
3071
|
),
|
|
2974
3072
|
);
|
|
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.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/data/afinn-en-165.tsv
RENAMED
|
File without changes
|
{cc_transcript-14.32.0 → cc_transcript-14.33.0}/cc_transcript/sentiment/data/domain_overrides.tsv
RENAMED
|
File without changes
|