Fix idle timer review issues
This commit is contained in:
@@ -92,9 +92,9 @@ func newToolHost(sess *Session, pads *scratchpad.Store, launcher *Launcher, pres
|
||||
// rather than make it implement the full surface.
|
||||
type timerListenerAdapter struct{ m *timerManager }
|
||||
|
||||
func (a timerListenerAdapter) OnChildSpawned(*Child) {}
|
||||
func (a timerListenerAdapter) OnChildExited(*Child) {}
|
||||
func (a timerListenerAdapter) OnPTYOut(string, []byte) {}
|
||||
func (a timerListenerAdapter) OnChildSpawned(*Child) {}
|
||||
func (a timerListenerAdapter) OnChildExited(*Child) {}
|
||||
func (a timerListenerAdapter) OnPTYOut(string, []byte) {}
|
||||
func (a timerListenerAdapter) OnChildStateChanged(id string, st IdleState) {
|
||||
a.m.onChildStateChanged(id, st)
|
||||
}
|
||||
@@ -1084,7 +1084,9 @@ func availableToolsForRole(role mcp.CallerRole) []string {
|
||||
"list_processes", "get_process_status", "get_project_status",
|
||||
"get_process_output", "get_process_raw_output", "search_output",
|
||||
"wait_for_pattern", "get_process_ports",
|
||||
"send_input", "send_message", "request_human_attention", "timer_wait",
|
||||
"send_input", "send_message", "request_human_attention",
|
||||
"timer_wait", "timer_set", "timer_fire_when_idle_any", "timer_fire_when_idle_all",
|
||||
"timer_cancel", "timer_pause", "timer_resume", "timer_list",
|
||||
"scratchpad_list", "scratchpad_read", "scratchpad_write", "scratchpad_append",
|
||||
"whoami", "help",
|
||||
}
|
||||
@@ -1114,8 +1116,8 @@ func helpFor(topic string) mcp.HelpResponse {
|
||||
}
|
||||
case "lifecycle":
|
||||
return mcp.HelpResponse{
|
||||
Topic: "lifecycle",
|
||||
Content: "You own the processes you spawn. When a sub-agent has finished its task (it reports back via send_message, or you've collected what you need from it) call close_process on its process_id to remove the entry and tear down the PTY. Same goes for spawn_process children: command/terminal panes you started are not auto-reclaimed when their work completes. close_process is the normal cleanup path; stop_process(signal) is for sending a signal without removing the entry; start_process re-attaches an exited command preset. Leaving idle sub-agents around wastes vendor tokens and clutters the host — close them as soon as you're done. Sub-agents themselves are reminded (via the [system: …] preface on their first prompt) to clean up anything they created before reporting done.",
|
||||
Topic: "lifecycle",
|
||||
Content: "You own the processes you spawn. When a sub-agent has finished its task (it reports back via send_message, or you've collected what you need from it) call close_process on its process_id to remove the entry and tear down the PTY. Same goes for spawn_process children: command/terminal panes you started are not auto-reclaimed when their work completes. close_process is the normal cleanup path; stop_process(signal) is for sending a signal without removing the entry; start_process re-attaches an exited command preset. Leaving idle sub-agents around wastes vendor tokens and clutters the host — close them as soon as you're done. Sub-agents themselves are reminded (via the [system: …] preface on their first prompt) to clean up anything they created before reporting done.",
|
||||
RelatedTools: []string{"close_process", "stop_process", "start_process", "list_processes", "get_process_status"},
|
||||
}
|
||||
case "inspection":
|
||||
@@ -1144,9 +1146,18 @@ func helpFor(topic string) mcp.HelpResponse {
|
||||
}
|
||||
case "timers":
|
||||
return mcp.HelpResponse{
|
||||
Topic: "timers",
|
||||
Content: "timer_wait returns a timer_id immediately and injects `[system] Your timer [<label>] has completed.` into your pane when it fires. Use it instead of sleeping in your own process.",
|
||||
RelatedTools: []string{"timer_wait"},
|
||||
Topic: "timers",
|
||||
Content: "Timers fire by injecting your chosen body (or a default `[system] Your timer […] has completed.` line) back into your pane as a fresh user turn. Use them instead of sleeping in your own process. " +
|
||||
"timer_wait / timer_set schedule a delay timer (timer_set lets you set body+label). " +
|
||||
"timer_fire_when_idle_any fires when any watched process becomes idle (already-idle watchers are excluded from the baseline). " +
|
||||
"timer_fire_when_idle_all fires when every watched process is idle; if all are idle at registration the response is already_satisfied with no pending timer. " +
|
||||
"timer_cancel / timer_pause / timer_resume manage outstanding timers; resume re-checks idle conditions in case a watcher went idle while paused. " +
|
||||
"timer_list shows your pending and paused timers.",
|
||||
RelatedTools: []string{
|
||||
"timer_wait", "timer_set",
|
||||
"timer_fire_when_idle_any", "timer_fire_when_idle_all",
|
||||
"timer_cancel", "timer_pause", "timer_resume", "timer_list",
|
||||
},
|
||||
}
|
||||
case "readiness":
|
||||
return mcp.HelpResponse{
|
||||
|
||||
Reference in New Issue
Block a user