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 @@
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
- if (existing === null)
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
- if (canonical(servers[mcpServerName]) === canonical(mcpServerEntry))
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":"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"}
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: Delegate external actions, Hermes skills, browser automation, messaging, cron jobs, and integrations to Hermes Agent through hermes-action. Use when a task needs capabilities outside the local coding session.
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 outside the local coding session:
16
- Hermes skills or memory, messaging platforms, browser automation, scheduled or
17
- cron automation, external research, or any platform integration already
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 those integrations here. Delegate them to Hermes through the
21
- \`hermes-action\` CLI.
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 requires a Hermes skill, tool, profile, or connected service.
26
- - The task needs a real-world action that is not local code editing.
27
- - The task needs research, messaging, browser, or scheduled automation Hermes owns.
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
- ## Safe default
29
+ Do not use Hermes for ordinary local code edits or repository inspection that
30
+ the current agent can perform directly.
30
31
 
31
- Ask Hermes for a plan first; it has no side effects:
32
+ ## Discover first
32
33
 
33
- \`\`\`bash
34
- hermes-action run --mode plan "<describe what Hermes should do>"
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
- ## With context
37
+ ## Safe delegation
38
38
 
39
- Write a concise handoff to a file and pass it explicitly:
40
-
41
- \`\`\`bash
42
- hermes-action run --preset coding --context ./handoff.md "<request>"
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 email or messages, deletes, payments, credential
48
- changes, or git pushes, require human approval:
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 request-approval "<request requiring side effects>"
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 status
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 delegate through `hermes-action`. Prefer",
71
- "`--mode plan` or `--mode request-approval`; never use `--yolo` unless the",
72
- "human explicitly requested trusted local execution.",
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDR,CAAC;AACF,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,2EAA2E;QAC3E,qDAAqD;KACtD,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"}
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"}
@@ -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;