flowproof 0.23.3__tar.gz → 0.23.4__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.
- {flowproof-0.23.3 → flowproof-0.23.4}/Cargo.lock +7 -7
- {flowproof-0.23.3 → flowproof-0.23.4}/Cargo.toml +1 -1
- {flowproof-0.23.3 → flowproof-0.23.4}/PKG-INFO +1 -1
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/web.rs +29 -4
- flowproof-0.23.4/crates/flowproof-adapters/tests/grid_scene_e2e.rs +54 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/flowproof/__init__.py +1 -1
- {flowproof-0.23.3 → flowproof-0.23.4}/pyproject.toml +1 -1
- {flowproof-0.23.3 → flowproof-0.23.4}/README.md +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/agent_proxy.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/agent_runner.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_linux.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/audit.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/capture.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/env_block.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/filters.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/identity.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/logon.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/netevents.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/run.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/spawn.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/wfp.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/fiori.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/fs_observe.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/mcp_core.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/mcp_http.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/mcp_stdio.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/sap_com.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/vision.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/a11y_capture.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/drag_spike.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/fs_observation_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/network_idle_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/shared_browser_shutdown_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/side_effect_http_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/static_area_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/windows_containment_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/agent_steps.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/author.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/clarify.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/doc_author.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/doc_formats/hp_alm.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/doc_formats.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/draft_assembly.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/heal.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/llm.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/recorder.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/repair.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/rules.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/src/spec.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-agent/tests/model_client_http.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/skills/flowproof-config/SKILL.md +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/agent_flow.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/capture.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/config.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/doctor.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/main.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/suite.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/suite_checkpoint.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/suite_inputs.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/suite_journal.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/src/update_check.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/a11y_selector_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_conversation_anthropic_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_conversation_streaming_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_flow_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_url_record_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/api_pipeline.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/audit_record_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/calc_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/clock_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/config_cli_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/config_seed_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/config_skill_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/cookie_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/doctor_ai_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/doctor_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/documented_flags.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/egress_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/examples_resolve.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_arg_matchers.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_audit_since.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_call_order.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_capability_regression.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_control_verdict.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_mcp_kill.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_no_tool_call.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_reply_contains.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_side_effect.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/fiori_field_commit_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/grid_cell_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/iframe_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/llm_author_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/mcp_http_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/mcp_stdio_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/notepad_author_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/notepad_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/page_title_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/pinned_random_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/sap_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/sap_pipeline.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/sap_sim_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/scoped_container_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/select_missing_option_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/skip_unless_env.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/suite_checkpoint.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/suite_env_from.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/suite_flow_isolation.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/suite_missing_trace.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/suite_policy.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/support/sap_simulator.py +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/visibility_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/vision_pipeline.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/web_e2e.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/app.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/backend.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/gdi.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/mock.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/oob.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/recording.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/redact.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/surface.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/visual.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-driver/src/window.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-python/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-python/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-replay/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-replay/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-replay/src/report.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-replay/src/runrecord.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-replay/tests/replay_calc.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/Cargo.toml +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/schema/cassette-v1.schema.json +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/schema/side-effect-v1.schema.json +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/schema/trace-v1.schema.json +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/captures.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/cassette.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/cassette_diff.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/egress.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/format.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/lib.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/secret.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/secret_scan.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/side_effect.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/substitution.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/src/toolcalls.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/cassette_conformance.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/fixtures/multi.trace.jsonl +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/fixtures/sample.trace.jsonl +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/schema_conformance.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/side_effect_conformance.rs +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/flowproof/cli.py +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/flowproof/flow.py +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/flowproof/mcp_server.py +0 -0
- {flowproof-0.23.3 → flowproof-0.23.4}/flowproof/py.typed +0 -0
|
@@ -930,7 +930,7 @@ dependencies = [
|
|
|
930
930
|
|
|
931
931
|
[[package]]
|
|
932
932
|
name = "flowproof-adapters"
|
|
933
|
-
version = "0.23.
|
|
933
|
+
version = "0.23.4"
|
|
934
934
|
dependencies = [
|
|
935
935
|
"anyhow",
|
|
936
936
|
"flowproof-driver",
|
|
@@ -949,7 +949,7 @@ dependencies = [
|
|
|
949
949
|
|
|
950
950
|
[[package]]
|
|
951
951
|
name = "flowproof-agent"
|
|
952
|
-
version = "0.23.
|
|
952
|
+
version = "0.23.4"
|
|
953
953
|
dependencies = [
|
|
954
954
|
"chrono",
|
|
955
955
|
"flowproof-driver",
|
|
@@ -967,7 +967,7 @@ dependencies = [
|
|
|
967
967
|
|
|
968
968
|
[[package]]
|
|
969
969
|
name = "flowproof-cli"
|
|
970
|
-
version = "0.23.
|
|
970
|
+
version = "0.23.4"
|
|
971
971
|
dependencies = [
|
|
972
972
|
"ab_glyph",
|
|
973
973
|
"chrono",
|
|
@@ -992,7 +992,7 @@ dependencies = [
|
|
|
992
992
|
|
|
993
993
|
[[package]]
|
|
994
994
|
name = "flowproof-driver"
|
|
995
|
-
version = "0.23.
|
|
995
|
+
version = "0.23.4"
|
|
996
996
|
dependencies = [
|
|
997
997
|
"calamine",
|
|
998
998
|
"flowproof-trace",
|
|
@@ -1008,7 +1008,7 @@ dependencies = [
|
|
|
1008
1008
|
|
|
1009
1009
|
[[package]]
|
|
1010
1010
|
name = "flowproof-python"
|
|
1011
|
-
version = "0.23.
|
|
1011
|
+
version = "0.23.4"
|
|
1012
1012
|
dependencies = [
|
|
1013
1013
|
"flowproof-agent",
|
|
1014
1014
|
"flowproof-cli",
|
|
@@ -1020,7 +1020,7 @@ dependencies = [
|
|
|
1020
1020
|
|
|
1021
1021
|
[[package]]
|
|
1022
1022
|
name = "flowproof-replay"
|
|
1023
|
-
version = "0.23.
|
|
1023
|
+
version = "0.23.4"
|
|
1024
1024
|
dependencies = [
|
|
1025
1025
|
"chrono",
|
|
1026
1026
|
"flowproof-agent",
|
|
@@ -1034,7 +1034,7 @@ dependencies = [
|
|
|
1034
1034
|
|
|
1035
1035
|
[[package]]
|
|
1036
1036
|
name = "flowproof-trace"
|
|
1037
|
-
version = "0.23.
|
|
1037
|
+
version = "0.23.4"
|
|
1038
1038
|
dependencies = [
|
|
1039
1039
|
"jsonschema",
|
|
1040
1040
|
"regex",
|
|
@@ -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.23.
|
|
25
|
+
version = "0.23.4"
|
|
26
26
|
edition = "2021"
|
|
27
27
|
license = "Apache-2.0"
|
|
28
28
|
repository = "https://github.com/automators-com/flowproof"
|
|
@@ -4917,7 +4917,7 @@ impl AppDriver for WebAppDriver {
|
|
|
4917
4917
|
standInHosts.add(host);
|
|
4918
4918
|
}
|
|
4919
4919
|
const interactive = el => el.matches(
|
|
4920
|
-
'input, button, a, select, textarea, [role=button], [role=checkbox], [role=radio], [role=menuitem], [draggable], [ondrop], .draggable-row, .droparea'
|
|
4920
|
+
'input, button, a, select, textarea, [role=textbox], [role=combobox], [role=button], [role=checkbox], [role=radio], [role=menuitem], [draggable], [ondrop], .draggable-row, .droparea'
|
|
4921
4921
|
) || (!!el.id && el.children.length === 0 && ['DIV', 'SPAN'].includes(el.tagName)) ||
|
|
4922
4922
|
styledLeaf(el) || standInHosts.has(el);
|
|
4923
4923
|
const readableLeaf = el => {
|
|
@@ -4927,7 +4927,23 @@ impl AppDriver for WebAppDriver {
|
|
|
4927
4927
|
(child.textContent || '').trim()
|
|
4928
4928
|
) && (semanticCss(el) || scopedReadable(el));
|
|
4929
4929
|
};
|
|
4930
|
-
|
|
4930
|
+
// Empty custom grid editors are controls too. Keep the first
|
|
4931
|
+
// editable row ahead of decorative toolbar leaves so the scene
|
|
4932
|
+
// budget cannot remove the fields needed to create an item.
|
|
4933
|
+
const firstGridRows = new Set();
|
|
4934
|
+
for (const editor of all.filter(el => el.matches('[role=textbox], [role=combobox]'))) {
|
|
4935
|
+
if (!isRendered(editor)) continue;
|
|
4936
|
+
const cell = editor.closest('[role=gridcell]');
|
|
4937
|
+
const row = cell && cell.closest('tr, [role=row]');
|
|
4938
|
+
const grid = cell && cell.closest('table, [role=grid]');
|
|
4939
|
+
if (row && grid && !Array.from(firstGridRows).some(r => r.closest('table, [role=grid]') === grid)) {
|
|
4940
|
+
firstGridRows.add(row);
|
|
4941
|
+
}
|
|
4942
|
+
}
|
|
4943
|
+
const priorityField = el => el.matches('input, select, textarea') ||
|
|
4944
|
+
(el.matches('[role=textbox], [role=combobox]') &&
|
|
4945
|
+
firstGridRows.has(el.closest('tr, [role=row]')));
|
|
4946
|
+
const ordered = all.filter(priorityField).concat(all.filter(interactive),
|
|
4931
4947
|
all.filter(el => !interactive(el) && readableLeaf(el))
|
|
4932
4948
|
);
|
|
4933
4949
|
const seen = new Set();
|
|
@@ -4962,8 +4978,15 @@ impl AppDriver for WebAppDriver {
|
|
|
4962
4978
|
const entries = chosen.map(el => {
|
|
4963
4979
|
const css = cssPath(el);
|
|
4964
4980
|
const scoped = !interactive(el) && !semanticCss(el) ? scopedReadable(el) : null;
|
|
4981
|
+
const labelledBy = (el.getAttribute('aria-labelledby') || '').split(/\s+/)
|
|
4982
|
+
.map(id => document.getElementById(id)?.textContent?.trim() || '').filter(Boolean).join(' ');
|
|
4965
4983
|
const label = el.labels && el.labels[0] ? el.labels[0].textContent.trim()
|
|
4966
|
-
: (el.getAttribute('aria-label') || el.getAttribute('placeholder') || '');
|
|
4984
|
+
: (el.getAttribute('aria-label') || labelledBy || el.getAttribute('placeholder') || '');
|
|
4985
|
+
const gridCell = el.closest('[role=gridcell]');
|
|
4986
|
+
const rowIndex = gridCell && (gridCell.getAttribute('aria-rowindex') ||
|
|
4987
|
+
gridCell.getAttribute('lsmatrixrowindex') ||
|
|
4988
|
+
gridCell.closest('[role=row]')?.getAttribute('aria-rowindex'));
|
|
4989
|
+
|
|
4967
4990
|
const ticks = el.tagName === 'INPUT' && ['checkbox', 'radio'].includes(el.type);
|
|
4968
4991
|
const isField = ['INPUT', 'SELECT', 'TEXTAREA'].includes(el.tagName);
|
|
4969
4992
|
const entry = {
|
|
@@ -4973,7 +4996,9 @@ impl AppDriver for WebAppDriver {
|
|
|
4973
4996
|
actionable: interactive(el),
|
|
4974
4997
|
type: el.getAttribute('type') || undefined,
|
|
4975
4998
|
text: (el.textContent || '').trim().slice(0, 80) || undefined,
|
|
4976
|
-
label: label || undefined,
|
|
4999
|
+
label: label.trim().slice(0, 160) || undefined,
|
|
5000
|
+
row: rowIndex || undefined,
|
|
5001
|
+
role: el.getAttribute('role') || undefined,
|
|
4977
5002
|
value: fieldValue(el),
|
|
4978
5003
|
checked: ticks ? el.checked : undefined,
|
|
4979
5004
|
required: el.required || undefined,
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//! SAP-style empty custom editors must survive a crowded scene inventory.
|
|
2
|
+
use flowproof_driver::AppDriver;
|
|
3
|
+
|
|
4
|
+
#[test]
|
|
5
|
+
fn empty_grid_editors_have_column_labels_and_row_identity() {
|
|
6
|
+
if std::env::var("FLOWPROOF_E2E").as_deref() != Ok("1") {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
let _guard = flowproof_adapters::SharedBrowserGuard::new();
|
|
10
|
+
let toolbar = (0..120)
|
|
11
|
+
.map(|i| format!("<span id='tool{i}'>Tool {i}</span>"))
|
|
12
|
+
.collect::<String>();
|
|
13
|
+
let html = format!(
|
|
14
|
+
r#"<html><body>{toolbar}
|
|
15
|
+
<table><tr><th id="material-label">Material</th><th id="plant-label">Plant</th></tr>
|
|
16
|
+
<tr><td role="gridcell" lsmatrixrowindex="1"><span id="material" role="textbox" aria-labelledby="material-label" tabindex="0" style="display:block;width:100px;height:24px"></span></td>
|
|
17
|
+
<td role="gridcell" lsmatrixrowindex="1"><span id="plant" role="textbox" aria-labelledby="plant-label" tabindex="0" style="display:block;width:100px;height:24px"></span></td></tr></table>
|
|
18
|
+
<input type="password" value="never-export-this">
|
|
19
|
+
</body></html>"#
|
|
20
|
+
);
|
|
21
|
+
let listener = std::net::TcpListener::bind("127.0.0.1:0").expect("fixture listener");
|
|
22
|
+
let port = listener.local_addr().expect("listener address").port();
|
|
23
|
+
std::thread::spawn(move || {
|
|
24
|
+
use std::io::{Read, Write};
|
|
25
|
+
for mut stream in listener.incoming().flatten() {
|
|
26
|
+
let mut buf = [0; 2048];
|
|
27
|
+
let _ = stream.read(&mut buf);
|
|
28
|
+
let _ = write!(stream, "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: {}\r\nConnection: close\r\n\r\n{}", html.len(), html);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
let mut driver = flowproof_adapters::WebAppDriver::new().expect("Chrome launches");
|
|
32
|
+
driver
|
|
33
|
+
.launch(
|
|
34
|
+
&format!("http://127.0.0.1:{port}"),
|
|
35
|
+
"",
|
|
36
|
+
std::time::Duration::from_secs(30),
|
|
37
|
+
)
|
|
38
|
+
.expect("fixture loads");
|
|
39
|
+
let scene = driver.scene().expect("scene reads").expect("scene exists");
|
|
40
|
+
let entries: serde_json::Value = serde_json::from_str(&scene).expect("scene JSON");
|
|
41
|
+
for (id, label) in [("material", "Material"), ("plant", "Plant")] {
|
|
42
|
+
let entry = entries
|
|
43
|
+
.as_array()
|
|
44
|
+
.expect("scene entries")
|
|
45
|
+
.iter()
|
|
46
|
+
.find(|e| e["target"] == format!("css:#{id}"))
|
|
47
|
+
.expect("empty editor in scene");
|
|
48
|
+
assert_eq!(entry["label"], label);
|
|
49
|
+
assert_eq!(entry["row"], "1");
|
|
50
|
+
assert_eq!(entry["actionable"], true);
|
|
51
|
+
assert_eq!(entry["role"], "textbox");
|
|
52
|
+
}
|
|
53
|
+
assert!(!scene.contains("never-export-this"));
|
|
54
|
+
}
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "flowproof"
|
|
7
|
-
version = "0.23.
|
|
7
|
+
version = "0.23.4"
|
|
8
8
|
description = "Test that a bot only ever does the job it was given — and never deletes, sends or approves the thing it must not. Record it doing the job once, then replay on every commit with zero LLM calls. For the agents and RPA already running real work in production: web, desktop, SAP, Citrix."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/capture.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/env_block.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/filters.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/identity.rs
RENAMED
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/src/egress_windows/netevents.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/shared_browser_shutdown_e2e.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/side_effect_http_e2e.rs
RENAMED
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-adapters/tests/windows_containment_e2e.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_conversation_anthropic_e2e.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/agent_conversation_streaming_e2e.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_arg_matchers.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_audit_since.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_call_order.rs
RENAMED
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_control_verdict.rs
RENAMED
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_no_tool_call.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_reply_contains.rs
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/falsifiability_side_effect.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-cli/tests/select_missing_option_e2e.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/schema/side-effect-v1.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/fixtures/multi.trace.jsonl
RENAMED
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/fixtures/sample.trace.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
{flowproof-0.23.3 → flowproof-0.23.4}/crates/flowproof-trace/tests/side_effect_conformance.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|