cc-transcript 14.35.0__tar.gz → 14.36.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 (198) hide show
  1. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/PKG-INFO +1 -1
  2. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/config.schema.json +1 -0
  3. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/pyproject.toml +1 -1
  4. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/lower.rs +120 -9
  5. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/parse.rs +13 -3
  6. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/types.rs +3 -0
  7. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/lib.rs +1 -0
  8. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/parse.rs +742 -39
  9. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_grep.rs +1 -0
  10. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot.rs +6736 -2200
  11. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_activity.rs +601 -23
  12. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_codec.rs +114 -12
  13. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_codex_append.rs +15 -9
  14. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_labels.rs +151 -7
  15. cc_transcript-14.36.0/rust/crates/core/src/snapshot_ledger.rs +1286 -0
  16. cc_transcript-14.36.0/rust/crates/core/src/snapshot_ledger_tests.rs +13315 -0
  17. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_memory.rs +112 -0
  18. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_owned.rs +96 -18
  19. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared.rs +1 -1
  20. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared_disk.rs +361 -60
  21. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_prepared_service.rs +1076 -528
  22. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_projection.rs +153 -34
  23. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_root_warm.rs +14 -15
  24. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/toolcall.rs +33 -1
  25. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/types.rs +25 -10
  26. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/value.rs +17 -4
  27. cc_transcript-14.36.0/rust/crates/core/tests/sonic_arena_model.rs +242 -0
  28. cc_transcript-14.36.0/rust/crates/core/tests/std_allocation_model.rs +165 -0
  29. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/python.rs +2 -1
  30. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/render.rs +3 -1
  31. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/snapshot_decode.rs +7 -5
  32. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/blocks.rs +41 -2
  33. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/events.rs +2 -1
  34. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/store.rs +4 -3
  35. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/toolcall.rs +20 -7
  36. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/transcript.rs +4 -4
  37. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/watch.rs +2 -1
  38. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/Cargo.lock +0 -0
  39. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/Cargo.toml +0 -0
  40. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/LICENSE +0 -0
  41. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/README.md +0 -0
  42. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/__init__.py +0 -0
  43. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/__init__.pyi +0 -0
  44. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/_native.pyi +0 -0
  45. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/activity.py +0 -0
  46. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/activity_probe.py +0 -0
  47. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/builders.py +0 -0
  48. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/codex.py +0 -0
  49. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/command.py +0 -0
  50. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/context.py +0 -0
  51. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/corrections.py +0 -0
  52. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/cost.py +0 -0
  53. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/decision_store.py +0 -0
  54. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/decisions.py +0 -0
  55. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/discovery.py +0 -0
  56. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/disktruth.py +0 -0
  57. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/evidence.py +0 -0
  58. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/extract/__init__.py +0 -0
  59. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/extract/correct.py +0 -0
  60. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/facts.py +0 -0
  61. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/filterspec.py +0 -0
  62. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/heartbeats.py +0 -0
  63. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/ids.py +0 -0
  64. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/judge/__init__.py +0 -0
  65. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/judge/llm.py +0 -0
  66. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/judge/similar.py +0 -0
  67. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/judge/verdicts.py +0 -0
  68. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/ledger.py +0 -0
  69. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/literals.py +0 -0
  70. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/__init__.py +0 -0
  71. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/candidates.py +0 -0
  72. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/confidence.py +0 -0
  73. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/engine.py +0 -0
  74. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/formats.py +0 -0
  75. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/sampling.py +0 -0
  76. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/signals.py +0 -0
  77. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/sourcekind.py +0 -0
  78. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/spec.py +0 -0
  79. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/mining/store.py +0 -0
  80. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/models.py +0 -0
  81. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/nlp.py +0 -0
  82. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/notifications.py +0 -0
  83. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/parser.py +0 -0
  84. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/py.typed +0 -0
  85. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/query.py +0 -0
  86. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/render.py +0 -0
  87. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/__init__.py +0 -0
  88. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/buckets.py +0 -0
  89. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  90. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  91. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  92. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/engine.py +0 -0
  93. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/lexicon.py +0 -0
  94. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/sentiment/scorespec.py +0 -0
  95. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/context.schema.json +0 -0
  96. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/request.schema.json +0 -0
  97. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/response.schema.json +0 -0
  98. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
  99. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/snapshots.py +0 -0
  100. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/synthetic.py +0 -0
  101. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/tools.py +0 -0
  102. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/cc_transcript/watch.py +0 -0
  103. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/Cargo.toml +0 -0
  104. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/blame.rs +0 -0
  105. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/corpus.rs +0 -0
  106. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/corrections.rs +0 -0
  107. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/digest.rs +0 -0
  108. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/facts.rs +0 -0
  109. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/grep.rs +0 -0
  110. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/list.rs +0 -0
  111. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/mod.rs +0 -0
  112. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  113. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/show.rs +0 -0
  114. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/slice.rs +0 -0
  115. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/stats.rs +0 -0
  116. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/commands/watch.rs +0 -0
  117. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/lib.rs +0 -0
  118. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/main.rs +0 -0
  119. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/output.rs +0 -0
  120. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/target.rs +0 -0
  121. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/cli/src/timearg.rs +0 -0
  122. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/Cargo.toml +0 -0
  123. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/benches/parse.rs +0 -0
  124. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/benches/render.rs +0 -0
  125. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/benches/toolcall.rs +0 -0
  126. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/activity.rs +0 -0
  127. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/actor.rs +0 -0
  128. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/blame.rs +0 -0
  129. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/buckets.rs +0 -0
  130. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/discovery.rs +0 -0
  131. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/mod.rs +0 -0
  132. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/probe.rs +0 -0
  133. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/codex/protocol.rs +0 -0
  134. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/command.rs +0 -0
  135. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/context.rs +0 -0
  136. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/corrections.rs +0 -0
  137. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/cost.rs +0 -0
  138. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/discovery.rs +0 -0
  139. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/facts.rs +0 -0
  140. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/feedback.rs +0 -0
  141. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/filter.rs +0 -0
  142. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/gateway.rs +0 -0
  143. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/ids.rs +0 -0
  144. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/judge.rs +0 -0
  145. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/command.rs +0 -0
  146. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/corrections.rs +0 -0
  147. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/feedback.rs +0 -0
  148. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/mining.rs +0 -0
  149. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/mod.rs +0 -0
  150. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/literals/protocol.rs +0 -0
  151. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/notifications.rs +0 -0
  152. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/protocol.rs +0 -0
  153. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/pystr.rs +0 -0
  154. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/query.rs +0 -0
  155. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/render.rs +0 -0
  156. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/rng.rs +0 -0
  157. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan.rs +0 -0
  158. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_checkpoint.rs +0 -0
  159. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_grep_stream.rs +0 -0
  160. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_grep_stream_tests.rs +0 -0
  161. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_index.rs +0 -0
  162. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_projection.rs +0 -0
  163. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_regressions.rs +0 -0
  164. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/scan_stream.rs +0 -0
  165. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/schema.rs +0 -0
  166. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_regressions.rs +0 -0
  167. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/snapshot_text.rs +0 -0
  168. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/sqlite.rs +0 -0
  169. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/core/src/watch.rs +0 -0
  170. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/Cargo.toml +0 -0
  171. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/build.rs +0 -0
  172. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  173. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/actor_bridge.rs +0 -0
  174. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/bin/stub_gen.rs +0 -0
  175. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/codex.rs +0 -0
  176. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/command.rs +0 -0
  177. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/context.rs +0 -0
  178. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/corrections.rs +0 -0
  179. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/discovery.rs +0 -0
  180. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/feedback.rs +0 -0
  181. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/judge.rs +0 -0
  182. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/lexicon.rs +0 -0
  183. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/lib.rs +0 -0
  184. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/mining.rs +0 -0
  185. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/nlp.rs +0 -0
  186. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/score.rs +0 -0
  187. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/snapshots.rs +0 -0
  188. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/sqlite.rs +0 -0
  189. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/toolcall.rs +0 -0
  190. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/attachment.rs +0 -0
  191. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/command.rs +0 -0
  192. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/convert.rs +0 -0
  193. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/dunder.rs +0 -0
  194. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/meta.rs +0 -0
  195. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/mod.rs +0 -0
  196. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/print.rs +0 -0
  197. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/system.rs +0 -0
  198. {cc_transcript-14.35.0 → cc_transcript-14.36.0}/rust/crates/py/src/views/toolresult.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cc-transcript
3
- Version: 14.35.0
3
+ Version: 14.36.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -81,6 +81,7 @@
81
81
  },
82
82
  "max_retained_bytes": {
83
83
  "default": 1073741824,
84
+ "description": "Hard cap on retained accounted bytes. It must be at least the store's startup footprint (the pre-sized delivery and expired-query tables plus the default tool registries); a smaller value is rejected as an invalid configuration. Background admissions are capped at max_retained_bytes - reserved_hook_accounted_bytes, so a footprint above that difference refuses every background admission while foreground hook admissions proceed.",
84
85
  "exclusiveMinimum": 0,
85
86
  "maximum": 9007199254740991,
86
87
  "title": "Max Retained Bytes",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cc-transcript"
3
- version = "14.35.0" # informational — releases stamp the version from the git tag
3
+ version = "14.36.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"
@@ -9,6 +9,7 @@ use crate::codex::types::{
9
9
  CodexEntry, CodexItem, CodexSession, EventMsg, ResponseItem, ResponseItemPayload,
10
10
  };
11
11
  use crate::pystr;
12
+ use crate::snapshot_memory::{pins_arena, SourceArena};
12
13
  use crate::types::{
13
14
  AssistantEntry, ContentBlock, Entry, EntryMeta, OtherEntry, ToolResultBlock, ToolUseBlock,
14
15
  UserContent, UserEntry,
@@ -547,15 +548,17 @@ fn payload_tag(payload: &ResponseItemPayload) -> &str {
547
548
  }
548
549
 
549
550
  fn payload_raw(payload: &ResponseItemPayload) -> Value {
551
+ payload_dom(payload).cloned().unwrap_or_default()
552
+ }
553
+
554
+ fn payload_dom(payload: &ResponseItemPayload) -> Option<&Value> {
550
555
  use ResponseItemPayload as R;
551
556
  match payload {
552
- R::ToolSearchCall { arguments, .. } => arguments.clone(),
553
- R::LocalShellCall { action, .. } | R::WebSearchCall { action, .. } => {
554
- action.clone().unwrap_or_default()
555
- }
556
- R::GhostSnapshot(v) => v.clone(),
557
- R::Other { raw, .. } => raw.clone(),
558
- _ => Value::default(),
557
+ R::ToolSearchCall { arguments, .. } => Some(arguments),
558
+ R::LocalShellCall { action, .. } | R::WebSearchCall { action, .. } => action.as_ref(),
559
+ R::GhostSnapshot(v) => Some(v),
560
+ R::Other { raw, .. } => Some(raw),
561
+ _ => None,
559
562
  }
560
563
  }
561
564
 
@@ -592,6 +595,10 @@ fn event_tag(em: &EventMsg) -> &str {
592
595
  }
593
596
 
594
597
  fn event_raw(em: &EventMsg) -> Value {
598
+ event_dom(em).cloned().unwrap_or_default()
599
+ }
600
+
601
+ fn event_dom(em: &EventMsg) -> Option<&Value> {
595
602
  use EventMsg as E;
596
603
  match em {
597
604
  E::ExecCommandEnd(v)
@@ -607,11 +614,75 @@ fn event_raw(em: &EventMsg) -> Value {
607
614
  | E::CollabAgentSpawnEnd(v)
608
615
  | E::CollabWaitingEnd(v)
609
616
  | E::CollabCloseEnd(v)
610
- | E::Other { raw: v, .. } => v.clone(),
611
- _ => Value::default(),
617
+ | E::Other { raw: v, .. } => Some(v),
618
+ _ => None,
619
+ }
620
+ }
621
+
622
+ pub(crate) fn line_dom(item: &CodexItem) -> Option<&Value> {
623
+ use ResponseItemPayload as R;
624
+ match item {
625
+ CodexItem::SessionMeta(m) => Some(&m.raw),
626
+ CodexItem::TurnContext(v) => Some(v),
627
+ CodexItem::WorldState(w) => Some(&w.state),
628
+ CodexItem::ResponseItem(ri) => match &ri.payload {
629
+ R::FunctionCallOutput { output, .. } | R::CustomToolCallOutput { output, .. } => {
630
+ Some(output)
631
+ }
632
+ payload => payload_dom(payload),
633
+ },
634
+ CodexItem::EventMsg(em) => event_dom(em),
635
+ CodexItem::Compacted(_)
636
+ | CodexItem::InterAgentCommunicationMetadata { .. }
637
+ | CodexItem::Other(_) => None,
638
+ }
639
+ }
640
+
641
+ fn retains_line(entry: &Entry) -> bool {
642
+ match entry {
643
+ Entry::Other(other) => pins_arena(&other.raw),
644
+ _ => entry
645
+ .tool_results()
646
+ .any(|result| result.tool_use_result.as_ref().is_some_and(pins_arena)),
647
+ }
648
+ }
649
+
650
+ fn lowered_arenas(source: &CodexEntry, entry: &Entry) -> Vec<SourceArena> {
651
+ match (&source.item, entry) {
652
+ (CodexItem::Other(other), Entry::Other(lowered)) => pins_arena(&lowered.raw)
653
+ .then(|| SourceArena {
654
+ root: lowered.raw.clone(),
655
+ source_len: other.raw.len(),
656
+ })
657
+ .into_iter()
658
+ .collect(),
659
+ _ => source
660
+ .source
661
+ .iter()
662
+ .filter(|_| retains_line(entry))
663
+ .cloned()
664
+ .collect(),
612
665
  }
613
666
  }
614
667
 
668
+ pub(crate) fn session_arenas(
669
+ session: &CodexSession,
670
+ entries: &[Entry],
671
+ ) -> Vec<(usize, SourceArena)> {
672
+ assert_eq!(session.entries.len(), entries.len());
673
+ session
674
+ .entries
675
+ .iter()
676
+ .zip(entries)
677
+ .enumerate()
678
+ .flat_map(|(index, (source, entry))| {
679
+ lowered_arenas(source, entry)
680
+ .into_iter()
681
+ .map(move |arena| (index, arena))
682
+ })
683
+ .collect()
684
+ }
685
+
615
686
  #[cfg(test)]
616
687
  mod tests {
617
688
  use std::collections::HashSet;
@@ -1339,4 +1410,44 @@ mod tests {
1339
1410
  "050b lifted turns must expose the interrupted user entry"
1340
1411
  );
1341
1412
  }
1413
+
1414
+ #[test]
1415
+ fn lowered_entries_record_the_arenas_they_keep() {
1416
+ let lines = [
1417
+ r#"{"timestamp":"2026-07-19T00:00:00Z","type":"response_item","payload":{"type":"function_call_output","call_id":"c","output":{"stdout":"x"}}}"#,
1418
+ r#"{"timestamp":"2026-07-19T00:00:01Z","type":"response_item","payload":{"type":"function_call","call_id":"c","name":"exec","arguments":"{}"}}"#,
1419
+ r#"{"timestamp":"2026-07-19T00:00:02Z","type":"event_msg","payload":{"type":"task_started","turn_id":"t"}}"#,
1420
+ r#"{"timestamp":"2026-07-19T00:00:03Z","type":"turn_context","payload":{"cwd":"/w","model":"m"}}"#,
1421
+ r#"{"timestamp":"2026-07-19T00:00:04Z","type":"mystery","payload":{"k":1}}"#,
1422
+ r#"{"timestamp":"2026-07-19T00:00:05Z","type":"response_item","payload":{"type":"function_call_output","call_id":"d","output":"plain"}}"#,
1423
+ ];
1424
+ let session = parse_codex_bytes(lines.join("\n").as_bytes());
1425
+ let entries = lower(&session).entries;
1426
+ assert_eq!(
1427
+ session
1428
+ .entries
1429
+ .iter()
1430
+ .map(|entry| entry.source.as_ref().map(|source| source.source_len))
1431
+ .collect::<Vec<_>>(),
1432
+ [
1433
+ Some(lines[0].len()),
1434
+ None,
1435
+ None,
1436
+ Some(lines[3].len()),
1437
+ None,
1438
+ Some(lines[5].len())
1439
+ ]
1440
+ );
1441
+ assert_eq!(
1442
+ session_arenas(&session, &entries)
1443
+ .iter()
1444
+ .map(|(entry, arena)| (*entry, arena.source_len))
1445
+ .collect::<Vec<_>>(),
1446
+ [
1447
+ (0, lines[0].len()),
1448
+ (3, lines[3].len()),
1449
+ (4, lines[4].len())
1450
+ ]
1451
+ );
1452
+ }
1342
1453
  }
@@ -1,12 +1,14 @@
1
1
  use memchr::memchr_iter;
2
2
  use sonic_rs::{JsonContainerTrait, JsonValueTrait, Value};
3
3
 
4
+ use crate::codex::lower::line_dom;
4
5
  use crate::codex::types::{
5
6
  CodexEntry, CodexItem, CodexOther, CodexSession, Compacted, EventMsg, ResponseItem,
6
7
  ResponseItemPayload, SessionMeta, TokenUsage, TokenUsageInfo, WorldState,
7
8
  };
8
9
  use crate::parse::parse_timestamp;
9
- use crate::value::{field, field_str, normalize_last_wins};
10
+ use crate::snapshot_memory::{pins_arena, SourceArena};
11
+ use crate::value::{deduplicated, field, field_str};
10
12
 
11
13
  const AVG_CODEX_LINE_BYTES: usize = 700;
12
14
 
@@ -65,14 +67,21 @@ fn parse_codex_line(line: &[u8], line_index: usize, entries: &mut Vec<CodexEntry
65
67
  return;
66
68
  }
67
69
  match sonic_rs::from_slice::<Value>(line) {
68
- Ok(mut value) => {
69
- normalize_last_wins(&mut value);
70
+ Ok(parsed) => {
71
+ let (value, source_len) = deduplicated(&parsed).unwrap_or_else(|| (parsed, line.len()));
70
72
  let timestamp = field_str(&value, "timestamp").and_then(|s| parse_timestamp(s).ok());
71
73
  let item = parse_codex_item(&value, line);
74
+ let source = line_dom(&item)
75
+ .is_some_and(pins_arena)
76
+ .then(|| SourceArena {
77
+ root: value,
78
+ source_len,
79
+ });
72
80
  entries.push(CodexEntry {
73
81
  line_index,
74
82
  timestamp,
75
83
  item,
84
+ source,
76
85
  });
77
86
  }
78
87
  Err(_) => entries.push(CodexEntry {
@@ -82,6 +91,7 @@ fn parse_codex_line(line: &[u8], line_index: usize, entries: &mut Vec<CodexEntry
82
91
  ty: None,
83
92
  raw: String::from_utf8_lossy(line).into_owned(),
84
93
  }),
94
+ source: None,
85
95
  }),
86
96
  }
87
97
  }
@@ -1,11 +1,14 @@
1
1
  use chrono::{DateTime, FixedOffset};
2
2
  use sonic_rs::Value;
3
3
 
4
+ use crate::snapshot_memory::SourceArena;
5
+
4
6
  #[derive(Debug)]
5
7
  pub struct CodexEntry {
6
8
  pub line_index: usize,
7
9
  pub timestamp: Option<DateTime<FixedOffset>>,
8
10
  pub item: CodexItem,
11
+ pub source: Option<SourceArena>,
9
12
  }
10
13
 
11
14
  #[derive(Debug)]
@@ -40,6 +40,7 @@ pub mod snapshot;
40
40
  pub mod snapshot_activity;
41
41
  pub mod snapshot_codec;
42
42
  pub mod snapshot_labels;
43
+ pub mod snapshot_ledger;
43
44
  pub mod snapshot_memory;
44
45
  pub mod snapshot_owned;
45
46
  pub mod snapshot_prepared;