feat(coding-agent): roster subscription push consumed by the agents view and subagents bar - #1900
Merged
Conversation
snimu
force-pushed
the
feat/agent-roster-ledger
branch
2 times, most recently
from
August 31, 2026 15:31
194c5b7 to
bc71397
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
from
August 31, 2026 15:37
a1870b6 to
d7e0973
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
2 times, most recently
from
August 31, 2026 16:08
db18389 to
32f3abc
Compare
snimu
force-pushed
the
feat/agent-roster-ledger
branch
from
August 31, 2026 16:53
c58eb05 to
c86f81a
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
from
August 31, 2026 16:53
32f3abc to
4a961d6
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
from
August 31, 2026 17:34
4a961d6 to
a2744ff
Compare
snimu
force-pushed
the
feat/agent-roster-ledger
branch
from
August 31, 2026 18:22
e59b37a to
f5e960d
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
from
August 31, 2026 18:22
a2744ff to
7f1eccd
Compare
snimu
force-pushed
the
feat/agent-roster-push
branch
from
August 31, 2026 18:51
7f1eccd to
d607820
Compare
xeophon
previously approved these changes
Sep 1, 2026
xeophon
previously approved these changes
Sep 1, 2026
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 9ae9e67. Configure here.
xeophon
previously approved these changes
Sep 1, 2026
xeophon
previously approved these changes
Sep 1, 2026
xeophon
approved these changes
Sep 1, 2026
xeophon
added a commit
that referenced
this pull request
Sep 1, 2026
# Conflicts: # packages/coding-agent/src/modes/agents-view/agents-view-mode.ts # packages/coding-agent/src/modes/daemon/daemon-client.ts # packages/coding-agent/src/modes/daemon/daemon-supervisor.ts # packages/coding-agent/test/agents-view-mode.test.ts
olety
added a commit
to oneiron-dev/prime-agent
that referenced
this pull request
Sep 1, 2026
Takes upstream's event-driven supervisor roster ledger + push (PrimeIntellect-ai#1897, PrimeIntellect-ai#1900), direct TUI<->worker transport (ENG-5817), daemon startup/recovery hardening (PrimeIntellect-ai#1929, PrimeIntellect-ai#1909), single-dump kernel snapshots (PrimeIntellect-ai#1945), empty-draft eviction (PrimeIntellect-ai#1946), rlm_child_update suppression (PrimeIntellect-ai#1944), bash-skill preview (PrimeIntellect-ai#1911). Fork laws re-expressed on the roster architecture: - stable-target follow-up honesty kept (capability proof via worker hello, target_unavailable never not_found when ownership unproven) - schema revision 26 (union of fork rev-24 stable-target + upstream rev-24/25 roster+transport); digest minted by the repo's own algorithm - summary freshness reuse + single-flight + staleness + root-omission rejection restored on upstream's refresh pull - adoption/recovery never fails a live worker on a slow or root-omitting catalog: get_state root seed + stale mark + bounded background rehydration - repl.py keeps fork prune-on-aggregate-overflow - delete handlers keep fork persistence reporting; eviction fence test keeps the stronger two-worker contention variant Known test debt (deferred to post-Wave cleanup per owner): roster-era fixture migrations in daemon-supervisor-monitor (2), plus un-triaged failures in package-command-paths, agent-session-recursion, daemon-runtime-stress, 4600-supervisor-singleton, 4603-worker-recovery, 4606-update-restart- coordinator, agents-view-roster. Production laws preserved; failures are fixture-era artifacts or mechanism assertions to rewrite.
This was referenced Sep 1, 2026
sethkarten
pushed a commit
that referenced
this pull request
Sep 1, 2026
…1960) * fix(coding-agent): load the saved catalog when the agents view opens v0.9.0 regression: the Inactive section was empty on a fresh agents view until a search query was typed. The saved catalog was loaded only for search (a #1900 optimization premised on the roster boot seed carrying the saved corpus as inactive rows); #1951 scoped that seed to live families, so the view must load what it displays. The load stays progressive and once-per-view. * docs: tighten the catalog-load comment
ketema
added a commit
to ketema/prime-agent
that referenced
this pull request
Sep 1, 2026
- Direct session transport between TUI and worker (ENG-5817, PrimeIntellect-ai#1926) - Event-driven supervisor agent roster with push subscriptions (PrimeIntellect-ai#1897, PrimeIntellect-ai#1900, PrimeIntellect-ai#1895) - Hardened daemon startup, recovery ownership, and worker launch diagnostics (PrimeIntellect-ai#1929, PrimeIntellect-ai#1918) - Python REPL runtime single-dump snapshots and bash preview tool (PrimeIntellect-ai#1945, PrimeIntellect-ai#1911) - Non-blocking RLM subagent deletion and snapshot update suppression (PrimeIntellect-ai#1954, PrimeIntellect-ai#1944) - Saved catalog loading on Agents View open (PrimeIntellect-ai#1960) - Advanced Anthropic prompt caching marker across tool results (PrimeIntellect-ai#1927) - TUI process replacement on update and empty draft eviction (PrimeIntellect-ai#1631, PrimeIntellect-ai#1946, PrimeIntellect-ai#1920)
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.

Part 3 of 3 for ENG-5794 (https://linear.app/primeintellect/issue/ENG-5794). Stacked on #1897; base is
feat/agent-roster-ledger, so this diff is PR3-only.Summary
roster_subscribe/roster_unsubscribecommands and coalescedroster_updatepushes (schema 24), gated on a newagent_rostercapability advertised only by the supervisor hello — a TUI can never subscribe against a daemon that cannot serve itRosterStoreacross scope transitions: subscribe once, re-attach is a no-op, rows render ledger truth (classify-once statuses, queued/recovering/failed labels,last heard Xs agostaleness); queued subagents appear under their parent before any session exists, and row identity is stable across queued -> bound -> passivated (parent-qualified agent alias)agent_rostercapability and fails fast against a daemon that lacks it (unreachable in practice — the wired entry paths enforce an exact schema match and replace stale daemons); the chat subagents bar degrades to snapshot-driven counts, so interactive startup never depends on the capabilityeverBoundmarker immune to evidence laundering across repeated terminal projections; bar and view counts come from one shared population and formulaSessionSummarygains additiverosterStatus/statusLabel/lastHeardFromAtso list consumers read the same classify-once verdictsValidation
npm run checkgreen; schema digest test greenNote
Medium Risk
Touches daemon protocol revision, supervisor push/backpressure, and agents-view live data path; session attach is isolated from roster failures but agents view now hard-requires the new capability.
Overview
Replaces the agents view’s 1s live-session polling with a daemon push subscription (
roster_subscribe/roster_update, schema 24,agent_rostercapability). The supervisor coalesces ledger mutations into subscriber updates (full resync on socket drain when backpressured); clients hold anAgentsViewRosterStorethat survives scope transitions and drives row labels from ledger fields (queued / recovering / failed, last heard staleness). Views without the capability fail fast; the chat subagents bar optionally uses the same stream and falls back to snapshot counts.Saved-session catalog loads only when search needs deep text, once per view instance—not on every navigation.
DaemonAgentConnectionexposes optionalsubscribeAgentRoster(roster attach failures do not break session recovery).AgentSessionhides terminal RLM child runs that never bound a session and emits cancelled as the removal signal for pre-bind failures.Reviewed by Cursor Bugbot for commit 90e87f2. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add push-based agent roster subscription for agents view and subagents bar
roster_subscribe/roster_unsubscribecommands androster_updatepush frames, gated behind anagent_rosterserver capability.AgentRosterseeded from disk and the spawn ledger, pushes incremental deltas to subscribed clients, and requires workers to advertise roster capability; legacy pre-roster workers are restarted from the current binary or marked failed.getRlmChildSnapshotsno longer includes terminal unbound child runs; orphaned spawn-ledger children degrade to root rows;delete_saved_sessionnow rejects symlinked paths resolving to the active session.DaemonClient.requestadds arecoverableoption (default true); non-recoverable requests are rejected immediately on socket close instead of being parked across reconnects.refreshSessionsno longer returns a boolean and is called without options at updated call sites. Workers withoutagent_rostercapability are not adopted and will be replaced.Changes since #1900 opened
DaemonSupervisor.seedRosterLedgerand family-root roster seeding to read persisted session info and populatesummary.cwdfrominfo.cwdwhen available, falling back to settingseededCwd: trueonly when session info cannot be read [1f315f3]SupervisorLedgerInternalsinterface withseedRosterLedgermethod, tightenedhandleCommandreturn type, and added test validating cwd hydration for ledger-seeded roster entries [1f315f3]daemon.DaemonSupervisor.applyWorkerRosterSnapshotto abort roster snapshot application [9ae9e67]agents-view.AgentsViewMode.reconnectClientto read roster summaries after heartbeat refresh [9ae9e67]DaemonSupervisor.applyWorkerRosterSnapshotto track removed agent IDs, skip absentee sweep when spawn ledger edges are unreadable, precompute and cache session info reads for children requiring reseeding with currency checks viaisWorkerRosterApplyCurrent, preserve surviving roster entries by matching ID or session file path and restoring from unclaimed entries, hydratecwdfor ledger-seeded children before publishing, and respect explicitly removed agent IDs during snapshot application [086ceb6]AgentsViewMode.renderRowthat displays roster recovery and stale-worker status ahead of model label and summary in row title suffixes when the row is not in pending delete or kill state [086ceb6]AgentsViewModeand expanded supervisor ledger tests to verifycwdhydration for ledger-seeded children, roster preservation during mid-hydration worker disconnection, and handling of removed rows versus assigned rows during snapshot application with delayed session info reads [086ceb6]AgentsViewModeconstructor initialization logic forsavedCatalogReadyproperty [90e87f2]AgentsViewModepersistent catalog state initialization [90e87f2]Macroscope summarized 8394b67.