fix: deliver heartbeat LLM response to user during plan interview/review
After restart, heartbeat runs the LLM which sees MEMORY.md and generates a contextual response, but it was always silently discarded. Now check plan status after the LLM responds and return UserResult when interviewing or review so the conversation can resume. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
2dee9c47aa
commit
bc00371b12
2 changed files with 14 additions and 2 deletions
|
|
@ -115,8 +115,11 @@ func gatewayCmd() {
|
|||
if response == "HEARTBEAT_OK" {
|
||||
return tools.SilentResult("Heartbeat OK")
|
||||
}
|
||||
// For heartbeat, always return silent - the subagent result will be
|
||||
// sent to user via processSystemMessage when the async task completes
|
||||
// Deliver response to user when a plan interview/review needs resuming.
|
||||
// For async tasks (spawn), results are delivered separately via processSystemMessage.
|
||||
if status := agentLoop.GetPlanStatus(); status == "interviewing" || status == "review" {
|
||||
return tools.UserResult(response)
|
||||
}
|
||||
return tools.SilentResult(response)
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -2301,6 +2301,15 @@ func (al *AgentLoop) GetPlanInfo() (hasPlan bool, status string, currentPhase, t
|
|||
return
|
||||
}
|
||||
|
||||
// GetPlanStatus returns the current plan status ("interviewing", "executing", "review", etc.) or "".
|
||||
func (al *AgentLoop) GetPlanStatus() string {
|
||||
agent := al.registry.GetDefaultAgent()
|
||||
if agent == nil {
|
||||
return ""
|
||||
}
|
||||
return agent.ContextBuilder.GetPlanStatus()
|
||||
}
|
||||
|
||||
// GetPlanPhases returns structured phase/step data from the default agent's plan.
|
||||
func (al *AgentLoop) GetPlanPhases() []PlanPhase {
|
||||
agent := al.registry.GetDefaultAgent()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue