cc-transcript 14.1.0__tar.gz → 14.2.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.
Files changed (147) hide show
  1. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/PKG-INFO +1 -1
  2. cc_transcript-14.2.0/cc_transcript/__init__.py +257 -0
  3. cc_transcript-14.2.0/cc_transcript/__init__.pyi +465 -0
  4. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/_native.pyi +123 -108
  5. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/activity.py +58 -53
  6. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/command.py +0 -11
  7. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/extract/correct.py +1 -1
  8. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/filterspec.py +0 -47
  9. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/heartbeats.py +4 -20
  10. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/judge/__init__.py +0 -1
  11. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/judge/similar.py +55 -73
  12. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/judge/verdicts.py +10 -296
  13. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/ledger.py +12 -8
  14. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/literals.py +0 -6
  15. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/__init__.py +9 -15
  16. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/spec.py +7 -100
  17. cc_transcript-14.2.0/cc_transcript/mining/store.py +489 -0
  18. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/models.py +0 -37
  19. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/query.py +0 -5
  20. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/render.py +14 -55
  21. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/tools.py +0 -58
  22. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/pyproject.toml +1 -2
  23. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/Cargo.toml +5 -4
  24. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/activity.rs +223 -18
  25. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/command.rs +51 -5
  26. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/context.rs +3 -1
  27. cc_transcript-14.2.0/rust/crates/core/src/corrections.rs +382 -0
  28. cc_transcript-14.2.0/rust/crates/core/src/feedback.rs +1155 -0
  29. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/lib.rs +4 -0
  30. cc_transcript-14.2.0/rust/crates/core/src/literals/feedback.rs +13 -0
  31. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/literals/mod.rs +1 -0
  32. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/notifications.rs +0 -8
  33. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/query.rs +2 -11
  34. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/render.rs +1 -1
  35. cc_transcript-14.2.0/rust/crates/core/src/sqlite.rs +578 -0
  36. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/toolcall.rs +3 -3
  37. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/types.rs +1 -1
  38. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/value.rs +0 -15
  39. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/bin/stub_gen.rs +6 -0
  40. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/corrections.rs +5 -94
  41. cc_transcript-14.2.0/rust/crates/py/src/feedback.rs +321 -0
  42. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/lib.rs +2 -0
  43. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/python.rs +61 -93
  44. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/render.rs +54 -1
  45. cc_transcript-14.2.0/rust/crates/py/src/sqlite.rs +159 -0
  46. cc_transcript-14.2.0/rust/crates/py/src/toolcall.rs +25 -0
  47. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/blocks.rs +2 -2
  48. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/command.rs +1 -0
  49. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/toolcall.rs +4 -3
  50. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/toolresult.rs +1 -2
  51. cc_transcript-14.1.0/cc_transcript/__init__.py +0 -857
  52. cc_transcript-14.1.0/cc_transcript/mining/filterspec.py +0 -116
  53. cc_transcript-14.1.0/cc_transcript/mining/store.py +0 -200
  54. cc_transcript-14.1.0/cc_transcript/store.py +0 -155
  55. cc_transcript-14.1.0/rust/crates/core/src/corrections.rs +0 -774
  56. cc_transcript-14.1.0/rust/crates/py/src/toolcall.rs +0 -316
  57. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/Cargo.lock +0 -0
  58. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/Cargo.toml +0 -0
  59. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/LICENSE +0 -0
  60. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/README.md +0 -0
  61. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/activity_probe.py +0 -0
  62. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/builders.py +0 -0
  63. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/context.py +0 -0
  64. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/corrections.py +0 -0
  65. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/cost.py +0 -0
  66. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/decisions.py +0 -0
  67. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/discovery.py +0 -0
  68. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/disktruth.py +0 -0
  69. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/evidence.py +0 -0
  70. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/extract/__init__.py +0 -0
  71. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/facts.py +0 -0
  72. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/ids.py +0 -0
  73. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/judge/llm.py +0 -0
  74. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/candidates.py +0 -0
  75. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/confidence.py +0 -0
  76. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/engine.py +0 -0
  77. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/formats.py +0 -0
  78. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/sampling.py +0 -0
  79. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/signals.py +0 -0
  80. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/mining/sourcekind.py +0 -0
  81. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/nlp.py +0 -0
  82. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/notifications.py +0 -0
  83. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/parser.py +0 -0
  84. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/py.typed +0 -0
  85. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/__init__.py +0 -0
  86. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/buckets.py +0 -0
  87. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  88. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  89. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  90. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/engine.py +0 -0
  91. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/lexicon.py +0 -0
  92. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/sentiment/scorespec.py +0 -0
  93. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/cc_transcript/watch.py +0 -0
  94. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/Cargo.toml +0 -0
  95. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/corrections.rs +0 -0
  96. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/digest.rs +0 -0
  97. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/facts.rs +0 -0
  98. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/grep.rs +0 -0
  99. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/list.rs +0 -0
  100. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/mod.rs +0 -0
  101. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  102. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/show.rs +0 -0
  103. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/slice.rs +0 -0
  104. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/stats.rs +0 -0
  105. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/commands/watch.rs +0 -0
  106. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/lib.rs +0 -0
  107. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/main.rs +0 -0
  108. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/output.rs +0 -0
  109. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/cli/src/target.rs +0 -0
  110. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/benches/parse.rs +0 -0
  111. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/benches/render.rs +0 -0
  112. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/benches/toolcall.rs +0 -0
  113. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/buckets.rs +0 -0
  114. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/cost.rs +0 -0
  115. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/discovery.rs +0 -0
  116. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/facts.rs +0 -0
  117. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/filter.rs +0 -0
  118. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/ids.rs +0 -0
  119. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/literals/command.rs +0 -0
  120. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/literals/corrections.rs +0 -0
  121. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/literals/mining.rs +0 -0
  122. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/literals/protocol.rs +0 -0
  123. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/parse.rs +0 -0
  124. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/protocol.rs +0 -0
  125. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/pystr.rs +0 -0
  126. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/core/src/watch.rs +0 -0
  127. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/Cargo.toml +0 -0
  128. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/build.rs +0 -0
  129. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  130. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/command.rs +0 -0
  131. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/context.rs +0 -0
  132. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/discovery.rs +0 -0
  133. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/lexicon.rs +0 -0
  134. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/mining.rs +0 -0
  135. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/nlp.rs +0 -0
  136. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/score.rs +0 -0
  137. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/attachment.rs +0 -0
  138. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/convert.rs +0 -0
  139. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/dunder.rs +0 -0
  140. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/events.rs +0 -0
  141. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/meta.rs +0 -0
  142. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/mod.rs +0 -0
  143. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/print.rs +0 -0
  144. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/store.rs +0 -0
  145. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/system.rs +0 -0
  146. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/views/transcript.rs +0 -0
  147. {cc_transcript-14.1.0 → cc_transcript-14.2.0}/rust/crates/py/src/watch.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cc-transcript
3
- Version: 14.1.0
3
+ Version: 14.2.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -0,0 +1,257 @@
1
+ """The cc-family session-activity platform.
2
+
3
+ One spine: parse Claude Code transcript JSONL into typed events, lift them
4
+ into a :class:`~cc_transcript.activity.SessionActivity` of turns, tool calls,
5
+ and edits — and every higher capability (context windows, evidence harvest,
6
+ queries, the decision ledger, LLM judging) is a pure function or thin store
7
+ over that spine.
8
+
9
+ Parsing is native: :func:`parse` turns one source into a
10
+ :class:`~cc_transcript.models.Transcript` view and :func:`stream` fans a batch
11
+ of paths across the native parse pool, with ``drop`` specs applied before any
12
+ Python object materializes.
13
+
14
+ The package root is lazy (PEP 562): importing ``cc_transcript.ids`` pulls the
15
+ standard library only, so a hook's digest-only hot path pays nothing for the
16
+ parser extension or any heavy dependency.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from importlib import import_module
22
+
23
+ EXPORTS: dict[str, str] = {
24
+ name: module
25
+ for module, names in {
26
+ "cc_transcript.ids": (
27
+ "EventRef",
28
+ "EventUuid",
29
+ "SessionId",
30
+ "ToolDigest",
31
+ "ToolUseId",
32
+ "canonical_json",
33
+ "tool_digest",
34
+ ),
35
+ "cc_transcript.tools": (
36
+ "TOOL_ALIASES",
37
+ "AskUserQuestionResult",
38
+ "BashCall",
39
+ "BashResult",
40
+ "EditCall",
41
+ "EditResult",
42
+ "EditSpan",
43
+ "ExitPlanModeCall",
44
+ "GlobCall",
45
+ "GrepCall",
46
+ "Hunk",
47
+ "MultiEditCall",
48
+ "NotebookEditCall",
49
+ "OtherCall",
50
+ "OtherResult",
51
+ "QuestionAnnotation",
52
+ "ReadCall",
53
+ "ReadResult",
54
+ "SkillCall",
55
+ "SkillResult",
56
+ "TaskCall",
57
+ "TaskCreateCall",
58
+ "TaskLaunchResult",
59
+ "TaskResult",
60
+ "TaskUpdateCall",
61
+ "TextResult",
62
+ "ToolCall",
63
+ "ToolCallBase",
64
+ "ToolInputError",
65
+ "ToolResult",
66
+ "ToolResultBase",
67
+ "ToolResultError",
68
+ "WorkflowCall",
69
+ "WriteCall",
70
+ "WriteResult",
71
+ "expand_tool_names",
72
+ "file_path_of",
73
+ "hunks_of",
74
+ "matches_names",
75
+ "mcp_access",
76
+ "mcp_parts",
77
+ "parse_tool_call",
78
+ "parse_tool_result",
79
+ "tool_name_matches",
80
+ ),
81
+ "cc_transcript.command": (
82
+ "Command",
83
+ "CommandLine",
84
+ "CommandLineQuery",
85
+ "Occurrence",
86
+ "Redirect",
87
+ "command_prefixes",
88
+ "parse_command_line",
89
+ ),
90
+ "cc_transcript.models": (
91
+ "ApiError",
92
+ "AssistantEvent",
93
+ "AsyncHookResponse",
94
+ "AttachmentDetail",
95
+ "AttachmentEvent",
96
+ "Attribution",
97
+ "CacheCreation",
98
+ "CcVersion",
99
+ "CompactBoundary",
100
+ "ContentBlock",
101
+ "EntryMeta",
102
+ "EventList",
103
+ "FallbackBlock",
104
+ "HookAdditionalContext",
105
+ "HookBlockingError",
106
+ "HookCancelled",
107
+ "HookInfo",
108
+ "HookNonBlockingError",
109
+ "HookSuccess",
110
+ "InitInfo",
111
+ "McpServer",
112
+ "ModelRefusalFallback",
113
+ "ModeEvent",
114
+ "ModelUsage",
115
+ "OtherAttachment",
116
+ "OtherBlock",
117
+ "OtherEvent",
118
+ "OtherSystemDetail",
119
+ "Plugin",
120
+ "PreservedMessages",
121
+ "PreservedSegment",
122
+ "PrintMessage",
123
+ "PrintResult",
124
+ "Question",
125
+ "QueuedCommand",
126
+ "ServerToolUse",
127
+ "StopHookSummary",
128
+ "SystemDetail",
129
+ "SystemEvent",
130
+ "TextBlock",
131
+ "ThinkingBlock",
132
+ "ToolResultBlock",
133
+ "ToolUseBlock",
134
+ "Transcript",
135
+ "TranscriptEvent",
136
+ "TurnDuration",
137
+ "Usage",
138
+ "UserEvent",
139
+ "thinking_chars",
140
+ "tool_uses",
141
+ ),
142
+ "cc_transcript.parser": (
143
+ "parse",
144
+ "parse_event",
145
+ "parse_events_from_bytes",
146
+ "parse_print_result",
147
+ "stream",
148
+ ),
149
+ "cc_transcript.cost": (
150
+ "PRICING",
151
+ "CostBreakdown",
152
+ "ModelPricing",
153
+ "cost_of",
154
+ "cost_of_assistant",
155
+ "resolve_pricing",
156
+ ),
157
+ "cc_transcript.discovery": (
158
+ "CLAUDE_PROJECTS_DIR",
159
+ "TranscriptExpiredError",
160
+ "discover",
161
+ "find_in",
162
+ "resolve",
163
+ "subagent_paths",
164
+ ),
165
+ "cc_transcript.activity": (
166
+ "Edit",
167
+ "SessionActivity",
168
+ "ToolUse",
169
+ "Turn",
170
+ "UserClassifier",
171
+ "hunk_overlap",
172
+ "native_user_classifier",
173
+ "result_index",
174
+ ),
175
+ "cc_transcript.facts": (
176
+ "ToolFact",
177
+ "command_prefix_counts",
178
+ "mcp_summary",
179
+ "tool_facts",
180
+ ),
181
+ "cc_transcript.evidence": (
182
+ "CandidatePair",
183
+ "GitFix",
184
+ "git_corrections",
185
+ "harvest_pairs",
186
+ "match_corrections",
187
+ "record_harvest",
188
+ ),
189
+ "cc_transcript.corrections": (
190
+ "CORRECTIONS_DDL",
191
+ "Correction",
192
+ "CorrectionLog",
193
+ "Origin",
194
+ ),
195
+ "cc_transcript.context": (
196
+ "ContextWindow",
197
+ "Fidelity",
198
+ "HydratedWindow",
199
+ "SchemaError",
200
+ "TurnRef",
201
+ "capture_window",
202
+ ),
203
+ "cc_transcript.render": ("Budget", "render_session", "render_tool_call", "render_turn"),
204
+ "cc_transcript.notifications": ("Notifications",),
205
+ "cc_transcript.query": ("FileRef", "Session", "SubagentIndex", "SubagentSession", "ToolCallQuery"),
206
+ "cc_transcript.decisions": ("DECISIONS_DDL", "Action", "Decision", "DecisionLog"),
207
+ "cc_transcript.disktruth": (
208
+ "AttributionRange",
209
+ "DiskTruth",
210
+ "FileAttribution",
211
+ "TreeTurn",
212
+ "export_activity",
213
+ "load_export",
214
+ ),
215
+ "cc_transcript.filterspec": (
216
+ "ASSISTANTS",
217
+ "JUNK_USER_MESSAGE_RE",
218
+ "RESUME_PHRASE_SET",
219
+ "STRUCTURAL_NOISE_RE",
220
+ "TRIVIAL_ACK_SET",
221
+ "USERS",
222
+ "FilterSpec",
223
+ "annotate_spec",
224
+ "apply_spec",
225
+ "keep",
226
+ "labels_for",
227
+ ),
228
+ "cc_transcript.builders": (
229
+ "NOISE_SPEC",
230
+ "build_spec",
231
+ "drop_compacted",
232
+ "drop_empty",
233
+ "drop_entrypoints",
234
+ "drop_junk",
235
+ "drop_meta_flag",
236
+ "drop_phrases",
237
+ "drop_short",
238
+ "drop_sidechain",
239
+ "drop_synthetic",
240
+ "keep_only",
241
+ ),
242
+ "cc_transcript.watch": ("WatchEvent", "Watcher"),
243
+ }.items()
244
+ for name in names
245
+ }
246
+
247
+ __all__ = sorted(EXPORTS)
248
+
249
+
250
+ def __getattr__(name: str) -> object:
251
+ if module := EXPORTS.get(name):
252
+ return getattr(import_module(module), name)
253
+ raise AttributeError(f"module 'cc_transcript' has no attribute {name!r}")
254
+
255
+
256
+ def __dir__() -> list[str]:
257
+ return sorted(EXPORTS)