- Method:
whatHappened - Scope:
run:read - Transports: HTTP RPC, WebSocket RPC
- Request:
{ runId, nodeId?, iteration? } - Response:
{ runId, nodeId, iteration, scope, summary, agentId, source, cached, generatedAtMs }
nodeId for a run summary (scope: "run"); pass it for a node summary
(scope: "node", iteration defaulting to its latest). Smithers Monitor
shows it atop a clicked node.
The Gateway never calls an LLM: with a narrator wired via its whatHappened
option (the smithers CLI defaults to its cheapest usable local agent,
gpt-5.6-luna first), summary is that agent’s recap, source is
"agent", and agentId names it. Without one, or if every attempt fails, it
falls back to a deterministic fact recap from run/node rows (source: "facts", agentId: null), always returning a usable summary.
Terminal runs/nodes (finished, failed, cancelled) cache summaries per state
fingerprint; cached: true marks a hit. Live targets re-summarize every
call.
Errors are versioned as v1 and include InvalidRequest, Unauthorized, Forbidden, RunNotFound, NodeNotFound, and Internal.