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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { McpLauncher } from "./mcp-service.js";
|
|
2
|
+
/** Windows MCP clients need Node plus the CLI script; Unix can execute the shebang-enabled script directly. */
|
|
3
|
+
export declare function bridgeMcpLauncher(scriptPath: string, platform?: NodeJS.Platform, nodePath?: string): McpLauncher;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/** Windows MCP clients need Node plus the CLI script; Unix can execute the shebang-enabled script directly. */
|
|
2
|
+
export function bridgeMcpLauncher(scriptPath, platform = process.platform, nodePath = process.execPath) {
|
|
3
|
+
return platform === "win32"
|
|
4
|
+
? { command: nodePath, args: [scriptPath, "mcp"] }
|
|
5
|
+
: { command: scriptPath, args: ["mcp"] };
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/install/launcher.ts"],"names":[],"mappings":"AAEA,+GAA+G;AAC/G,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,WAA4B,OAAO,CAAC,QAAQ,EAC5C,WAAmB,OAAO,CAAC,QAAQ;IAEnC,OAAO,QAAQ,KAAK,OAAO;QACzB,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;QAClD,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -19,8 +19,10 @@ function canonical(value) {
|
|
|
19
19
|
}
|
|
20
20
|
/** Add the hermes-action server to a Claude Code `.mcp.json`, preserving every other key. */
|
|
21
21
|
export function mergeMcpJson(existing) {
|
|
22
|
-
|
|
22
|
+
// Absent or empty/whitespace-only (e.g. `touch .mcp.json`) is treated as a fresh file, not a parse error.
|
|
23
|
+
if (existing === null || existing.trim() === "") {
|
|
23
24
|
return { content: render({ mcpServers: { [mcpServerName]: mcpServerEntry } }), action: "created" };
|
|
25
|
+
}
|
|
24
26
|
let parsed;
|
|
25
27
|
try {
|
|
26
28
|
parsed = JSON.parse(existing);
|
|
@@ -34,13 +36,20 @@ export function mergeMcpJson(existing) {
|
|
|
34
36
|
return { content: existing, action: "refused", reason: "existing .mcp.json has a non-object mcpServers; refusing to overwrite" };
|
|
35
37
|
}
|
|
36
38
|
const servers = isObject(parsed.mcpServers) ? parsed.mcpServers : {};
|
|
37
|
-
|
|
39
|
+
const current = servers[mcpServerName];
|
|
40
|
+
if (canonical(current) === canonical(mcpServerEntry))
|
|
38
41
|
return { content: existing, action: "unchanged" };
|
|
42
|
+
// A different entry under our name is either a user customization (custom command/args) or a stale
|
|
43
|
+
// hand-edit. There is no --force path here, so refuse rather than silently discarding it; the user can
|
|
44
|
+
// remove the entry (or run `uninstall mcp --write`) and re-run.
|
|
45
|
+
if (current !== undefined) {
|
|
46
|
+
return { content: existing, action: "refused", reason: `existing .mcp.json already has a different "${mcpServerName}" entry; refusing to overwrite it` };
|
|
47
|
+
}
|
|
39
48
|
return { content: render({ ...parsed, mcpServers: { ...servers, [mcpServerName]: mcpServerEntry } }), action: "updated" };
|
|
40
49
|
}
|
|
41
50
|
/** Remove the hermes-action server from a Claude Code `.mcp.json`, leaving other servers in place. */
|
|
42
51
|
export function unmergeMcpJson(existing) {
|
|
43
|
-
if (existing === null)
|
|
52
|
+
if (existing === null || existing.trim() === "")
|
|
44
53
|
return { content: "", action: "unchanged" };
|
|
45
54
|
let parsed;
|
|
46
55
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/install/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,aAAa,EAAmB,MAAM,gBAAgB,CAAC;AAShE,6GAA6G;AAC7G,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,EAAE,MAAM,EAAE,gCAAgC,EAAE,QAAQ,EAAE,2CAA2C,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;QAC9H,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE;KACtF,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,4FAA4F;AAC5F,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACzC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAC/G,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,IAAI,QAAQ,KAAK,IAAI;
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../src/install/mcp-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FileChange, McpTarget, SkillAgent } from "./types.js";
|
|
2
|
+
interface CommandError {
|
|
3
|
+
code?: string | undefined;
|
|
4
|
+
message: string;
|
|
5
|
+
}
|
|
6
|
+
export interface McpCommandResult {
|
|
7
|
+
status: number | null;
|
|
8
|
+
stdout: string;
|
|
9
|
+
stderr: string;
|
|
10
|
+
error?: CommandError | undefined;
|
|
11
|
+
}
|
|
12
|
+
/** Injectable process boundary: tests never invoke the real Codex or Claude binaries. */
|
|
13
|
+
export type McpCommandRunner = (command: string, args: string[]) => McpCommandResult;
|
|
14
|
+
export interface McpLauncher {
|
|
15
|
+
command: string;
|
|
16
|
+
args: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface McpServiceOptions {
|
|
19
|
+
launcher: McpLauncher;
|
|
20
|
+
dryRun: boolean;
|
|
21
|
+
runner?: McpCommandRunner | undefined;
|
|
22
|
+
}
|
|
23
|
+
export interface McpTargetResult {
|
|
24
|
+
agent: SkillAgent;
|
|
25
|
+
ok: boolean;
|
|
26
|
+
dryRun: boolean;
|
|
27
|
+
change: FileChange;
|
|
28
|
+
}
|
|
29
|
+
export type McpRegistrationState = "absent" | "current" | "conflict" | "unavailable" | "error";
|
|
30
|
+
export interface McpRegistration {
|
|
31
|
+
agent: SkillAgent;
|
|
32
|
+
state: McpRegistrationState;
|
|
33
|
+
detail?: string | undefined;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Register the stdio bridge via each agent's supported CLI instead of editing
|
|
37
|
+
* implementation-owned TOML/JSON. This preserves unrelated user servers.
|
|
38
|
+
*/
|
|
39
|
+
export declare function installMcp(target: McpTarget, options: McpServiceOptions): McpTargetResult[];
|
|
40
|
+
/** Remove only the named bridge registration through the owning agent CLI. */
|
|
41
|
+
export declare function uninstallMcp(target: McpTarget, options: McpServiceOptions): McpTargetResult[];
|
|
42
|
+
/** Public inspection used by doctor and setup reporting. It never mutates agent configuration. */
|
|
43
|
+
export declare function inspectMcp(agent: SkillAgent, launcher: McpLauncher, runner?: McpCommandRunner): McpRegistration;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { isAbsolute } from "node:path";
|
|
3
|
+
import { versionProbeTimeoutMs } from "../status.js";
|
|
4
|
+
const mcpServerName = "hermes-action";
|
|
5
|
+
const allAgents = ["codex", "claude-code"];
|
|
6
|
+
/**
|
|
7
|
+
* Register the stdio bridge via each agent's supported CLI instead of editing
|
|
8
|
+
* implementation-owned TOML/JSON. This preserves unrelated user servers.
|
|
9
|
+
*/
|
|
10
|
+
export function installMcp(target, options) {
|
|
11
|
+
const agents = agentsFor(target);
|
|
12
|
+
const runner = options.runner ?? systemRunner;
|
|
13
|
+
const planned = agents.map((agent) => planInstall(agent, options, runner));
|
|
14
|
+
if (options.dryRun || planned.some((entry) => !entry.ok))
|
|
15
|
+
return planned;
|
|
16
|
+
const applied = [];
|
|
17
|
+
for (const plan of planned) {
|
|
18
|
+
if (plan.change.action === "unchanged") {
|
|
19
|
+
applied.push(plan);
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const installed = installOne(plan.agent, options);
|
|
23
|
+
applied.push(installed);
|
|
24
|
+
if (installed.ok)
|
|
25
|
+
continue;
|
|
26
|
+
const failure = installed.change.reason ?? "registration failed";
|
|
27
|
+
return [
|
|
28
|
+
...rollbackCreated(applied, options, runner, failure),
|
|
29
|
+
...planned.slice(applied.length).map((entry) => result(entry.agent, "refused", false, `registration not attempted because another agent failed: ${failure}`)),
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
return applied;
|
|
33
|
+
}
|
|
34
|
+
/** Remove only the named bridge registration through the owning agent CLI. */
|
|
35
|
+
export function uninstallMcp(target, options) {
|
|
36
|
+
return forAgents(target, (agent) => uninstallOne(agent, options));
|
|
37
|
+
}
|
|
38
|
+
/** Public inspection used by doctor and setup reporting. It never mutates agent configuration. */
|
|
39
|
+
export function inspectMcp(agent, launcher, runner = systemRunner) {
|
|
40
|
+
if (!isAbsolute(launcher.command))
|
|
41
|
+
return { agent, state: "error", detail: "bridge launcher command must be absolute" };
|
|
42
|
+
const result = runner(agentCommand(agent), getArgs(agent));
|
|
43
|
+
if (result.error?.code === "ENOENT")
|
|
44
|
+
return { agent, state: "unavailable", detail: `${agentCommand(agent)} is not available on PATH` };
|
|
45
|
+
if (result.error)
|
|
46
|
+
return { agent, state: "error", detail: result.error.message };
|
|
47
|
+
const output = `${result.stdout}\n${result.stderr}`;
|
|
48
|
+
if (result.status !== 0) {
|
|
49
|
+
return isMissingServerOutput(output)
|
|
50
|
+
? { agent, state: "absent" }
|
|
51
|
+
: { agent, state: "error", detail: commandFailure(agentCommand(agent), "inspect", result) };
|
|
52
|
+
}
|
|
53
|
+
const fields = registrationFields(output);
|
|
54
|
+
const expectedScope = agent !== "claude-code" || fields.get("scope")?.startsWith("User") === true;
|
|
55
|
+
const expectedHealth = agent !== "claude-code" || /\bConnected$/i.test(fields.get("status") ?? "");
|
|
56
|
+
const expectedTransport = (fields.get(agent === "claude-code" ? "type" : "transport") ?? "").toLowerCase() === "stdio";
|
|
57
|
+
const expectedCommand = fields.get("command") === launcher.command;
|
|
58
|
+
const expectedArgs = fields.get("args") === launcher.args.join(" ");
|
|
59
|
+
return expectedScope && expectedHealth && expectedTransport && expectedCommand && expectedArgs
|
|
60
|
+
? { agent, state: "current" }
|
|
61
|
+
: { agent, state: "conflict", detail: `existing ${mcpServerName} registration differs from the requested user-level bridge command` };
|
|
62
|
+
}
|
|
63
|
+
function installOne(agent, options) {
|
|
64
|
+
const runner = options.runner ?? systemRunner;
|
|
65
|
+
const planned = planInstall(agent, options, runner);
|
|
66
|
+
if (planned.change.action !== "created" || options.dryRun)
|
|
67
|
+
return planned;
|
|
68
|
+
const command = agentCommand(agent);
|
|
69
|
+
const added = runner(command, addArgs(agent, options.launcher));
|
|
70
|
+
if (added.error)
|
|
71
|
+
return result(agent, "refused", false, added.error.message);
|
|
72
|
+
if (added.status !== 0)
|
|
73
|
+
return result(agent, "refused", false, commandFailure(command, "register", added));
|
|
74
|
+
const verified = inspectMcp(agent, options.launcher, runner);
|
|
75
|
+
if (verified.state !== "current") {
|
|
76
|
+
const removed = runner(command, removeArgs(agent));
|
|
77
|
+
const verificationFailure = verified.detail ?? "registration could not be verified";
|
|
78
|
+
if (removed.error)
|
|
79
|
+
return result(agent, "refused", false, `${verificationFailure}; rollback failed: ${removed.error.message}`);
|
|
80
|
+
if (removed.status !== 0) {
|
|
81
|
+
return result(agent, "refused", false, `${verificationFailure}; ${commandFailure(command, "roll back", removed)}`);
|
|
82
|
+
}
|
|
83
|
+
return result(agent, "refused", false, `${verificationFailure}; newly added registration was rolled back`);
|
|
84
|
+
}
|
|
85
|
+
return result(agent, "created", false);
|
|
86
|
+
}
|
|
87
|
+
function planInstall(agent, options, runner) {
|
|
88
|
+
const registration = inspectMcp(agent, options.launcher, runner);
|
|
89
|
+
if (registration.state === "current")
|
|
90
|
+
return result(agent, "unchanged", options.dryRun);
|
|
91
|
+
if (registration.state === "absent")
|
|
92
|
+
return result(agent, "created", options.dryRun);
|
|
93
|
+
return result(agent, "refused", options.dryRun, registration.detail ?? `could not inspect ${mcpServerName}`);
|
|
94
|
+
}
|
|
95
|
+
function rollbackCreated(applied, options, runner, failure) {
|
|
96
|
+
const rollbackOptions = { ...options, dryRun: false, runner };
|
|
97
|
+
return applied.map((entry) => {
|
|
98
|
+
if (!entry.ok || entry.change.action !== "created")
|
|
99
|
+
return entry;
|
|
100
|
+
const rolledBack = uninstallOne(entry.agent, rollbackOptions);
|
|
101
|
+
const reason = rolledBack.ok
|
|
102
|
+
? `registration rolled back because another agent failed: ${failure}`
|
|
103
|
+
: `registration rollback failed after another agent failed: ${rolledBack.change.reason ?? failure}`;
|
|
104
|
+
return result(entry.agent, "refused", false, reason);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function uninstallOne(agent, options) {
|
|
108
|
+
const runner = options.runner ?? systemRunner;
|
|
109
|
+
const registration = inspectMcp(agent, options.launcher, runner);
|
|
110
|
+
if (registration.state === "absent")
|
|
111
|
+
return result(agent, "unchanged", options.dryRun);
|
|
112
|
+
if (registration.state !== "current")
|
|
113
|
+
return result(agent, "refused", options.dryRun, registration.detail ?? `could not inspect ${mcpServerName}`);
|
|
114
|
+
if (options.dryRun)
|
|
115
|
+
return result(agent, "removed", true);
|
|
116
|
+
const command = agentCommand(agent);
|
|
117
|
+
const removed = runner(command, removeArgs(agent));
|
|
118
|
+
if (removed.error)
|
|
119
|
+
return result(agent, "refused", false, removed.error.message);
|
|
120
|
+
if (removed.status !== 0)
|
|
121
|
+
return result(agent, "refused", false, commandFailure(command, "remove", removed));
|
|
122
|
+
const verified = inspectMcp(agent, options.launcher, runner);
|
|
123
|
+
if (verified.state !== "absent")
|
|
124
|
+
return result(agent, "refused", false, verified.detail ?? "removal could not be verified");
|
|
125
|
+
return result(agent, "removed", false);
|
|
126
|
+
}
|
|
127
|
+
function forAgents(target, operation) {
|
|
128
|
+
return agentsFor(target).map(operation);
|
|
129
|
+
}
|
|
130
|
+
function agentsFor(target) {
|
|
131
|
+
return target === "all" ? allAgents : [target];
|
|
132
|
+
}
|
|
133
|
+
function result(agent, action, dryRun, reason) {
|
|
134
|
+
return { agent, ok: action !== "refused", dryRun, change: { path: `${agent} MCP registration (${mcpServerName})`, action, ...(reason ? { reason } : {}) } };
|
|
135
|
+
}
|
|
136
|
+
function agentCommand(agent) {
|
|
137
|
+
return agent === "codex" ? "codex" : "claude";
|
|
138
|
+
}
|
|
139
|
+
function getArgs(_agent) {
|
|
140
|
+
return ["mcp", "get", mcpServerName];
|
|
141
|
+
}
|
|
142
|
+
function addArgs(agent, launcher) {
|
|
143
|
+
return agent === "codex"
|
|
144
|
+
? ["mcp", "add", mcpServerName, "--", launcher.command, ...launcher.args]
|
|
145
|
+
: ["mcp", "add", "--scope", "user", "--transport", "stdio", mcpServerName, "--", launcher.command, ...launcher.args];
|
|
146
|
+
}
|
|
147
|
+
function removeArgs(agent) {
|
|
148
|
+
return agent === "codex" ? ["mcp", "remove", mcpServerName] : ["mcp", "remove", "--scope", "user", mcpServerName];
|
|
149
|
+
}
|
|
150
|
+
function commandFailure(command, action, result) {
|
|
151
|
+
const output = `${result.stderr}\n${result.stdout}`.trim();
|
|
152
|
+
return output === "" ? `${command} failed to ${action} ${mcpServerName}` : `${command} failed to ${action} ${mcpServerName}: ${output}`;
|
|
153
|
+
}
|
|
154
|
+
function registrationFields(output) {
|
|
155
|
+
const fields = new Map();
|
|
156
|
+
for (const line of output.split(/\r?\n/)) {
|
|
157
|
+
const match = line.match(/^\s*([A-Za-z]+):\s*(.*?)\s*$/);
|
|
158
|
+
if (match?.[1] && match[2] !== undefined)
|
|
159
|
+
fields.set(match[1].toLowerCase(), match[2]);
|
|
160
|
+
}
|
|
161
|
+
return fields;
|
|
162
|
+
}
|
|
163
|
+
function isMissingServerOutput(output) {
|
|
164
|
+
return /(?:^|\n)(?:Error:\s*)?No MCP server named ['"]hermes-action['"](?: found)?\./i.test(output)
|
|
165
|
+
|| /(?:^|\n)(?:Error:\s*)?MCP server ['"]hermes-action['"] not found\b/i.test(output);
|
|
166
|
+
}
|
|
167
|
+
function systemRunner(command, args) {
|
|
168
|
+
const process = spawnSync(command, args, { encoding: "utf8", timeout: versionProbeTimeoutMs });
|
|
169
|
+
const error = process.error ? { code: process.error.code, message: process.error.message } : undefined;
|
|
170
|
+
return { status: process.status, stdout: process.stdout ?? "", stderr: process.stderr ?? "", ...(error ? { error } : {}) };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=mcp-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-service.js","sourceRoot":"","sources":["../../src/install/mcp-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,58 +7,64 @@ export function contentVersion(content) {
|
|
|
7
7
|
export function skillMarkdown() {
|
|
8
8
|
return `---
|
|
9
9
|
name: hermes-action-bridge
|
|
10
|
-
description:
|
|
10
|
+
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.
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Hermes Action Bridge
|
|
14
14
|
|
|
15
|
-
Use this skill when a task needs capabilities
|
|
16
|
-
Hermes skills or memory, messaging platforms, browser
|
|
17
|
-
|
|
18
|
-
configured in Hermes Agent.
|
|
15
|
+
Use this skill when a task needs state or capabilities owned by Hermes Agent:
|
|
16
|
+
Hermes skills or memory, connected services, messaging platforms, browser
|
|
17
|
+
workflows, scheduled automation, or another integration configured in Hermes.
|
|
19
18
|
|
|
20
|
-
Do not reimplement
|
|
21
|
-
\`
|
|
19
|
+
Do not reimplement a Hermes-owned integration in the coding agent. Prefer the
|
|
20
|
+
installed \`hermes_*\` MCP tools so the host can discover, approve, and inspect
|
|
21
|
+
the delegation.
|
|
22
22
|
|
|
23
23
|
## When to use
|
|
24
24
|
|
|
25
|
-
- The task
|
|
26
|
-
- The task needs
|
|
27
|
-
- The task
|
|
25
|
+
- The task names Hermes, a Hermes skill, memory, preset, or connected service.
|
|
26
|
+
- The task needs messaging, scheduling, browser work, or persistent external automation Hermes owns.
|
|
27
|
+
- The task must continue as a cancellable background job outside the local coding step.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
Do not use Hermes for ordinary local code edits or repository inspection that
|
|
30
|
+
the current agent can perform directly.
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
## Discover first
|
|
32
33
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
\`\`\`
|
|
34
|
+
Call \`hermes_capabilities\` before assuming an integration is configured. Use
|
|
35
|
+
\`hermes_status\` to check the runtime without spending provider tokens.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Safe delegation
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
\`\`\`
|
|
39
|
+
- Use \`hermes_plan\` for plan-mode analysis, but treat it as open-world and review its output.
|
|
40
|
+
- Use \`hermes_submit\`, then \`hermes_job_status\` / \`hermes_result\`, for a
|
|
41
|
+
long cancellable plan or draft.
|
|
42
|
+
- Use \`hermes_cancel\` when a queued or running job is no longer wanted.
|
|
44
43
|
|
|
45
44
|
## External side effects
|
|
46
45
|
|
|
47
|
-
For public posts, outbound
|
|
48
|
-
|
|
46
|
+
For public posts, outbound messages, deletes, payments, credential changes, or
|
|
47
|
+
git pushes:
|
|
48
|
+
|
|
49
|
+
1. Call \`hermes_prepare\` to produce a local no-tool summary and approval ID.
|
|
50
|
+
2. Show \`preview.action\` and the rest of the preview to the human.
|
|
51
|
+
3. Call \`hermes_approve\` only after the human explicitly approves that
|
|
52
|
+
prepared action; otherwise call \`hermes_reject\`.
|
|
53
|
+
|
|
54
|
+
Never treat the model's own decision as human approval.
|
|
55
|
+
|
|
56
|
+
## CLI fallback
|
|
57
|
+
|
|
58
|
+
If MCP tools are unavailable, use the local CLI:
|
|
49
59
|
|
|
50
60
|
\`\`\`bash
|
|
51
|
-
hermes-action run --mode
|
|
61
|
+
hermes-action run --mode plan "<describe what Hermes should do>"
|
|
52
62
|
\`\`\`
|
|
53
63
|
|
|
54
|
-
Never use \`--yolo\` unless the human explicitly asked for trusted local
|
|
55
|
-
execution. It bypasses only the bridge policy, not Hermes' own safety rules.
|
|
56
|
-
|
|
57
64
|
## Verify setup
|
|
58
65
|
|
|
59
66
|
\`\`\`bash
|
|
60
|
-
hermes-action
|
|
61
|
-
hermes-action run --dry-run --json "Return BRIDGE_OK only."
|
|
67
|
+
hermes-action doctor
|
|
62
68
|
\`\`\`
|
|
63
69
|
`;
|
|
64
70
|
}
|
|
@@ -67,9 +73,9 @@ export function projectHint() {
|
|
|
67
73
|
return [
|
|
68
74
|
"When a task requires Hermes Agent capabilities (skills, memory, messaging,",
|
|
69
75
|
"browser automation, cron, research, or platform integrations), use the",
|
|
70
|
-
"`hermes-action-bridge` skill and
|
|
71
|
-
"
|
|
72
|
-
"human
|
|
76
|
+
"`hermes-action-bridge` skill and installed `hermes_*` MCP tools. Discover",
|
|
77
|
+
"capabilities first, prefer `hermes_plan`, and use `hermes_prepare` followed",
|
|
78
|
+
"by `hermes_approve` only after explicit human approval for side effects.",
|
|
73
79
|
].join("\n");
|
|
74
80
|
}
|
|
75
81
|
/** Canonical MCP server entry for hermes-action, shared by the printed snippets and the .mcp.json writer. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/install/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,0GAA0G;AAC1G,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,aAAa;IAC3B,OAAO
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/install/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,0GAA0G;AAC1G,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,aAAa;IAC3B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DR,CAAC;AACF,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,6EAA6E;QAC7E,0EAA0E;KAC3E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,6GAA6G;AAC7G,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC;AAC7C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAW,CAAC;AAEnF,0EAA0E;AAC1E,MAAM,UAAU,cAAc;IAC5B,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7F,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB;IACjC,OAAO,CAAC,6BAA6B,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvG,CAAC"}
|
package/dist/install/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type SkillAgent = "claude-code" | "codex";
|
|
2
|
+
export type McpTarget = SkillAgent | "all";
|
|
2
3
|
export type InstallTarget = SkillAgent | "all" | "mcp";
|
|
3
4
|
export type InstallScope = "global" | "project";
|
|
4
5
|
export type ManagedState = "absent" | "current" | "stale" | "user-modified" | "foreign";
|
package/dist/jobs.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { HermesCliExecution } from "./adapters/hermes-cli.js";
|
|
2
|
+
import type { EffectiveRun } from "./types.js";
|
|
3
|
+
export type JobStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled" | "timed_out";
|
|
4
|
+
export interface JobOutput {
|
|
5
|
+
stdout: string;
|
|
6
|
+
stderr: string;
|
|
7
|
+
truncated: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface BridgeJob {
|
|
10
|
+
id: string;
|
|
11
|
+
status: JobStatus;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
startedAt?: string | undefined;
|
|
14
|
+
finishedAt?: string | undefined;
|
|
15
|
+
startBefore?: string | undefined;
|
|
16
|
+
expiresAt: string;
|
|
17
|
+
requestedMode: EffectiveRun["requestedMode"];
|
|
18
|
+
effectiveMode: EffectiveRun["mode"];
|
|
19
|
+
presetName: string;
|
|
20
|
+
detectedRisks: EffectiveRun["detectedRisks"];
|
|
21
|
+
exitCode?: number | undefined;
|
|
22
|
+
output?: JobOutput | undefined;
|
|
23
|
+
}
|
|
24
|
+
export interface JobStoreOptions {
|
|
25
|
+
ttlMs?: number | undefined;
|
|
26
|
+
maxOutputBytes?: number | undefined;
|
|
27
|
+
maxConcurrent?: number | undefined;
|
|
28
|
+
maxQueued?: number | undefined;
|
|
29
|
+
now?: () => Date;
|
|
30
|
+
createId?: () => string;
|
|
31
|
+
onSettled?: ((job: BridgeJob) => void) | undefined;
|
|
32
|
+
}
|
|
33
|
+
export interface JobStore {
|
|
34
|
+
submit(run: EffectiveRun, options?: JobSubmitOptions): BridgeJob;
|
|
35
|
+
canSubmit(): boolean;
|
|
36
|
+
get(jobId: string): BridgeJob | undefined;
|
|
37
|
+
cancel(jobId: string): BridgeJob | undefined;
|
|
38
|
+
cleanup(): number;
|
|
39
|
+
shutdown(): Promise<void>;
|
|
40
|
+
}
|
|
41
|
+
export interface JobSubmitOptions {
|
|
42
|
+
beforeStart?: ((job: BridgeJob) => void) | undefined;
|
|
43
|
+
startBefore?: string | undefined;
|
|
44
|
+
}
|
|
45
|
+
export type StartExecution = (run: EffectiveRun) => HermesCliExecution;
|
|
46
|
+
export declare const defaultJobMaxOutputBytes: number;
|
|
47
|
+
/**
|
|
48
|
+
* In-process job storage for long-running Hermes requests. It intentionally keeps no prompt or context
|
|
49
|
+
* document after starting the child process, so a status endpoint cannot expose handoff data.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createJobStore(startExecution: StartExecution, options?: JobStoreOptions): JobStore;
|