Metadata-Version: 2.4
Name: passoflow
Version: 0.1.3
Summary: Python bindings for PassoFlow's Rust scenario contracts
License-Expression: MIT OR Apache-2.0
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM

# passoflow

Python bindings for PassoFlow's Rust scenario contracts.

```python
import json
import passoflow_python

result = json.loads(passoflow_python.validate_yaml("title: Demo\nsteps: []\n"))
print(result["valid"])
```

The package validates and normalizes scenarios locally. It also exposes the
opt-in Rust DOM backend for a local Chromium DevTools WebSocket endpoint:

```python
import json
from passoflow_python import DomBrowser

browser = DomBrowser("ws://127.0.0.1:9222/devtools/page/<target-id>")
browser.navigate("https://example.test")
print(json.loads(browser.preview_selector("#submit"))["count"])
```

The DOM backend is synchronous and local-only. Screen input and capture remain
separate PassoFlow-owned adapter surfaces.

For editor or integration discovery, `action_schema_json()` returns the
versioned action names, required and optional parameters, and reserved
step-metadata keys.

`action_outcome_contract_json(action, on_error)` returns the stable warning
policy for an action, including whether a warning may continue the scenario.

`input_platform_info_json()` reports whether native desktop input is supported
on the current platform and includes display, keyboard-layout, and permission
diagnostics without sending input. The result is JSON so a setup screen or
launcher can show the same status without importing platform-specific Rust
types.

See the [PassoFlow repository](https://github.com/kent-tokyo/passoflow) for
the full contract and development instructions.

