Skip to main content
Glama
evex-agent-messaging

evex-agent-messaging

by EvexU2

EVEX Agent Messaging Gateway

Provider-neutraler MCP-Transport für Parent-Main-, Child-Main- und Role-Child-Konversationsoperationen. Agenten rufen dieses MCP auf; sie rufen die OpenHands-Conversation-API nicht direkt auf.

Werkzeuge

  • create_child: validiert die vollständige strukturierte Mission und den sauberen deterministischen Git-Checkout, bindet die Child-Identität plus Rückruffähigkeit, erstellt dann eine deterministische Konversation. Der Provider führt eine werkzeugfreie Aufnahmerunde aus, stellt den exakten Branch/Head wieder her und validiert ihn erneut nach dem ACP-Bootstrap, und erst dann werden Werkzeuge zugelassen und die Mission übergeben. Kein Conversation-API-Aufruf erfolgt, wenn Checkout-Berechtigung oder -Autorität fehlt. Quellrollen erhalten nur Messaging; nur explizite QA/Reparatur-Missionen dürfen capabilities: ["runtime_environment"] anfordern.

  • send_to_parent: übermittelt ein strukturiertes RESULT/NEEDS_INPUT an den besitzenden Main.

  • request_user_decision: übermittelt eine A/B/C-Frage an den besitzenden Main.

  • cancel_mission / resume_mission: stoppt oder setzt die exakte Child-Aufgabe fort.

  • publish_navigation_links: veröffentlicht informative Issue/Main/Child/PR-Links an den besitzenden Main.

Fähigkeiten sind kompakte undurchsichtige evx1_-HMAC-SHA256-Referenzen. Sie binden den besitzenden Main, Child, Aufgabenschlüssel, Rolle, zulässige Aktion und Ablaufzeit. Der Server hält die OpenHands-Anmeldeinformationen; sie erscheinen nie in Werkzeugeingaben, Werkzeugausgaben oder Child-Umgebungsvariablen. Es gibt keinen dauerhaften Zustand: Aufrufer liefern einen stabilen Nachrichtenschlüssel und der Main dedupliziert semantische Wiederholungen.

Jedes erstellte Child empfängt einen asynchronen nativen Stop-Hook. Der Hook ruft den privaten /completion-hook-Endpunkt mit seinem referenzierten Geltungsbereich auf; das Gateway wartet auf den terminalen nativen Zustand und sendet ein stabiles RECOVERY_WAKE mit der begrenzten terminalen Assistentenantwort an den besitzenden Main. Dies ist der provider-neutrale Fallback, wenn ein Modell endet, ohne send_to_parent aufzurufen. Wiederholte Hooks verwenden denselben semantischen Nachrichtenschlüssel erneut und benötigen keine Datenbank, keinen Poller, kein Lese-Werkzeug oder Empfangsbeleg.

Der vertrauenswürdige Event-Gateway/Host prägt die kurzlebige Main-Fähigkeit mit main_capability_token(...) und injiziert sie in die Main-Mission. Das MCP legt keine Fähigkeits- Prägewerkzeuge für Agenten offen.

Der Parent erstellt oder ruft nur den persistenten Bare-Mirror unter /home/openhands/workspace/mirrors/<owner>--<repository>.git ab. create_child leitet /home/openhands/workspace/delivery/child-<child UUID> ab, erstellt das exakte Branch-Worktree, wenn es fehlt, und validiert Repository, Branch, Head und Sauberkeit, bevor es die Conversation-API berührt. Es klont/ruft nie remote ab, löscht, setzt zurück oder zweckentfremdet ein vorhandenes Worktree.

Related MCP server: handoff-mcp-server

Ausführung

Der Server verwendet MCP-Stdio-Rahmen (Content-Length-Header):

export EVEX_MESSAGING_SECRET='long-random-secret'
export OPENHANDS_URL='http://openhands:8000'
export OPENHANDS_API_KEY='server-only-key'
export OPENHANDS_PUBLIC_URL='http://openhands.example/canvas'
PYTHONPATH=src python3 -m evex_agent_messaging

Nur der Adapter liest die OpenHands-Variablen. Ein gefälschter Provider kann in Tests oder von einem Host injiziert werden, der den Dienst einbettet, sodass Fähigkeiten und Missionen laufzeit-neutral bleiben.

Validierung

python3 -m unittest discover -s tests -p 'test_*.py' -q

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers