Trying the prior multi-agent-handle fix in dind-t2 surfaced a second bug that PR #7 didn't reach: `harborforge_calendar_status` still returned `Calendar scheduler not running` even though the gateway log showed the scheduler had started 30+ seconds before the agent's call. ## Root cause `register()` is invoked once per agent — `grep -c "HarborForge plugin registered" /tmp/gw-stdout.log` reports 5 for a 5-agent claw. Every invocation creates its own `let calendarScheduler` closure binding. But `gateway_start` fires once and we only call `startCalendarScheduler()` through that single hook, so exactly one of the five closures sees the handle and the other four keep their bindings at `null`. The host's tool router picks one of the five duplicate `harborforge_calendar_status` registrations to dispatch to — most of the time it's one of the four "null" closures, which is why every wakeup the agent saw `Calendar scheduler not running`. ## Fix Lift `let calendarScheduler` out of `register()` and into module scope. All five register-call closures now reference the same binding; once the single `gateway_start` initialises it, every tool sees it. `startCalendarScheduler()` now early-returns when `calendarScheduler` is already set, so duplicate `gateway_start` firings (if the host ever does that) don't double-install intervals. Bumps version 0.3.2 → 0.3.3. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
18 lines
411 B
JSON
18 lines
411 B
JSON
{
|
|
"name": "harbor-forge-plugin",
|
|
"version": "0.3.3",
|
|
"description": "OpenClaw plugin for HarborForge monitor bridge and CLI integration",
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"scripts": {
|
|
"clean": "rm -rf dist",
|
|
"build": "npm run clean && tsc",
|
|
"watch": "tsc --watch"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^20.19.41",
|
|
"typescript": "^5.0.0"
|
|
},
|
|
"license": "MIT"
|
|
}
|