Skip to content

fix(relay): restore streaming delivery, Slack command parity, and status clearing (salvage of #69716) - #69747

Merged
benbarclay merged 4 commits into
mainfrom
salvage/relay-streaming-delivery
Jul 23, 2026
Merged

fix(relay): restore streaming delivery, Slack command parity, and status clearing (salvage of #69716)#69747
benbarclay merged 4 commits into
mainfrom
salvage/relay-streaming-delivery

Conversation

@benbarclay

Copy link
Copy Markdown
Collaborator

Summary

Salvage of #69716 (@victor-kyriazakos) over current main, resolving the collision with #69721 which merged send_typing twenty minutes after that PR opened. The contributor's three commits are carried as-is (authorship preserved in history); the merge commit reconciles the overlap.

Restores relay-delivered Slack presentation and command parity:

  • Streaming delivery: _adapter_for_source() routes presentation callbacks (streamed edits, typing, tool progress) for delivered_via_upstream_relay events through the process-level RelayAdapter instead of a possibly-absent native platform adapter. Source identity, authz, and session semantics are unchanged; registered transport-adapter provenance stays highest priority (multiplexed-profile behavior preserved).
  • edit_message over relay: new op="edit" frames with _with_scope() + Phase 1.5 platform tag, mirroring send().
  • Slack Assistant status clear: stop_typing() emits an empty-content typing frame, Slack-gated (one-shot platforms are untouched).
  • /hermes parent-command normalization at the wire boundary, matching the native Slack adapter (subcommand map, compact → /compress, free-form text passthrough, /hermes/help). Non-Slack relay events unchanged.

What the salvage changes vs. #69716

Operational flag — deploy order

gateway-gateway #154 must deploy before this reaches any hosted gateway. A connector predating #154 hardcodes status: "is typing…" for the typing op, so an empty clear frame would set the status instead of clearing it — a permanently stuck "is typing…" after every turn. The reverse order is safe. This is noted in the stop_typing docstring and the contract doc.

Verification

  • tests/gateway/relay/ full suite: 188 passed (includes the merged adapter + contract-doc conformance).
  • test_multiplex_profile_authz.py + test_stream_consumer.py + test_slack_relay_parent_command.py: 144 passed.
  • ruff check clean on all touched files; git diff --check clean; no conflict markers.
  • Run from inside the worktree with PYTHONPATH pinned to the checkout.

Credit

All substantive work by @victor-kyriazakos in #69716; his commits are carried directly. The relay-delivered flows were exercised by the original author against a real shared Slack connector deployment (see #69716's verification section).

Infographic

relay-streaming-salvage

@github-actions

github-actions Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 16e65a2

debug info

CI timings

CI timings · View job

Wall time 9m27s vs 9m19s (+1.4%). 10 job(s) slower, 10 faster,

  • Build&Test Docker image / build (arm64, ubuntu-24.04-arm, linux/arm64, type=gha,scope=docker-arm64, type=gha,mode=max,scope...: +112.0s
  • Python tests / Run tests slice 3/8: -46.0s
  • Python tests / Run tests slice 5/8: -40.0s
  • Python tests / Run tests slice 6/8: -38.0s
  • Python tests / Run tests slice 2/8: +38.0s

@alt-glitch alt-glitch added type/bug Something isn't working P2 Medium — degraded but workaround exists comp/gateway Gateway runner, session dispatch, delivery platform/slack Slack app adapter area/streaming Streaming responses: gateway delivery, provider wire sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages labels Jul 23, 2026
@benbarclay
benbarclay merged commit 305a3c7 into main Jul 23, 2026
39 checks passed
@benbarclay
benbarclay deleted the salvage/relay-streaming-delivery branch July 23, 2026 02:51
randlee pushed a commit to randlee/hermes-agent that referenced this pull request Aug 11, 2026
…tus clearing (salvage of NousResearch#69716) (NousResearch#69747)

* fix(gateway): restore relay streaming delivery

* fix(relay): route Slack parent commands before session gates

* fix(relay): clear Slack typing status after turns

---------

Co-authored-by: Victor Kyriazakos <victor@rocketfueldev.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/streaming Streaming responses: gateway delivery, provider wire comp/gateway Gateway runner, session dispatch, delivery P2 Medium — degraded but workaround exists platform/slack Slack app adapter sweeper:risk-message-delivery Sweeper risk: may drop, duplicate, misroute, or suppress messages type/bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants