feat(coding-agent): shared agent-status classifier, honest worker visibility, subagents bar rename - #1895
Merged
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8ecf7b0. Configure here.
snimu
added a commit
that referenced
this pull request
Aug 29, 2026
… changelog fragment Addresses PR #1895 review: SessionRosterStatus was an alias with no external importers, and the visibility comment restated the code. ENG-5794
snimu
added a commit
that referenced
this pull request
Aug 31, 2026
… changelog fragment Addresses PR #1895 review: SessionRosterStatus was an alias with no external importers, and the visibility comment restated the code. ENG-5794
snimu
force-pushed
the
feat/agent-roster-classifier
branch
from
August 31, 2026 14:56
05960ed to
8dd6901
Compare
…ibility, subagents bar rename Add classifyAgentStatus as the one status formula for every agent surface; classifySessionRosterStatus (agents view) and the new classifySubagentSnapshotStatus (subagents bar) are thin adapters over it, so the two surfaces can no longer diverge on what running/idle/inactive mean. Visibility fixes: - Sessions of non-ready workers are no longer hidden from the agents view; the worker state (starting/recovering/stopping/failed) renders as the row's status label instead. - A resident message-less subagent session is lifecycle "live" (it is a spawned worker, not a user draft); top-level drafts stay hidden. - Subagent summary bar label renamed from "agents" to "subagents". Part 1 of 3 for the event-driven daemon-owned agent roster. ENG-5794
… changelog fragment Addresses PR #1895 review: SessionRosterStatus was an alias with no external importers, and the visibility comment restated the code. ENG-5794
snimu
force-pushed
the
feat/agent-roster-classifier
branch
from
August 31, 2026 16:53
8dd6901 to
d1ab404
Compare
sethkarten
approved these changes
Sep 1, 2026
xeophon
approved these changes
Sep 1, 2026
olety
pushed a commit
to oneiron-dev/prime-agent
that referenced
this pull request
Sep 1, 2026
…ibility, subagents bar rename (PrimeIntellect-ai#1895) * feat(coding-agent): shared agent-status classifier, honest worker visibility, subagents bar rename Add classifyAgentStatus as the one status formula for every agent surface; classifySessionRosterStatus (agents view) and the new classifySubagentSnapshotStatus (subagents bar) are thin adapters over it, so the two surfaces can no longer diverge on what running/idle/inactive mean. Visibility fixes: - Sessions of non-ready workers are no longer hidden from the agents view; the worker state (starting/recovering/stopping/failed) renders as the row's status label instead. - A resident message-less subagent session is lifecycle "live" (it is a spawned worker, not a user draft); top-level drafts stay hidden. - Subagent summary bar label renamed from "agents" to "subagents". Part 1 of 3 for the event-driven daemon-owned agent roster. ENG-5794 * fix(coding-agent): drop the redundant roster-status alias and add the changelog fragment Addresses PR PrimeIntellect-ai#1895 review: SessionRosterStatus was an alias with no external importers, and the visibility comment restated the code. ENG-5794 * refactor(coding-agent): derive subagents bar border fill from the label width * test(coding-agent): fold the classifier pins into one compact contract test
3 tasks
PR9000
pushed a commit
to PR9000/prime-agent
that referenced
this pull request
Sep 1, 2026
…ibility, subagents bar rename (PrimeIntellect-ai#1895) * feat(coding-agent): shared agent-status classifier, honest worker visibility, subagents bar rename Add classifyAgentStatus as the one status formula for every agent surface; classifySessionRosterStatus (agents view) and the new classifySubagentSnapshotStatus (subagents bar) are thin adapters over it, so the two surfaces can no longer diverge on what running/idle/inactive mean. Visibility fixes: - Sessions of non-ready workers are no longer hidden from the agents view; the worker state (starting/recovering/stopping/failed) renders as the row's status label instead. - A resident message-less subagent session is lifecycle "live" (it is a spawned worker, not a user draft); top-level drafts stay hidden. - Subagent summary bar label renamed from "agents" to "subagents". Part 1 of 3 for the event-driven daemon-owned agent roster. ENG-5794 * fix(coding-agent): drop the redundant roster-status alias and add the changelog fragment Addresses PR PrimeIntellect-ai#1895 review: SessionRosterStatus was an alias with no external importers, and the visibility comment restated the code. ENG-5794 * refactor(coding-agent): derive subagents bar border fill from the label width * test(coding-agent): fold the classifier pins into one compact contract test
This was referenced Sep 1, 2026
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 1 of 3 for ENG-5794 (https://linear.app/primeintellect/issue/ENG-5794). Stack: this PR -> roster ledger (daemon-internal) -> subscription push + TUI consumption.
Summary
classifyAgentStatus, one pure status formula (running/idle/inactive) shared by every agent surface; the agents-view classifier (classifySessionRosterStatus) and the subagents-bar formula (countDirectSubagentStatuses) become thin adapters over it, so the two surfaces can no longer disagree on what a status meansrecovering, which previously made the entire running family vanish from the agents view; the worker state now renders as the row's status label insteadliveinstead of draft-hidden: a spawned worker is visible from creation, before its first message lands (top-level drafts stay message-based; on-disk drafts of dead subagents are unaffected)agents->subagentsValidation
activityimplies a live session; in-process connections never stampactiveSessionId) verified against all snapshot buildersnpm run checkgreenNote
Medium Risk
Changes agents-view visibility and lifecycle rules for subagents and non-ready workers; any code assuming those rows stay hidden will behave differently, though roster classification for existing inputs is intended to be unchanged.
Overview
Unifies running / idle / inactive behind a single
classifyAgentStatushelper so the agents view and subagent summary bar use the same rules (including queued children counting as running before a session exists).Agents view behavior changes: live sessions stay visible when the worker is starting, recovering, stopping, or failed (no longer filtered to
workerState === "ready"); those rows show the worker state as the status label. Spawned subagents are live as soon as they are resident, even with zero messages—top-level empty sessions remain drafts.The chat subagent summary bar label is renamed from agents to subagents, with border layout adjusted for the longer label.
Reviewed by Cursor Bugbot for commit ee28dc7. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add shared
classifyAgentStatusclassifier and show subagents from creation in agents viewclassifyAgentStatusin agent-roster.ts as the single status formula across daemon session lists and subagent summary lines, replacing bespoke per-field logic.workerStategate fromshouldShowAgentsViewSessionin agents-view-state.ts, so live sessions with non-ready worker states (starting,recovering,stopping,failed) are now visible instead of hidden; those states surface directly as the status label.liveimmediately upon creation inactiveLifecycleForSessionin daemon-session-list.ts, before any message is sent.livefrom creation rather thandraft.Macroscope summarized ee28dc7.