Skip to content

Conversation

@TerminallyLazy
Copy link
Contributor

Summary

  • Fix nudge to resume the correct agent instead of always resetting to Agent 0
  • Add auto-nudge feature that detects stuck LLM streaming and triggers recovery
  • Add unit tests for the nudge logic

Problem

When a subordinate agent (Agent 1, 2, etc.) was running and the user pressed Nudge, the entire execution reset to Agent 0. This happened because streaming_agent was cleared at the end of each monologue, causing get_agent() to fall back to agent0.

Solution

Added last_active_agent field that persists beyond monologue completion:

def get_agent(self):
return self.streaming_agent or self.last_active_agent or self.agent0

Changes

  • agent.py: Added last_active_agent tracking, auto-nudge watchdog, config options
  • python/api/nudge.py: Enhanced response to include which agent was nudged
  • tests/test_nudge.py: 10 unit tests covering the fix
  • docs/designs/: Design document

Auto-Nudge Feature

Configurable watchdog that monitors LLM streaming timeouts:
auto_nudge_enabled: bool = False # off by default
auto_nudge_timeout: int = 60 # seconds

Test plan

  • Unit tests pass (10/10)
  • Manual test: Nudge button works on Agent 0
  • Manual test: Nudge subordinate agent (requires complex task spawning Agent 1+)
  • Verify auto-nudge triggers after timeout (requires enabling in config)

TerminallyLazy and others added 3 commits January 9, 2026 16:29
Document the approved design for fixing subordinate agent nudge behavior
and implementing auto-nudge detection.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Problem: Nudging a subordinate agent incorrectly reset execution to
Agent 0 because streaming_agent was cleared at monologue end.

Solution:
- Add last_active_agent field that persists beyond monologue completion
- Update get_agent() to check last_active_agent before falling back
- Nudge now resumes from the last active agent, not agent0

Auto-nudge feature:
- Add configurable watchdog that monitors LLM streaming timeouts
- If no streaming chunks for auto_nudge_timeout seconds, trigger nudge
- Disabled by default (auto_nudge_enabled: false)

API improvement:
- Nudge response now includes which agent was nudged

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Tests verify:
- get_agent() priority: streaming_agent > last_active_agent > agent0
- nudge() restarts correct agent (subordinate, not always agent0)
- auto_nudge config fields exist with correct defaults

10 tests covering the core nudge fix and auto-nudge config.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant