flowproof 0.12.2__tar.gz → 0.17.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 (133) hide show
  1. {flowproof-0.12.2 → flowproof-0.17.0}/Cargo.lock +210 -44
  2. {flowproof-0.12.2 → flowproof-0.17.0}/Cargo.toml +14 -1
  3. {flowproof-0.12.2 → flowproof-0.17.0}/PKG-INFO +1 -1
  4. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_linux.rs +9 -0
  5. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/sap_com.rs +577 -88
  6. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/web.rs +776 -53
  7. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/Cargo.toml +1 -0
  8. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/author.rs +1105 -10
  9. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/clarify.rs +13 -0
  10. flowproof-0.17.0/crates/flowproof-agent/src/doc_author.rs +342 -0
  11. flowproof-0.17.0/crates/flowproof-agent/src/doc_formats/hp_alm.rs +224 -0
  12. flowproof-0.17.0/crates/flowproof-agent/src/doc_formats.rs +7 -0
  13. flowproof-0.17.0/crates/flowproof-agent/src/draft_assembly.rs +188 -0
  14. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/heal.rs +5 -0
  15. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/lib.rs +15 -2
  16. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/llm.rs +42 -8
  17. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/recorder.rs +1656 -31
  18. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/rules.rs +99 -0
  19. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/spec.rs +868 -10
  20. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/tests/model_client_http.rs +30 -0
  21. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/src/lib.rs +671 -43
  22. flowproof-0.17.0/crates/flowproof-cli/tests/documented_flags.rs +113 -0
  23. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/llm_author_e2e.rs +152 -0
  24. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/notepad_author_e2e.rs +3 -0
  25. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/sap_e2e.rs +1 -1
  26. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/sap_pipeline.rs +99 -0
  27. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/sap_sim_e2e.rs +34 -0
  28. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/support/sap_simulator.py +76 -30
  29. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/web_e2e.rs +264 -2
  30. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/app.rs +144 -0
  31. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/lib.rs +12 -9
  32. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/mock.rs +230 -3
  33. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/recording.rs +360 -10
  34. flowproof-0.17.0/crates/flowproof-driver/src/surface.rs +376 -0
  35. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-python/Cargo.toml +1 -1
  36. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-python/src/lib.rs +58 -6
  37. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-replay/src/lib.rs +211 -42
  38. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-replay/src/report.rs +72 -5
  39. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-replay/tests/replay_calc.rs +590 -1
  40. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/schema/trace-v1.schema.json +155 -94
  41. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/format.rs +46 -0
  42. flowproof-0.17.0/crates/flowproof-trace/tests/fixtures/multi.trace.jsonl +5 -0
  43. flowproof-0.17.0/crates/flowproof-trace/tests/schema_conformance.rs +141 -0
  44. {flowproof-0.12.2 → flowproof-0.17.0}/flowproof/__init__.py +1 -1
  45. {flowproof-0.12.2 → flowproof-0.17.0}/flowproof/flow.py +62 -8
  46. {flowproof-0.12.2 → flowproof-0.17.0}/flowproof/mcp_server.py +29 -6
  47. {flowproof-0.12.2 → flowproof-0.17.0}/pyproject.toml +1 -1
  48. flowproof-0.12.2/crates/flowproof-trace/tests/schema_conformance.rs +0 -67
  49. {flowproof-0.12.2 → flowproof-0.17.0}/README.md +0 -0
  50. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/Cargo.toml +0 -0
  51. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/agent_proxy.rs +0 -0
  52. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/agent_runner.rs +0 -0
  53. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress.rs +0 -0
  54. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/audit.rs +0 -0
  55. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/capture.rs +0 -0
  56. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/env_block.rs +0 -0
  57. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/filters.rs +0 -0
  58. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/identity.rs +0 -0
  59. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/logon.rs +0 -0
  60. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/netevents.rs +0 -0
  61. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/run.rs +0 -0
  62. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/spawn.rs +0 -0
  63. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows/wfp.rs +0 -0
  64. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/egress_windows.rs +0 -0
  65. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/fs_observe.rs +0 -0
  66. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/lib.rs +0 -0
  67. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/mcp_core.rs +0 -0
  68. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/mcp_http.rs +0 -0
  69. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/mcp_stdio.rs +0 -0
  70. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/src/vision.rs +0 -0
  71. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/tests/drag_spike.rs +0 -0
  72. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/tests/fs_observation_e2e.rs +0 -0
  73. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-adapters/tests/windows_containment_e2e.rs +0 -0
  74. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-agent/src/agent_steps.rs +0 -0
  75. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/Cargo.toml +0 -0
  76. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/src/agent_flow.rs +0 -0
  77. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/src/capture.rs +0 -0
  78. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/src/main.rs +0 -0
  79. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/agent_flow_e2e.rs +0 -0
  80. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/agent_url_record_e2e.rs +0 -0
  81. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/api_pipeline.rs +0 -0
  82. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/audit_record_e2e.rs +0 -0
  83. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/calc_e2e.rs +0 -0
  84. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/clock_e2e.rs +0 -0
  85. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/cookie_e2e.rs +0 -0
  86. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/doctor_e2e.rs +0 -0
  87. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/egress_e2e.rs +0 -0
  88. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/examples_resolve.rs +0 -0
  89. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_arg_matchers.rs +0 -0
  90. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_audit_since.rs +0 -0
  91. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_call_order.rs +0 -0
  92. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_capability_regression.rs +0 -0
  93. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_control_verdict.rs +0 -0
  94. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_mcp_kill.rs +0 -0
  95. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_no_tool_call.rs +0 -0
  96. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/falsifiability_reply_contains.rs +0 -0
  97. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/grid_cell_e2e.rs +0 -0
  98. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/iframe_e2e.rs +0 -0
  99. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/mcp_http_e2e.rs +0 -0
  100. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/mcp_stdio_e2e.rs +0 -0
  101. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/notepad_e2e.rs +0 -0
  102. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/page_title_e2e.rs +0 -0
  103. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/pinned_random_e2e.rs +0 -0
  104. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/scoped_container_e2e.rs +0 -0
  105. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/select_missing_option_e2e.rs +0 -0
  106. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/skip_unless_env.rs +0 -0
  107. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/suite_env_from.rs +0 -0
  108. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/suite_flow_isolation.rs +0 -0
  109. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/suite_missing_trace.rs +0 -0
  110. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/visibility_e2e.rs +0 -0
  111. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-cli/tests/vision_pipeline.rs +0 -0
  112. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/Cargo.toml +0 -0
  113. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/backend.rs +0 -0
  114. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/gdi.rs +0 -0
  115. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/oob.rs +0 -0
  116. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/redact.rs +0 -0
  117. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/visual.rs +0 -0
  118. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-driver/src/window.rs +0 -0
  119. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-replay/Cargo.toml +0 -0
  120. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-replay/src/runrecord.rs +0 -0
  121. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/Cargo.toml +0 -0
  122. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/captures.rs +0 -0
  123. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/cassette.rs +0 -0
  124. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/cassette_diff.rs +0 -0
  125. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/egress.rs +0 -0
  126. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/lib.rs +0 -0
  127. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/secret.rs +0 -0
  128. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/secret_scan.rs +0 -0
  129. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/substitution.rs +0 -0
  130. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/src/toolcalls.rs +0 -0
  131. {flowproof-0.12.2 → flowproof-0.17.0}/crates/flowproof-trace/tests/fixtures/sample.trace.jsonl +0 -0
  132. {flowproof-0.12.2 → flowproof-0.17.0}/flowproof/cli.py +0 -0
  133. {flowproof-0.12.2 → flowproof-0.17.0}/flowproof/py.typed +0 -0
@@ -24,6 +24,26 @@ version = "2.0.1"
24
24
  source = "registry+https://github.com/rust-lang/crates.io-index"
25
25
  checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
26
26
 
27
+ [[package]]
28
+ name = "adobe-cmap-parser"
29
+ version = "0.4.1"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "ae8abfa9a4688de8fc9f42b3f013b6fffec18ed8a554f5f113577e0b9b3212a3"
32
+ dependencies = [
33
+ "pom",
34
+ ]
35
+
36
+ [[package]]
37
+ name = "aes"
38
+ version = "0.8.4"
39
+ source = "registry+https://github.com/rust-lang/crates.io-index"
40
+ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
41
+ dependencies = [
42
+ "cfg-if",
43
+ "cipher",
44
+ "cpufeatures 0.2.17",
45
+ ]
46
+
27
47
  [[package]]
28
48
  name = "ahash"
29
49
  version = "0.8.12"
@@ -209,6 +229,15 @@ dependencies = [
209
229
  "hybrid-array",
210
230
  ]
211
231
 
232
+ [[package]]
233
+ name = "block-padding"
234
+ version = "0.3.3"
235
+ source = "registry+https://github.com/rust-lang/crates.io-index"
236
+ checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93"
237
+ dependencies = [
238
+ "generic-array",
239
+ ]
240
+
212
241
  [[package]]
213
242
  name = "block2"
214
243
  version = "0.6.2"
@@ -260,6 +289,15 @@ version = "1.12.1"
260
289
  source = "registry+https://github.com/rust-lang/crates.io-index"
261
290
  checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
262
291
 
292
+ [[package]]
293
+ name = "cbc"
294
+ version = "0.1.2"
295
+ source = "registry+https://github.com/rust-lang/crates.io-index"
296
+ checksum = "26b52a9543ae338f279b96b0b9fed9c8093744685043739079ce85cd58f289a6"
297
+ dependencies = [
298
+ "cipher",
299
+ ]
300
+
263
301
  [[package]]
264
302
  name = "cc"
265
303
  version = "1.2.67"
@@ -276,6 +314,12 @@ version = "1.1.0"
276
314
  source = "registry+https://github.com/rust-lang/crates.io-index"
277
315
  checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c"
278
316
 
317
+ [[package]]
318
+ name = "cff-parser"
319
+ version = "0.2.0"
320
+ source = "registry+https://github.com/rust-lang/crates.io-index"
321
+ checksum = "c5810ca1a2b5870df2aab1c03e11c40c361ba51d6e3e361e56310f1cb3b4e087"
322
+
279
323
  [[package]]
280
324
  name = "cfg-if"
281
325
  version = "1.0.4"
@@ -318,6 +362,16 @@ version = "1.5.0"
318
362
  source = "registry+https://github.com/rust-lang/crates.io-index"
319
363
  checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901"
320
364
 
365
+ [[package]]
366
+ name = "cipher"
367
+ version = "0.4.4"
368
+ source = "registry+https://github.com/rust-lang/crates.io-index"
369
+ checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad"
370
+ dependencies = [
371
+ "crypto-common 0.1.7",
372
+ "inout",
373
+ ]
374
+
321
375
  [[package]]
322
376
  name = "clap"
323
377
  version = "4.6.2"
@@ -669,6 +723,15 @@ dependencies = [
669
723
  "litrs",
670
724
  ]
671
725
 
726
+ [[package]]
727
+ name = "ecb"
728
+ version = "0.1.2"
729
+ source = "registry+https://github.com/rust-lang/crates.io-index"
730
+ checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7"
731
+ dependencies = [
732
+ "cipher",
733
+ ]
734
+
672
735
  [[package]]
673
736
  name = "either"
674
737
  version = "1.16.0"
@@ -684,6 +747,15 @@ dependencies = [
684
747
  "serde",
685
748
  ]
686
749
 
750
+ [[package]]
751
+ name = "encoding_rs"
752
+ version = "0.8.35"
753
+ source = "registry+https://github.com/rust-lang/crates.io-index"
754
+ checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3"
755
+ dependencies = [
756
+ "cfg-if",
757
+ ]
758
+
687
759
  [[package]]
688
760
  name = "equivalent"
689
761
  version = "1.0.2"
@@ -700,6 +772,15 @@ dependencies = [
700
772
  "windows-sys 0.61.2",
701
773
  ]
702
774
 
775
+ [[package]]
776
+ name = "euclid"
777
+ version = "0.20.14"
778
+ source = "registry+https://github.com/rust-lang/crates.io-index"
779
+ checksum = "2bb7ef65b3777a325d1eeefefab5b6d4959da54747e33bd6258e789640f307ad"
780
+ dependencies = [
781
+ "num-traits",
782
+ ]
783
+
703
784
  [[package]]
704
785
  name = "fallible-iterator"
705
786
  version = "0.2.0"
@@ -760,7 +841,7 @@ dependencies = [
760
841
 
761
842
  [[package]]
762
843
  name = "flowproof-adapters"
763
- version = "0.12.2"
844
+ version = "0.17.0"
764
845
  dependencies = [
765
846
  "anyhow",
766
847
  "flowproof-driver",
@@ -779,11 +860,12 @@ dependencies = [
779
860
 
780
861
  [[package]]
781
862
  name = "flowproof-agent"
782
- version = "0.12.2"
863
+ version = "0.17.0"
783
864
  dependencies = [
784
865
  "chrono",
785
866
  "flowproof-driver",
786
867
  "flowproof-trace",
868
+ "pdf-extract",
787
869
  "regex",
788
870
  "serde",
789
871
  "serde_json",
@@ -796,7 +878,7 @@ dependencies = [
796
878
 
797
879
  [[package]]
798
880
  name = "flowproof-cli"
799
- version = "0.12.2"
881
+ version = "0.17.0"
800
882
  dependencies = [
801
883
  "ab_glyph",
802
884
  "chrono",
@@ -817,7 +899,7 @@ dependencies = [
817
899
 
818
900
  [[package]]
819
901
  name = "flowproof-driver"
820
- version = "0.12.2"
902
+ version = "0.17.0"
821
903
  dependencies = [
822
904
  "image",
823
905
  "postgres",
@@ -831,7 +913,7 @@ dependencies = [
831
913
 
832
914
  [[package]]
833
915
  name = "flowproof-python"
834
- version = "0.12.2"
916
+ version = "0.17.0"
835
917
  dependencies = [
836
918
  "flowproof-agent",
837
919
  "flowproof-cli",
@@ -843,7 +925,7 @@ dependencies = [
843
925
 
844
926
  [[package]]
845
927
  name = "flowproof-replay"
846
- version = "0.12.2"
928
+ version = "0.17.0"
847
929
  dependencies = [
848
930
  "chrono",
849
931
  "flowproof-agent",
@@ -857,7 +939,7 @@ dependencies = [
857
939
 
858
940
  [[package]]
859
941
  name = "flowproof-trace"
860
- version = "0.12.2"
942
+ version = "0.17.0"
861
943
  dependencies = [
862
944
  "jsonschema",
863
945
  "regex",
@@ -985,9 +1067,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
985
1067
  checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
986
1068
  dependencies = [
987
1069
  "cfg-if",
1070
+ "js-sys",
988
1071
  "libc",
989
1072
  "r-efi 6.0.0",
990
1073
  "rand_core 0.10.1",
1074
+ "wasm-bindgen",
991
1075
  ]
992
1076
 
993
1077
  [[package]]
@@ -1009,8 +1093,7 @@ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
1009
1093
  [[package]]
1010
1094
  name = "headless_chrome"
1011
1095
  version = "1.0.22"
1012
- source = "registry+https://github.com/rust-lang/crates.io-index"
1013
- checksum = "5754ca220578ad74a5d5174c8ca2ff956fd3b94025f870844de1e910b47dfee5"
1096
+ source = "git+https://github.com/automators-com/flowproof?rev=eed7bc1873f6f2beac147d66f0df7a946329e6fe#eed7bc1873f6f2beac147d66f0df7a946329e6fe"
1014
1097
  dependencies = [
1015
1098
  "anyhow",
1016
1099
  "auto_generate_cdp",
@@ -1257,12 +1340,13 @@ dependencies = [
1257
1340
  ]
1258
1341
 
1259
1342
  [[package]]
1260
- name = "indoc"
1261
- version = "2.0.7"
1343
+ name = "inout"
1344
+ version = "0.1.4"
1262
1345
  source = "registry+https://github.com/rust-lang/crates.io-index"
1263
- checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
1346
+ checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01"
1264
1347
  dependencies = [
1265
- "rustversion",
1348
+ "block-padding",
1349
+ "generic-array",
1266
1350
  ]
1267
1351
 
1268
1352
  [[package]]
@@ -1427,6 +1511,33 @@ version = "0.4.33"
1427
1511
  source = "registry+https://github.com/rust-lang/crates.io-index"
1428
1512
  checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
1429
1513
 
1514
+ [[package]]
1515
+ name = "lopdf"
1516
+ version = "0.42.0"
1517
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1518
+ checksum = "25aab26d99567469098e64a02f42679f8965c6401263eefa31d8f2dcc37a221c"
1519
+ dependencies = [
1520
+ "aes",
1521
+ "bitflags 2.13.1",
1522
+ "cbc",
1523
+ "ecb",
1524
+ "encoding_rs",
1525
+ "flate2",
1526
+ "getrandom 0.4.3",
1527
+ "indexmap",
1528
+ "itoa",
1529
+ "log",
1530
+ "md-5 0.10.6",
1531
+ "nom",
1532
+ "rand 0.10.2",
1533
+ "rangemap",
1534
+ "sha2 0.10.9",
1535
+ "stringprep",
1536
+ "thiserror 2.0.18",
1537
+ "ttf-parser",
1538
+ "weezl",
1539
+ ]
1540
+
1430
1541
  [[package]]
1431
1542
  name = "matrixmultiply"
1432
1543
  version = "0.3.11"
@@ -1437,6 +1548,16 @@ dependencies = [
1437
1548
  "rawpointer",
1438
1549
  ]
1439
1550
 
1551
+ [[package]]
1552
+ name = "md-5"
1553
+ version = "0.10.6"
1554
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1555
+ checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
1556
+ dependencies = [
1557
+ "cfg-if",
1558
+ "digest 0.10.7",
1559
+ ]
1560
+
1440
1561
  [[package]]
1441
1562
  name = "md-5"
1442
1563
  version = "0.11.0"
@@ -1453,15 +1574,6 @@ version = "2.8.3"
1453
1574
  source = "registry+https://github.com/rust-lang/crates.io-index"
1454
1575
  checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
1455
1576
 
1456
- [[package]]
1457
- name = "memoffset"
1458
- version = "0.9.1"
1459
- source = "registry+https://github.com/rust-lang/crates.io-index"
1460
- checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
1461
- dependencies = [
1462
- "autocfg",
1463
- ]
1464
-
1465
1577
  [[package]]
1466
1578
  name = "miniz_oxide"
1467
1579
  version = "0.8.9"
@@ -1520,6 +1632,15 @@ dependencies = [
1520
1632
  "libc",
1521
1633
  ]
1522
1634
 
1635
+ [[package]]
1636
+ name = "nom"
1637
+ version = "8.0.0"
1638
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1639
+ checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405"
1640
+ dependencies = [
1641
+ "memchr",
1642
+ ]
1643
+
1523
1644
  [[package]]
1524
1645
  name = "num"
1525
1646
  version = "0.4.3"
@@ -1725,6 +1846,23 @@ version = "1.0.15"
1725
1846
  source = "registry+https://github.com/rust-lang/crates.io-index"
1726
1847
  checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
1727
1848
 
1849
+ [[package]]
1850
+ name = "pdf-extract"
1851
+ version = "0.12.0"
1852
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1853
+ checksum = "417e8fdc940f1d5bc62c5f89864c3a2255f74f69aa353c98509213d67df61e73"
1854
+ dependencies = [
1855
+ "adobe-cmap-parser",
1856
+ "cff-parser",
1857
+ "encoding_rs",
1858
+ "euclid",
1859
+ "log",
1860
+ "lopdf",
1861
+ "postscript",
1862
+ "type1-encoding-parser",
1863
+ "unicode-normalization",
1864
+ ]
1865
+
1728
1866
  [[package]]
1729
1867
  name = "percent-encoding"
1730
1868
  version = "2.3.2"
@@ -1769,6 +1907,12 @@ dependencies = [
1769
1907
  "miniz_oxide",
1770
1908
  ]
1771
1909
 
1910
+ [[package]]
1911
+ name = "pom"
1912
+ version = "1.1.0"
1913
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1914
+ checksum = "60f6ce597ecdcc9a098e7fddacb1065093a3d66446fa16c675e7e71d1b5c28e6"
1915
+
1772
1916
  [[package]]
1773
1917
  name = "portable-atomic"
1774
1918
  version = "1.14.0"
@@ -1800,10 +1944,10 @@ dependencies = [
1800
1944
  "bytes",
1801
1945
  "fallible-iterator",
1802
1946
  "hmac",
1803
- "md-5",
1947
+ "md-5 0.11.0",
1804
1948
  "memchr",
1805
1949
  "rand 0.10.2",
1806
- "sha2",
1950
+ "sha2 0.11.0",
1807
1951
  "stringprep",
1808
1952
  ]
1809
1953
 
@@ -1818,6 +1962,12 @@ dependencies = [
1818
1962
  "postgres-protocol",
1819
1963
  ]
1820
1964
 
1965
+ [[package]]
1966
+ name = "postscript"
1967
+ version = "0.14.1"
1968
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1969
+ checksum = "78451badbdaebaf17f053fd9152b3ffb33b516104eacb45e7864aaa9c712f306"
1970
+
1821
1971
  [[package]]
1822
1972
  name = "potential_utf"
1823
1973
  version = "0.1.5"
@@ -1859,35 +2009,32 @@ checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea"
1859
2009
 
1860
2010
  [[package]]
1861
2011
  name = "pyo3"
1862
- version = "0.26.0"
2012
+ version = "0.29.2"
1863
2013
  source = "registry+https://github.com/rust-lang/crates.io-index"
1864
- checksum = "7ba0117f4212101ee6544044dae45abe1083d30ce7b29c4b5cbdfa2354e07383"
2014
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
1865
2015
  dependencies = [
1866
- "indoc",
1867
2016
  "libc",
1868
- "memoffset",
1869
2017
  "once_cell",
1870
2018
  "portable-atomic",
1871
2019
  "pyo3-build-config",
1872
2020
  "pyo3-ffi",
1873
2021
  "pyo3-macros",
1874
- "unindent",
1875
2022
  ]
1876
2023
 
1877
2024
  [[package]]
1878
2025
  name = "pyo3-build-config"
1879
- version = "0.26.0"
2026
+ version = "0.29.2"
1880
2027
  source = "registry+https://github.com/rust-lang/crates.io-index"
1881
- checksum = "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f"
2028
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
1882
2029
  dependencies = [
1883
2030
  "target-lexicon",
1884
2031
  ]
1885
2032
 
1886
2033
  [[package]]
1887
2034
  name = "pyo3-ffi"
1888
- version = "0.26.0"
2035
+ version = "0.29.2"
1889
2036
  source = "registry+https://github.com/rust-lang/crates.io-index"
1890
- checksum = "025474d3928738efb38ac36d4744a74a400c901c7596199e20e45d98eb194105"
2037
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
1891
2038
  dependencies = [
1892
2039
  "libc",
1893
2040
  "pyo3-build-config",
@@ -1895,9 +2042,9 @@ dependencies = [
1895
2042
 
1896
2043
  [[package]]
1897
2044
  name = "pyo3-macros"
1898
- version = "0.26.0"
2045
+ version = "0.29.2"
1899
2046
  source = "registry+https://github.com/rust-lang/crates.io-index"
1900
- checksum = "2e64eb489f22fe1c95911b77c44cc41e7c19f3082fc81cce90f657cdc42ffded"
2047
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
1901
2048
  dependencies = [
1902
2049
  "proc-macro2",
1903
2050
  "pyo3-macros-backend",
@@ -1907,13 +2054,12 @@ dependencies = [
1907
2054
 
1908
2055
  [[package]]
1909
2056
  name = "pyo3-macros-backend"
1910
- version = "0.26.0"
2057
+ version = "0.29.2"
1911
2058
  source = "registry+https://github.com/rust-lang/crates.io-index"
1912
- checksum = "100246c0ecf400b475341b8455a9213344569af29a3c841d29270e53102e0fcf"
2059
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
1913
2060
  dependencies = [
1914
2061
  "heck",
1915
2062
  "proc-macro2",
1916
- "pyo3-build-config",
1917
2063
  "quote",
1918
2064
  "syn 2.0.119",
1919
2065
  ]
@@ -2025,6 +2171,12 @@ dependencies = [
2025
2171
  "rand 0.8.7",
2026
2172
  ]
2027
2173
 
2174
+ [[package]]
2175
+ name = "rangemap"
2176
+ version = "1.7.1"
2177
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2178
+ checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68"
2179
+
2028
2180
  [[package]]
2029
2181
  name = "rawpointer"
2030
2182
  version = "0.2.1"
@@ -2487,6 +2639,17 @@ dependencies = [
2487
2639
  "digest 0.10.7",
2488
2640
  ]
2489
2641
 
2642
+ [[package]]
2643
+ name = "sha2"
2644
+ version = "0.10.9"
2645
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2646
+ checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283"
2647
+ dependencies = [
2648
+ "cfg-if",
2649
+ "cpufeatures 0.2.17",
2650
+ "digest 0.10.7",
2651
+ ]
2652
+
2490
2653
  [[package]]
2491
2654
  name = "sha2"
2492
2655
  version = "0.11.0"
@@ -2825,6 +2988,15 @@ dependencies = [
2825
2988
  "thiserror 2.0.18",
2826
2989
  ]
2827
2990
 
2991
+ [[package]]
2992
+ name = "type1-encoding-parser"
2993
+ version = "0.1.1"
2994
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2995
+ checksum = "fa10c302f5a53b7ad27fd42a3996e23d096ba39b5b8dd6d9e683a05b01bee749"
2996
+ dependencies = [
2997
+ "pom",
2998
+ ]
2999
+
2828
3000
  [[package]]
2829
3001
  name = "typeid"
2830
3002
  version = "1.0.3"
@@ -2893,12 +3065,6 @@ version = "1.13.3"
2893
3065
  source = "registry+https://github.com/rust-lang/crates.io-index"
2894
3066
  checksum = "c6f5d3c3b1bf09027a88a6bc961fc00497d651009560b5463668dc81b0fa87a8"
2895
3067
 
2896
- [[package]]
2897
- name = "unindent"
2898
- version = "0.2.4"
2899
- source = "registry+https://github.com/rust-lang/crates.io-index"
2900
- checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
2901
-
2902
3068
  [[package]]
2903
3069
  name = "unsafe-libyaml"
2904
3070
  version = "0.2.11"
@@ -22,7 +22,7 @@ members = ["crates/flowproof-driver", "crates/flowproof-trace", "crates/flowproo
22
22
  exclude = ["spike/windows-containment"]
23
23
 
24
24
  [workspace.package]
25
- version = "0.12.2"
25
+ version = "0.17.0"
26
26
  edition = "2021"
27
27
  license = "Apache-2.0"
28
28
  repository = "https://github.com/automators-com/flowproof"
@@ -40,6 +40,7 @@ flowproof-cli = { path = "crates/flowproof-cli" }
40
40
  anyhow = "1"
41
41
  chrono = { version = "0.4", default-features = false, features = ["clock"] }
42
42
  clap = { version = "4", features = ["derive"] }
43
+ pdf-extract = "0.12"
43
44
  serde = { version = "1", features = ["derive"] }
44
45
  regex = "1"
45
46
  serde_json = "1"
@@ -52,3 +53,15 @@ unwrap_used = "warn"
52
53
 
53
54
  [profile.release]
54
55
  lto = "thin"
56
+
57
+ # The published headless_chrome transport costs a CDP send up to 100ms waiting
58
+ # for the socket mutex the reader thread holds, which made typing a character
59
+ # cost 213ms (see docs/authoring.md). This pins a patched 1.0.22: the reader's
60
+ # read timeout drops to 1ms and responses are awaited by blocking on the channel
61
+ # rather than polling it. A git patch is viable because nothing in this
62
+ # workspace goes to crates.io — publish.yml builds the wheel and the npm package
63
+ # from here. The rev lives on an orphan branch of this repository, carries no
64
+ # flowproof code, and is not built by CI. Drop all of this once the upstream fix
65
+ # lands; the real fix is splitting the transport's read and write halves.
66
+ [patch.crates-io]
67
+ headless_chrome = { git = "https://github.com/automators-com/flowproof", rev = "eed7bc1873f6f2beac147d66f0df7a946329e6fe" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowproof
3
- Version: 0.12.2
3
+ Version: 0.17.0
4
4
  Classifier: Development Status :: 2 - Pre-Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Programming Language :: Python :: 3
@@ -1465,6 +1465,12 @@ fn notif_id_valid(fd: RawFd, id: u64) -> bool {
1465
1465
  }
1466
1466
 
1467
1467
  /// Extract `(msg_name, msg_namelen, msg_controllen)` from a raw msghdr copy.
1468
+ // `msg_controllen` is not the same type on every Linux target: `size_t` under
1469
+ // glibc, `socklen_t` under uclibc/arm and l4re. Clippy only ever sees the
1470
+ // target it is running on, so on x86_64-gnu it calls the cast redundant. It is
1471
+ // load-bearing everywhere else - libc writes the same `as usize` in its own
1472
+ // portable CMSG helpers. Removing it breaks those targets.
1473
+ #[allow(clippy::unnecessary_cast)]
1468
1474
  fn msghdr_fields(hdr: &[u8]) -> (u64, u32, usize) {
1469
1475
  let msg: libc::msghdr =
1470
1476
  unsafe { std::ptr::read_unaligned(hdr.as_ptr() as *const libc::msghdr) };
@@ -1476,6 +1482,9 @@ fn msghdr_fields(hdr: &[u8]) -> (u64, u32, usize) {
1476
1482
  }
1477
1483
 
1478
1484
  /// Extract `(msg_iov ptr, msg_iovlen)` from a raw msghdr copy.
1485
+ // Same story as `msghdr_fields`: `msg_iovlen` is `size_t` under glibc and
1486
+ // `c_int` under uclibc/arm, uclibc/mips32, l4re and emscripten.
1487
+ #[allow(clippy::unnecessary_cast)]
1479
1488
  fn msghdr_iov(hdr: &[u8]) -> (u64, usize) {
1480
1489
  let msg: libc::msghdr =
1481
1490
  unsafe { std::ptr::read_unaligned(hdr.as_ptr() as *const libc::msghdr) };