Repository navigation
Conversation
V1.1 follow-up checklist — explicitly out of scope for this V1 PRThe current draft is intentionally limited to the generic safe-delivery and exact-session lifecycle seam. The following work will be built and tested in separate successor worktrees, then proposed separately after V1 is validated:
Standalone V1 implementation: https://github.com/Sahil-SS9/hermes-walkie-talkie The V1.1 changes will not be added to this PR branch. The core successor worktree will be stacked from this draft PR head for development only, then rebased/transplanted onto upstream |
Walkie Talkie V1.1 — Security Review Complete + Fixes AppliedThe standalone V1.1 branch has been pushed and a PR opened: Sahil-SS9/hermes-walkie-talkie#1 Security review (direct, by KENSEI)Two findings identified and fixed: SEC-R1 — Sender identity spoofing (MEDIUM) SEC-R2 — Boundary marker injection (LOW-MEDIUM) Verification at 0d5d02c
Core PR statusThis core PR (#83661) remains the V1 delivery seam — the minimal core transplant that enables the plugin. The V1.1 features (groups, broadcasts, requests, Dashboard) live entirely in the standalone repo and do not require additional core changes. |
2a853f8 to
bc3e972
Compare
bc3e972 to
fa83af3
Compare
… main Ports the peer-delivery seam (PR NousResearch#83661) as a delta over current upstream main, which already absorbed the simpler inject_message API: - mode=queue/steer/interrupt with queue as safe default: busy sessions never have their active tool interrupted - non_control inert-control guarantee (H-107): injected text can never reach slash-command or shell dispatch - on_session_open lifecycle hook + notify_session_open + host-owned injection router registry (tui + gateway) - old_session_id threaded through on_session_reset for idempotent session-open release - per-plugin allow_gateway_injection config grant, fail closed Co-authored-by: Sahil Saghir <sahil@hydraskale.com>
Summary
Adds a small, generic host-owned delivery seam so standalone plugins can route conversational input to the correct live Hermes session without accessing private host queues or interrupting active tools.
This is the Hermes core prerequisite for the standalone Hermes Walkie Talkie plugin and for local cross-session messaging requested in #81885. The transport and product-specific peer logic remain outside this repository.
What changes
PluginContext.inject_message()additively withmodeandtarget_session.queuethe safe default: idle sessions start a turn; busy sessions receive the message at the next safe boundary.steerand legacyinterruptmodes where supported.on_session_openlifecycle event for live, addressable sessions before their first model turn.No new core model tool is added. The external peer transport remains a standalone plugin.
Safety properties
queuenever interrupts an active tool.plugins.entries.<id>.allow_gateway_injection: trueis configured.Compatibility
ctx.inject_message(content, role)callers remain valid.Verification
Verified from a clean worktree based directly on
NousResearch/mainat2cdb30a474d76cca9eb61714d889c18f493aa7fc:py_compileon all changed runtime modules: passed.ruff checkon all changed Python files: passed.git diff --check: passed.Sahil-SS9 <218421507+Sahil-SS9@users.noreply.github.com>.Scope boundary
This draft contains only the generic V1 host seam, tests and documentation. Groups, broadcasts, structured request/reply workflows, native Windows transport, operational metrics and the full Desktop collaboration UI are planned as a separately tested V1.1 enhancement and are not part of this PR.