sol
835faa0eab
feat(phase5): polish + deployment
...
- skill/SKILL.md: rewritten to 9 lines — 'status is automatic'
- deploy-to-agents.sh: no AGENTS.md injection; deploys hook + npm install
- install.sh: clean install flow; prints required env vars
- deploy/status-watcher.service: systemd unit file
- deploy/Dockerfile: containerized deployment (node:22-alpine)
- src/live-status.js: deprecation warning + start-watcher/stop-watcher pass-through
- README.md: full docs (architecture, install, config, upgrade guide, troubleshooting)
- make check: 0 errors, 0 format issues
- npm test: 59 unit + 36 integration = 95 tests passing
2026-03-07 17:45:22 +00:00
sol
5bb36150c4
feat(phase4): add gateway:startup hook for auto-starting watcher daemon
...
- hooks/status-watcher-hook/HOOK.md — events: ["gateway:startup"], required env vars
- hooks/status-watcher-hook/handler.js — checks PID file, spawns watcher-manager.js detached
- Deployed hook to /home/node/.openclaw/workspace/hooks/status-watcher-hook/
- make check passes
2026-03-07 17:41:03 +00:00
sol
6df3278e91
feat: Phase 3 — sub-agent detection, nested status, cascade completion
...
Phase 3 (Sub-Agent Support):
- session-monitor.js: sub-agents always passed through (inherit parent channel)
- watcher-manager.js enhancements:
- Pending sub-agent queue: child sessions that arrive before parent are queued
and processed when parent is registered (no dropped sub-agents)
- linkSubAgent(): extracted helper for clean parent-child linking
- Cascade completion: parent stays active until all children complete
- Sub-agents embedded in parent status post (no separate top-level post)
- status-formatter.js: recursive nested rendering at configurable depth
Integration tests - test/integration/sub-agent.test.js (9 tests):
3.1 Sub-agent detection via spawnedBy (monitor level)
3.2 Nested status rendering (depth indentation, multiple children, deep nesting)
3.3 Cascade completion (pending tool call tracking across sessions)
3.4 Sub-agent JSONL parsing (usage events, error tool results)
All 95 tests pass (59 unit + 36 integration). make check clean.
2026-03-07 17:36:11 +00:00
sol
e3bd6c52dd
feat: Phase 2 — session monitor, lifecycle, watcher manager
...
Phase 2 (Session Monitor + Lifecycle):
- src/session-monitor.js: polls sessions.json every 2s for new/ended sessions
- Detects agents via transcriptDir subdirectory scan
- Resolves channelId/rootPostId from session key format
- Emits session-added/session-removed events
- Handles multi-agent environments
- Falls back to defaultChannel for non-MM sessions
- src/watcher-manager.js: top-level orchestrator
- Starts session-monitor, status-watcher, health-server
- Creates/updates Mattermost status posts on session events
- Sub-agent linking: children embedded in parent status
- Offset persistence (save/restore lastOffset on restart)
- Post recovery on restart (search channel history for marker)
- SIGTERM/SIGINT graceful shutdown: mark all boxes interrupted
- CLI: node watcher-manager.js start|stop|status
- MAX_ACTIVE_SESSIONS enforcement
Integration tests:
- test/integration/session-monitor.test.js: 14 tests
- Session detection, removal, multi-agent, malformed JSON handling
- test/integration/status-watcher.test.js: 13 tests
- JSONL parsing, tool_call/result pairs, idle detection, offset recovery
All 86 tests pass (59 unit + 27 integration). make check clean.
2026-03-07 17:32:28 +00:00
sol
43cfebee96
feat: Phase 0+1 — repo sync, pino, lint fixes, core components
...
Phase 0:
- Synced latest live-status.js from workspace (9928 bytes)
- Fixed 43 lint issues: empty catch blocks, console statements
- Added pino dependency
- Created src/tool-labels.json with all known tool mappings
- make check passes
Phase 1 (Core Components):
- src/config.js: env-var config with validation, throws on missing required vars
- src/logger.js: pino singleton with child loggers, level validation
- src/circuit-breaker.js: CLOSED/OPEN/HALF_OPEN state machine with callbacks
- src/tool-labels.js: exact/prefix/regex tool->label resolver with external override
- src/status-box.js: Mattermost post manager (keepAlive, throttle, retry, circuit breaker)
- src/status-formatter.js: pure SessionState->text formatter (nested, compact)
- src/health.js: HTTP health endpoint + metrics
- src/status-watcher.js: JSONL file watcher (inotify, compaction detection, idle detection)
Tests:
- test/unit/config.test.js: 7 tests
- test/unit/circuit-breaker.test.js: 12 tests
- test/unit/logger.test.js: 5 tests
- test/unit/status-formatter.test.js: 20 tests
- test/unit/tool-labels.test.js: 15 tests
All 59 unit tests pass. make check clean.
2026-03-07 17:26:53 +00:00
sol
b3ec2c61db
plan: production-grade PLAN.md v2 (revised architecture + audit + simulation)
2026-03-07 16:09:36 +00:00
sol
6ef50269b5
resolve: keep workspace versions of skill/SKILL.md and live-status.js
2026-03-07 15:41:59 +00:00
sol
fe81de308f
plan: v4 implementation plan + discovery findings
...
PROJ-035 Live Status v4 - implementation plan created by planner subagent.
Discovery findings documented in discoveries/README.md covering:
- JSONL transcript format (confirmed v3 schema)
- Session keying patterns (subagent spawnedBy linking)
- Hook events available (gateway:startup confirmed)
- Mattermost API (no edit time limit)
- Current v1 failure modes
Audit: 32/32 PASS, Simulation: READY
2026-03-07 15:41:50 +00:00
0480180b03
Merge pull request 'policies: add standard policy files' ( #1 ) from policies/add-standard-files into master
2026-03-01 08:26:43 +01:00
sol
c0dea6c12a
policies: add standard policy files, linting, formatting
...
- Add .editorconfig, .eslintrc.json, .prettierrc, .prettierignore, .dockerignore, .gitignore
- Add Makefile with lint, fmt, fmt-check, secret-scan, test (skip) targets
- Add package.json with eslint@^8.56.0, eslint-plugin-security, prettier
- Add tools/secret-scan.sh
- Fix unused variable (fs -> _fs)
- Auto-format with prettier
- make check passes clean (0 errors, 11 warnings)
2026-03-01 07:26:28 +00:00
sol
a0acc38fa6
Initial commit (Sanitized)
2026-02-23 17:14:33 +00:00