cc-transcript 14.32.1__tar.gz → 14.33.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.32.1 → cc_transcript-14.33.1}/PKG-INFO +1 -1
  2. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshot_schema/request.schema.json +6 -1
  3. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/pyproject.toml +1 -1
  4. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot.rs +58 -3
  5. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_projection.rs +34 -7
  6. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/toolcall.rs +39 -19
  7. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/Cargo.lock +0 -0
  8. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/Cargo.toml +0 -0
  9. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/LICENSE +0 -0
  10. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/README.md +0 -0
  11. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/__init__.py +0 -0
  12. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/__init__.pyi +0 -0
  13. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/_native.pyi +0 -0
  14. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/activity.py +0 -0
  15. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/activity_probe.py +0 -0
  16. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/builders.py +0 -0
  17. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/codex.py +0 -0
  18. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/command.py +0 -0
  19. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/context.py +0 -0
  20. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/corrections.py +0 -0
  21. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/cost.py +0 -0
  22. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/decision_store.py +0 -0
  23. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/decisions.py +0 -0
  24. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/discovery.py +0 -0
  25. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/disktruth.py +0 -0
  26. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/evidence.py +0 -0
  27. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/extract/__init__.py +0 -0
  28. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/extract/correct.py +0 -0
  29. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/facts.py +0 -0
  30. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/filterspec.py +0 -0
  31. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/heartbeats.py +0 -0
  32. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/ids.py +0 -0
  33. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/judge/__init__.py +0 -0
  34. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/judge/llm.py +0 -0
  35. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/judge/similar.py +0 -0
  36. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/judge/verdicts.py +0 -0
  37. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/ledger.py +0 -0
  38. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/literals.py +0 -0
  39. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/__init__.py +0 -0
  40. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/candidates.py +0 -0
  41. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/confidence.py +0 -0
  42. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/engine.py +0 -0
  43. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/formats.py +0 -0
  44. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/sampling.py +0 -0
  45. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/signals.py +0 -0
  46. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/sourcekind.py +0 -0
  47. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/spec.py +0 -0
  48. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/mining/store.py +0 -0
  49. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/models.py +0 -0
  50. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/nlp.py +0 -0
  51. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/notifications.py +0 -0
  52. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/parser.py +0 -0
  53. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/py.typed +0 -0
  54. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/query.py +0 -0
  55. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/render.py +0 -0
  56. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/__init__.py +0 -0
  57. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/buckets.py +0 -0
  58. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  59. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  60. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  61. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/engine.py +0 -0
  62. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/lexicon.py +0 -0
  63. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/sentiment/scorespec.py +0 -0
  64. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
  65. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
  66. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
  67. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
  68. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/snapshots.py +0 -0
  69. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/synthetic.py +0 -0
  70. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/tools.py +0 -0
  71. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/cc_transcript/watch.py +0 -0
  72. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/Cargo.toml +0 -0
  73. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/blame.rs +0 -0
  74. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
  75. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
  76. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/digest.rs +0 -0
  77. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/facts.rs +0 -0
  78. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/grep.rs +0 -0
  79. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/list.rs +0 -0
  80. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/mod.rs +0 -0
  81. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  82. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/show.rs +0 -0
  83. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/slice.rs +0 -0
  84. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/stats.rs +0 -0
  85. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/commands/watch.rs +0 -0
  86. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/lib.rs +0 -0
  87. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/main.rs +0 -0
  88. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/output.rs +0 -0
  89. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/target.rs +0 -0
  90. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/cli/src/timearg.rs +0 -0
  91. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/Cargo.toml +0 -0
  92. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/benches/parse.rs +0 -0
  93. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/benches/render.rs +0 -0
  94. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/benches/toolcall.rs +0 -0
  95. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/activity.rs +0 -0
  96. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/actor.rs +0 -0
  97. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/blame.rs +0 -0
  98. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/buckets.rs +0 -0
  99. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/discovery.rs +0 -0
  100. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/lower.rs +0 -0
  101. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/mod.rs +0 -0
  102. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/parse.rs +0 -0
  103. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/probe.rs +0 -0
  104. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/protocol.rs +0 -0
  105. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/codex/types.rs +0 -0
  106. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/command.rs +0 -0
  107. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/context.rs +0 -0
  108. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/corrections.rs +0 -0
  109. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/cost.rs +0 -0
  110. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/discovery.rs +0 -0
  111. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/facts.rs +0 -0
  112. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/feedback.rs +0 -0
  113. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/filter.rs +0 -0
  114. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/gateway.rs +0 -0
  115. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/ids.rs +0 -0
  116. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/judge.rs +0 -0
  117. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/lib.rs +0 -0
  118. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/command.rs +0 -0
  119. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/corrections.rs +0 -0
  120. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/feedback.rs +0 -0
  121. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/mining.rs +0 -0
  122. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/mod.rs +0 -0
  123. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/literals/protocol.rs +0 -0
  124. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/notifications.rs +0 -0
  125. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/parse.rs +0 -0
  126. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/protocol.rs +0 -0
  127. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/pystr.rs +0 -0
  128. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/query.rs +0 -0
  129. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/render.rs +0 -0
  130. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/rng.rs +0 -0
  131. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/scan.rs +0 -0
  132. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/scan_grep.rs +0 -0
  133. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/scan_regressions.rs +0 -0
  134. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/schema.rs +0 -0
  135. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_activity.rs +0 -0
  136. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
  137. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
  138. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
  139. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
  140. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
  141. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
  142. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
  143. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
  144. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
  145. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
  146. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/snapshot_text.rs +0 -0
  147. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/sqlite.rs +0 -0
  148. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/types.rs +0 -0
  149. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/value.rs +0 -0
  150. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/core/src/watch.rs +0 -0
  151. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/Cargo.toml +0 -0
  152. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/build.rs +0 -0
  153. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  154. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/actor_bridge.rs +0 -0
  155. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
  156. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/codex.rs +0 -0
  157. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/command.rs +0 -0
  158. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/context.rs +0 -0
  159. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/corrections.rs +0 -0
  160. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/discovery.rs +0 -0
  161. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/feedback.rs +0 -0
  162. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/judge.rs +0 -0
  163. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/lexicon.rs +0 -0
  164. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/lib.rs +0 -0
  165. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/mining.rs +0 -0
  166. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/nlp.rs +0 -0
  167. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/python.rs +0 -0
  168. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/render.rs +0 -0
  169. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/score.rs +0 -0
  170. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
  171. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/snapshots.rs +0 -0
  172. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/sqlite.rs +0 -0
  173. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/toolcall.rs +0 -0
  174. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/attachment.rs +0 -0
  175. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/blocks.rs +0 -0
  176. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/command.rs +0 -0
  177. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/convert.rs +0 -0
  178. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/dunder.rs +0 -0
  179. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/events.rs +0 -0
  180. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/meta.rs +0 -0
  181. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/mod.rs +0 -0
  182. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/print.rs +0 -0
  183. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/store.rs +0 -0
  184. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/system.rs +0 -0
  185. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/toolcall.rs +0 -0
  186. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/toolresult.rs +0 -0
  187. {cc_transcript-14.32.1 → cc_transcript-14.33.1}/rust/crates/py/src/views/transcript.rs +0 -0
  188. {cc_transcript-14.32.1 → cc_transcript-14.33.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.32.1
3
+ Version: 14.33.1
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -2006,6 +2006,10 @@
2006
2006
  "title": "Origin",
2007
2007
  "type": "string"
2008
2008
  },
2009
+ "thinking": {
2010
+ "title": "Thinking",
2011
+ "type": "boolean"
2012
+ },
2009
2013
  "window": {
2010
2014
  "anyOf": [
2011
2015
  {
@@ -2024,7 +2028,8 @@
2024
2028
  "required": [
2025
2029
  "kind",
2026
2030
  "window",
2027
- "origin"
2031
+ "origin",
2032
+ "thinking"
2028
2033
  ],
2029
2034
  "title": "SignalTexts",
2030
2035
  "type": "object"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cc-transcript"
3
- version = "14.32.1" # informational — releases stamp the version from the git tag
3
+ version = "14.33.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"
@@ -1325,14 +1325,24 @@ impl NativeStore {
1325
1325
  context: &Value,
1326
1326
  ) -> Result<String, SnapshotError> {
1327
1327
  self.authority(context, None)?;
1328
+ let definitions =
1329
+ crate::toolcall::ToolRegistrySnapshot::specs_from_json(specs).map_err(invalid)?;
1330
+ let fingerprint = crate::toolcall::ToolRegistrySnapshot::fingerprint_of(&definitions);
1331
+ if self
1332
+ .state
1333
+ .lock()
1334
+ .expect("snapshot state")
1335
+ .registries
1336
+ .contains_key(&fingerprint)
1337
+ {
1338
+ return Ok(fingerprint);
1339
+ }
1328
1340
  let charge = crate::snapshot_memory::value_charge(specs);
1329
1341
  let reserve = (charge.owned_capacity_bytes + charge.opaque_dom_accounted_bytes)
1330
1342
  .saturating_mul(4)
1331
1343
  .saturating_add(64 * 1024);
1332
1344
  let mut reservation = self.reserve_projection(context, reserve)?;
1333
- let registry =
1334
- crate::toolcall::ToolRegistrySnapshot::from_specs_json(specs).map_err(invalid)?;
1335
- let fingerprint = registry.fingerprint().to_owned();
1345
+ let registry = crate::toolcall::ToolRegistrySnapshot::from_specs(definitions);
1336
1346
  let allocations = registry.accounted_allocations();
1337
1347
  let bytes = allocations.iter().map(|(_, bytes)| *bytes).sum::<usize>()
1338
1348
  + allocations.capacity() * size_of::<(usize, usize)>()
@@ -11384,4 +11394,49 @@ mod tests {
11384
11394
  ));
11385
11395
  assert_eq!(state.transient_bytes, 0);
11386
11396
  }
11397
+
11398
+ #[test]
11399
+ fn reregistering_an_interned_registry_reserves_nothing() {
11400
+ let store = NativeStore::new(
11401
+ &json!({"max_retained_bytes":8*1024*1024,"reserved_hook_accounted_bytes":8*1024*1024}),
11402
+ )
11403
+ .unwrap();
11404
+ let hook = context("owner");
11405
+ let mut review = hook.clone();
11406
+ review.insert("admission", json!("review"));
11407
+ let other_uid = json!({"claimant":"owner","admission":"hook","authority":{"kind":"user","effective_uid":"0"},"registry_generation":hook["registry_generation"]});
11408
+ let specs = json!([{"name":"fetch","behaves_like":"Read","span_edit":null}]);
11409
+ let reordered = json!([{"span_edit":null,"behaves_like":"Read","name":"fetch"}]);
11410
+ let fingerprint = store.register_tool_registry(&specs, &hook).unwrap();
11411
+ let registered = store.state.lock().unwrap().registries.len();
11412
+ let first = Arc::clone(&store.state.lock().unwrap().registries[&fingerprint].snapshot);
11413
+ assert_eq!(
11414
+ store.register_tool_registry(&reordered, &review).unwrap(),
11415
+ fingerprint
11416
+ );
11417
+ assert_eq!(
11418
+ store
11419
+ .register_tool_registry(&specs, &other_uid)
11420
+ .unwrap_err()
11421
+ .status,
11422
+ Status::PermissionDenied
11423
+ );
11424
+ assert_eq!(
11425
+ store
11426
+ .register_tool_registry(
11427
+ &json!([{"name":"","behaves_like":"Read","span_edit":null}]),
11428
+ &hook
11429
+ )
11430
+ .unwrap_err()
11431
+ .status,
11432
+ Status::InvalidRequest
11433
+ );
11434
+ let state = store.state.lock().unwrap();
11435
+ assert_eq!(state.registries.len(), registered);
11436
+ assert!(Arc::ptr_eq(
11437
+ &first,
11438
+ &state.registries[&fingerprint].snapshot
11439
+ ));
11440
+ assert_eq!(state.transient_bytes, 0);
11441
+ }
11387
11442
  }
@@ -1160,6 +1160,7 @@ fn signal_event<'a>(
1160
1160
  work: &mut Work<'a, '_>,
1161
1161
  index: usize,
1162
1162
  origin: &str,
1163
+ thinking: bool,
1163
1164
  ) -> Result<Vec<Vec<&'a str>>, SnapshotError> {
1164
1165
  work.charge_range(index..index + 1)?;
1165
1166
  let event = work.snapshot.entry(index);
@@ -1193,7 +1194,7 @@ fn signal_event<'a>(
1193
1194
  for (ordinal, block) in event.blocks().iter().enumerate() {
1194
1195
  work.cancel.check(work.limits.deadline_unix_ms)?;
1195
1196
  match block {
1196
- ContentBlock::Thinking(text) if !text.is_empty() => plans.push(vec![text]),
1197
+ ContentBlock::Thinking(text) if thinking && !text.is_empty() => plans.push(vec![text]),
1197
1198
  ContentBlock::ToolUse(tool) => {
1198
1199
  let call = work
1199
1200
  .snapshot
@@ -1258,6 +1259,9 @@ fn signal_query(
1258
1259
  if !["any", "assistant"].contains(&origin) {
1259
1260
  return Err(invalid("invalid signal origin"));
1260
1261
  }
1262
+ let thinking = field(query, "thinking")?
1263
+ .as_bool()
1264
+ .ok_or_else(|| invalid("thinking must be boolean"))?;
1261
1265
  let window = field(query, "window")?;
1262
1266
  let mut plans = Vec::new();
1263
1267
  if window.as_str() == Some("current_turn") {
@@ -1272,7 +1276,7 @@ fn signal_query(
1272
1276
  .max(work.snapshot.activity.turn_bounds(turn).unwrap().start);
1273
1277
  }
1274
1278
  for index in range {
1275
- plans.extend(signal_event(work, index, origin)?);
1279
+ plans.extend(signal_event(work, index, origin, thinking)?);
1276
1280
  }
1277
1281
  } else {
1278
1282
  let count = count(query, "window")?;
@@ -1282,7 +1286,7 @@ fn signal_query(
1282
1286
  if length >= count {
1283
1287
  break;
1284
1288
  }
1285
- let texts = signal_event(work, index, origin)?;
1289
+ let texts = signal_event(work, index, origin, thinking)?;
1286
1290
  length += texts.len();
1287
1291
  events.push(texts);
1288
1292
  }
@@ -2973,7 +2977,7 @@ mod tests {
2973
2977
  let all = run(
2974
2978
  &snap,
2975
2979
  &request(
2976
- json!({"kind":"signal_texts","window":"current_turn","origin":"any"}),
2980
+ json!({"kind":"signal_texts","window":"current_turn","origin":"any","thinking":true}),
2977
2981
  json!([]),
2978
2982
  ),
2979
2983
  );
@@ -2998,7 +3002,7 @@ mod tests {
2998
3002
  let last = run(
2999
3003
  &snap,
3000
3004
  &request(
3001
- json!({"kind":"signal_texts","window":3,"origin":"assistant"}),
3005
+ json!({"kind":"signal_texts","window":3,"origin":"assistant","thinking":true}),
3002
3006
  json!([]),
3003
3007
  ),
3004
3008
  );
@@ -3009,6 +3013,29 @@ mod tests {
3009
3013
  .map(|value| value.as_str().unwrap())
3010
3014
  .collect();
3011
3015
  assert_eq!(actual, ["finding failure", "second", "todo subject"]);
3016
+ let prose = run(
3017
+ &snap,
3018
+ &request(
3019
+ json!({"kind":"signal_texts","window":"current_turn","origin":"assistant","thinking":false}),
3020
+ json!([]),
3021
+ ),
3022
+ );
3023
+ let actual: Vec<_> = prose.data["values"]
3024
+ .as_array()
3025
+ .unwrap()
3026
+ .iter()
3027
+ .map(|value| value.as_str().unwrap())
3028
+ .collect();
3029
+ assert_eq!(
3030
+ actual,
3031
+ [
3032
+ "visible",
3033
+ "task details",
3034
+ "finding failure",
3035
+ "second",
3036
+ "todo subject"
3037
+ ]
3038
+ );
3012
3039
  }
3013
3040
 
3014
3041
  #[test]
@@ -3025,7 +3052,7 @@ mod tests {
3025
3052
  let result = run(
3026
3053
  &snap,
3027
3054
  &request(
3028
- json!({"kind":"signal_texts","window":10,"origin":"any"}),
3055
+ json!({"kind":"signal_texts","window":10,"origin":"any","thinking":true}),
3029
3056
  json!([]),
3030
3057
  ),
3031
3058
  );
@@ -3039,7 +3066,7 @@ mod tests {
3039
3066
  let zero = run(
3040
3067
  &snap,
3041
3068
  &request(
3042
- json!({"kind":"signal_texts","window":0,"origin":"any"}),
3069
+ json!({"kind":"signal_texts","window":0,"origin":"any","thinking":true}),
3043
3070
  json!([]),
3044
3071
  ),
3045
3072
  );
@@ -127,15 +127,21 @@ pub struct ToolRegistrySnapshot {
127
127
 
128
128
  impl ToolRegistrySnapshot {
129
129
  pub fn from_specs(specs: HashMap<String, McpToolSpec>) -> Arc<Self> {
130
- let value = sonic_rs::to_value(&specs).expect("tool registry serialization");
130
+ let fingerprint = Self::fingerprint_of(&specs);
131
+ Arc::new(Self { specs, fingerprint })
132
+ }
133
+
134
+ pub fn fingerprint_of(specs: &HashMap<String, McpToolSpec>) -> String {
135
+ let value = sonic_rs::to_value(specs).expect("tool registry serialization");
131
136
  let canonical = crate::ids::canonical_json(&value).expect("tool registry canonicalization");
132
- Arc::new(Self {
133
- specs,
134
- fingerprint: format!("{:x}", Sha256::digest(canonical.as_bytes())),
135
- })
137
+ format!("{:x}", Sha256::digest(canonical.as_bytes()))
136
138
  }
137
139
 
138
140
  pub fn from_specs_json(value: &Value) -> Result<Arc<Self>, String> {
141
+ Ok(Self::from_specs(Self::specs_from_json(value)?))
142
+ }
143
+
144
+ pub fn specs_from_json(value: &Value) -> Result<HashMap<String, McpToolSpec>, String> {
139
145
  let definitions = value
140
146
  .as_array()
141
147
  .ok_or_else(|| "tool registry definitions must be a list".to_string())?;
@@ -163,20 +169,18 @@ impl ToolRegistrySnapshot {
163
169
  }
164
170
  let definitions: Vec<ToolRegistryDefinition> =
165
171
  sonic_rs::from_value(value).map_err(|error| error.to_string())?;
166
- Ok(Self::from_specs(
167
- definitions
168
- .into_iter()
169
- .map(|definition| {
170
- (
171
- definition.name,
172
- McpToolSpec {
173
- behaves_like: definition.behaves_like,
174
- span_edit: definition.span_edit,
175
- },
176
- )
177
- })
178
- .collect(),
179
- ))
172
+ Ok(definitions
173
+ .into_iter()
174
+ .map(|definition| {
175
+ (
176
+ definition.name,
177
+ McpToolSpec {
178
+ behaves_like: definition.behaves_like,
179
+ span_edit: definition.span_edit,
180
+ },
181
+ )
182
+ })
183
+ .collect())
180
184
  }
181
185
 
182
186
  pub fn capture_scoped() -> Option<Arc<Self>> {
@@ -2396,6 +2400,22 @@ mod tests {
2396
2400
  assert_eq!(first.fingerprint(), reordered.fingerprint());
2397
2401
  assert_ne!(first.fingerprint(), changed.fingerprint());
2398
2402
  assert_eq!(first.fingerprint().len(), 64);
2403
+ for (raw, constructed) in [
2404
+ (
2405
+ r#"[{"name":"reader","behaves_like":"Read","span_edit":null},{"name":"writer","behaves_like":"Edit","span_edit":{"path":"file","content":"body","delete":null}}]"#,
2406
+ &first,
2407
+ ),
2408
+ (
2409
+ r#"[{"name":"reader","behaves_like":"Read","span_edit":null},{"name":"writer","behaves_like":"Edit","span_edit":{"path":"file","content":"changed","delete":null}}]"#,
2410
+ &changed,
2411
+ ),
2412
+ ] {
2413
+ let specs = ToolRegistrySnapshot::specs_from_json(&obj(raw)).unwrap();
2414
+ assert_eq!(
2415
+ ToolRegistrySnapshot::fingerprint_of(&specs),
2416
+ constructed.fingerprint()
2417
+ );
2418
+ }
2399
2419
  assert_eq!(
2400
2420
  ToolRegistrySnapshot::from_specs_json(&obj("[]"))
2401
2421
  .unwrap()
File without changes