handleNotification("Done") was incorrectly emitting session.end and
calling clearState at the end of each Claude turn. Since "Done" means
a turn finished (not the session), clearing state caused subsequent
tool calls to find no runId, storing spans without run_id and making
them invisible in run-level queries.
- handleNotification: remove session.end emission and clearState call;
only emit run.end for the completed turn
- handleSessionEnd: load state file to get runId (in-memory activeRuns
is always empty in a subprocess)
- handlePromptSubmit: load state file to get runId for ending previous
run before starting a new one
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Label all agentmon docker-compose services with agentmon.monitor=true
and agentmon.group=agentmon so the swarm-monitor picks them up.
Adds Group field to ServiceSnapshot, probes /healthz for api/web roles,
and renders a separate "Agentmon" section below Swarm Services on the
Infrastructure page with new api and worker card renderers.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace exec.CommandContext calls (docker ps, docker inspect, nc -z) with
direct HTTP calls over the Unix socket using Go's net/http + custom transport.
Also removes netcat-openbsd from Dockerfile since nc is no longer used.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add agent:bootstrap handler to capture run.start events for cron and
automation runs that bypass the message:received path
- Remove dead event subscriptions (tool_result_persist, session:compact:*)
which are plugin hook events and never fire through triggerInternalHook
- Remove AGENTMON_INGEST_URL from requires.env since handler has a
hardcoded fallback URL
- Drop activeCompactions map (no longer needed after removing compaction handlers)
Deployed to zap VM with hooks.internal.enabled=true in openclaw.json.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Active sessions query now finds truly active sessions (started
anytime, no session.end ever) instead of only today's sessions
- Use uPlot setData() for live WS updates instead of destroying
and recreating the chart on every event
- Destroy chart only on window change so it recreates with new scale
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add event_type and framework filters to events query endpoint
- Add /agents SPA route to web-ui server
- Add Agents nav link and route in frontend
- Add agents page CSS (timeline, VM pills, stats panel)
- Build VM status strip, activity timeline, and real-time stats
- Add agentmon hook for OpenClaw (HOOK.md + handler.ts)
- Add docker-compose, Dockerfile, and supporting infra files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Sessions list with filters (time, framework, host)
- Session detail with runs table
- Run detail with expandable spans
- Dark theme GitHub-style UI
- API proxy to query-api via /api
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>