cc-transcript 14.16.0__tar.gz → 14.16.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.16.0 → cc_transcript-14.16.1}/PKG-INFO +1 -1
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/query.py +56 -22
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/pyproject.toml +1 -1
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/Cargo.lock +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/Cargo.toml +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/LICENSE +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/README.md +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/__init__.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/__init__.pyi +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/_native.pyi +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/activity.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/activity_probe.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/builders.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/codex.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/command.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/context.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/corrections.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/cost.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/decision_store.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/decisions.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/discovery.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/disktruth.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/evidence.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/extract/__init__.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/extract/correct.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/facts.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/filterspec.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/heartbeats.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/ids.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/judge/__init__.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/judge/llm.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/judge/similar.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/judge/verdicts.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/ledger.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/literals.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/__init__.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/candidates.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/confidence.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/engine.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/formats.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/sampling.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/signals.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/sourcekind.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/spec.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/mining/store.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/models.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/nlp.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/notifications.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/parser.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/py.typed +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/render.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/__init__.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/buckets.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/engine.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/lexicon.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/scorespec.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/synthetic.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/tools.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/watch.py +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/Cargo.toml +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/blame.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/digest.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/facts.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/grep.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/list.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/mod.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/show.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/slice.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/stats.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/commands/watch.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/lib.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/main.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/output.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/target.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/cli/src/timearg.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/Cargo.toml +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/benches/parse.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/benches/render.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/benches/toolcall.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/activity.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/actor.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/blame.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/buckets.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/discovery.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/lower.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/mod.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/parse.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/probe.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/protocol.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/codex/types.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/command.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/context.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/corrections.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/cost.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/discovery.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/facts.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/feedback.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/filter.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/gateway.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/ids.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/judge.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/lib.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/command.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/corrections.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/feedback.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/mining.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/mod.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/literals/protocol.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/notifications.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/parse.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/protocol.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/pystr.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/query.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/render.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/rng.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/schema.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/sqlite.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/toolcall.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/types.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/value.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/core/src/watch.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/Cargo.toml +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/build.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/actor_bridge.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/codex.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/command.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/context.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/corrections.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/discovery.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/feedback.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/judge.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/lexicon.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/lib.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/mining.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/nlp.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/python.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/render.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/score.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/sqlite.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/toolcall.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/attachment.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/blocks.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/command.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/convert.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/dunder.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/events.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/meta.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/mod.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/print.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/store.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/system.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/toolcall.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/toolresult.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/views/transcript.rs +0 -0
- {cc_transcript-14.16.0 → cc_transcript-14.16.1}/rust/crates/py/src/watch.rs +0 -0
|
@@ -12,8 +12,9 @@ from __future__ import annotations
|
|
|
12
12
|
|
|
13
13
|
import re
|
|
14
14
|
import threading
|
|
15
|
+
from collections import OrderedDict
|
|
15
16
|
from collections.abc import Mapping
|
|
16
|
-
from dataclasses import dataclass
|
|
17
|
+
from dataclasses import dataclass, field
|
|
17
18
|
from fnmatch import fnmatch
|
|
18
19
|
from functools import cached_property
|
|
19
20
|
from pathlib import PurePath
|
|
@@ -47,29 +48,62 @@ if TYPE_CHECKING:
|
|
|
47
48
|
from cc_transcript.models import TranscriptEvent
|
|
48
49
|
|
|
49
50
|
|
|
50
|
-
DEEP_LIFT_BUDGET =
|
|
51
|
+
DEEP_LIFT_BUDGET = 1024 * 1024 * 1024
|
|
51
52
|
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
type LiftStamp = tuple[int, int, int]
|
|
54
|
+
type LiftKey = tuple[Path, int, ToolUseId | None]
|
|
54
55
|
|
|
55
|
-
:meth:`Session.walk` re-reads every node of a tree in the same order, so evicting the
|
|
56
|
-
least-recently-used entry thrashes on any tree larger than the cache — each walk drops
|
|
57
|
-
exactly what the next one asks for first. Admission stops at :data:`DEEP_LIFT_BUDGET`
|
|
58
|
-
source bytes instead: what is held stays held, and a tree that outgrows the budget
|
|
59
|
-
reparses only its tail. A sidechain that grew replaces its own entry, budget or not.
|
|
60
|
-
"""
|
|
61
56
|
|
|
62
|
-
|
|
57
|
+
@dataclass(slots=True)
|
|
58
|
+
class LiftCache:
|
|
59
|
+
held: OrderedDict[LiftKey, tuple[LiftStamp, DeepSession]] = field(default_factory=OrderedDict)
|
|
60
|
+
size: int = 0
|
|
61
|
+
guard: threading.Lock = field(default_factory=threading.Lock)
|
|
62
|
+
|
|
63
|
+
def get(self, key: LiftKey, stamp: LiftStamp) -> DeepSession | None:
|
|
64
|
+
with self.guard:
|
|
65
|
+
match self.held.get(key):
|
|
66
|
+
case None:
|
|
67
|
+
return None
|
|
68
|
+
case (held_stamp, deep) if held_stamp == stamp:
|
|
69
|
+
self.held.move_to_end(key)
|
|
70
|
+
return deep
|
|
71
|
+
case _:
|
|
72
|
+
self.drop(key)
|
|
73
|
+
return None
|
|
74
|
+
|
|
75
|
+
def put(self, key: LiftKey, stamp: LiftStamp, deep: DeepSession) -> DeepSession:
|
|
76
|
+
with self.guard:
|
|
77
|
+
self.drop(key)
|
|
78
|
+
self.held[key] = (stamp, deep)
|
|
79
|
+
self.size += stamp[0]
|
|
80
|
+
while self.size > DEEP_LIFT_BUDGET:
|
|
81
|
+
self.drop(next(iter(self.held)))
|
|
82
|
+
return deep
|
|
83
|
+
|
|
84
|
+
def drop(self, key: LiftKey) -> None:
|
|
85
|
+
if (held := self.held.pop(key, None)) is not None:
|
|
86
|
+
self.size -= held[0][0]
|
|
87
|
+
|
|
88
|
+
def clear(self) -> None:
|
|
89
|
+
with self.guard:
|
|
90
|
+
self.held.clear()
|
|
91
|
+
self.size = 0
|
|
92
|
+
|
|
93
|
+
def __len__(self) -> int:
|
|
94
|
+
return len(self.held)
|
|
63
95
|
|
|
64
|
-
type LiftStamp = tuple[int, int]
|
|
65
|
-
type LiftKey = tuple[Path, int, ToolUseId | None]
|
|
66
96
|
|
|
97
|
+
DEEP_LIFTS = LiftCache()
|
|
98
|
+
"""Lifted sidechain transcripts, keyed by tree position and stamped with the file's ``(size, mtime_ns, inode)``.
|
|
67
99
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
100
|
+
A least-recently-used hold bounded at :data:`DEEP_LIFT_BUDGET` source bytes. One resident
|
|
101
|
+
process serves many lead sessions, so the tree walked most recently stays held while an
|
|
102
|
+
idle lead's sidechains age out; a changed stamp drops the stale lift and releases its
|
|
103
|
+
bytes. A lifted session costs about 2.3 times its source bytes in resident memory, so the
|
|
104
|
+
default holds roughly 2.3 GiB. A single tree larger than the budget reparses the part that
|
|
105
|
+
no longer fits on every walk.
|
|
106
|
+
"""
|
|
73
107
|
|
|
74
108
|
|
|
75
109
|
def is_failure(use: ToolUse) -> bool:
|
|
@@ -719,11 +753,11 @@ def load_deep_session(path: Path, depth: int, spawned_by: ToolUseId | None) -> D
|
|
|
719
753
|
stat = path.stat()
|
|
720
754
|
except OSError:
|
|
721
755
|
return None
|
|
722
|
-
stamp = (stat.st_size, stat.st_mtime_ns)
|
|
756
|
+
stamp = (stat.st_size, stat.st_mtime_ns, stat.st_ino)
|
|
723
757
|
key = (path, depth, spawned_by)
|
|
724
|
-
if (held := DEEP_LIFTS.get(key)) is not None
|
|
725
|
-
return held
|
|
758
|
+
if (held := DEEP_LIFTS.get(key, stamp)) is not None:
|
|
759
|
+
return held
|
|
726
760
|
try:
|
|
727
|
-
return
|
|
761
|
+
return DEEP_LIFTS.put(key, stamp, lift_deep_session(path, depth, spawned_by))
|
|
728
762
|
except OSError:
|
|
729
763
|
return None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cc-transcript"
|
|
3
|
-
version = "14.16.
|
|
3
|
+
version = "14.16.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"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/data/afinn-en-165.tsv
RENAMED
|
File without changes
|
{cc_transcript-14.16.0 → cc_transcript-14.16.1}/cc_transcript/sentiment/data/domain_overrides.tsv
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cc_transcript-14.16.0 → cc_transcript-14.16.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|