Skip to content

feat(plugins): streaming output observer hooks — deltas, interim messages, lifecycle - #84924

Merged
teknium1 merged 2 commits into
mainfrom
salvage/64161-streaming-hooks
Aug 13, 2026
Merged

teknium1 merged 2 commits into
mainfrom
salvage/64161-streaming-hooks

Conversation

@teknium1

Copy link
Copy Markdown
Collaborator

Summary

Plugins can now watch streamed model output live — on_stream_start / on_stream_delta / on_stream_end / on_interim_message observer hooks, delivered through a host-owned bounded queue so plugin callbacks never run inline on the token path (sub-issue #64161, tracker #64182). Salvages PR #64317 (@deaneeth) with authorship preserved.

Changes

Validation

Result
PR + plugin suites 129 passed (test_plugin_stream_hooks.py + test_plugins*.py)
Adjacent streaming suites all pass (streaming, single-writer #65991, drop logging, interrupt retry, stale-breaker, multimodal interim #66267)
Lint ruff clean

Hyper's TTS-pipe ask from the original thread; observer-only v1 per ground rule 3.

Infographic

streaming observer hooks

deaneeth and others added 2 commits August 12, 2026 17:18
Salvage of PR #64317 (@deaneeth) onto current main, implementing #64161:
observer-only on_stream_start / on_stream_delta / on_stream_end /
on_interim_message plugin hooks dispatched through a host-owned bounded
queue (one worker per callback) so plugin callbacks never run inline on
the token path. Reasoning deltas are opt-in via
plugins.stream_reasoning_deltas.
@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on 868d5d1 — chore(attribution): map dnethusahan.h05@gmail.com -> deaneet

⚠️ Warnings

CI timings · View report · View job

Wall time 29m33s vs 15m2s (+96.6%). 3 job(s) slower, 22 faster,

  • Check no committed infographics / check-no-committed-infographics: -296.0s
  • OSV scan / Emit review status: -289.0s
  • Python tests / Run tests slice 5/12: -234.0s
  • Python tests / Run tests slice 1/12: -165.0s
  • Python tests / Run tests slice 8/12: -161.0s

OSV vulnerability scan · View job

3 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.

@alt-glitch alt-glitch added type/feature New feature or request comp/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins area/streaming Streaming responses: gateway delivery, provider wire P3 Low — cosmetic, nice to have sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades labels Aug 13, 2026
@teknium1
teknium1 merged commit c89ca9c into main Aug 13, 2026
89 of 91 checks passed
@teknium1
teknium1 deleted the salvage/64161-streaming-hooks branch August 13, 2026 01:38
teknium1 added a commit that referenced this pull request Aug 13, 2026
…rleaving

The streaming-hook dispatcher runs one worker per callback; delivery
order is FIFO per hook, never across hooks. Two tests pinned a global
start->delta->delta->end interleaving that three concurrent workers
don't guarantee, flaking CI twice within an hour of #84924 landing.
Also wait for the full event count before shutdown so late deltas
aren't dropped mid-assert.
skappafrost pushed a commit to skappafrost/hermes-agent that referenced this pull request Aug 15, 2026
…rleaving

The streaming-hook dispatcher runs one worker per callback; delivery
order is FIFO per hook, never across hooks. Two tests pinned a global
start->delta->delta->end interleaving that three concurrent workers
don't guarantee, flaking CI twice within an hour of NousResearch#84924 landing.
Also wait for the full event count before shutdown so late deltas
aren't dropped mid-assert.
melon-xf added a commit to melon-xf/hermes-agent that referenced this pull request Sep 3, 2026
…rleaving

The streaming-hook dispatcher runs one worker per callback; delivery
order is FIFO per hook, never across hooks. Two tests pinned a global
start->delta->delta->end interleaving that three concurrent workers
don't guarantee, flaking CI twice within an hour of NousResearch#84924 landing.
Also wait for the full event count before shutdown so late deltas
aren't dropped mid-assert.
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/agent Core agent runtime: loop, agent_init, prompt builder, context-compression, responses endpoint comp/cli CLI entry point, hermes_cli/, setup wizard comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants