hermes-action-bridge 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +70 -0
- package/README.md +123 -22
- package/dist/adapters/hermes-cli.d.ts +14 -0
- package/dist/adapters/hermes-cli.js +80 -21
- package/dist/adapters/hermes-cli.js.map +1 -1
- package/dist/approvals.d.ts +35 -0
- package/dist/approvals.js +96 -0
- package/dist/approvals.js.map +1 -0
- package/dist/audit-log.d.ts +21 -0
- package/dist/audit-log.js +31 -0
- package/dist/audit-log.js.map +1 -0
- package/dist/capabilities.d.ts +29 -0
- package/dist/capabilities.js +24 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli.js +205 -20
- package/dist/cli.js.map +1 -1
- package/dist/config.js +0 -6
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +8 -1
- package/dist/doctor.js +76 -13
- package/dist/doctor.js.map +1 -1
- package/dist/execution-gate.d.ts +5 -0
- package/dist/execution-gate.js +20 -0
- package/dist/execution-gate.js.map +1 -0
- package/dist/http-server.d.ts +18 -0
- package/dist/http-server.js +310 -0
- package/dist/http-server.js.map +1 -0
- package/dist/install/launcher.d.ts +3 -0
- package/dist/install/launcher.js +7 -0
- package/dist/install/launcher.js.map +1 -0
- package/dist/install/mcp-config.js +12 -3
- package/dist/install/mcp-config.js.map +1 -1
- package/dist/install/mcp-service.d.ts +44 -0
- package/dist/install/mcp-service.js +172 -0
- package/dist/install/mcp-service.js.map +1 -0
- package/dist/install/templates.js +38 -32
- package/dist/install/templates.js.map +1 -1
- package/dist/install/types.d.ts +1 -0
- package/dist/jobs.d.ts +51 -0
- package/dist/jobs.js +244 -0
- package/dist/jobs.js.map +1 -0
- package/dist/mcp-server.d.ts +32 -0
- package/dist/mcp-server.js +394 -25
- package/dist/mcp-server.js.map +1 -1
- package/dist/policy.js +9 -2
- package/dist/policy.js.map +1 -1
- package/dist/run.js +0 -1
- package/dist/run.js.map +1 -1
- package/dist/types.d.ts +2 -4
- package/dist/validation.d.ts +1 -0
- package/dist/validation.js +8 -0
- package/dist/validation.js.map +1 -0
- package/docs/ARCHITECTURE.md +69 -9
- package/docs/FUNCTIONAL-TESTS.md +27 -12
- package/examples/claude-code/SKILL.md +35 -29
- package/examples/codex/SKILL.md +35 -29
- package/package.json +5 -3
- package/plugins/hermes-action/.codex-plugin/plugin.json +30 -0
- package/plugins/hermes-action/.mcp.json +8 -0
- package/plugins/hermes-action/assets/app-icon.png +0 -0
- package/plugins/hermes-action/skills/hermes-action-bridge/SKILL.md +61 -0
package/docs/ARCHITECTURE.md
CHANGED
|
@@ -25,7 +25,12 @@ Hermes skills, tools, browser automation, MCPs, cron jobs, messaging, APIs
|
|
|
25
25
|
- `src/prompt.ts`: prompt envelope sent to Hermes.
|
|
26
26
|
- `src/context.ts`: context file loading with a per-file cap and an aggregate budget.
|
|
27
27
|
- `src/adapters/hermes-cli.ts`: Hermes CLI adapter (argv or temp-file prompt delivery, child-process timeout).
|
|
28
|
-
- `src/mcp-server.ts`:
|
|
28
|
+
- `src/mcp-server.ts`: MCP server factory, delegation tools, jobs, and approval orchestration.
|
|
29
|
+
- `src/http-server.ts`: authenticated, opt-in Streamable HTTP transport.
|
|
30
|
+
- `src/capabilities.ts`: configuration-backed capability inventory.
|
|
31
|
+
- `src/jobs.ts`: bounded process-local asynchronous jobs.
|
|
32
|
+
- `src/approvals.ts`: short-lived, one-shot approval records.
|
|
33
|
+
- `src/audit-log.ts`: privacy-preserving owner-only JSONL audit metadata.
|
|
29
34
|
- `src/status.ts`: runtime availability check.
|
|
30
35
|
- `src/version.ts`: single source of truth for the package version.
|
|
31
36
|
- `src/doctor.ts`: environment checks for `hermes-action doctor`.
|
|
@@ -40,9 +45,14 @@ The `install` / `uninstall` commands install an open-standard `SKILL.md` for Cla
|
|
|
40
45
|
- `src/install/marker-block.ts`: fail-safe marker block for the optional `CLAUDE.md` / `AGENTS.md` hint.
|
|
41
46
|
- `src/install/file-edit.ts`: shared read-edit-write helper used by the hint and the `.mcp.json` writer.
|
|
42
47
|
- `src/install/mcp-config.ts`: MCP snippets and the Claude Code `.mcp.json` merge/unmerge writer.
|
|
48
|
+
- `src/install/mcp-service.ts`: native Codex/Claude MCP registration, inspection, conflict handling, and removal.
|
|
43
49
|
- `src/install/install-service.ts`: per-agent install/uninstall with failure isolation.
|
|
44
50
|
|
|
45
|
-
|
|
51
|
+
The global default is a complete installation: managed skill plus MCP
|
|
52
|
+
registration through each agent's native CLI, using the bridge's absolute
|
|
53
|
+
launcher path. Defaults remain conservative: never modify `CLAUDE.md` /
|
|
54
|
+
`AGENTS.md` without `--project-hint`, never overwrite foreign skills or
|
|
55
|
+
customized MCP entries, and stay idempotent.
|
|
46
56
|
|
|
47
57
|
## Config precedence
|
|
48
58
|
|
|
@@ -68,18 +78,22 @@ Project config:
|
|
|
68
78
|
|
|
69
79
|
The bridge does not decide how Hermes completes the task. It only labels the requested behavior:
|
|
70
80
|
|
|
71
|
-
- `plan`:
|
|
81
|
+
- `plan`: prompt-level plan-only policy; callers must still treat configured Hermes tools as open-world.
|
|
72
82
|
- `draft`: produce an artifact, no external side effects.
|
|
73
83
|
- `execute`: execute allowed actions.
|
|
74
84
|
- `request-approval`: prepare the action and ask for approval.
|
|
75
85
|
|
|
76
86
|
## Policy
|
|
77
87
|
|
|
78
|
-
|
|
88
|
+
Direct CLI and `hermes_run` calls rely on the **host agent's approval prompt**.
|
|
89
|
+
The structured MCP path adds a second deterministic barrier:
|
|
90
|
+
`hermes_prepare` creates a local no-tool summary, stores an immutable short-lived request, and
|
|
91
|
+
`hermes_approve` consumes it exactly once. The bridge never treats its own model
|
|
92
|
+
output as human approval.
|
|
79
93
|
|
|
80
|
-
|
|
94
|
+
The bridge's own guard is a secondary, deterministic net: in `mode=execute` it changes the effective mode to `request-approval` unless the preset/policy is explicitly trusted (empty `require_approval_for`) or YOLO is enabled. This is independent of the prompt's language or wording.
|
|
81
95
|
|
|
82
|
-
|
|
96
|
+
Keyword risk detection (`detectRisks`) is **informational only**: recognized categories are listed in the prompt envelope to help the human and Hermes decide, but they never drive the mode. Keyword matching is English-biased and easily evaded, so it is not treated as a security control.
|
|
83
97
|
|
|
84
98
|
## YOLO
|
|
85
99
|
|
|
@@ -104,13 +118,59 @@ Every child process is bounded by a timeout (per-mode defaults, overridable via
|
|
|
104
118
|
|
|
105
119
|
## MCP design
|
|
106
120
|
|
|
107
|
-
The MCP server exposes
|
|
121
|
+
The MCP server exposes orchestration primitives instead of mirroring every
|
|
122
|
+
Hermes tool.
|
|
108
123
|
|
|
109
124
|
Tools:
|
|
110
125
|
|
|
111
126
|
- `hermes_run`
|
|
112
127
|
- `hermes_plan`
|
|
128
|
+
- `hermes_capabilities`
|
|
113
129
|
- `hermes_presets`
|
|
114
130
|
- `hermes_status`
|
|
115
|
-
|
|
116
|
-
|
|
131
|
+
- `hermes_submit`
|
|
132
|
+
- `hermes_job_status`
|
|
133
|
+
- `hermes_result`
|
|
134
|
+
- `hermes_cancel`
|
|
135
|
+
- `hermes_prepare`
|
|
136
|
+
- `hermes_approve`
|
|
137
|
+
- `hermes_reject`
|
|
138
|
+
|
|
139
|
+
The server advertises routing instructions that distinguish Hermes-owned
|
|
140
|
+
connected services and automation from ordinary local coding work. Capability
|
|
141
|
+
discovery reports declarative presets and runtime status only; it does not
|
|
142
|
+
claim that a Hermes integration is live without a stable Hermes introspection
|
|
143
|
+
API.
|
|
144
|
+
|
|
145
|
+
Jobs are memory-only, concurrency-limited, cancellable, output-bounded, and
|
|
146
|
+
expire after 24 hours. Approval records expire after 15 minutes and are
|
|
147
|
+
one-shot. Audit JSONL stores only identifiers, modes, risks, prompt hashes, and
|
|
148
|
+
terminal metadata with `0600` permissions.
|
|
149
|
+
|
|
150
|
+
## HTTP transport
|
|
151
|
+
|
|
152
|
+
`hermes-action serve` exposes `/mcp` using Streamable HTTP. It binds loopback by
|
|
153
|
+
default. Direct non-loopback binding requires an explicit address in
|
|
154
|
+
`100.64.0.0/10`, `--allow-tailnet`, and a bearer token read from an environment
|
|
155
|
+
variable. The server validates Host, authenticates in constant time, restricts
|
|
156
|
+
direct peers to Tailscale CGNAT, limits request size and active sessions, and
|
|
157
|
+
never exposes an unauthenticated diagnostics endpoint.
|
|
158
|
+
|
|
159
|
+
Tailscale Serve in front of a loopback listener remains the preferred remote
|
|
160
|
+
deployment because TLS and tailnet identity stay outside the bridge. Requests
|
|
161
|
+
forwarded with a `*.ts.net` Host still require the bridge bearer token.
|
|
162
|
+
|
|
163
|
+
### Transitive Hono advisory
|
|
164
|
+
|
|
165
|
+
MCP SDK 1.29.0 currently depends on `@hono/node-server` 1.x, which npm flags
|
|
166
|
+
under [GHSA-frvp-7c67-39w9](https://github.com/advisories/GHSA-frvp-7c67-39w9).
|
|
167
|
+
That advisory applies only to the package's `serve-static` middleware on
|
|
168
|
+
Windows. The bridge never imports that middleware, serves no static files, and
|
|
169
|
+
rejects every HTTP path except `/mcp`, so the vulnerable code path is not
|
|
170
|
+
reachable here.
|
|
171
|
+
|
|
172
|
+
Re-evaluate this acceptance when the v1 SDK updates its Hono dependency, or
|
|
173
|
+
before adding static-file serving, a Hono middleware layer, or any HTTP route
|
|
174
|
+
that maps request paths to the filesystem. Do not force Hono 2 through an npm
|
|
175
|
+
override: the current SDK declares `^1.19.9`, and doing so produces an invalid
|
|
176
|
+
dependency tree for global installs.
|
package/docs/FUNCTIONAL-TESTS.md
CHANGED
|
@@ -27,13 +27,22 @@ The fake Hermes tests verify:
|
|
|
27
27
|
|
|
28
28
|
The installer tests verify (with injected home/cwd and temp `HOME`, no real agents required):
|
|
29
29
|
|
|
30
|
-
- `install` / `uninstall`
|
|
30
|
+
- `install` / `uninstall` manage both skills and native MCP registrations,
|
|
31
|
+
remain idempotent, preserve customized registrations, and never touch
|
|
32
|
+
`CLAUDE.md` / `AGENTS.md` by default.
|
|
31
33
|
- `--dry-run` and `--print` write nothing; `--force` replaces a managed skill; a non-managed file is refused.
|
|
32
34
|
- `--project-hint` adds and removes a marker block without losing existing content.
|
|
33
35
|
- `--project` installs a project-local skill without creating the global one.
|
|
34
36
|
- `install mcp --write` merges and `uninstall mcp --write` unmerges the project `.mcp.json`, preserving other servers.
|
|
35
|
-
- `doctor`
|
|
37
|
+
- `doctor` verifies skills, registrations, and an in-memory MCP handshake;
|
|
38
|
+
`--probe` accepts the sentinel on stdout or stderr.
|
|
36
39
|
- The shipped `examples/*/SKILL.md` match the installer template exactly (no drift).
|
|
40
|
+
- asynchronous jobs enforce concurrency, cancellation, TTL, and bounded UTF-8
|
|
41
|
+
output;
|
|
42
|
+
- approvals are immutable, short-lived, and one-shot, while audit records omit
|
|
43
|
+
prompt and output content;
|
|
44
|
+
- the Streamable HTTP server completes an MCP handshake on loopback and rejects
|
|
45
|
+
public binding, weak/missing authentication, and non-Tailscale addresses.
|
|
37
46
|
|
|
38
47
|
## Live Hermes smoke test
|
|
39
48
|
|
|
@@ -55,27 +64,30 @@ node dist/cli.js run \
|
|
|
55
64
|
|
|
56
65
|
## Claude Code smoke test
|
|
57
66
|
|
|
58
|
-
After `npm link`,
|
|
67
|
+
After `npm link`, install over any existing configuration:
|
|
59
68
|
|
|
60
69
|
```bash
|
|
61
|
-
hermes-action
|
|
70
|
+
hermes-action install all --yes
|
|
71
|
+
claude mcp get hermes-action
|
|
72
|
+
hermes-action doctor
|
|
62
73
|
```
|
|
63
74
|
|
|
64
75
|
Expected result:
|
|
65
76
|
|
|
66
|
-
- The
|
|
67
|
-
- The
|
|
68
|
-
-
|
|
77
|
+
- The managed Claude skill is current.
|
|
78
|
+
- The MCP entry points to the absolute linked bridge launcher with argument `mcp`.
|
|
79
|
+
- `doctor` reports `skill:claude-code`, `mcp:claude-code`, and
|
|
80
|
+
`mcp:handshake` as passing.
|
|
69
81
|
|
|
70
82
|
## Codex smoke test
|
|
71
83
|
|
|
72
|
-
|
|
84
|
+
Verify the same installation from Codex:
|
|
73
85
|
|
|
74
86
|
```bash
|
|
75
|
-
hermes-action
|
|
87
|
+
codex mcp get hermes-action --json
|
|
76
88
|
```
|
|
77
89
|
|
|
78
|
-
|
|
90
|
+
The command and arguments must match the current absolute bridge launcher.
|
|
79
91
|
|
|
80
92
|
## MCP smoke test
|
|
81
93
|
|
|
@@ -92,6 +104,9 @@ Configure an MCP client with:
|
|
|
92
104
|
}
|
|
93
105
|
```
|
|
94
106
|
|
|
95
|
-
Call `hermes_status` first.
|
|
107
|
+
Call `hermes_status` and `hermes_capabilities` first. They should report the
|
|
108
|
+
runtime and declarative presets without spending provider tokens.
|
|
96
109
|
|
|
97
|
-
Then call `
|
|
110
|
+
Then call `hermes_plan` before making real side-effecting calls. Validate a
|
|
111
|
+
two-phase action with `hermes_prepare`; call `hermes_reject` unless a human
|
|
112
|
+
explicitly approves the exact request returned in `preview.action`.
|
|
@@ -1,55 +1,61 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hermes-action-bridge
|
|
3
|
-
description:
|
|
3
|
+
description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Hermes Action Bridge
|
|
7
7
|
|
|
8
|
-
Use this skill when a task needs capabilities
|
|
9
|
-
Hermes skills or memory, messaging platforms, browser
|
|
10
|
-
|
|
11
|
-
configured in Hermes Agent.
|
|
8
|
+
Use this skill when a task needs state or capabilities owned by Hermes Agent:
|
|
9
|
+
Hermes skills or memory, connected services, messaging platforms, browser
|
|
10
|
+
workflows, scheduled automation, or another integration configured in Hermes.
|
|
12
11
|
|
|
13
|
-
Do not reimplement
|
|
14
|
-
`
|
|
12
|
+
Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
|
|
13
|
+
installed `hermes_*` MCP tools so the host can discover, approve, and inspect
|
|
14
|
+
the delegation.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
18
|
-
- The task
|
|
19
|
-
- The task needs
|
|
20
|
-
- The task
|
|
18
|
+
- The task names Hermes, a Hermes skill, memory, preset, or connected service.
|
|
19
|
+
- The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
|
|
20
|
+
- The task must continue as a cancellable background job outside the local coding step.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Do not use Hermes for ordinary local code edits or repository inspection that
|
|
23
|
+
the current agent can perform directly.
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
## Discover first
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```
|
|
27
|
+
Call `hermes_capabilities` before assuming an integration is configured. Use
|
|
28
|
+
`hermes_status` to check the runtime without spending provider tokens.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Safe delegation
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
```
|
|
32
|
+
- Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
|
|
33
|
+
- Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
|
|
34
|
+
long cancellable plan or draft.
|
|
35
|
+
- Use `hermes_cancel` when a queued or running job is no longer wanted.
|
|
37
36
|
|
|
38
37
|
## External side effects
|
|
39
38
|
|
|
40
|
-
For public posts, outbound
|
|
41
|
-
|
|
39
|
+
For public posts, outbound messages, deletes, payments, credential changes, or
|
|
40
|
+
git pushes:
|
|
41
|
+
|
|
42
|
+
1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
|
|
43
|
+
2. Show `preview.action` and the rest of the preview to the human.
|
|
44
|
+
3. Call `hermes_approve` only after the human explicitly approves that
|
|
45
|
+
prepared action; otherwise call `hermes_reject`.
|
|
46
|
+
|
|
47
|
+
Never treat the model's own decision as human approval.
|
|
48
|
+
|
|
49
|
+
## CLI fallback
|
|
50
|
+
|
|
51
|
+
If MCP tools are unavailable, use the local CLI:
|
|
42
52
|
|
|
43
53
|
```bash
|
|
44
|
-
hermes-action run --mode
|
|
54
|
+
hermes-action run --mode plan "<describe what Hermes should do>"
|
|
45
55
|
```
|
|
46
56
|
|
|
47
|
-
Never use `--yolo` unless the human explicitly asked for trusted local
|
|
48
|
-
execution. It bypasses only the bridge policy, not Hermes' own safety rules.
|
|
49
|
-
|
|
50
57
|
## Verify setup
|
|
51
58
|
|
|
52
59
|
```bash
|
|
53
|
-
hermes-action
|
|
54
|
-
hermes-action run --dry-run --json "Return BRIDGE_OK only."
|
|
60
|
+
hermes-action doctor
|
|
55
61
|
```
|
package/examples/codex/SKILL.md
CHANGED
|
@@ -1,55 +1,61 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: hermes-action-bridge
|
|
3
|
-
description:
|
|
3
|
+
description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Hermes Action Bridge
|
|
7
7
|
|
|
8
|
-
Use this skill when a task needs capabilities
|
|
9
|
-
Hermes skills or memory, messaging platforms, browser
|
|
10
|
-
|
|
11
|
-
configured in Hermes Agent.
|
|
8
|
+
Use this skill when a task needs state or capabilities owned by Hermes Agent:
|
|
9
|
+
Hermes skills or memory, connected services, messaging platforms, browser
|
|
10
|
+
workflows, scheduled automation, or another integration configured in Hermes.
|
|
12
11
|
|
|
13
|
-
Do not reimplement
|
|
14
|
-
`
|
|
12
|
+
Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
|
|
13
|
+
installed `hermes_*` MCP tools so the host can discover, approve, and inspect
|
|
14
|
+
the delegation.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
18
|
-
- The task
|
|
19
|
-
- The task needs
|
|
20
|
-
- The task
|
|
18
|
+
- The task names Hermes, a Hermes skill, memory, preset, or connected service.
|
|
19
|
+
- The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
|
|
20
|
+
- The task must continue as a cancellable background job outside the local coding step.
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Do not use Hermes for ordinary local code edits or repository inspection that
|
|
23
|
+
the current agent can perform directly.
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
## Discover first
|
|
25
26
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
```
|
|
27
|
+
Call `hermes_capabilities` before assuming an integration is configured. Use
|
|
28
|
+
`hermes_status` to check the runtime without spending provider tokens.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Safe delegation
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
```
|
|
32
|
+
- Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
|
|
33
|
+
- Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
|
|
34
|
+
long cancellable plan or draft.
|
|
35
|
+
- Use `hermes_cancel` when a queued or running job is no longer wanted.
|
|
37
36
|
|
|
38
37
|
## External side effects
|
|
39
38
|
|
|
40
|
-
For public posts, outbound
|
|
41
|
-
|
|
39
|
+
For public posts, outbound messages, deletes, payments, credential changes, or
|
|
40
|
+
git pushes:
|
|
41
|
+
|
|
42
|
+
1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
|
|
43
|
+
2. Show `preview.action` and the rest of the preview to the human.
|
|
44
|
+
3. Call `hermes_approve` only after the human explicitly approves that
|
|
45
|
+
prepared action; otherwise call `hermes_reject`.
|
|
46
|
+
|
|
47
|
+
Never treat the model's own decision as human approval.
|
|
48
|
+
|
|
49
|
+
## CLI fallback
|
|
50
|
+
|
|
51
|
+
If MCP tools are unavailable, use the local CLI:
|
|
42
52
|
|
|
43
53
|
```bash
|
|
44
|
-
hermes-action run --mode
|
|
54
|
+
hermes-action run --mode plan "<describe what Hermes should do>"
|
|
45
55
|
```
|
|
46
56
|
|
|
47
|
-
Never use `--yolo` unless the human explicitly asked for trusted local
|
|
48
|
-
execution. It bypasses only the bridge policy, not Hermes' own safety rules.
|
|
49
|
-
|
|
50
57
|
## Verify setup
|
|
51
58
|
|
|
52
59
|
```bash
|
|
53
|
-
hermes-action
|
|
54
|
-
hermes-action run --dry-run --json "Return BRIDGE_OK only."
|
|
60
|
+
hermes-action doctor
|
|
55
61
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "hermes-action-bridge",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Configurable bridge for external agents to delegate actions to Hermes Agent via CLI or MCP.",
|
|
5
5
|
"mcpName": "io.github.TheBlueHouse75/hermes-action-bridge",
|
|
6
6
|
"repository": {
|
|
@@ -21,15 +21,17 @@
|
|
|
21
21
|
"CHANGELOG.md",
|
|
22
22
|
"CONTRIBUTING.md",
|
|
23
23
|
"docs/*.md",
|
|
24
|
-
"examples"
|
|
24
|
+
"examples",
|
|
25
|
+
"plugins"
|
|
25
26
|
],
|
|
26
27
|
"scripts": {
|
|
27
28
|
"build": "tsc -p tsconfig.json",
|
|
28
29
|
"postbuild": "node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\"",
|
|
29
30
|
"dev": "tsx src/cli.ts",
|
|
31
|
+
"pretest": "npm run build",
|
|
30
32
|
"test": "vitest run",
|
|
31
33
|
"test:watch": "vitest",
|
|
32
|
-
"check": "npm run
|
|
34
|
+
"check": "npm run test",
|
|
33
35
|
"prepublishOnly": "npm run check"
|
|
34
36
|
},
|
|
35
37
|
"keywords": [
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "hermes-action",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Delegate real-world actions (research, browser, messaging, scheduling, Hermes skills/tools) to Hermes Agent.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Cyril Guilleminot",
|
|
7
|
+
"url": "https://github.com/TheBlueHouse75"
|
|
8
|
+
},
|
|
9
|
+
"homepage": "https://github.com/TheBlueHouse75/hermes-action-bridge",
|
|
10
|
+
"repository": "https://github.com/TheBlueHouse75/hermes-action-bridge",
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"keywords": ["hermes-agent", "mcp", "codex", "automation", "delegation"],
|
|
13
|
+
"mcpServers": "./.mcp.json",
|
|
14
|
+
"skills": "./skills/",
|
|
15
|
+
"interface": {
|
|
16
|
+
"displayName": "Hermes Action Bridge",
|
|
17
|
+
"shortDescription": "Delegate real-world actions to Hermes Agent",
|
|
18
|
+
"longDescription": "Lets Codex delegate work outside the local coding session — research, browser workflows, messaging, scheduling, and any Hermes skill or tool — to Hermes Agent, instead of reimplementing them. Deterministic safety policy (execute -> request-approval by default unless trusted). Requires Hermes Agent installed locally.",
|
|
19
|
+
"developerName": "Cyril Guilleminot",
|
|
20
|
+
"category": "Developer Tools",
|
|
21
|
+
"capabilities": ["Interactive", "Write"],
|
|
22
|
+
"websiteURL": "https://github.com/TheBlueHouse75/hermes-action-bridge",
|
|
23
|
+
"brandColor": "#7C3AED",
|
|
24
|
+
"defaultPrompt": [
|
|
25
|
+
"Ask Hermes for a safe plan to handle the next real-world action from this repo's context."
|
|
26
|
+
],
|
|
27
|
+
"composerIcon": "./assets/app-icon.png",
|
|
28
|
+
"logo": "./assets/app-icon.png"
|
|
29
|
+
}
|
|
30
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: hermes-action-bridge
|
|
3
|
+
description: Use Hermes Agent for Hermes-owned skills, memory, connected services, messaging, browser workflows, schedules, and external automation. Prefer the installed hermes_* MCP tools; use the CLI only as a fallback.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Hermes Action Bridge
|
|
7
|
+
|
|
8
|
+
Use this skill when a task needs state or capabilities owned by Hermes Agent:
|
|
9
|
+
Hermes skills or memory, connected services, messaging platforms, browser
|
|
10
|
+
workflows, scheduled automation, or another integration configured in Hermes.
|
|
11
|
+
|
|
12
|
+
Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
|
|
13
|
+
installed `hermes_*` MCP tools so the host can discover, approve, and inspect
|
|
14
|
+
the delegation.
|
|
15
|
+
|
|
16
|
+
## When to use
|
|
17
|
+
|
|
18
|
+
- The task names Hermes, a Hermes skill, memory, preset, or connected service.
|
|
19
|
+
- The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
|
|
20
|
+
- The task must continue as a cancellable background job outside the local coding step.
|
|
21
|
+
|
|
22
|
+
Do not use Hermes for ordinary local code edits or repository inspection that
|
|
23
|
+
the current agent can perform directly.
|
|
24
|
+
|
|
25
|
+
## Discover first
|
|
26
|
+
|
|
27
|
+
Call `hermes_capabilities` before assuming an integration is configured. Use
|
|
28
|
+
`hermes_status` to check the runtime without spending provider tokens.
|
|
29
|
+
|
|
30
|
+
## Safe delegation
|
|
31
|
+
|
|
32
|
+
- Use `hermes_plan` for plan-mode analysis, but treat it as open-world and review its output.
|
|
33
|
+
- Use `hermes_submit`, then `hermes_job_status` / `hermes_result`, for a
|
|
34
|
+
long cancellable plan or draft.
|
|
35
|
+
- Use `hermes_cancel` when a queued or running job is no longer wanted.
|
|
36
|
+
|
|
37
|
+
## External side effects
|
|
38
|
+
|
|
39
|
+
For public posts, outbound messages, deletes, payments, credential changes, or
|
|
40
|
+
git pushes:
|
|
41
|
+
|
|
42
|
+
1. Call `hermes_prepare` to produce a local no-tool summary and approval ID.
|
|
43
|
+
2. Show `preview.action` and the rest of the preview to the human.
|
|
44
|
+
3. Call `hermes_approve` only after the human explicitly approves that
|
|
45
|
+
prepared action; otherwise call `hermes_reject`.
|
|
46
|
+
|
|
47
|
+
Never treat the model's own decision as human approval.
|
|
48
|
+
|
|
49
|
+
## CLI fallback
|
|
50
|
+
|
|
51
|
+
If MCP tools are unavailable, use the local CLI:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
hermes-action run --mode plan "<describe what Hermes should do>"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Verify setup
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
hermes-action doctor
|
|
61
|
+
```
|