operator
e4ac7b7af3
fix: disable periodic openclaw agents list subprocess
...
Spawning a full openclaw CLI process every 30s to list agents is too
heavy — each invocation loads all plugins (~16s) and hangs until killed.
Return empty array for now until a lighter mechanism is available.
2026-04-16 15:26:55 +00:00
operator
2088cd12b4
fix: use OPENCLAW_SERVICE_VERSION for real version and increase agent list timeout
...
api.version returns plugin API version (0.2.0), not the openclaw release
version. Use OPENCLAW_SERVICE_VERSION env var set by the gateway instead.
Also increase listOpenClawAgents timeout from 15s to 30s since plugin
loading takes ~16s on T2.
2026-04-16 15:12:35 +00:00
58a800a1aa
Merge pull request 'HarborForge.OpenclawPlugin: dev-2026-03-29 -> main' ( #4 ) from dev-2026-03-29 into main
...
Reviewed-on: #4
2026-04-05 22:09:30 +00:00
b81125db0d
fix: use patch for calendar slot agent updates
2026-04-04 18:29:50 +00:00
7f86073fe7
fix: send calendar heartbeat as post
2026-04-04 17:58:59 +00:00
f3a38d6455
fix: verify plugin config during install
2026-04-04 17:30:56 +00:00
bcd47d8b39
feat: populate monitor agents from openclaw list
2026-04-04 08:55:00 +00:00
9b13c6b7aa
fix: only fill missing plugin config values
2026-04-04 08:33:38 +00:00
3f8859424c
refactor: remove monitor legacy compatibility
2026-04-04 08:05:50 +00:00
2262f32a0b
feat: pass config overrides to managed monitor
2026-04-04 07:54:07 +00:00
ff5c07a38c
fix: use explicit monitor repository url
2026-04-04 07:28:32 +00:00
485f8e117b
fix: build monitor from cmd entrypoint
2026-04-04 07:00:03 +00:00
e6e1c5395b
fix: install managed monitor from temp clone
2026-04-04 06:54:18 +00:00
038862ef8c
refactor: manage monitor via gateway hooks
2026-04-04 00:44:33 +00:00
3b0ea0ad12
PLG-CAL-004: Implement ScheduledGatewayRestart handling in plugin
...
- Add state persistence (persistState/restoreState) for recovery after restart
- Add handleScheduledGatewayRestart method that:
- Persists current scheduler state to disk
- Sends final heartbeat to backend before shutdown
- Stops the calendar scheduler (pauses scheduled tasks)
- Add isRestartPending flag to prevent new slot processing during restart
- Add isScheduledGatewayRestart helper to detect restart events
- Update scheduler to detect and handle ScheduledGatewayRestart events
- Add new tools: harborforge_restart_status, harborforge_calendar_pause/resume
- Export isRestartPending and getStateFilePath methods
- Bump plugin version to 0.3.1
2026-04-01 09:41:02 +00:00
24c4a7ad14
PLG-CAL-003 fix deferred slot replanning
2026-04-01 08:52:11 +00:00
97021f97c0
PLG-CAL-002: Implement calendar scheduler for agent slot wakeup
...
- Add CalendarScheduler class to manage periodic heartbeat and slot execution
- Implement agent wakeup logic when Idle and slots are pending
- Handle slot status transitions (attended, ongoing, deferred)
- Support both real and virtual slot materialization
- Add task context building for different event types (job, system, entertainment)
- Integrate scheduler into main plugin index.ts
- Add new plugin tools: harborforge_calendar_status, complete, abort
2026-04-01 08:45:05 +00:00
55d7d11a52
feat(plugin): PLG-CAL-001 - define Calendar heartbeat request/response format
...
- Add plugin/calendar/types.ts: TypeScript interfaces for heartbeat
request/response (CalendarHeartbeatRequest/Response, CalendarSlotResponse,
SlotAgentUpdate, all enums: SlotType, SlotStatus, EventType)
- Add plugin/calendar/calendar-bridge.ts: CalendarBridgeClient HTTP client
with heartbeat(), updateSlot(), updateVirtualSlot(), reportAgentStatus()
- Add plugin/calendar/index.ts: module entry point exporting all public types
- Add docs/PLG-CAL-001-calendar-heartbeat-format.md: full specification
documenting claw_identifier and agent_id determination, request/response
shapes, error handling, and endpoint summary
- Update plugin/openclaw.plugin.json: add calendarEnabled,
calendarHeartbeatIntervalSec, calendarApiKey config options; clarify
identifier description as claw_identifier
Refs: HarborForge.NEXT_WAVE_DEV_DIRECTION.md §6, BE-AGT-001
2026-04-01 07:51:39 +00:00
188d0a48d7
Merge pull request 'Merge dev-2026-03-21 into main' ( #3 ) from dev-2026-03-21 into main
...
Reviewed-on: #3
2026-03-22 14:15:21 +00:00
e7ba982128
feat: push OpenClaw metadata to Monitor bridge periodically
...
- MonitorBridgeClient gains pushOpenClawMeta() method for POST /openclaw
- OpenClawMeta interface defines version/plugin_version/agents payload
- Plugin pushes metadata on gateway_start (delayed 2s) and periodically
- Interval aligns with reportIntervalSec (default 30s)
- Pushes are non-fatal — plugin continues if Monitor is unreachable
- Interval cleanup on gateway_stop
- Updated monitor-server-connector-plan.md with new architecture
2026-03-22 01:37:21 +00:00
27b8b74d39
Align plugin monitor_port config
2026-03-21 19:22:57 +00:00
78a61e0fb2
Integrate plugin with local monitor bridge
2026-03-21 16:07:01 +00:00
9f649e2b39
feat: rename plugin to harbor-forge, remove sidecar, add --install-cli
...
Major changes:
- Renamed plugin id from harborforge-monitor to harbor-forge (TODO 4.1)
- Removed sidecar server/ directory and spawn logic (TODO 4.2)
- Added monitorPort to plugin config schema (TODO 4.3)
- Added --install-cli flag to installer for building hf CLI (TODO 4.4)
- skills/hf/ only deployed when --install-cli is present (TODO 4.5)
- Plugin now serves telemetry data directly via tools
- Installer handles migration from old plugin name
- Bumped version to 0.2.0
2026-03-21 15:24:50 +00:00
94eca82fc7
feat: add skills/hf/SKILL.md for hf CLI agent integration
...
Adds the SKILL.md that teaches agents how to use the hf CLI.
Gated behind --install-cli in the installer (per plan).
2026-03-21 13:50:41 +00:00
afdbc469ad
Merge pull request 'feat: stabilize HarborForge monitor sidecar plugin' ( #2 ) from feat/telemetry-sidecar-v2 into main
...
Reviewed-on: #2
2026-03-20 09:18:36 +00:00
14ed887ce3
refactor(telemetry): read agents via [
...
{
"id": "main",
"identityName": "霓光 (Neon)",
"identityEmoji": "✨ ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace",
"agentDir": "/root/.openclaw/agents/main/agent",
"model": "minimax-portal/MiniMax-M2.5",
"bindings": 1,
"isDefault": true,
"routes": [
"default (no explicit rules)"
]
},
{
"id": "developer",
"name": "developer",
"identityName": "小智 (Zhi)",
"identityEmoji": "👋 ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-developer",
"agentDir": "/root/.openclaw/agents/developer/agent",
"model": "anthropic/claude-opus-4-6",
"bindings": 1,
"isDefault": false
},
{
"id": "dispatcher",
"name": "dispatcher",
"workspace": "/root/.openclaw/workspace/workspace-dispatcher",
"agentDir": "/root/.openclaw/agents/dispatcher/agent",
"model": "minimax-portal/MiniMax-M2.5",
"bindings": 0,
"isDefault": false
},
{
"id": "operator",
"name": "operator",
"identityName": "晨曦 (Orion)",
"identityEmoji": "✨ ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-operator",
"agentDir": "/root/.openclaw/agents/operator/agent",
"model": "openai-codex/gpt-5.2-codex",
"bindings": 1,
"isDefault": false
},
{
"id": "manager",
"name": "manager",
"identityName": "指南(Nav)",
"identityEmoji": "🧭 ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-manager",
"agentDir": "/root/.openclaw/agents/manager/agent",
"model": "openai-codex/gpt-5.2-codex",
"bindings": 1,
"isDefault": false
},
{
"id": "mentor",
"name": "mentor",
"identityName": "霖 (Lyn)",
"identityEmoji": "🪶 ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-mentor",
"agentDir": "/root/.openclaw/agents/mentor/agent",
"model": "minimax-portal/MiniMax-M2.1",
"bindings": 1,
"isDefault": false
},
{
"id": "recruiter",
"name": "recruiter",
"identityName": "沐川(Evan)",
"identityEmoji": "🧩 ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-recruiter",
"agentDir": "/root/.openclaw/agents/recruiter/agent",
"model": "minimax-portal/MiniMax-M2.5",
"bindings": 0,
"isDefault": false
},
{
"id": "administrative-secretary",
"name": "administrative-secretary",
"identityName": "映秘(Mirror)",
"identityEmoji": "🪞 ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-administrative-secretary",
"agentDir": "/root/.openclaw/agents/administrative-secretary/agent",
"model": "minimax-portal/MiniMax-M2.5",
"bindings": 1,
"isDefault": false
},
{
"id": "agent-resource-director",
"name": "agent-resource-director",
"identityName": "影织(Sherlock)",
"identityEmoji": "🕸️ ",
"identitySource": "identity",
"workspace": "/root/.openclaw/workspace/workspace-agent-resource-director",
"agentDir": "/root/.openclaw/agents/agent-resource-director/agent",
"model": "kimi-coding/kimi-k2-thinking",
"bindings": 1,
"isDefault": false
}
]
[plugins] memory-lancedb-pro@1.1.0-beta.6: plugin registered (db: /root/.openclaw/memory/lancedb-pro, model: jina-embeddings-v5-text-small)
[plugins] memory-lancedb-pro: diagnostic build tag loaded (memory-lancedb-pro-diag-20260308-0058)
[plugins] self-improvement: integrated hooks registered (agent:bootstrap, command:new, command:reset)
[plugins] session-strategy: using systemSessionMemory (plugin memory-reflection hooks disabled)
[plugins] PaddedCell plugin initializing...
[plugins] PaddedCell plugin initialized
[plugins] dirigent: pluginDir resolved from import.meta.url: /root/.openclaw/plugins/dirigent
[plugins] hook runner initialized with 3 registered hooks
[plugins] hook runner initialized with 3 registered hooks
[plugins] hook runner initialized with 3 registered hooks
[plugins] hook runner initialized with 3 registered hooks
- Prefer OpenClaw CLI as source of truth for agent list
- Parse JSON prefix defensively when plugin logs trail output
- Keep file/directory discovery only as fallback
2026-03-20 08:12:58 +00:00
ab42936408
fix(telemetry): discover agents from ~/.openclaw/agents and clean docs
...
- Fallback to agent directory discovery when agents.json is absent
- Count configured agent workspaces (excluding main)
- Rewrite plugin docs to API key-only flow
2026-03-20 08:02:19 +00:00
040cde8cad
feat(telemetry): report openclaw and plugin versions separately
...
- Report remote OpenClaw CLI version as openclaw_version
- Report harborforge-monitor plugin version as plugin_version
- Pass plugin version from plugin runtime to sidecar
- Read live config via api.pluginConfig/api.config helper
2026-03-20 07:23:18 +00:00
006784db63
refactor(plugin): read config via api.pluginConfig and api.config
...
- Mirror dirigent plugin registration pattern
- Read base config from api.pluginConfig
- Read live config from api.config.plugins.entries.harborforge-monitor.config
- Support gateway_start/gateway_stop lifecycle only
- Compile nested plugin/core files
2026-03-20 07:13:12 +00:00
de4ef87491
refactor(plugin): remove fallback sidecar autostart
2026-03-20 06:42:45 +00:00
55b17e35ea
fix(plugin): use OpenClaw gateway_start/gateway_stop hooks
2026-03-20 06:36:20 +00:00
8ebc76931f
fix(plugin): normalize OpenClaw plugin config shapes
...
- Accept flat config, nested entry.config, or missing config
- Treat plugin as enabled unless explicitly disabled
- Log resolved runtime config for gateway diagnostics
2026-03-20 06:27:46 +00:00
eb43434e48
fix(plugin): correct telemetry server path for installed plugin
...
- Resolve telemetry.mjs relative to installed plugin root
- Update installer messaging from challengeUuid to apiKey
- Document correct OpenClaw plugin entry config structure
2026-03-20 06:24:40 +00:00
6d6d00437d
chore: add .gitignore for build artifacts
2026-03-19 18:20:43 +00:00
0dc824549a
feat: fix API Key authentication and payload alignment
...
- Update openclaw.plugin.json: replace challengeUuid with apiKey (optional)
- Fix tsconfig: use CommonJS module to avoid import.meta.url issues
- Fix plugin/index.ts: remove ESM-specific code, use __dirname
- Fix telemetry.mjs:
- Add loadavg to os imports, remove require() call
- Replace challengeUuid with apiKey in config
- Update endpoint to heartbeat-v2
- Add X-API-Key header when apiKey is configured
- Fix payload field names: agents, load_avg (array), uptime_seconds
- Change missing apiKey from error to warning
2026-03-19 18:20:29 +00:00
0debe835b4
feat: reorganize to standard OpenClaw plugin structure
...
New structure:
├── package.json # Root package
├── README.md # Documentation
├── plugin/ # OpenClaw plugin
│ ├── openclaw.plugin.json # Plugin manifest
│ ├── index.ts # Plugin entry (TypeScript)
│ ├── package.json
│ └── tsconfig.json
├── server/ # Telemetry sidecar
│ └── telemetry.mjs
├── skills/ # OpenClaw skills
└── scripts/
└── install.mjs # Installation script
Matches PaddedCell project structure.
Provides install.mjs with build/install/configure/uninstall commands.
2026-03-19 13:51:19 +00:00
a148c11e50
feat: implement HarborForge Monitor OpenClaw Plugin
...
Architecture:
- openclaw.plugin.json: Plugin manifest with config schema
- index.mjs: Plugin entry, lifecycle hooks (gateway:start/stop)
- sidecar/server.mjs: Independent Node process for telemetry
Features:
- Collects system metrics (CPU, memory, disk, load, uptime)
- Collects OpenClaw status (version, agents)
- HTTP heartbeat to HarborForge Monitor
- Config via ~/.openclaw/openclaw.json
- Sidecar auto-starts/stops with Gateway
Config options:
- enabled, backendUrl, identifier
- challengeUuid (required, from Monitor registration)
- reportIntervalSec, httpFallbackIntervalSec
- logLevel
Provides tool: harborforge_monitor_status
2026-03-19 13:37:11 +00:00
c8681af0ac
docs: add server connector plan
2026-03-11 21:35:28 +00:00