cc-transcript 14.40.0__tar.gz → 14.40.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 (197) hide show
  1. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/PKG-INFO +1 -1
  2. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/pyproject.toml +1 -1
  3. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/command.rs +163 -3
  4. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/Cargo.lock +0 -0
  5. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/Cargo.toml +0 -0
  6. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/LICENSE +0 -0
  7. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/README.md +0 -0
  8. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/__init__.py +0 -0
  9. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/__init__.pyi +0 -0
  10. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/_native.pyi +0 -0
  11. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/activity.py +0 -0
  12. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/activity_probe.py +0 -0
  13. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/builders.py +0 -0
  14. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/codex.py +0 -0
  15. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/command.py +0 -0
  16. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/context.py +0 -0
  17. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/corrections.py +0 -0
  18. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/cost.py +0 -0
  19. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/decision_store.py +0 -0
  20. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/decisions.py +0 -0
  21. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/discovery.py +0 -0
  22. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/disktruth.py +0 -0
  23. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/evidence.py +0 -0
  24. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/extract/__init__.py +0 -0
  25. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/extract/correct.py +0 -0
  26. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/facts.py +0 -0
  27. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/filterspec.py +0 -0
  28. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/heartbeats.py +0 -0
  29. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/ids.py +0 -0
  30. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/__init__.py +0 -0
  31. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/llm.py +0 -0
  32. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/similar.py +0 -0
  33. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/judge/verdicts.py +0 -0
  34. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/ledger.py +0 -0
  35. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/literals.py +0 -0
  36. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/__init__.py +0 -0
  37. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/candidates.py +0 -0
  38. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/confidence.py +0 -0
  39. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/engine.py +0 -0
  40. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/formats.py +0 -0
  41. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/sampling.py +0 -0
  42. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/signals.py +0 -0
  43. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/sourcekind.py +0 -0
  44. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/spec.py +0 -0
  45. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/mining/store.py +0 -0
  46. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/models.py +0 -0
  47. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/nlp.py +0 -0
  48. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/notifications.py +0 -0
  49. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/parser.py +0 -0
  50. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/py.typed +0 -0
  51. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/query.py +0 -0
  52. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/render.py +0 -0
  53. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/__init__.py +0 -0
  54. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/buckets.py +0 -0
  55. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  56. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  57. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  58. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/engine.py +0 -0
  59. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/lexicon.py +0 -0
  60. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/sentiment/scorespec.py +0 -0
  61. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/config.schema.json +0 -0
  62. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/context.schema.json +0 -0
  63. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/request.schema.json +0 -0
  64. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/response.schema.json +0 -0
  65. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshot_schema/tool_registry.schema.json +0 -0
  66. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/snapshots.py +0 -0
  67. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/synthetic.py +0 -0
  68. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/tools.py +0 -0
  69. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/cc_transcript/watch.py +0 -0
  70. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/Cargo.toml +0 -0
  71. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/blame.rs +0 -0
  72. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/corpus.rs +0 -0
  73. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/corrections.rs +0 -0
  74. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/digest.rs +0 -0
  75. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/facts.rs +0 -0
  76. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/grep.rs +0 -0
  77. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/list.rs +0 -0
  78. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/mod.rs +0 -0
  79. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  80. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/show.rs +0 -0
  81. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/slice.rs +0 -0
  82. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/stats.rs +0 -0
  83. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/commands/watch.rs +0 -0
  84. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/lib.rs +0 -0
  85. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/output.rs +0 -0
  86. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/target.rs +0 -0
  87. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/cli/src/timearg.rs +0 -0
  88. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/Cargo.toml +0 -0
  89. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/parse.rs +0 -0
  90. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/render.rs +0 -0
  91. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/benches/toolcall.rs +0 -0
  92. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/activity.rs +0 -0
  93. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/actor.rs +0 -0
  94. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/blame.rs +0 -0
  95. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/buckets.rs +0 -0
  96. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/discovery.rs +0 -0
  97. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/lower.rs +0 -0
  98. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/mod.rs +0 -0
  99. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/parse.rs +0 -0
  100. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/probe.rs +0 -0
  101. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/protocol.rs +0 -0
  102. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/codex/types.rs +0 -0
  103. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/context.rs +0 -0
  104. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/corrections.rs +0 -0
  105. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/cost.rs +0 -0
  106. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/discovery.rs +0 -0
  107. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/facts.rs +0 -0
  108. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/feedback.rs +0 -0
  109. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/filter.rs +0 -0
  110. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/gateway.rs +0 -0
  111. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/ids.rs +0 -0
  112. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/judge.rs +0 -0
  113. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/lib.rs +0 -0
  114. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/command.rs +0 -0
  115. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/corrections.rs +0 -0
  116. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/feedback.rs +0 -0
  117. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/mining.rs +0 -0
  118. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/mod.rs +0 -0
  119. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/literals/protocol.rs +0 -0
  120. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/notifications.rs +0 -0
  121. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/parse.rs +0 -0
  122. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/protocol.rs +0 -0
  123. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/pystr.rs +0 -0
  124. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/query.rs +0 -0
  125. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/render.rs +0 -0
  126. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/rng.rs +0 -0
  127. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan.rs +0 -0
  128. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_checkpoint.rs +0 -0
  129. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep.rs +0 -0
  130. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep_stream.rs +0 -0
  131. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_grep_stream_tests.rs +0 -0
  132. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_index.rs +0 -0
  133. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_projection.rs +0 -0
  134. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_regressions.rs +0 -0
  135. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/scan_stream.rs +0 -0
  136. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/schema.rs +0 -0
  137. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot.rs +0 -0
  138. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_activity.rs +0 -0
  139. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_codec.rs +0 -0
  140. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_codex_append.rs +0 -0
  141. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_labels.rs +0 -0
  142. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_ledger.rs +0 -0
  143. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_ledger_tests.rs +0 -0
  144. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_memory.rs +0 -0
  145. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_owned.rs +0 -0
  146. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared.rs +0 -0
  147. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_disk.rs +0 -0
  148. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_prepared_service.rs +0 -0
  149. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_projection.rs +0 -0
  150. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_regressions.rs +0 -0
  151. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_root_warm.rs +0 -0
  152. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/snapshot_text.rs +0 -0
  153. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/sqlite.rs +0 -0
  154. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/toolcall.rs +0 -0
  155. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/types.rs +0 -0
  156. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/value.rs +0 -0
  157. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/src/watch.rs +0 -0
  158. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/tests/sonic_arena_model.rs +0 -0
  159. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/core/tests/std_allocation_model.rs +0 -0
  160. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/Cargo.toml +0 -0
  161. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/build.rs +0 -0
  162. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  163. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/actor_bridge.rs +0 -0
  164. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/bin/stub_gen.rs +0 -0
  165. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/codex.rs +0 -0
  166. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/command.rs +0 -0
  167. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/context.rs +0 -0
  168. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/corrections.rs +0 -0
  169. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/discovery.rs +0 -0
  170. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/feedback.rs +0 -0
  171. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/judge.rs +0 -0
  172. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/lexicon.rs +0 -0
  173. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/lib.rs +0 -0
  174. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/mining.rs +0 -0
  175. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/nlp.rs +0 -0
  176. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/python.rs +0 -0
  177. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/render.rs +0 -0
  178. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/score.rs +0 -0
  179. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/snapshot_decode.rs +0 -0
  180. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/snapshots.rs +0 -0
  181. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/sqlite.rs +0 -0
  182. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/toolcall.rs +0 -0
  183. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/attachment.rs +0 -0
  184. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/blocks.rs +0 -0
  185. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/command.rs +0 -0
  186. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/convert.rs +0 -0
  187. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/dunder.rs +0 -0
  188. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/events.rs +0 -0
  189. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/meta.rs +0 -0
  190. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/mod.rs +0 -0
  191. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/print.rs +0 -0
  192. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/store.rs +0 -0
  193. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/system.rs +0 -0
  194. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/toolcall.rs +0 -0
  195. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/toolresult.rs +0 -0
  196. {cc_transcript-14.40.0 → cc_transcript-14.40.1}/rust/crates/py/src/views/transcript.rs +0 -0
  197. {cc_transcript-14.40.0 → cc_transcript-14.40.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.40.0
3
+ Version: 14.40.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.40.0" # informational — releases stamp the version from the git tag
3
+ version = "14.40.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"
@@ -124,6 +124,8 @@ pub struct Command {
124
124
  // A stage of a `|`/`|&` pipeline: its stdout is consumed by the pipe. Set at parse time.
125
125
  #[doc(hidden)]
126
126
  pub pipe_stage: bool,
127
+ #[doc(hidden)]
128
+ pub inherits_heredoc: bool,
127
129
  }
128
130
 
129
131
  impl PartialEq for Command {
@@ -219,7 +221,7 @@ impl Command {
219
221
  // Parity: command.py Command.unwrapped — returns self when nothing is stripped.
220
222
  pub fn unwrapped(&self) -> Command {
221
223
  let argv = self.argv();
222
- let stripped = strip_wrappers(&argv, &self.words);
224
+ let stripped = self.stripped(&argv);
223
225
  if stripped.len() == argv.len() {
224
226
  return self.clone();
225
227
  }
@@ -239,12 +241,49 @@ impl Command {
239
241
  host_delta: self.host_delta,
240
242
  contexts: self.contexts.clone(),
241
243
  pipe_stage: self.pipe_stage,
244
+ inherits_heredoc: self.inherits_heredoc,
245
+ }
246
+ }
247
+
248
+ // zsh runs `-v` as a program once an option it does not know follows it, and a wrapper, a path, a
249
+ // quote, an escape or an expansion can each make a shell run something else. Only the bare
250
+ // spelling is provably the builtin's lookup, so the source text itself has to read as one.
251
+ fn command_lookup(&self, argv: &[&str]) -> bool {
252
+ let tokens: Vec<&str> = self
253
+ .raw
254
+ .split([' ', '\t'])
255
+ .filter(|token| !token.is_empty())
256
+ .collect();
257
+ let silencers = tokens
258
+ .iter()
259
+ .rev()
260
+ .take_while(|token| LOOKUP_SILENCERS.contains(token))
261
+ .count();
262
+ let flags = argv
263
+ .iter()
264
+ .skip(1)
265
+ .take_while(|arg| lookup_flag(arg))
266
+ .count();
267
+ argv.first() == Some(&"command")
268
+ && tokens[..tokens.len() - silencers] == *argv
269
+ && argv[1..=flags].iter().any(|flag| flag.contains(['v', 'V']))
270
+ && argv[1 + flags..].iter().all(|name| program_name(name))
271
+ && self.redirects.iter().all(silencer)
272
+ && !self.inherits_heredoc
273
+ }
274
+
275
+ fn stripped<'a>(&self, argv: &[&'a str]) -> Vec<&'a str> {
276
+ if self.command_lookup(argv) {
277
+ argv.to_vec()
278
+ } else {
279
+ strip_wrappers(argv, &self.words)
242
280
  }
243
281
  }
244
282
 
245
283
  // Parity: command.py Command.prefix — over the unwrapped argv; empty pick falls back to the tool.
246
284
  pub fn prefix(&self) -> Option<String> {
247
- let argv = strip_wrappers(&self.argv(), &self.words);
285
+ let argv = self.argv();
286
+ let argv = self.stripped(&argv);
248
287
  match argv.first() {
249
288
  None | Some(&"") => None,
250
289
  Some(&exe) if MULTI_LEVEL_TOOLS.contains(&exe) => Some(
@@ -263,7 +302,8 @@ impl Command {
263
302
  if argv.is_empty() {
264
303
  return false;
265
304
  }
266
- let unwrapped = strip_wrappers(&self.argv(), &self.words);
305
+ let own = self.argv();
306
+ let unwrapped = self.stripped(&own);
267
307
  unwrapped.len() >= argv.len() && unwrapped[..argv.len()] == *argv
268
308
  }
269
309
 
@@ -974,6 +1014,9 @@ fn with_redirects(
974
1014
  if redirects.is_empty() {
975
1015
  return parts;
976
1016
  }
1017
+ let heredoc = redirects
1018
+ .iter()
1019
+ .any(|redirect| matches!(redirect.kind, NodeKind::HereDoc { .. }));
977
1020
  let redirects = build_redirects(redirects, src);
978
1021
  if parts.is_empty() {
979
1022
  return vec![(
@@ -988,6 +1031,7 @@ fn with_redirects(
988
1031
  }
989
1032
  for (cmd, _) in &mut parts {
990
1033
  cmd.redirects.extend(redirects.iter().cloned());
1034
+ cmd.inherits_heredoc |= heredoc;
991
1035
  }
992
1036
  parts
993
1037
  }
@@ -1395,6 +1439,34 @@ fn wrapper_skip(wrapper: &str, tokens: &[&str]) -> usize {
1395
1439
  i.min(tokens.len())
1396
1440
  }
1397
1441
 
1442
+ const LOOKUP_SILENCERS: &[&str] = &[
1443
+ ">/dev/null",
1444
+ "1>/dev/null",
1445
+ "2>/dev/null",
1446
+ "&>/dev/null",
1447
+ "2>&1",
1448
+ ">&2",
1449
+ "1>&2",
1450
+ ];
1451
+
1452
+ fn lookup_flag(arg: &str) -> bool {
1453
+ arg.strip_prefix('-')
1454
+ .is_some_and(|flags| !flags.is_empty() && flags.bytes().all(|b| b"pvV".contains(&b)))
1455
+ }
1456
+
1457
+ fn silencer(redirect: &Redirect) -> bool {
1458
+ let fd = redirect.fd.map(|fd| fd.to_string()).unwrap_or_default();
1459
+ LOOKUP_SILENCERS.contains(&format!("{fd}{}{}", redirect.op, redirect.target).as_str())
1460
+ }
1461
+
1462
+ fn program_name(arg: &str) -> bool {
1463
+ !arg.is_empty()
1464
+ && !arg.starts_with('-')
1465
+ && arg
1466
+ .bytes()
1467
+ .all(|b| b.is_ascii_alphanumeric() || b"_.+/-".contains(&b))
1468
+ }
1469
+
1398
1470
  // Drop each leading wrapper plus its skippable args. The head matches on the dequoted word value
1399
1471
  // (`"sudo"` → `sudo`), basenamed (`/usr/bin/sudo` → `sudo`); argv and words slice in lockstep.
1400
1472
  fn strip_wrappers<'a>(argv: &[&'a str], words: &[Word]) -> Vec<&'a str> {
@@ -1646,6 +1718,94 @@ mod tests {
1646
1718
  }
1647
1719
  }
1648
1720
 
1721
+ #[test]
1722
+ fn bare_command_lookup_wraps_nothing() {
1723
+ for raw in [
1724
+ "command -v orca ccx cc-notes",
1725
+ "command -V rm",
1726
+ "command -pv rm",
1727
+ "command -p -v rm",
1728
+ "command -v sudo rm",
1729
+ "command -v /usr/bin/g++ python3.13",
1730
+ "command -v",
1731
+ "command -v rm >/dev/null 2>&1",
1732
+ "command -v rm &>/dev/null",
1733
+ "command -v rm 2>/dev/null",
1734
+ "command\t-v rm >&2",
1735
+ ] {
1736
+ let line = CommandLine::parse(raw);
1737
+ let cmd = line.primary().unwrap();
1738
+ assert_eq!(cmd.unwrapped(), *cmd, "unwrapping {raw}");
1739
+ assert_eq!(cmd.prefix().as_deref(), Some("command"), "prefix of {raw}");
1740
+ assert!(!cmd.runs(&["rm"]), "{raw} runs nothing");
1741
+ }
1742
+ for raw in [
1743
+ "if ! command -v rm >/dev/null 2>&1; then echo y; fi",
1744
+ "x=$(command -v rm 2>/dev/null)",
1745
+ "(command -v rm) >/dev/null 2>&1",
1746
+ ] {
1747
+ let line = CommandLine::parse(raw);
1748
+ let lookups: Vec<String> = line
1749
+ .parts
1750
+ .iter()
1751
+ .map(|(cmd, _)| cmd.unwrapped().executable)
1752
+ .filter(|executable| executable != "echo")
1753
+ .collect();
1754
+ assert_eq!(lookups, ["command"], "unwrapping {raw}");
1755
+ }
1756
+ }
1757
+
1758
+ #[test]
1759
+ fn command_the_shell_may_not_read_as_a_lookup_still_wraps() {
1760
+ for raw in [
1761
+ "command rm /x",
1762
+ "command -p rm /x",
1763
+ "command -- rm /x",
1764
+ "command -v -- rm /x",
1765
+ "command -v -i rm /x",
1766
+ "command -i -v rm /x",
1767
+ "command -v - rm /x",
1768
+ "command -v >/dev/null -i rm /x",
1769
+ "command -$f rm /x",
1770
+ "command -${v} rm /x",
1771
+ "command \"-v\" rm /x",
1772
+ "command -v $X rm /x",
1773
+ "command -v \"$X\" rm /x",
1774
+ "command -v * rm /x",
1775
+ "command -v ~ rm /x",
1776
+ "command -v \"\"~ rm /x",
1777
+ "command -v =rm /x rm",
1778
+ "command $(printf env) -v rm /x",
1779
+ "command -v $(printf -- -i) rm /x",
1780
+ "command `printf env` -v rm /x",
1781
+ "command -v rm ignored<(rm /x)",
1782
+ "command >\"/dev/null$(rm /x)\" -v rm",
1783
+ "command -v rm > /dev/null",
1784
+ "command -v rm >/tmp/out",
1785
+ "command -v rm <<EOF\n$(rm /x)\nEOF",
1786
+ "(command -v rm) >\"$(printf /dev/null)\"",
1787
+ "(command -v rm) <<EOF\n$(printf x)\nEOF",
1788
+ "{ command -v rm; } <<EOF\n$(printf x)\nEOF",
1789
+ "if command -v rm; then :; fi <<EOF\n$(printf x)\nEOF",
1790
+ "(command -v rm) <<<x",
1791
+ "{ command -v rm; } >/tmp/out",
1792
+ "command\\\nx -v rm /x",
1793
+ "\\command -v rm /x",
1794
+ "A=1 command -v rm /x",
1795
+ "./command -v rm /x",
1796
+ "/usr/bin/command -v rm /x",
1797
+ "command command -v rm /x",
1798
+ "sudo command -v rm /x",
1799
+ "/usr/bin/env command -v rm /x",
1800
+ "env -u command -v rm /x",
1801
+ ] {
1802
+ let line = CommandLine::parse(raw);
1803
+ let cmd = line.head().unwrap().unwrapped();
1804
+ assert_ne!(cmd.executable, "command", "unwrapping {raw}");
1805
+ assert!(cmd.argv().contains(&"rm"), "unwrapping {raw}");
1806
+ }
1807
+ }
1808
+
1649
1809
  #[test]
1650
1810
  fn operand_skip_only_consumes_a_digit_led_duration() {
1651
1811
  // A non-digit token in the duration slot is the command, not the duration — never hidden.
File without changes