Node exec.finished events always enqueue a system event + request heartbeat via server-node-events, regardless of config. This causes duplicate notifications when the agent already received the result inline from nodes.run.
tools.exec.notifyOnExit: false exists for gateway-local exec but there is no equivalent for node events.
Current behavior:
- Agent calls
nodes.run → gets result inline
- Node sends
exec.finished event → gateway enqueues system event → agent gets duplicate notification
- Agent responds twice, burning tokens
Requested:
Add tools.nodes.notifyOnExit (default: true) to mirror tools.exec.notifyOnExit behavior for node exec events in server-node-events.
Workaround: Agent can ignore async system messages when it already processed the inline result, but a config flag would be cleaner.
Source: dist/server-node-events-C9uF6jq0.js lines ~381-420 — exec.finished case unconditionally calls enqueueSystemEvent + requestHeartbeatNow.
Node
exec.finishedevents always enqueue a system event + request heartbeat viaserver-node-events, regardless of config. This causes duplicate notifications when the agent already received the result inline fromnodes.run.tools.exec.notifyOnExit: falseexists for gateway-local exec but there is no equivalent for node events.Current behavior:
nodes.run→ gets result inlineexec.finishedevent → gateway enqueues system event → agent gets duplicate notificationRequested:
Add
tools.nodes.notifyOnExit(default: true) to mirrortools.exec.notifyOnExitbehavior for node exec events inserver-node-events.Workaround: Agent can ignore async system messages when it already processed the inline result, but a config flag would be cleaner.
Source:
dist/server-node-events-C9uF6jq0.jslines ~381-420 —exec.finishedcase unconditionally callsenqueueSystemEvent+requestHeartbeatNow.