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
This commit is contained in:
55
manifest.json
Normal file
55
manifest.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"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"}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user