Skip to content

feat: Hermes Agent webhook dispatch mode (PER-81)#132

Merged
QiuYi111 merged 5 commits into
mainfrom
feat/hermes-adapter-per81
Apr 15, 2026
Merged

feat: Hermes Agent webhook dispatch mode (PER-81)#132
QiuYi111 merged 5 commits into
mainfrom
feat/hermes-adapter-per81

Conversation

@QiuYi111
Copy link
Copy Markdown
Owner

Summary

Add alternative dispatch mode that forwards Linear webhooks to a Hermes Agent endpoint instead of OpenClaw's built-in agent.

Closes PER-81

Changes

  • src/hermes-adapter.ts — New adapter: validateHermesConfig() checks config validity, dispatchToHermes() forwards webhooks with HMAC signing
  • src/webhook-handler.ts — Hermes dispatch branch in dispatchToAgent() with config-based routing between OpenClaw and Hermes modes
  • openclaw.plugin.json — Config schema fields: hermesWebhookUrl, hermesApiKey, hermesDispatchMode
  • index.ts — Hermes mode startup log
  • docs/hermes-skill.md — Integration documentation for Hermes linear-workflow skill
  • src/test/hermes-adapter.test.ts — 11 unit tests

Testing

All 290 tests passing (13 test files).

Configuration

{
  "dispatchMode": "hermes",
  "hermesWebhookUrl": "http://hermes-host:8644/webhooks",
  "hermesApiKey": "your-hmac-secret"
}

Architecture: Linear webhook → this plugin → POST to Hermes webhook → Hermes agent processes → uses linear-workflow skill → posts comment to Linear

- createPluginRuntimeStore → openclaw/plugin-sdk/runtime-store
- dispatchInboundReplyWithBase → openclaw/plugin-sdk/inbound-reply-dispatch
- Update test mocks to match new import paths
- Bump peer dependency to ^2026.4.0

Fixes #129
Add alternative dispatch mode that forwards Linear webhooks to a Hermes
Agent endpoint instead of OpenClaw's built-in agent.

Changes:
- src/hermes-adapter.ts: New adapter with validateHermesConfig() and
  dispatchToHermes() for HMAC-signed webhook forwarding
- src/webhook-handler.ts: Hermes dispatch branch in dispatchToAgent()
  with config-based routing between OpenClaw and Hermes modes
- openclaw.plugin.json: Config schema for hermesWebhookUrl,
  hermesApiKey, hermesDispatchMode
- index.ts: Hermes mode startup log
- docs/hermes-skill.md: Hermes integration documentation
- src/__test__/hermes-adapter.test.ts: 11 unit tests

All 290 tests passing.
…er81

# Conflicts:
#	package-lock.json
#	src/__test__/index.test.ts
#	src/webhook-handler.ts
- Add 3 integration tests in webhook-handler.test.ts:
  - Hermes mode dispatches to webhook correctly
  - Hermes non-OK response logs error
  - Non-Hermes mode falls back to OpenClaw
- Add non-Error rejection test in hermes-adapter.test.ts
- Branch coverage: 89.88% → 90.07% (passes 90% threshold)
@QiuYi111 QiuYi111 merged commit f600e94 into main Apr 15, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant