cc-transcript 12.1.1__tar.gz → 13.1.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 (93) hide show
  1. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/Cargo.lock +402 -2
  2. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/PKG-INFO +2 -2
  3. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/README.md +1 -1
  4. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/__init__.py +1 -2
  5. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/_parser_rs.pyi +12 -3
  6. cc_transcript-13.1.0/cc_transcript/activity_probe.py +98 -0
  7. cc_transcript-13.1.0/cc_transcript/backend.py +24 -0
  8. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/command.py +3 -17
  9. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/filterspec.py +13 -38
  10. cc_transcript-13.1.0/cc_transcript/heartbeats.py +117 -0
  11. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/__init__.py +7 -9
  12. cc_transcript-13.1.0/cc_transcript/mining/engine.py +78 -0
  13. cc_transcript-13.1.0/cc_transcript/mining/signals.py +65 -0
  14. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/spec.py +30 -82
  15. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/models.py +12 -7
  16. cc_transcript-13.1.0/cc_transcript/nlp.py +58 -0
  17. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/parser.py +33 -106
  18. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/query.py +5 -3
  19. cc_transcript-13.1.0/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  20. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/engine.py +10 -40
  21. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/lexicon.py +18 -36
  22. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/scorespec.py +2 -79
  23. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/pyproject.toml +2 -2
  24. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/Cargo.toml +15 -0
  25. cc_transcript-13.1.0/rust/benches/parse.rs +77 -0
  26. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/generated/mod.rs +0 -1
  27. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/lexicon.rs +36 -55
  28. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/lib.rs +3 -1
  29. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/mining.rs +317 -30
  30. cc_transcript-13.1.0/rust/src/nlp.rs +137 -0
  31. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/python.rs +27 -41
  32. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/score.rs +23 -22
  33. cc_transcript-12.1.1/cc_transcript/activity_probe.py +0 -225
  34. cc_transcript-12.1.1/cc_transcript/backend.py +0 -57
  35. cc_transcript-12.1.1/cc_transcript/mining/engine.py +0 -91
  36. cc_transcript-12.1.1/cc_transcript/mining/signals.py +0 -604
  37. cc_transcript-12.1.1/cc_transcript/rust.py +0 -51
  38. cc_transcript-12.1.1/rust/src/generated/unicode.rs +0 -665
  39. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/Cargo.toml +0 -0
  40. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/LICENSE +0 -0
  41. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/__main__.py +0 -0
  42. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/activity.py +0 -0
  43. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/builders.py +0 -0
  44. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/cli.py +0 -0
  45. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/context.py +0 -0
  46. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/corrections.py +0 -0
  47. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/corrections_cli.py +0 -0
  48. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/cost.py +0 -0
  49. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/decisions.py +0 -0
  50. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/discovery.py +0 -0
  51. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/disktruth.py +0 -0
  52. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/evidence.py +0 -0
  53. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/extract/__init__.py +0 -0
  54. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/extract/correct.py +0 -0
  55. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/facts.py +0 -0
  56. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/ids.py +0 -0
  57. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/judge/__init__.py +0 -0
  58. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/judge/llm.py +0 -0
  59. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/judge/similar.py +0 -0
  60. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/judge/verdicts.py +0 -0
  61. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/ledger.py +0 -0
  62. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/candidates.py +0 -0
  63. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/confidence.py +0 -0
  64. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/filterspec.py +0 -0
  65. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/formats.py +0 -0
  66. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/sampling.py +0 -0
  67. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/sourcekind.py +0 -0
  68. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/mining/store.py +0 -0
  69. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/notifications.py +0 -0
  70. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/py.typed +0 -0
  71. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/render.py +0 -0
  72. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/__init__.py +0 -0
  73. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/buckets.py +0 -0
  74. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  75. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  76. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/store.py +0 -0
  77. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/tools.py +0 -0
  78. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/cc_transcript/watch.py +0 -0
  79. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/build.rs +0 -0
  80. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/data/command_prefix_pins.tsv +0 -0
  81. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/rustfmt.toml +0 -0
  82. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/activity.rs +0 -0
  83. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/command.rs +0 -0
  84. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/event.rs +0 -0
  85. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/filter.rs +0 -0
  86. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/generated/command.rs +0 -0
  87. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/generated/mining.rs +0 -0
  88. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/generated/protocol.rs +0 -0
  89. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/model.rs +0 -0
  90. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/parse.rs +0 -0
  91. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/protocol.rs +0 -0
  92. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/types.rs +0 -0
  93. {cc_transcript-12.1.1 → cc_transcript-13.1.0}/rust/src/value.rs +0 -0
@@ -2,6 +2,12 @@
2
2
  # It is not intended for manual editing.
3
3
  version = 4
4
4
 
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
5
11
  [[package]]
6
12
  name = "ahash"
7
13
  version = "0.8.12"
@@ -9,7 +15,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
9
15
  checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75"
10
16
  dependencies = [
11
17
  "cfg-if",
12
- "getrandom",
18
+ "getrandom 0.3.4",
13
19
  "once_cell",
14
20
  "version_check",
15
21
  "zerocopy",
@@ -24,12 +30,30 @@ dependencies = [
24
30
  "memchr",
25
31
  ]
26
32
 
33
+ [[package]]
34
+ name = "anes"
35
+ version = "0.1.6"
36
+ source = "registry+https://github.com/rust-lang/crates.io-index"
37
+ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
38
+
39
+ [[package]]
40
+ name = "anstyle"
41
+ version = "1.0.14"
42
+ source = "registry+https://github.com/rust-lang/crates.io-index"
43
+ checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000"
44
+
27
45
  [[package]]
28
46
  name = "autocfg"
29
47
  version = "1.5.1"
30
48
  source = "registry+https://github.com/rust-lang/crates.io-index"
31
49
  checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
32
50
 
51
+ [[package]]
52
+ name = "base64"
53
+ version = "0.22.1"
54
+ source = "registry+https://github.com/rust-lang/crates.io-index"
55
+ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
56
+
33
57
  [[package]]
34
58
  name = "bitflags"
35
59
  version = "2.13.0"
@@ -48,6 +72,12 @@ version = "1.11.1"
48
72
  source = "registry+https://github.com/rust-lang/crates.io-index"
49
73
  checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33"
50
74
 
75
+ [[package]]
76
+ name = "cast"
77
+ version = "0.3.0"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
80
+
51
81
  [[package]]
52
82
  name = "cc"
53
83
  version = "1.2.63"
@@ -63,6 +93,7 @@ name = "cc_transcript_parser"
63
93
  version = "0.9.0"
64
94
  dependencies = [
65
95
  "chrono",
96
+ "criterion",
66
97
  "crossbeam-channel",
67
98
  "memchr",
68
99
  "num_cpus",
@@ -74,6 +105,7 @@ dependencies = [
74
105
  "sonic-rs",
75
106
  "tree-sitter",
76
107
  "tree-sitter-bash",
108
+ "udpipe-rs",
77
109
  ]
78
110
 
79
111
  [[package]]
@@ -100,6 +132,101 @@ dependencies = [
100
132
  "num-traits",
101
133
  ]
102
134
 
135
+ [[package]]
136
+ name = "ciborium"
137
+ version = "0.2.2"
138
+ source = "registry+https://github.com/rust-lang/crates.io-index"
139
+ checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
140
+ dependencies = [
141
+ "ciborium-io",
142
+ "ciborium-ll",
143
+ "serde",
144
+ ]
145
+
146
+ [[package]]
147
+ name = "ciborium-io"
148
+ version = "0.2.2"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
151
+
152
+ [[package]]
153
+ name = "ciborium-ll"
154
+ version = "0.2.2"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
157
+ dependencies = [
158
+ "ciborium-io",
159
+ "half",
160
+ ]
161
+
162
+ [[package]]
163
+ name = "clap"
164
+ version = "4.6.1"
165
+ source = "registry+https://github.com/rust-lang/crates.io-index"
166
+ checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51"
167
+ dependencies = [
168
+ "clap_builder",
169
+ ]
170
+
171
+ [[package]]
172
+ name = "clap_builder"
173
+ version = "4.6.0"
174
+ source = "registry+https://github.com/rust-lang/crates.io-index"
175
+ checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f"
176
+ dependencies = [
177
+ "anstyle",
178
+ "clap_lex",
179
+ ]
180
+
181
+ [[package]]
182
+ name = "clap_lex"
183
+ version = "1.1.0"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9"
186
+
187
+ [[package]]
188
+ name = "crc32fast"
189
+ version = "1.5.0"
190
+ source = "registry+https://github.com/rust-lang/crates.io-index"
191
+ checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511"
192
+ dependencies = [
193
+ "cfg-if",
194
+ ]
195
+
196
+ [[package]]
197
+ name = "criterion"
198
+ version = "0.5.1"
199
+ source = "registry+https://github.com/rust-lang/crates.io-index"
200
+ checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
201
+ dependencies = [
202
+ "anes",
203
+ "cast",
204
+ "ciborium",
205
+ "clap",
206
+ "criterion-plot",
207
+ "is-terminal",
208
+ "itertools",
209
+ "num-traits",
210
+ "once_cell",
211
+ "oorandom",
212
+ "regex",
213
+ "serde",
214
+ "serde_derive",
215
+ "serde_json",
216
+ "tinytemplate",
217
+ "walkdir",
218
+ ]
219
+
220
+ [[package]]
221
+ name = "criterion-plot"
222
+ version = "0.5.0"
223
+ source = "registry+https://github.com/rust-lang/crates.io-index"
224
+ checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
225
+ dependencies = [
226
+ "cast",
227
+ "itertools",
228
+ ]
229
+
103
230
  [[package]]
104
231
  name = "crossbeam-channel"
105
232
  version = "0.5.15"
@@ -134,6 +261,12 @@ version = "0.8.21"
134
261
  source = "registry+https://github.com/rust-lang/crates.io-index"
135
262
  checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
136
263
 
264
+ [[package]]
265
+ name = "crunchy"
266
+ version = "0.2.4"
267
+ source = "registry+https://github.com/rust-lang/crates.io-index"
268
+ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5"
269
+
137
270
  [[package]]
138
271
  name = "either"
139
272
  version = "1.16.0"
@@ -180,6 +313,16 @@ version = "0.1.9"
180
313
  source = "registry+https://github.com/rust-lang/crates.io-index"
181
314
  checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582"
182
315
 
316
+ [[package]]
317
+ name = "flate2"
318
+ version = "1.1.9"
319
+ source = "registry+https://github.com/rust-lang/crates.io-index"
320
+ checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c"
321
+ dependencies = [
322
+ "crc32fast",
323
+ "miniz_oxide",
324
+ ]
325
+
183
326
  [[package]]
184
327
  name = "futures-core"
185
328
  version = "0.3.32"
@@ -204,6 +347,17 @@ dependencies = [
204
347
  "slab",
205
348
  ]
206
349
 
350
+ [[package]]
351
+ name = "getrandom"
352
+ version = "0.2.17"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
355
+ dependencies = [
356
+ "cfg-if",
357
+ "libc",
358
+ "wasi",
359
+ ]
360
+
207
361
  [[package]]
208
362
  name = "getrandom"
209
363
  version = "0.3.4"
@@ -216,6 +370,17 @@ dependencies = [
216
370
  "wasip2",
217
371
  ]
218
372
 
373
+ [[package]]
374
+ name = "half"
375
+ version = "2.7.1"
376
+ source = "registry+https://github.com/rust-lang/crates.io-index"
377
+ checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b"
378
+ dependencies = [
379
+ "cfg-if",
380
+ "crunchy",
381
+ "zerocopy",
382
+ ]
383
+
219
384
  [[package]]
220
385
  name = "hashbrown"
221
386
  version = "0.17.1"
@@ -234,6 +399,22 @@ version = "0.5.2"
234
399
  source = "registry+https://github.com/rust-lang/crates.io-index"
235
400
  checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c"
236
401
 
402
+ [[package]]
403
+ name = "http"
404
+ version = "1.4.2"
405
+ source = "registry+https://github.com/rust-lang/crates.io-index"
406
+ checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425"
407
+ dependencies = [
408
+ "bytes",
409
+ "itoa",
410
+ ]
411
+
412
+ [[package]]
413
+ name = "httparse"
414
+ version = "1.10.1"
415
+ source = "registry+https://github.com/rust-lang/crates.io-index"
416
+ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
417
+
237
418
  [[package]]
238
419
  name = "indexmap"
239
420
  version = "2.14.0"
@@ -244,6 +425,26 @@ dependencies = [
244
425
  "hashbrown",
245
426
  ]
246
427
 
428
+ [[package]]
429
+ name = "is-terminal"
430
+ version = "0.4.17"
431
+ source = "registry+https://github.com/rust-lang/crates.io-index"
432
+ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46"
433
+ dependencies = [
434
+ "hermit-abi",
435
+ "libc",
436
+ "windows-sys",
437
+ ]
438
+
439
+ [[package]]
440
+ name = "itertools"
441
+ version = "0.10.5"
442
+ source = "registry+https://github.com/rust-lang/crates.io-index"
443
+ checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
444
+ dependencies = [
445
+ "either",
446
+ ]
447
+
247
448
  [[package]]
248
449
  name = "itoa"
249
450
  version = "1.0.18"
@@ -274,12 +475,28 @@ version = "0.12.1"
274
475
  source = "registry+https://github.com/rust-lang/crates.io-index"
275
476
  checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
276
477
 
478
+ [[package]]
479
+ name = "log"
480
+ version = "0.4.33"
481
+ source = "registry+https://github.com/rust-lang/crates.io-index"
482
+ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
483
+
277
484
  [[package]]
278
485
  name = "memchr"
279
486
  version = "2.8.1"
280
487
  source = "registry+https://github.com/rust-lang/crates.io-index"
281
488
  checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
282
489
 
490
+ [[package]]
491
+ name = "miniz_oxide"
492
+ version = "0.8.9"
493
+ source = "registry+https://github.com/rust-lang/crates.io-index"
494
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
495
+ dependencies = [
496
+ "adler2",
497
+ "simd-adler32",
498
+ ]
499
+
283
500
  [[package]]
284
501
  name = "munge"
285
502
  version = "0.4.7"
@@ -325,6 +542,18 @@ version = "1.21.4"
325
542
  source = "registry+https://github.com/rust-lang/crates.io-index"
326
543
  checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
327
544
 
545
+ [[package]]
546
+ name = "oorandom"
547
+ version = "11.1.5"
548
+ source = "registry+https://github.com/rust-lang/crates.io-index"
549
+ checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e"
550
+
551
+ [[package]]
552
+ name = "percent-encoding"
553
+ version = "2.3.2"
554
+ source = "registry+https://github.com/rust-lang/crates.io-index"
555
+ checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220"
556
+
328
557
  [[package]]
329
558
  name = "pin-project-lite"
330
559
  version = "0.2.17"
@@ -524,6 +753,20 @@ version = "0.5.3"
524
753
  source = "registry+https://github.com/rust-lang/crates.io-index"
525
754
  checksum = "cadadef317c2f20755a64d7fdc48f9e7178ee6b0e1f7fce33fa60f1d68a276e6"
526
755
 
756
+ [[package]]
757
+ name = "ring"
758
+ version = "0.17.14"
759
+ source = "registry+https://github.com/rust-lang/crates.io-index"
760
+ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7"
761
+ dependencies = [
762
+ "cc",
763
+ "cfg-if",
764
+ "getrandom 0.2.17",
765
+ "libc",
766
+ "untrusted",
767
+ "windows-sys",
768
+ ]
769
+
527
770
  [[package]]
528
771
  name = "rkyv"
529
772
  version = "0.8.16"
@@ -566,12 +809,56 @@ dependencies = [
566
809
  "windows-sys",
567
810
  ]
568
811
 
812
+ [[package]]
813
+ name = "rustls"
814
+ version = "0.23.41"
815
+ source = "registry+https://github.com/rust-lang/crates.io-index"
816
+ checksum = "6b92b125634d9b795e7beca796cc790df15a7fb38323bf3196fda83292d06b1f"
817
+ dependencies = [
818
+ "log",
819
+ "once_cell",
820
+ "ring",
821
+ "rustls-pki-types",
822
+ "rustls-webpki",
823
+ "subtle",
824
+ "zeroize",
825
+ ]
826
+
827
+ [[package]]
828
+ name = "rustls-pki-types"
829
+ version = "1.15.0"
830
+ source = "registry+https://github.com/rust-lang/crates.io-index"
831
+ checksum = "764899a24af3980067ee14bc143654f297b22eaebfe3c7b6b211920a5a59b046"
832
+ dependencies = [
833
+ "zeroize",
834
+ ]
835
+
836
+ [[package]]
837
+ name = "rustls-webpki"
838
+ version = "0.103.13"
839
+ source = "registry+https://github.com/rust-lang/crates.io-index"
840
+ checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
841
+ dependencies = [
842
+ "ring",
843
+ "rustls-pki-types",
844
+ "untrusted",
845
+ ]
846
+
569
847
  [[package]]
570
848
  name = "rustversion"
571
849
  version = "1.0.22"
572
850
  source = "registry+https://github.com/rust-lang/crates.io-index"
573
851
  checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
574
852
 
853
+ [[package]]
854
+ name = "same-file"
855
+ version = "1.0.6"
856
+ source = "registry+https://github.com/rust-lang/crates.io-index"
857
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
858
+ dependencies = [
859
+ "winapi-util",
860
+ ]
861
+
575
862
  [[package]]
576
863
  name = "serde"
577
864
  version = "1.0.228"
@@ -622,6 +909,12 @@ version = "2.0.1"
622
909
  source = "registry+https://github.com/rust-lang/crates.io-index"
623
910
  checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
624
911
 
912
+ [[package]]
913
+ name = "simd-adler32"
914
+ version = "0.3.9"
915
+ source = "registry+https://github.com/rust-lang/crates.io-index"
916
+ checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214"
917
+
625
918
  [[package]]
626
919
  name = "simdutf8"
627
920
  version = "0.1.5"
@@ -679,6 +972,12 @@ version = "0.1.9"
679
972
  source = "registry+https://github.com/rust-lang/crates.io-index"
680
973
  checksum = "2b2231b7c3057d5e4ad0156fb3dc807d900806020c5ffa3ee6ff2c8c76fb8520"
681
974
 
975
+ [[package]]
976
+ name = "subtle"
977
+ version = "2.6.1"
978
+ source = "registry+https://github.com/rust-lang/crates.io-index"
979
+ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
980
+
682
981
  [[package]]
683
982
  name = "swift-bridge"
684
983
  version = "0.1.59"
@@ -759,7 +1058,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
759
1058
  checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
760
1059
  dependencies = [
761
1060
  "fastrand",
762
- "getrandom",
1061
+ "getrandom 0.3.4",
763
1062
  "once_cell",
764
1063
  "rustix",
765
1064
  "windows-sys",
@@ -785,6 +1084,16 @@ dependencies = [
785
1084
  "syn 2.0.117",
786
1085
  ]
787
1086
 
1087
+ [[package]]
1088
+ name = "tinytemplate"
1089
+ version = "1.2.1"
1090
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1091
+ checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
1092
+ dependencies = [
1093
+ "serde",
1094
+ "serde_json",
1095
+ ]
1096
+
788
1097
  [[package]]
789
1098
  name = "tinyvec"
790
1099
  version = "1.11.0"
@@ -830,12 +1139,63 @@ version = "0.1.7"
830
1139
  source = "registry+https://github.com/rust-lang/crates.io-index"
831
1140
  checksum = "009994f150cc0cd50ff54917d5bc8bffe8cad10ca10d81c34da2ec421ae61782"
832
1141
 
1142
+ [[package]]
1143
+ name = "udpipe-rs"
1144
+ version = "0.2.0"
1145
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1146
+ checksum = "9a8f34a036b145a2d253613c2742c836f79c9d5f9c2220f03931762224d23452"
1147
+ dependencies = [
1148
+ "cc",
1149
+ "ureq",
1150
+ ]
1151
+
833
1152
  [[package]]
834
1153
  name = "unicode-ident"
835
1154
  version = "1.0.24"
836
1155
  source = "registry+https://github.com/rust-lang/crates.io-index"
837
1156
  checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
838
1157
 
1158
+ [[package]]
1159
+ name = "untrusted"
1160
+ version = "0.9.0"
1161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1162
+ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1"
1163
+
1164
+ [[package]]
1165
+ name = "ureq"
1166
+ version = "3.3.0"
1167
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1168
+ checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0"
1169
+ dependencies = [
1170
+ "base64",
1171
+ "flate2",
1172
+ "log",
1173
+ "percent-encoding",
1174
+ "rustls",
1175
+ "rustls-pki-types",
1176
+ "ureq-proto",
1177
+ "utf8-zero",
1178
+ "webpki-roots",
1179
+ ]
1180
+
1181
+ [[package]]
1182
+ name = "ureq-proto"
1183
+ version = "0.6.0"
1184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1185
+ checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c"
1186
+ dependencies = [
1187
+ "base64",
1188
+ "http",
1189
+ "httparse",
1190
+ "log",
1191
+ ]
1192
+
1193
+ [[package]]
1194
+ name = "utf8-zero"
1195
+ version = "0.8.1"
1196
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1197
+ checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e"
1198
+
839
1199
  [[package]]
840
1200
  name = "uuid"
841
1201
  version = "1.23.2"
@@ -852,6 +1212,22 @@ version = "0.9.5"
852
1212
  source = "registry+https://github.com/rust-lang/crates.io-index"
853
1213
  checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
854
1214
 
1215
+ [[package]]
1216
+ name = "walkdir"
1217
+ version = "2.5.0"
1218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1219
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
1220
+ dependencies = [
1221
+ "same-file",
1222
+ "winapi-util",
1223
+ ]
1224
+
1225
+ [[package]]
1226
+ name = "wasi"
1227
+ version = "0.11.1+wasi-snapshot-preview1"
1228
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1229
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
1230
+
855
1231
  [[package]]
856
1232
  name = "wasip2"
857
1233
  version = "1.0.3+wasi-0.2.9"
@@ -906,6 +1282,24 @@ dependencies = [
906
1282
  "unicode-ident",
907
1283
  ]
908
1284
 
1285
+ [[package]]
1286
+ name = "webpki-roots"
1287
+ version = "1.0.8"
1288
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1289
+ checksum = "bf85cb06032201fa7c6f829d7db5a7e5aa45bcc0655327713065f6f0576731bf"
1290
+ dependencies = [
1291
+ "rustls-pki-types",
1292
+ ]
1293
+
1294
+ [[package]]
1295
+ name = "winapi-util"
1296
+ version = "0.1.11"
1297
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1298
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
1299
+ dependencies = [
1300
+ "windows-sys",
1301
+ ]
1302
+
909
1303
  [[package]]
910
1304
  name = "windows-sys"
911
1305
  version = "0.52.0"
@@ -1005,6 +1399,12 @@ dependencies = [
1005
1399
  "syn 2.0.117",
1006
1400
  ]
1007
1401
 
1402
+ [[package]]
1403
+ name = "zeroize"
1404
+ version = "1.9.0"
1405
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1406
+ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e"
1407
+
1008
1408
  [[package]]
1009
1409
  name = "zmij"
1010
1410
  version = "1.0.21"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cc-transcript
3
- Version: 12.1.1
3
+ Version: 13.1.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -117,7 +117,7 @@ Each block reports text, thinking, and tool-io bytes plus per-tool call counts;
117
117
  - [Filtering events](https://yasyf.github.io/cc-transcript/docs/guide/filtering-events.html) covers composable clauses, specs, and the ready-made `NOISE_SPEC`.
118
118
  - [Sentiment scoring](https://yasyf.github.io/cc-transcript/docs/guide/scoring-sentiment.html) buckets conversations and scores them around any inference engine.
119
119
  - [Feedback mining](https://yasyf.github.io/cc-transcript/docs/guide/mining-feedback.html) runs detectors, confidence calibration, and LLM verdict passes over your corpus.
120
- - [Two backends, one protocol](https://yasyf.github.io/cc-transcript/docs/guide/backends-and-parity.html) pairs a Rust fast path with a Python reference, parity-asserted against each other.
120
+ - [The Rust engine](https://yasyf.github.io/cc-transcript/docs/guide/rust-engine.html) executes parsing, filtering, scoring, and mining, its correctness pinned by generated literals and golden fixtures.
121
121
  - [API reference](https://yasyf.github.io/cc-transcript/reference/index.html) documents the complete typed surface, from `TranscriptEvent` to `SessionActivity`.
122
122
 
123
123
  Read the [docs](https://yasyf.github.io/cc-transcript/) for the full guide. Licensed under [PolyForm Noncommercial 1.0.0](https://github.com/yasyf/cc-transcript/blob/main/LICENSE).
@@ -77,7 +77,7 @@ Each block reports text, thinking, and tool-io bytes plus per-tool call counts;
77
77
  - [Filtering events](https://yasyf.github.io/cc-transcript/docs/guide/filtering-events.html) covers composable clauses, specs, and the ready-made `NOISE_SPEC`.
78
78
  - [Sentiment scoring](https://yasyf.github.io/cc-transcript/docs/guide/scoring-sentiment.html) buckets conversations and scores them around any inference engine.
79
79
  - [Feedback mining](https://yasyf.github.io/cc-transcript/docs/guide/mining-feedback.html) runs detectors, confidence calibration, and LLM verdict passes over your corpus.
80
- - [Two backends, one protocol](https://yasyf.github.io/cc-transcript/docs/guide/backends-and-parity.html) pairs a Rust fast path with a Python reference, parity-asserted against each other.
80
+ - [The Rust engine](https://yasyf.github.io/cc-transcript/docs/guide/rust-engine.html) executes parsing, filtering, scoring, and mining, its correctness pinned by generated literals and golden fixtures.
81
81
  - [API reference](https://yasyf.github.io/cc-transcript/reference/index.html) documents the complete typed surface, from `TranscriptEvent` to `SessionActivity`.
82
82
 
83
83
  Read the [docs](https://yasyf.github.io/cc-transcript/) for the full guide. Licensed under [PolyForm Noncommercial 1.0.0](https://github.com/yasyf/cc-transcript/blob/main/LICENSE).
@@ -147,7 +147,7 @@ EXPORTS: dict[str, str] = {
147
147
  "cost_of_assistant",
148
148
  "resolve_pricing",
149
149
  ),
150
- "cc_transcript.backend": ("Backend", "ParsedTranscript"),
150
+ "cc_transcript.backend": ("ParsedTranscript",),
151
151
  "cc_transcript.discovery": (
152
152
  "CLAUDE_PROJECTS_DIR",
153
153
  "TranscriptDiscovery",
@@ -275,7 +275,6 @@ if TYPE_CHECKING:
275
275
  from cc_transcript.activity import (
276
276
  result_index as result_index,
277
277
  )
278
- from cc_transcript.backend import Backend as Backend
279
278
  from cc_transcript.backend import ParsedTranscript as ParsedTranscript
280
279
  from cc_transcript.builders import (
281
280
  NOISE_SPEC as NOISE_SPEC,
@@ -30,11 +30,18 @@ def lexicon_polarity(token: str, /) -> int:
30
30
  """Polarity of a single token surface: domain override, else AFINN floored at MIN_MAGNITUDE."""
31
31
 
32
32
  def lexicon_has_hit(text: str, want_negative: bool, /) -> bool:
33
- """Whether any token surface's polarity crosses the fixed ±3 floor (the negative side when ``want_negative``)."""
33
+ """Whether any content token's effective (negation-flipped) polarity crosses the fixed ±3 floor."""
34
34
 
35
35
  def lexicon_overrides() -> list[tuple[str, int]]:
36
36
  """The embedded domain-override entries (for the single-source drift guard)."""
37
37
 
38
+ def nlp_analyze(text: str, /) -> list[tuple[str, str, str, str, int, int, int, bool]]:
39
+ """Analyze ``text`` with the embedded UDPipe model.
40
+
41
+ Per token: ``(form, lower, lemma, upos, char_start, char_end, polarity, negated)``,
42
+ where offsets are codepoint indices and polarity is the surface-keyed lexicon score.
43
+ """
44
+
38
45
  def embedded_literals() -> dict[str, str | float | list[str]]:
39
46
  """The generated protocol, mining, and command literals keyed ``module.NAME`` (for the single-source drift guard)."""
40
47
 
@@ -47,8 +54,10 @@ def score_post_process(spec_json: str, buckets: list[list[str]], raw: list[int],
47
54
  def command_prefixes(commands: list[str], /) -> list[list[str]]:
48
55
  """Permission-style prefixes per command line, parsed in parallel off the GIL."""
49
56
 
50
- def mine_signals(raw: bytes, spec_json: str, /) -> list[dict[str, Any]]:
51
- """Parses raw transcript bytes and mines signal dicts per the portable mining spec."""
57
+ def mine_events(
58
+ events: list[TranscriptEvent], spec_json: str, callable_formats: list[tuple[str, Any, Any]], /
59
+ ) -> list[dict[str, Any]]:
60
+ """Mines signal dicts from parsed transcript events per the portable mining spec."""
52
61
 
53
62
  def session_activity_probe(
54
63
  path: str, waiting_tools: list[str] | None = ..., human_facing_tools: list[str] | None = ..., /