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.
Files changed (61) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/README.md +123 -22
  3. package/dist/adapters/hermes-cli.d.ts +14 -0
  4. package/dist/adapters/hermes-cli.js +80 -21
  5. package/dist/adapters/hermes-cli.js.map +1 -1
  6. package/dist/approvals.d.ts +35 -0
  7. package/dist/approvals.js +96 -0
  8. package/dist/approvals.js.map +1 -0
  9. package/dist/audit-log.d.ts +21 -0
  10. package/dist/audit-log.js +31 -0
  11. package/dist/audit-log.js.map +1 -0
  12. package/dist/capabilities.d.ts +29 -0
  13. package/dist/capabilities.js +24 -0
  14. package/dist/capabilities.js.map +1 -0
  15. package/dist/cli.js +205 -20
  16. package/dist/cli.js.map +1 -1
  17. package/dist/config.js +0 -6
  18. package/dist/config.js.map +1 -1
  19. package/dist/doctor.d.ts +8 -1
  20. package/dist/doctor.js +76 -13
  21. package/dist/doctor.js.map +1 -1
  22. package/dist/execution-gate.d.ts +5 -0
  23. package/dist/execution-gate.js +20 -0
  24. package/dist/execution-gate.js.map +1 -0
  25. package/dist/http-server.d.ts +18 -0
  26. package/dist/http-server.js +310 -0
  27. package/dist/http-server.js.map +1 -0
  28. package/dist/install/launcher.d.ts +3 -0
  29. package/dist/install/launcher.js +7 -0
  30. package/dist/install/launcher.js.map +1 -0
  31. package/dist/install/mcp-config.js +12 -3
  32. package/dist/install/mcp-config.js.map +1 -1
  33. package/dist/install/mcp-service.d.ts +44 -0
  34. package/dist/install/mcp-service.js +172 -0
  35. package/dist/install/mcp-service.js.map +1 -0
  36. package/dist/install/templates.js +38 -32
  37. package/dist/install/templates.js.map +1 -1
  38. package/dist/install/types.d.ts +1 -0
  39. package/dist/jobs.d.ts +51 -0
  40. package/dist/jobs.js +244 -0
  41. package/dist/jobs.js.map +1 -0
  42. package/dist/mcp-server.d.ts +32 -0
  43. package/dist/mcp-server.js +394 -25
  44. package/dist/mcp-server.js.map +1 -1
  45. package/dist/policy.js +9 -2
  46. package/dist/policy.js.map +1 -1
  47. package/dist/run.js +0 -1
  48. package/dist/run.js.map +1 -1
  49. package/dist/types.d.ts +2 -4
  50. package/dist/validation.d.ts +1 -0
  51. package/dist/validation.js +8 -0
  52. package/dist/validation.js.map +1 -0
  53. package/docs/ARCHITECTURE.md +69 -9
  54. package/docs/FUNCTIONAL-TESTS.md +27 -12
  55. package/examples/claude-code/SKILL.md +35 -29
  56. package/examples/codex/SKILL.md +35 -29
  57. package/package.json +5 -3
  58. package/plugins/hermes-action/.codex-plugin/plugin.json +30 -0
  59. package/plugins/hermes-action/.mcp.json +8 -0
  60. package/plugins/hermes-action/assets/app-icon.png +0 -0
  61. package/plugins/hermes-action/skills/hermes-action-bridge/SKILL.md +61 -0
@@ -0,0 +1,96 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { positiveInteger } from "./validation.js";
3
+ const defaultTtlMs = 15 * 60 * 1000;
4
+ const defaultMaxPending = 32;
5
+ /**
6
+ * One-shot, in-process approvals. A stored run is returned exactly once by `approve`; callers must
7
+ * execute that unchanged run rather than accepting new execution options at approval time.
8
+ */
9
+ export function createApprovalStore(options = {}) {
10
+ const ttlMs = positiveInteger(options.ttlMs, defaultTtlMs, "ttlMs");
11
+ const maxPending = positiveInteger(options.maxPending, defaultMaxPending, "maxPending");
12
+ const now = options.now ?? (() => new Date());
13
+ const createId = options.createId ?? randomUUID;
14
+ const onExpired = options.onExpired;
15
+ const entries = new Map();
16
+ const expire = (entry, current) => {
17
+ if (entry.approval.status === "awaiting_approval" && Date.parse(entry.approval.expiresAt) <= current.getTime()) {
18
+ entry.approval.status = "expired";
19
+ }
20
+ };
21
+ const cleanupExpired = () => {
22
+ const current = now();
23
+ let removed = 0;
24
+ for (const [id, entry] of entries) {
25
+ expire(entry, current);
26
+ if (Date.parse(entry.approval.expiresAt) > current.getTime())
27
+ continue;
28
+ if (entry.approval.status === "expired") {
29
+ try {
30
+ onExpired?.(structuredClone(entry.approval));
31
+ }
32
+ catch {
33
+ // Expiration cleanup must not crash a long-lived bridge when best-effort telemetry fails.
34
+ }
35
+ }
36
+ entries.delete(id);
37
+ removed += 1;
38
+ }
39
+ return removed;
40
+ };
41
+ return {
42
+ prepare(run) {
43
+ cleanupExpired();
44
+ if (entries.size >= maxPending)
45
+ throw new Error(`Hermes approval store is full (${maxPending} pending)`);
46
+ const created = now();
47
+ const id = createId();
48
+ if (entries.has(id))
49
+ throw new Error("Approval ID collision");
50
+ const approval = {
51
+ id,
52
+ status: "awaiting_approval",
53
+ createdAt: created.toISOString(),
54
+ expiresAt: new Date(created.getTime() + ttlMs).toISOString(),
55
+ requestedMode: run.requestedMode,
56
+ effectiveMode: run.mode,
57
+ presetName: run.presetName,
58
+ detectedRisks: [...run.detectedRisks],
59
+ };
60
+ entries.set(id, { approval, run: structuredClone(run) });
61
+ return structuredClone(approval);
62
+ },
63
+ get(approvalId) {
64
+ const entry = entries.get(approvalId);
65
+ if (!entry)
66
+ return undefined;
67
+ expire(entry, now());
68
+ return structuredClone(entry.approval);
69
+ },
70
+ approve(approvalId) {
71
+ const entry = entries.get(approvalId);
72
+ if (!entry)
73
+ return undefined;
74
+ expire(entry, now());
75
+ if (entry.approval.status !== "awaiting_approval")
76
+ return undefined;
77
+ entry.approval.status = "approved";
78
+ const consumed = { approval: structuredClone(entry.approval), run: structuredClone(entry.run) };
79
+ entries.delete(approvalId);
80
+ return consumed;
81
+ },
82
+ reject(approvalId) {
83
+ const entry = entries.get(approvalId);
84
+ if (!entry)
85
+ return undefined;
86
+ expire(entry, now());
87
+ if (entry.approval.status === "awaiting_approval")
88
+ entry.approval.status = "rejected";
89
+ const rejected = structuredClone(entry.approval);
90
+ entries.delete(approvalId);
91
+ return rejected;
92
+ },
93
+ cleanup: cleanupExpired,
94
+ };
95
+ }
96
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../src/approvals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { BridgeMode, RiskCategory } from "./types.js";
2
+ export type AuditPhase = "prepared" | "approved" | "rejected" | "submitted" | "completed" | "cancelled" | "expired";
3
+ /** Deliberately narrow: prompts, context, tool output, credentials and bearer tokens are not representable. */
4
+ export interface AuditEvent {
5
+ timestamp: string;
6
+ phase: AuditPhase;
7
+ requestId: string;
8
+ principalId: string;
9
+ transport: "stdio" | "http";
10
+ requestedMode: BridgeMode;
11
+ effectiveMode: BridgeMode;
12
+ presetName: string;
13
+ detectedRisks: RiskCategory[];
14
+ promptFingerprint: string;
15
+ exitCode?: number | undefined;
16
+ outcome?: "succeeded" | "failed" | "cancelled" | "timed_out" | undefined;
17
+ }
18
+ /** SHA-256 lets related events be correlated without retaining the private handoff. */
19
+ export declare function fingerprintPrompt(prompt: string): string;
20
+ /** Append a restricted audit record as a single JSONL line. The directory and file are owner-only. */
21
+ export declare function appendAuditEvent(file: string, event: AuditEvent): void;
@@ -0,0 +1,31 @@
1
+ import { createHash } from "node:crypto";
2
+ import { appendFileSync, chmodSync, mkdirSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ /** SHA-256 lets related events be correlated without retaining the private handoff. */
5
+ export function fingerprintPrompt(prompt) {
6
+ return createHash("sha256").update(prompt, "utf8").digest("hex");
7
+ }
8
+ /** Append a restricted audit record as a single JSONL line. The directory and file are owner-only. */
9
+ export function appendAuditEvent(file, event) {
10
+ mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
11
+ const line = `${JSON.stringify(sanitizeEvent(event))}\n`;
12
+ appendFileSync(file, line, { encoding: "utf8", mode: 0o600 });
13
+ chmodSync(file, 0o600);
14
+ }
15
+ function sanitizeEvent(event) {
16
+ return {
17
+ timestamp: event.timestamp,
18
+ phase: event.phase,
19
+ requestId: event.requestId,
20
+ principalId: event.principalId,
21
+ transport: event.transport,
22
+ requestedMode: event.requestedMode,
23
+ effectiveMode: event.effectiveMode,
24
+ presetName: event.presetName,
25
+ detectedRisks: [...event.detectedRisks],
26
+ promptFingerprint: event.promptFingerprint,
27
+ ...(event.exitCode === undefined ? {} : { exitCode: event.exitCode }),
28
+ ...(event.outcome === undefined ? {} : { outcome: event.outcome }),
29
+ };
30
+ }
31
+ //# sourceMappingURL=audit-log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../src/audit-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAiB;IAC9D,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;IACzD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC9D,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,aAAa,CAAC,KAAiB;IACtC,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC;QACvC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { BridgeConfig, PresetConfig } from "./types.js";
2
+ export interface BridgeCapabilities {
3
+ bridge: {
4
+ version: string;
5
+ transport: "stdio" | "http";
6
+ };
7
+ runtime: {
8
+ available: boolean;
9
+ command: string;
10
+ version?: string | undefined;
11
+ error?: string | undefined;
12
+ };
13
+ presets: Array<{
14
+ name: string;
15
+ } & PresetConfig>;
16
+ policy: {
17
+ yoloEnabled: boolean;
18
+ approvalRequiredForExecute: boolean;
19
+ };
20
+ liveDiscovery: {
21
+ supported: false;
22
+ reason: string;
23
+ };
24
+ }
25
+ /**
26
+ * Return only configuration-backed capabilities. Hermes CLI has no stable discovery contract here, so
27
+ * this deliberately never claims that a configured skill or toolset is live on the current runtime.
28
+ */
29
+ export declare function getBridgeCapabilities(config: BridgeConfig, transport?: "stdio" | "http"): BridgeCapabilities;
@@ -0,0 +1,24 @@
1
+ import { checkHermesStatus } from "./status.js";
2
+ import { version } from "./version.js";
3
+ /**
4
+ * Return only configuration-backed capabilities. Hermes CLI has no stable discovery contract here, so
5
+ * this deliberately never claims that a configured skill or toolset is live on the current runtime.
6
+ */
7
+ export function getBridgeCapabilities(config, transport = "stdio") {
8
+ const status = checkHermesStatus(config);
9
+ return {
10
+ bridge: { version, transport },
11
+ runtime: {
12
+ available: status.available,
13
+ command: config.runtime.command,
14
+ ...(status.available ? { version: status.version } : { error: status.error }),
15
+ },
16
+ presets: Object.entries(config.presets).map(([name, preset]) => ({ name, ...structuredClone(preset) })),
17
+ policy: { yoloEnabled: config.policy.yolo, approvalRequiredForExecute: config.policy.requireApprovalFor.length > 0 },
18
+ liveDiscovery: {
19
+ supported: false,
20
+ reason: "Hermes CLI capability discovery is not configured; presets are declarative rather than a live inventory.",
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../src/capabilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAoB,EAAE,YAA8B,OAAO;IAC/F,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO;QACL,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QAC9B,OAAO,EAAE;YACP,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;YAC/B,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;SAC9E;QACD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvG,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,0BAA0B,EAAE,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;QACpH,aAAa,EAAE;YACb,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,0GAA0G;SACnH;KACF,CAAC;AACJ,CAAC"}
package/dist/cli.js CHANGED
@@ -1,17 +1,20 @@
1
1
  #!/usr/bin/env node
2
- import { mkdirSync, writeFileSync } from "node:fs";
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, realpathSync, rmdirSync, statSync, unlinkSync, writeFileSync } from "node:fs";
3
3
  import { homedir } from "node:os";
4
- import { dirname, resolve } from "node:path";
4
+ import { dirname, join, resolve } from "node:path";
5
5
  import { Argument, Command, Option } from "commander";
6
6
  import { defaultProjectConfig, loadConfig } from "./config.js";
7
7
  import { buildEffectiveRun } from "./run.js";
8
8
  import { runHermesCli } from "./adapters/hermes-cli.js";
9
9
  import { checkHermesStatus } from "./status.js";
10
10
  import { startMcpServer } from "./mcp-server.js";
11
+ import { startBridgeHttpServer } from "./http-server.js";
11
12
  import { version } from "./version.js";
12
13
  import { installHint, installSkills, previewSkills, uninstallHint, uninstallSkills } from "./install/install-service.js";
14
+ import { bridgeMcpLauncher } from "./install/launcher.js";
13
15
  import { mcpSnippets, removeMcpJson, writeMcpJson } from "./install/mcp-config.js";
14
- import { coreChecks, formatDoctor, probeCheck, toReport } from "./doctor.js";
16
+ import { installMcp, uninstallMcp } from "./install/mcp-service.js";
17
+ import { coreChecks, formatDoctor, mcpHandshakeCheck, probeCheck, toReport } from "./doctor.js";
15
18
  const program = new Command();
16
19
  program
17
20
  .name("hermes-action")
@@ -49,7 +52,6 @@ program
49
52
  .option("--preset <name>", "config preset")
50
53
  .option("--context <path...>", "context file(s) to include", [])
51
54
  .option("--config <path>", "config file path")
52
- .option("--profile <name>", "Hermes profile")
53
55
  .option("--provider <name>", "Hermes provider")
54
56
  .option("--model <name>", "Hermes model")
55
57
  .option("--max-turns <number>", "Hermes max tool-calling iterations", parsePositiveInt)
@@ -68,7 +70,6 @@ program
68
70
  yolo: options.yolo,
69
71
  dryRun: options.dryRun,
70
72
  json: options.json,
71
- profile: options.profile,
72
73
  provider: options.provider,
73
74
  model: options.model,
74
75
  maxTurns: options.maxTurns,
@@ -118,19 +119,39 @@ program
118
119
  });
119
120
  program
120
121
  .command("mcp")
121
- .description("Run an MCP server exposing hermes_run, hermes_plan, hermes_presets, and hermes_status")
122
+ .description("Run the local stdio MCP server")
122
123
  .option("--config <path>", "config file path")
123
124
  .action(async (options) => {
124
125
  await startMcpServer(options.config);
125
126
  });
127
+ program
128
+ .command("serve")
129
+ .description("Run the opt-in Streamable HTTP MCP server")
130
+ .option("--config <path>", "config file path")
131
+ .option("--listen <address>", "listen address", "127.0.0.1")
132
+ .option("--port <number>", "listen port", parsePort, 8765)
133
+ .option("--allow-tailnet", "allow direct listening on a Tailscale 100.64.0.0/10 address", false)
134
+ .option("--token-env <name>", "environment variable containing a bearer token")
135
+ .action(async (options) => {
136
+ const config = loadConfig(process.cwd(), options.config);
137
+ const handle = await startBridgeHttpServer({
138
+ config,
139
+ listen: options.listen,
140
+ port: options.port,
141
+ allowTailnet: options.allowTailnet,
142
+ tokenEnv: options.tokenEnv,
143
+ });
144
+ console.log(`Hermes Action Bridge HTTP MCP listening on http://${handle.host}:${handle.port}/mcp`);
145
+ await waitForShutdown(handle);
146
+ });
126
147
  program
127
148
  .command("install")
128
- .description("Install the hermes-action-bridge skill (or print/write MCP config) for a coding agent")
149
+ .description("Install the Hermes skill and MCP server for a coding agent")
129
150
  .addArgument(new Argument("<target>", "which agent").choices(["claude-code", "codex", "all", "mcp"]))
130
151
  .option("--project", "install a project-local skill instead of the global one", false)
131
152
  .option("--project-hint", "also add a hint block to CLAUDE.md / AGENTS.md", false)
132
- .option("--mcp", "also print the MCP config snippets", false)
133
- .option("--write", "for the mcp target, write/merge the project .mcp.json (Claude Code)", false)
153
+ .option("--mcp", "with --project, also print MCP config snippets", false)
154
+ .option("--write", "for the mcp target, write/merge the project .mcp.json instead of global registration", false)
134
155
  .option("--force", "replace an existing managed skill", false)
135
156
  .option("--dry-run", "print planned operations, write nothing", false)
136
157
  .option("--print", "print the generated skill content, write nothing", false)
@@ -141,7 +162,7 @@ program
141
162
  if (options.write)
142
163
  reportChange(writeMcpJson(mcpJsonPath(ctx), options.dryRun), options.dryRun);
143
164
  else
144
- printMcpSnippets();
165
+ reportMcpResults(installMcp("all", { launcher: bridgeLauncher(), dryRun: options.dryRun }));
145
166
  return;
146
167
  }
147
168
  const skillTarget = target;
@@ -156,20 +177,24 @@ program
156
177
  return;
157
178
  }
158
179
  const opts = serviceOptions(options, scope);
159
- const results = installSkills(skillTarget, ctx, opts);
160
- if (options.projectHint)
161
- results.push(...installHint(skillTarget, ctx, opts));
162
- reportResults(results, options.dryRun);
163
- if (options.mcp)
164
- printMcpSnippets();
180
+ if (options.project) {
181
+ const results = installSkills(skillTarget, ctx, opts);
182
+ if (options.projectHint)
183
+ results.push(...installHint(skillTarget, ctx, opts));
184
+ reportResults(results, options.dryRun);
185
+ if (options.mcp)
186
+ printMcpSnippets();
187
+ return;
188
+ }
189
+ installGlobalAgentIntegration(skillTarget, ctx, opts, options.projectHint);
165
190
  });
166
191
  program
167
192
  .command("uninstall")
168
- .description("Remove the hermes-action-bridge skill (or MCP config) for a coding agent")
193
+ .description("Remove the managed Hermes skill and MCP registration for a coding agent")
169
194
  .addArgument(new Argument("<target>", "which agent").choices(["claude-code", "codex", "all", "mcp"]))
170
195
  .option("--project", "remove a project-local skill instead of the global one", false)
171
196
  .option("--project-hint", "also remove the CLAUDE.md / AGENTS.md hint block", false)
172
- .option("--write", "for the mcp target, remove hermes-action from the project .mcp.json", false)
197
+ .option("--write", "for the mcp target, remove hermes-action from the project .mcp.json instead of global registration", false)
173
198
  .option("--force", "remove even a locally modified skill", false)
174
199
  .option("--dry-run", "print planned removals, write nothing", false)
175
200
  .option("--yes", "non-interactive", false)
@@ -179,7 +204,7 @@ program
179
204
  if (options.write)
180
205
  reportChange(removeMcpJson(mcpJsonPath(ctx), options.dryRun), options.dryRun);
181
206
  else
182
- console.log("Use --write to remove hermes-action from the project .mcp.json.");
207
+ reportMcpResults(uninstallMcp("all", { launcher: bridgeLauncher(), dryRun: options.dryRun }));
183
208
  return;
184
209
  }
185
210
  const skillTarget = target;
@@ -189,6 +214,8 @@ program
189
214
  if (options.projectHint)
190
215
  results.push(...uninstallHint(skillTarget, ctx, opts));
191
216
  reportResults(results, options.dryRun);
217
+ if (!options.project)
218
+ reportMcpResults(uninstallMcp(skillTarget, { launcher: bridgeLauncher(), dryRun: options.dryRun }));
192
219
  });
193
220
  program
194
221
  .command("doctor")
@@ -206,7 +233,9 @@ program
206
233
  catch (error) {
207
234
  configError = error instanceof Error ? error.message : String(error);
208
235
  }
209
- const checks = coreChecks(config, ctx, configError);
236
+ const checks = coreChecks(config, ctx, configError, { launcher: bridgeLauncher() });
237
+ if (config)
238
+ checks.push(await mcpHandshakeCheck(config));
210
239
  if (options.probe && config) {
211
240
  try {
212
241
  checks.push(await probeCheck(config));
@@ -229,12 +258,25 @@ function parsePositiveInt(value) {
229
258
  throw new Error(`Expected a positive integer, got: ${value}`);
230
259
  return parsed;
231
260
  }
261
+ function parsePort(value) {
262
+ const parsed = Number.parseInt(value, 10);
263
+ if (!Number.isInteger(parsed) || parsed <= 0 || parsed > 65_535)
264
+ throw new Error(`Expected a port from 1 to 65535, got: ${value}`);
265
+ return parsed;
266
+ }
232
267
  function pathContext() {
233
268
  return { homeDir: homedir(), cwd: process.cwd() };
234
269
  }
235
270
  function mcpJsonPath(ctx) {
236
271
  return resolve(ctx.cwd, ".mcp.json");
237
272
  }
273
+ /** Resolve the installed launcher target once so MCP clients do not depend on an interactive shell PATH. */
274
+ function bridgeLauncher() {
275
+ const script = process.argv[1];
276
+ if (!script)
277
+ throw new Error("Could not resolve the hermes-action executable path.");
278
+ return bridgeMcpLauncher(realpathSync(resolve(script)));
279
+ }
238
280
  function serviceOptions(options, scope) {
239
281
  return { scope, force: options.force, dryRun: options.dryRun };
240
282
  }
@@ -270,4 +312,147 @@ function reportResults(results, dryRun) {
270
312
  }
271
313
  process.exitCode = results.every((result) => result.ok) ? 0 : 1;
272
314
  }
315
+ function reportMcpResults(results) {
316
+ for (const result of results) {
317
+ const { change } = result;
318
+ if (change.action === "refused") {
319
+ console.error(`${result.agent} MCP: refused (${change.reason ?? "unknown reason"})`);
320
+ }
321
+ else {
322
+ console.log(`${result.agent} MCP: ${change.action}${result.dryRun ? " (dry-run)" : ""}`);
323
+ }
324
+ }
325
+ if (!results.every((result) => result.ok))
326
+ process.exitCode = 1;
327
+ }
328
+ /**
329
+ * Refuse the whole global install before writing when either a skill or MCP
330
+ * registration conflicts. Native agent CLIs remain the source of truth for
331
+ * MCP configuration, while the preflight prevents a predictable half-install.
332
+ */
333
+ function installGlobalAgentIntegration(target, ctx, options, includeProjectHint) {
334
+ const launcher = bridgeLauncher();
335
+ const preflightOptions = { ...options, dryRun: true };
336
+ const skillPlan = installSkills(target, ctx, preflightOptions);
337
+ const hintPlan = includeProjectHint ? installHint(target, ctx, preflightOptions) : [];
338
+ const filePlan = [...skillPlan, ...hintPlan];
339
+ const mcpPlan = installMcp(target, { launcher, dryRun: true });
340
+ if (!filePlan.every((result) => result.ok) || !mcpPlan.every((result) => result.ok)) {
341
+ reportResults(filePlan, true);
342
+ reportMcpResults(mcpPlan);
343
+ return;
344
+ }
345
+ if (options.dryRun) {
346
+ reportResults(filePlan, true);
347
+ reportMcpResults(mcpPlan);
348
+ return;
349
+ }
350
+ const installSnapshot = captureInstallSnapshot(skillPlan, hintPlan);
351
+ const mcpResults = installMcp(target, { launcher, dryRun: false });
352
+ if (!mcpResults.every((result) => result.ok)) {
353
+ reportMcpResults(mcpResults);
354
+ return;
355
+ }
356
+ const skillResults = installSkills(target, ctx, options);
357
+ const hintResults = includeProjectHint ? installHint(target, ctx, options) : [];
358
+ const fileResults = [...skillResults, ...hintResults];
359
+ if (!fileResults.every((result) => result.ok)) {
360
+ reportResults(fileResults, false);
361
+ restoreInstallSnapshot(installSnapshot);
362
+ rollbackCreatedMcp(mcpResults, launcher);
363
+ process.exitCode = 1;
364
+ return;
365
+ }
366
+ reportResults(fileResults, false);
367
+ reportMcpResults(mcpResults);
368
+ }
369
+ function captureInstallSnapshot(skillPlan, hintPlan) {
370
+ const files = new Map();
371
+ const skillDirs = new Set();
372
+ for (const result of skillPlan) {
373
+ if (!result.changes.some(isWriteAction))
374
+ continue;
375
+ for (const change of result.changes) {
376
+ const dir = dirname(change.path);
377
+ skillDirs.add(dir);
378
+ captureFile(files, change.path);
379
+ captureFile(files, join(dir, ".hermes-action-managed.json"));
380
+ }
381
+ }
382
+ for (const result of hintPlan) {
383
+ for (const change of result.changes.filter(isWriteAction))
384
+ captureFile(files, change.path);
385
+ }
386
+ return { files, skillDirs };
387
+ }
388
+ function captureFile(snapshots, path) {
389
+ if (snapshots.has(path))
390
+ return;
391
+ if (!existsSync(path)) {
392
+ snapshots.set(path, { path, existed: false });
393
+ return;
394
+ }
395
+ snapshots.set(path, {
396
+ path,
397
+ existed: true,
398
+ content: readFileSync(path),
399
+ mode: statSync(path).mode & 0o777,
400
+ });
401
+ }
402
+ function restoreInstallSnapshot(snapshot) {
403
+ console.error("Restoring skill and instruction files changed by this failed install.");
404
+ for (const [path, file] of snapshot.files) {
405
+ try {
406
+ restoreFile(file);
407
+ }
408
+ catch (error) {
409
+ console.error(`Rollback could not restore ${path}: ${error instanceof Error ? error.message : String(error)}`);
410
+ }
411
+ }
412
+ for (const dir of snapshot.skillDirs) {
413
+ try {
414
+ rmdirSync(dir);
415
+ }
416
+ catch {
417
+ // Removing an empty directory is cosmetic; never remove a non-empty or concurrently changed directory.
418
+ }
419
+ }
420
+ }
421
+ function restoreFile(snapshot) {
422
+ if (!snapshot.existed) {
423
+ if (existsSync(snapshot.path))
424
+ unlinkSync(snapshot.path);
425
+ return;
426
+ }
427
+ if (!snapshot.content || snapshot.mode === undefined)
428
+ throw new Error(`Incomplete rollback snapshot: ${snapshot.path}`);
429
+ mkdirSync(dirname(snapshot.path), { recursive: true });
430
+ writeFileSync(snapshot.path, snapshot.content);
431
+ chmodSync(snapshot.path, snapshot.mode);
432
+ }
433
+ function isWriteAction(change) {
434
+ return change.action === "created" || change.action === "updated";
435
+ }
436
+ function rollbackCreatedMcp(results, launcher) {
437
+ const created = results.filter((result) => result.change.action === "created");
438
+ if (created.length === 0)
439
+ return;
440
+ console.error("Rolling back MCP registrations created by this failed install.");
441
+ for (const result of created) {
442
+ reportMcpResults(uninstallMcp(result.agent, { launcher, dryRun: false }));
443
+ }
444
+ }
445
+ function waitForShutdown(handle) {
446
+ return new Promise((resolve, reject) => {
447
+ let closing = false;
448
+ const shutdown = () => {
449
+ if (closing)
450
+ return;
451
+ closing = true;
452
+ void handle.close().then(resolve, reject);
453
+ };
454
+ process.once("SIGINT", shutdown);
455
+ process.once("SIGTERM", shutdown);
456
+ });
457
+ }
273
458
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}