Metadata-Version: 2.5
Name: eda-bridge-runtime
Version: 0.1.0a7
Summary: Agent-neutral execution runtime for local and remote EDA bridges
Author: Pengfei Li
License: MIT License
        
        Copyright (c) 2026 Pengfei Li
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.8; extra == 'dev'
Description-Content-Type: text/markdown

# EDA Bridge Runtime

<p align="center">
  <img src="plugins/eda-bridge-runtime/assets/logo.png" width="160" alt="EDA Bridge Runtime logo">
</p>

<p align="center"><strong>Keep EDA work reliable whether the Agent runs beside the tool or reaches it over SSH.</strong></p>

`eda-bridge-runtime` is an agent-neutral execution layer for EDA automation.
It gives local and SSH-driven bridges the same request envelope, durable job
semantics, context handoff, timing evidence, and append-only execution ledger.

The runtime is intentionally not an EDA bridge and not an AI harness. Vendor
bridges keep their native API knowledge. Agents state a short purpose; the
runtime records what was requested, what actually ran, how long each phase
took, and what result or artifact was produced.

![A small operator reconnects a remote EDA task that kept running and retained its evidence record](docs/assets/readme/runtime-user-value.png)

## What changes for the user

You state the task and intended target once. The Runtime carries the same
request through a local or remote path, keeps long work recoverable across a
disconnect, and returns the result with its linked timing and evidence.

## Design promises

- Local and SSH execution use one protocol and one evidence model.
- Every agent-originated operation carries a concise `purpose`.
- Actor metadata is collected automatically where possible and records its
  provenance; missing metadata never blocks engineering work.
- Mutating requests are idempotent and auditable.
- Disconnection does not imply that a long EDA job failed.
- Context tokens contain locators and fingerprints, never credentials.
- EDA-specific behavior lives in adapters, not in the runtime core.

## Current alpha

`0.1.0a7` makes the Runtime itself the stable fact recorder. Every MCP client contributes its
observed client identity, concise purpose, argument fingerprint, timings, and linked Run without
depending on a Codex- or Pi-specific hook. Agent hooks may add richer model/session metadata, but
they are optional enrichment. Agent adapters may attach bounded provider, model, reasoning,
session, and tool-call metadata; Runtime labels these values `declared`, while MCP client identity
remains independently `observed`. A bounded `eda.connection.reset` action closes only a stale
Runtime-owned transport after an upgrade; it never closes or modifies the EDA application.

`0.1.0a5` added optional Codex lifecycle enrichment for session, turn, model, permission mode, and
tool-call identity. The append-only audit stores neither raw operation payloads nor chat transcripts.

`0.1.0a4` adds rich bounded Context snapshots, stable origin routing, direct
one-submit execution, and automatic origin binding during connection setup.
Vendor Skills can declare the Runtime MCP directly, so users select one
task-facing Skill rather than manually composing infrastructure Skills.

```powershell
python -m pip install "eda-bridge-runtime==0.1.0a7"
eda-runtime doctor
```

For repository development, create a virtual environment and install `.[dev]`
instead. Public releases are built once on a clean GitHub runner, published
through PyPI Trusted Publishing, and installed back from PyPI before acceptance.

See [Architecture](docs/ARCHITECTURE.md) and the
[protocol schema](docs/schemas/request-v1.schema.json). Host placement is
defined by the [agent-client, eda-worker, and combined deployment roles](docs/DEPLOYMENT_ROLES.md).

The lightweight Pi Agent pilot and its checked-in thin adapter are described in
[Pi Agent pilot](docs/PI_AGENT_PILOT.md). They reuse the same Runtime boundary instead of adding a
second SSH or EDA-control path.

The repository also includes a minimal [MCP and Codex plugin](docs/MCP_AND_CODEX.md). It resolves
named local/SSH connections without asking the agent to assemble transport commands on each call.
Sanitized real-host evidence is recorded in [acceptance results](docs/ACCEPTANCE.md).
