cc-transcript 14.29.0__tar.gz → 14.29.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.
Files changed (188) hide show
  1. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/PKG-INFO +1 -1
  2. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/pyproject.toml +1 -1
  3. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot.rs +118 -0
  4. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_activity.rs +17 -0
  5. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_prepared_disk.rs +434 -55
  6. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_prepared_service.rs +19 -2
  7. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_projection.rs +411 -28
  8. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/Cargo.lock +0 -0
  9. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/Cargo.toml +0 -0
  10. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/LICENSE +0 -0
  11. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/README.md +0 -0
  12. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/__init__.py +0 -0
  13. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/__init__.pyi +0 -0
  14. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/_native.pyi +0 -0
  15. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/activity.py +0 -0
  16. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/activity_probe.py +0 -0
  17. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/builders.py +0 -0
  18. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/codex.py +0 -0
  19. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/command.py +0 -0
  20. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/context.py +0 -0
  21. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/corrections.py +0 -0
  22. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/cost.py +0 -0
  23. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/decision_store.py +0 -0
  24. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/decisions.py +0 -0
  25. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/discovery.py +0 -0
  26. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/disktruth.py +0 -0
  27. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/evidence.py +0 -0
  28. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/extract/__init__.py +0 -0
  29. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/extract/correct.py +0 -0
  30. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/facts.py +0 -0
  31. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/filterspec.py +0 -0
  32. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/heartbeats.py +0 -0
  33. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/ids.py +0 -0
  34. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/judge/__init__.py +0 -0
  35. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/judge/llm.py +0 -0
  36. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/judge/similar.py +0 -0
  37. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/judge/verdicts.py +0 -0
  38. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/ledger.py +0 -0
  39. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/literals.py +0 -0
  40. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/__init__.py +0 -0
  41. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/candidates.py +0 -0
  42. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/confidence.py +0 -0
  43. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/engine.py +0 -0
  44. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/formats.py +0 -0
  45. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/sampling.py +0 -0
  46. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/signals.py +0 -0
  47. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/sourcekind.py +0 -0
  48. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/spec.py +0 -0
  49. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/mining/store.py +0 -0
  50. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/models.py +0 -0
  51. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/nlp.py +0 -0
  52. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/notifications.py +0 -0
  53. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/parser.py +0 -0
  54. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/py.typed +0 -0
  55. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/query.py +0 -0
  56. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/render.py +0 -0
  57. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/__init__.py +0 -0
  58. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/buckets.py +0 -0
  59. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  60. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  61. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  62. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/engine.py +0 -0
  63. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/lexicon.py +0 -0
  64. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/sentiment/scorespec.py +0 -0
  65. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
  66. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
  67. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshot_schema/request.schema.json +0 -0
  68. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
  69. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
  70. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/snapshots.py +0 -0
  71. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/synthetic.py +0 -0
  72. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/tools.py +0 -0
  73. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/cc_transcript/watch.py +0 -0
  74. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/Cargo.toml +0 -0
  75. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/blame.rs +0 -0
  76. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
  77. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
  78. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/digest.rs +0 -0
  79. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/facts.rs +0 -0
  80. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/grep.rs +0 -0
  81. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/list.rs +0 -0
  82. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/mod.rs +0 -0
  83. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  84. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/show.rs +0 -0
  85. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/slice.rs +0 -0
  86. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/stats.rs +0 -0
  87. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/commands/watch.rs +0 -0
  88. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/lib.rs +0 -0
  89. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/main.rs +0 -0
  90. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/output.rs +0 -0
  91. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/target.rs +0 -0
  92. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/cli/src/timearg.rs +0 -0
  93. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/Cargo.toml +0 -0
  94. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/benches/parse.rs +0 -0
  95. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/benches/render.rs +0 -0
  96. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/benches/toolcall.rs +0 -0
  97. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/activity.rs +0 -0
  98. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/actor.rs +0 -0
  99. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/blame.rs +0 -0
  100. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/buckets.rs +0 -0
  101. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/discovery.rs +0 -0
  102. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/lower.rs +0 -0
  103. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/mod.rs +0 -0
  104. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/parse.rs +0 -0
  105. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/probe.rs +0 -0
  106. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/protocol.rs +0 -0
  107. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/codex/types.rs +0 -0
  108. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/command.rs +0 -0
  109. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/context.rs +0 -0
  110. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/corrections.rs +0 -0
  111. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/cost.rs +0 -0
  112. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/discovery.rs +0 -0
  113. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/facts.rs +0 -0
  114. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/feedback.rs +0 -0
  115. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/filter.rs +0 -0
  116. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/gateway.rs +0 -0
  117. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/ids.rs +0 -0
  118. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/judge.rs +0 -0
  119. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/lib.rs +0 -0
  120. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/command.rs +0 -0
  121. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/corrections.rs +0 -0
  122. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/feedback.rs +0 -0
  123. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/mining.rs +0 -0
  124. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/mod.rs +0 -0
  125. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/literals/protocol.rs +0 -0
  126. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/notifications.rs +0 -0
  127. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/parse.rs +0 -0
  128. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/protocol.rs +0 -0
  129. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/pystr.rs +0 -0
  130. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/query.rs +0 -0
  131. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/render.rs +0 -0
  132. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/rng.rs +0 -0
  133. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/scan.rs +0 -0
  134. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/scan_grep.rs +0 -0
  135. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/scan_regressions.rs +0 -0
  136. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/schema.rs +0 -0
  137. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
  138. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
  139. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
  140. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
  141. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
  142. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
  143. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
  144. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
  145. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/snapshot_text.rs +0 -0
  146. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/sqlite.rs +0 -0
  147. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/toolcall.rs +0 -0
  148. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/types.rs +0 -0
  149. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/value.rs +0 -0
  150. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/core/src/watch.rs +0 -0
  151. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/Cargo.toml +0 -0
  152. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/build.rs +0 -0
  153. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  154. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/actor_bridge.rs +0 -0
  155. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
  156. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/codex.rs +0 -0
  157. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/command.rs +0 -0
  158. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/context.rs +0 -0
  159. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/corrections.rs +0 -0
  160. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/discovery.rs +0 -0
  161. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/feedback.rs +0 -0
  162. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/judge.rs +0 -0
  163. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/lexicon.rs +0 -0
  164. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/lib.rs +0 -0
  165. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/mining.rs +0 -0
  166. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/nlp.rs +0 -0
  167. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/python.rs +0 -0
  168. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/render.rs +0 -0
  169. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/score.rs +0 -0
  170. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
  171. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/snapshots.rs +0 -0
  172. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/sqlite.rs +0 -0
  173. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/toolcall.rs +0 -0
  174. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/attachment.rs +0 -0
  175. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/blocks.rs +0 -0
  176. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/command.rs +0 -0
  177. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/convert.rs +0 -0
  178. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/dunder.rs +0 -0
  179. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/events.rs +0 -0
  180. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/meta.rs +0 -0
  181. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/mod.rs +0 -0
  182. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/print.rs +0 -0
  183. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/store.rs +0 -0
  184. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/system.rs +0 -0
  185. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/toolcall.rs +0 -0
  186. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/toolresult.rs +0 -0
  187. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/views/transcript.rs +0 -0
  188. {cc_transcript-14.29.0 → cc_transcript-14.29.1}/rust/crates/py/src/watch.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cc-transcript
3
- Version: 14.29.0
3
+ Version: 14.29.1
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cc-transcript"
3
- version = "14.29.0" # informational — releases stamp the version from the git tag
3
+ version = "14.29.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"
@@ -8245,6 +8245,124 @@ mod tests {
8245
8245
  assert_eq!(shared["usage"]["source_bytes_read"].as_u64(), Some(0));
8246
8246
  }
8247
8247
 
8248
+ #[test]
8249
+ fn sidechain_disk_fact_hits_are_promoted_into_memory() {
8250
+ let source = Source::new(&format!("{}\n", user("root")));
8251
+ let sidechain = source.directory.join("side.jsonl");
8252
+ std::fs::write(&sidechain, format!("{}\n", user("side"))).unwrap();
8253
+ let store = NativeStore::new(&json!({"max_read_bytes_per_step":8192,"max_entry_bytes":128*1024,"max_retained_bytes":32*1024*1024,"reserved_hook_accounted_bytes":4096,"max_leases":16,"reserved_hook_leases":1})).unwrap();
8254
+ let owner = context("a");
8255
+ let root = finish(
8256
+ &store,
8257
+ store.request(&acquire(&source.path), &owner, &Cancellation::default()),
8258
+ &owner,
8259
+ );
8260
+ let template = acquire(&source.path);
8261
+ let graph = finish_prepared(
8262
+ &store,
8263
+ store.request(&json!({"schema":SCHEMA,"id":"prepare","operation":"prepare_graph","view":{"handle":handle(&root),"classifier":{"id":"native","version":"1"},"selectors":[],"attachments":[]},"thread_ids":[],"roots":[],"direct_paths":[sidechain.to_string_lossy().as_ref()],"deadline_unix_ms":template["deadline_unix_ms"],"limits":template["limits"]}), &owner, &Cancellation::default()),
8264
+ &owner,
8265
+ );
8266
+ assert_eq!(graph["status"].as_str(), Some("ok"), "{graph:?}");
8267
+ let query = json!({"schema":SCHEMA,"id":"query","operation":"query_graph","handle":graph["data"]["handle"],"selectors":[],"query":{"kind":"has_tool","pattern":"Missing","subagents":true},"deadline_unix_ms":template["deadline_unix_ms"],"limits":template["limits"]});
8268
+ let first = finish_prepared(
8269
+ &store,
8270
+ store.request(&query, &owner, &Cancellation::default()),
8271
+ &owner,
8272
+ );
8273
+ assert_eq!(first["data"]["value"].as_bool(), Some(false), "{first:?}");
8274
+ let identity = SourceStamp::of(&std::fs::metadata(&sidechain).unwrap()).identity;
8275
+ store
8276
+ .state
8277
+ .lock()
8278
+ .unwrap()
8279
+ .prepared_facts
8280
+ .remove(&identity)
8281
+ .unwrap();
8282
+ let writes = store.prepared_disk.stats().writes;
8283
+ let before = store.state.lock().unwrap().counters;
8284
+ let from_disk = finish_prepared(
8285
+ &store,
8286
+ store.request(&query, &owner, &Cancellation::default()),
8287
+ &owner,
8288
+ );
8289
+ assert_eq!(
8290
+ from_disk["data"]["value"].as_bool(),
8291
+ Some(false),
8292
+ "{from_disk:?}"
8293
+ );
8294
+ assert_eq!(store.state.lock().unwrap().counters[1], before[1]);
8295
+ assert_eq!(store.prepared_disk.stats().writes, writes);
8296
+ assert!(store
8297
+ .state
8298
+ .lock()
8299
+ .unwrap()
8300
+ .prepared_facts
8301
+ .contains_key(&identity));
8302
+ }
8303
+
8304
+ #[test]
8305
+ fn oversize_disk_fact_hits_leave_memory_facts_cached() {
8306
+ let source = Source::new(&format!("{}\n", user("root")));
8307
+ let small = source.directory.join("small.jsonl");
8308
+ std::fs::write(&small, format!("{}\n", user("side"))).unwrap();
8309
+ let large = source.directory.join("large.jsonl");
8310
+ std::fs::write(&large, format!("{}\n", format!(r#"{{"type":"user","uuid":"large","sessionId":"s","timestamp":"2026-01-02T03:04:05Z","message":{{"content":"{}"}}}}"#, "x".repeat(64 * 1024)))).unwrap();
8311
+ let store = NativeStore::new(&json!({"max_read_bytes_per_step":8192,"max_entry_bytes":128*1024,"max_retained_bytes":32*1024*1024,"max_prepared_fact_memory_bytes":32*1024,"reserved_hook_accounted_bytes":4096,"max_leases":16,"reserved_hook_leases":1})).unwrap();
8312
+ let owner = context("a");
8313
+ let template = acquire(&source.path);
8314
+ let graph = |path: &std::path::Path| {
8315
+ let root = finish(
8316
+ &store,
8317
+ store.request(&acquire(&source.path), &owner, &Cancellation::default()),
8318
+ &owner,
8319
+ );
8320
+ let graph = finish_prepared(
8321
+ &store,
8322
+ store.request(&json!({"schema":SCHEMA,"id":"prepare","operation":"prepare_graph","view":{"handle":handle(&root),"classifier":{"id":"native","version":"1"},"selectors":[],"attachments":[]},"thread_ids":[],"roots":[],"direct_paths":[path.to_string_lossy().as_ref()],"deadline_unix_ms":template["deadline_unix_ms"],"limits":template["limits"]}), &owner, &Cancellation::default()),
8323
+ &owner,
8324
+ );
8325
+ assert_eq!(graph["status"].as_str(), Some("ok"), "{graph:?}");
8326
+ json!({"schema":SCHEMA,"id":"query","operation":"query_graph","handle":graph["data"]["handle"],"selectors":[],"query":{"kind":"has_tool","pattern":"Missing","subagents":true},"deadline_unix_ms":template["deadline_unix_ms"],"limits":template["limits"]})
8327
+ };
8328
+ let ask = |query: &Value| {
8329
+ let result = finish_prepared(
8330
+ &store,
8331
+ store.request(query, &owner, &Cancellation::default()),
8332
+ &owner,
8333
+ );
8334
+ assert_eq!(result["data"]["value"].as_bool(), Some(false), "{result:?}");
8335
+ };
8336
+ let identity =
8337
+ |path: &std::path::Path| SourceStamp::of(&std::fs::metadata(path).unwrap()).identity;
8338
+ let large_query = graph(&large);
8339
+ ask(&large_query);
8340
+ ask(&graph(&small));
8341
+ assert!(!store
8342
+ .state
8343
+ .lock()
8344
+ .unwrap()
8345
+ .prepared_facts
8346
+ .contains_key(&identity(&large)));
8347
+ assert!(store
8348
+ .state
8349
+ .lock()
8350
+ .unwrap()
8351
+ .prepared_facts
8352
+ .contains_key(&identity(&small)));
8353
+ let writes = store.prepared_disk.stats().writes;
8354
+ let before = store.state.lock().unwrap().counters;
8355
+ ask(&large_query);
8356
+ assert_eq!(store.state.lock().unwrap().counters[1], before[1]);
8357
+ assert_eq!(store.prepared_disk.stats().writes, writes);
8358
+ assert!(store
8359
+ .state
8360
+ .lock()
8361
+ .unwrap()
8362
+ .prepared_facts
8363
+ .contains_key(&identity(&small)));
8364
+ }
8365
+
8248
8366
  #[test]
8249
8367
  fn registered_warmer_advances_a_forty_megabyte_source_in_eight_megabyte_steps() {
8250
8368
  let source = Source::new(&format!("{}\n", user("root")));
@@ -268,6 +268,23 @@ impl ActivityIndex {
268
268
  .filter_map(|call| self.results.get(&call.id).map(|position| position.event))
269
269
  }
270
270
 
271
+ pub fn call_events(
272
+ &self,
273
+ index: usize,
274
+ ) -> impl Iterator<Item = (&str, usize, Option<usize>)> + '_ {
275
+ self.turns
276
+ .get(index)
277
+ .into_iter()
278
+ .flat_map(|turn| turn.calls.iter())
279
+ .map(|call| {
280
+ (
281
+ call.call.name(),
282
+ call.event,
283
+ self.results.get(&call.id).map(|position| position.event),
284
+ )
285
+ })
286
+ }
287
+
271
288
  pub fn project_turn_with<'a>(
272
289
  &self,
273
290
  index: usize,