feat(a2a): configurable agent launchers — process and versioned Pi RPC transports - #82503
Open
kidclone3 wants to merge 1 commit into
Open
feat(a2a): configurable agent launchers — process and versioned Pi RPC transports#82503kidclone3 wants to merge 1 commit into
kidclone3 wants to merge 1 commit into
Conversation
… RPC transports - add safe process launcher transport: shell=False, minimal env, bounded output, process-tree reaping - add versioned Pi RPC transport: omp_17_2 (requires ready, agent_end) and feynman_0_3_11 (agent_settled) - connect launcher cancellation, opaque session continuity, and exactly-once A2A finalization - add deterministic JSONL worker tests (no real Pi/OMP/Feynman binaries required) - document configuration precedence, schemas, placeholders, and failure mapping
kidclone3
force-pushed
the
feat/a2a-configurable-agent-launchers
branch
from
August 9, 2026 13:46
6cef620 to
76f107b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds configurable external agent launchers to the A2A inbound server. A non-root served A2A route can now run a configured subprocess or a versioned Pi-compatible RPC worker — safely, with bounded output, process-tree reaping, cancellation, and exactly-once finalization — without changing A2A semantics or breaking existing Hermes routes.
Builds on the A2A platform plugin landed in #77109. Addresses gaps surfaced in #56435 (completion visibility), #78007 (timeout alignment), and #77526 (multi-turn continuity) by providing a first-class external execution path.
What it does
transport: process): executes one owned subprocess per turn withshell=False, minimal environment, explicitcwd, positive timeout, bounded stdout/stderr (4 MiB), and reply capped at 1 MiB. Supports text and JSON output, optional session-ID extraction, and three continuity modes (stateless, deterministic-key, opaque-session).transport: pi_rpc): maintains persistent workers per(agent_slug, context_id)using strict UTF-8 LF-delimited JSON frames. Two code-owned profiles —omp(requiresready, settles onagent_end) andfeynman(noready, settles onagent_settled). Blocking extension UI receives correlated cancellation; workers serialize turns, retain early frames, and evict on rejection/crash/timeout/malformed input.Changes
plugins/platforms/a2a/launchers.pyplugins/platforms/a2a/pi_rpc.pyplugins/platforms/a2a/adapter.pyLauncherManagerintegration, common finalization boundarytests/plugins/test_a2a_launchers.pytests/plugins/test_a2a_plugin.pywebsite/docs/user-guide/messaging/a2a.mdcli-config.yaml.exampleSafety invariants
Related