mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
feat(webhook): hermes webhook CLI + skill for event-driven subscriptions (#3578)
Adds 'hermes webhook' CLI subcommand and a skill — zero new model tools. CLI commands (require webhook platform to be enabled): hermes webhook subscribe <name> [--events, --prompt, --deliver, ...] hermes webhook list hermes webhook remove <name> hermes webhook test <name> All commands gate on webhook platform being enabled in config. If not configured, prints setup instructions (gateway setup wizard, manual config.yaml, or env vars). The agent uses these via terminal tool, guided by the webhook-subscriptions skill which documents setup, common patterns (GitHub, Stripe, CI/CD, monitoring), prompt template syntax, security, and troubleshooting. Adapter enhancement: webhook.py hot-reloads dynamic subscriptions from ~/.hermes/webhook_subscriptions.json on each incoming request (mtime-gated). Static config.yaml routes always take precedence. Docs: updated webhooks.md with Dynamic Subscriptions section, added hermes webhook to cli-commands.md reference. No new model tools. No toolset changes. 24 new tests for CLI CRUD, persistence, enabled-gate, and adapter dynamic route loading.
This commit is contained in:
parent
82d6c28bd5
commit
dabe3c34cc
9 changed files with 890 additions and 3 deletions
|
|
@ -39,6 +39,7 @@ hermes [global-options] <command> [subcommand/options]
|
|||
| `hermes login` / `logout` | Authenticate with OAuth-backed providers. |
|
||||
| `hermes status` | Show agent, auth, and platform status. |
|
||||
| `hermes cron` | Inspect and tick the cron scheduler. |
|
||||
| `hermes webhook` | Manage dynamic webhook subscriptions for event-driven activation. |
|
||||
| `hermes doctor` | Diagnose config and dependency issues. |
|
||||
| `hermes config` | Show, edit, migrate, and query configuration files. |
|
||||
| `hermes pairing` | Approve or revoke messaging pairing codes. |
|
||||
|
|
@ -214,6 +215,39 @@ hermes cron <list|create|edit|pause|resume|run|remove|status|tick>
|
|||
| `status` | Check whether the cron scheduler is running. |
|
||||
| `tick` | Run due jobs once and exit. |
|
||||
|
||||
## `hermes webhook`
|
||||
|
||||
```bash
|
||||
hermes webhook <subscribe|list|remove|test>
|
||||
```
|
||||
|
||||
Manage dynamic webhook subscriptions for event-driven agent activation. Requires the webhook platform to be enabled in config — if not configured, prints setup instructions.
|
||||
|
||||
| Subcommand | Description |
|
||||
|------------|-------------|
|
||||
| `subscribe` / `add` | Create a webhook route. Returns the URL and HMAC secret to configure on your service. |
|
||||
| `list` / `ls` | Show all agent-created subscriptions. |
|
||||
| `remove` / `rm` | Delete a dynamic subscription. Static routes from config.yaml are not affected. |
|
||||
| `test` | Send a test POST to verify a subscription is working. |
|
||||
|
||||
### `hermes webhook subscribe`
|
||||
|
||||
```bash
|
||||
hermes webhook subscribe <name> [options]
|
||||
```
|
||||
|
||||
| Option | Description |
|
||||
|--------|-------------|
|
||||
| `--prompt` | Prompt template with `{dot.notation}` payload references. |
|
||||
| `--events` | Comma-separated event types to accept (e.g. `issues,pull_request`). Empty = all. |
|
||||
| `--description` | Human-readable description. |
|
||||
| `--skills` | Comma-separated skill names to load for the agent run. |
|
||||
| `--deliver` | Delivery target: `log` (default), `telegram`, `discord`, `slack`, `github_comment`. |
|
||||
| `--deliver-chat-id` | Target chat/channel ID for cross-platform delivery. |
|
||||
| `--secret` | Custom HMAC secret. Auto-generated if omitted. |
|
||||
|
||||
Subscriptions persist to `~/.hermes/webhook_subscriptions.json` and are hot-reloaded by the webhook adapter without a gateway restart.
|
||||
|
||||
## `hermes doctor`
|
||||
|
||||
```bash
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue