Files
HarborForge.PlexumPlugin/manifest.json
hzhang 754e5183f7 initial: HarborForge plugin for Plexum (port of OpenclawPlugin)
Plugin id `harbor-forge` mirrors the OpenClaw counterpart's runtime
surface on top of the Plexum SDK:

  * eager activation — Monitor bridge + Calendar scheduler boot at
    host start, before any agent turn fires
  * monitor bridge: HTTP 127.0.0.1:<monitor_port> serving /telemetry
    + /health for HarborForge.Monitor
  * calendar scheduler: heartbeats <backendUrl>/calendar/agent/
    heartbeat, dispatches returned slots via HostAPI.WakeAgent
    (state-aware queue, depth-1 replace-newest), tracks active slot
    state in-memory, terminal status pushed back to backend
  * 9 harborforge_* tools (status / telemetry / monitor_telemetry /
    calendar_{status,complete,abort,pause,resume} / restart_status)

Key differences from OpenClaw equivalent:
  * api.spawn → HostAPI.WakeAgent (new SDK primitive)
  * api.getAgentStatus → HostAPI.ReadAgentState (existing)
  * --install-monitor / --install-cli not included; Monitor + hf CLI
    deploy via the HangmanLab.Server.T3 docker compose layer

Initial drop. TODO before v1 ship:
  * tool ctx → calling-agent-id: SDK doesn't currently expose; v1
    falls back to a single-active-slot heuristic in
    main.bestEffortAgentID
  * tests for the bridge + scheduler
2026-06-03 11:11:36 +01:00

56 lines
2.3 KiB
JSON

{
"name": "harbor-forge",
"version": "0.1.0",
"activation": "eager",
"executable": "plexum-harborforge-plugin",
"contracts": {
"tools": [
{
"name": "harborforge_status",
"description": "Return the plugin's resolved config + Monitor bridge health + Calendar scheduler status + telemetry snapshot.",
"inputSchema": {"type": "object"}
},
{
"name": "harborforge_telemetry",
"description": "Current system + agent telemetry (the same snapshot served to the local HarborForge.Monitor over the monitor_port).",
"inputSchema": {"type": "object"}
},
{
"name": "harborforge_monitor_telemetry",
"description": "Last telemetry payload the Monitor bridge fetched, with timing info — useful when diagnosing bridge connectivity.",
"inputSchema": {"type": "object"}
},
{
"name": "harborforge_calendar_status",
"description": "Active Calendar slot (if any) plus next-up + recent-history. Returns Calendar scheduler state when no slot is active.",
"inputSchema": {"type": "object"}
},
{
"name": "harborforge_calendar_complete",
"description": "Mark the agent's currently-active Calendar slot as completed and notify the backend.",
"inputSchema": {"type": "object", "properties": {"summary": {"type": "string"}}}
},
{
"name": "harborforge_calendar_abort",
"description": "Abort the agent's currently-active Calendar slot (e.g. unrecoverable error). Optionally include a reason.",
"inputSchema": {"type": "object", "properties": {"reason": {"type": "string"}}}
},
{
"name": "harborforge_calendar_pause",
"description": "Pause the agent's currently-active Calendar slot — heartbeat tracks paused state until resume/abort/complete.",
"inputSchema": {"type": "object", "properties": {"reason": {"type": "string"}}}
},
{
"name": "harborforge_calendar_resume",
"description": "Resume a paused Calendar slot for the agent.",
"inputSchema": {"type": "object"}
},
{
"name": "harborforge_restart_status",
"description": "Check whether a Plexum host restart is pending (backend-driven flag). Reports last poll time and pending flag.",
"inputSchema": {"type": "object"}
}
]
}
}