@sentropic/h2a 0.85.21 → 0.85.24
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/.claude-plugin/plugin.json +4 -9
- package/.codex-plugin/plugin.json +2 -2
- package/.mcp.json +0 -4
- package/dist/cli-contract.js +2 -2
- package/dist/cli-contract.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +106 -24
- package/dist/cli.js.map +1 -1
- package/dist/hosts/agy.d.ts.map +1 -1
- package/dist/hosts/agy.js +2 -13
- package/dist/hosts/agy.js.map +1 -1
- package/dist/hosts/claude.d.ts.map +1 -1
- package/dist/hosts/claude.js +2 -13
- package/dist/hosts/claude.js.map +1 -1
- package/dist/hosts/codex.d.ts +16 -4
- package/dist/hosts/codex.d.ts.map +1 -1
- package/dist/hosts/codex.js +36 -6
- package/dist/hosts/codex.js.map +1 -1
- package/dist/hosts/gemini.d.ts.map +1 -1
- package/dist/hosts/gemini.js +2 -13
- package/dist/hosts/gemini.js.map +1 -1
- package/dist/hosts/hermes.d.ts.map +1 -1
- package/dist/hosts/hermes.js +2 -12
- package/dist/hosts/hermes.js.map +1 -1
- package/dist/hosts/opencode.d.ts.map +1 -1
- package/dist/hosts/opencode.js +2 -12
- package/dist/hosts/opencode.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +18 -1
- package/dist/mcp.js.map +1 -1
- package/dist/runtime/mcp/index.d.ts +1 -1
- package/dist/runtime/mcp/index.d.ts.map +1 -1
- package/dist/runtime/mcp/index.js +1 -1
- package/dist/runtime/mcp/index.js.map +1 -1
- package/dist/runtime/mcp/server.d.ts +11 -1
- package/dist/runtime/mcp/server.d.ts.map +1 -1
- package/dist/runtime/mcp/server.js +30 -0
- package/dist/runtime/mcp/server.js.map +1 -1
- package/dist/runtime/mcp/stdio.d.ts.map +1 -1
- package/dist/runtime/mcp/stdio.js +3 -1
- package/dist/runtime/mcp/stdio.js.map +1 -1
- package/dist/runtime/mcp/tools.d.ts +6 -6
- package/dist/runtime/mcp/tools.d.ts.map +1 -1
- package/dist/runtime/mcp/tools.js +21 -1
- package/dist/runtime/mcp/tools.js.map +1 -1
- package/dist/runtime/mcp-http/hosted-mcp-server.d.ts +1 -1
- package/dist/runtime/mcp-http/hosted-mcp-server.d.ts.map +1 -1
- package/dist/runtime/mcp-http/hosted-mcp-server.js +3 -0
- package/dist/runtime/mcp-http/hosted-mcp-server.js.map +1 -1
- package/dist/runtime/mcp-http/readonly-allowlist.d.ts.map +1 -1
- package/dist/runtime/mcp-http/readonly-allowlist.js +18 -1
- package/dist/runtime/mcp-http/readonly-allowlist.js.map +1 -1
- package/package.json +2 -2
- package/skills/h2a/SKILL.md +17 -2
package/dist/hosts/agy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy.d.ts","sourceRoot":"","sources":["../../src/hosts/agy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agy.d.ts","sourceRoot":"","sources":["../../src/hosts/agy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAYtB;AAED,eAAO,MAAM,YAAY,EAAE,6BAUjB,CAAC"}
|
package/dist/hosts/agy.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const out = [...baseArgs];
|
|
3
|
-
if (root) {
|
|
4
|
-
out.push("--root", root);
|
|
5
|
-
}
|
|
6
|
-
return out;
|
|
7
|
-
}
|
|
1
|
+
import { renderH2aMcpServer } from "./codex.js";
|
|
8
2
|
/**
|
|
9
3
|
* Renders the JSON snippet to expose `h2a mcp-serve` to **agy** (Antigravity,
|
|
10
4
|
* Google — a Gemini-ecosystem agent CLI). Per the capability matrix
|
|
@@ -16,15 +10,10 @@ function buildArgs(baseArgs, root) {
|
|
|
16
10
|
* config and handled by install tooling.
|
|
17
11
|
*/
|
|
18
12
|
export function renderMcpConfig(options = {}) {
|
|
19
|
-
const command = options.command ?? "h2a";
|
|
20
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
21
13
|
return {
|
|
22
14
|
config: {
|
|
23
15
|
mcpServers: {
|
|
24
|
-
h2a:
|
|
25
|
-
command,
|
|
26
|
-
args: buildArgs(baseArgs, options.root)
|
|
27
|
-
}
|
|
16
|
+
h2a: renderH2aMcpServer(options)
|
|
28
17
|
}
|
|
29
18
|
},
|
|
30
19
|
path: {
|
package/dist/hosts/agy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agy.js","sourceRoot":"","sources":["../../src/hosts/agy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agy.js","sourceRoot":"","sources":["../../src/hosts/agy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,mJAAmJ;YACzJ,OAAO,EAAE,kCAAkC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkC;IACzD,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,4EAA4E;IAC5E,8CAA8C;IAC9C,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/hosts/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/hosts/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAgBtB;AAED,eAAO,MAAM,eAAe,EAAE,6BAQpB,CAAC"}
|
package/dist/hosts/claude.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const out = [...baseArgs];
|
|
3
|
-
if (root) {
|
|
4
|
-
out.push("--root", root);
|
|
5
|
-
}
|
|
6
|
-
return out;
|
|
7
|
-
}
|
|
1
|
+
import { renderH2aMcpServer } from "./codex.js";
|
|
8
2
|
/**
|
|
9
3
|
* Renders the JSON snippet a user must add to their Claude Code MCP config
|
|
10
4
|
* to expose the `h2a mcp-serve` JSON-RPC 2.0 server as an MCP backend.
|
|
@@ -14,15 +8,10 @@ function buildArgs(baseArgs, root) {
|
|
|
14
8
|
* Both are documented in the path hint.
|
|
15
9
|
*/
|
|
16
10
|
export function renderMcpConfig(options = {}) {
|
|
17
|
-
const command = options.command ?? "h2a";
|
|
18
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
19
11
|
return {
|
|
20
12
|
config: {
|
|
21
13
|
mcpServers: {
|
|
22
|
-
h2a:
|
|
23
|
-
command,
|
|
24
|
-
args: buildArgs(baseArgs, options.root)
|
|
25
|
-
}
|
|
14
|
+
h2a: renderH2aMcpServer(options)
|
|
26
15
|
}
|
|
27
16
|
},
|
|
28
17
|
path: {
|
package/dist/hosts/claude.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/hosts/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/hosts/claude.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EACF,yEAAyE;gBACzE,oEAAoE;gBACpE,sEAAsE;gBACtE,uBAAuB;YACzB,OAAO,EAAE,2BAA2B;SACrC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
package/dist/hosts/codex.d.ts
CHANGED
|
@@ -1,19 +1,29 @@
|
|
|
1
1
|
export interface RenderMcpConfigOptions {
|
|
2
|
+
/**
|
|
3
|
+
* The one active h2a endpoint for this host. Local is a stdio child process;
|
|
4
|
+
* remote is an HTTP MCP URL. A host config must never contain both forms.
|
|
5
|
+
*/
|
|
6
|
+
endpoint?: "local" | "remote";
|
|
2
7
|
/** Override the executable. Defaults to `"h2a"` (resolved through `PATH`). */
|
|
3
8
|
command?: string;
|
|
4
9
|
/** Override the args prefix. Defaults to `["mcp-serve"]`. */
|
|
5
10
|
args?: readonly string[];
|
|
6
11
|
/** When set, appends `["--root", root]` to the args. */
|
|
7
12
|
root?: string;
|
|
13
|
+
/** Required for `endpoint: "remote"`; the host-native HTTP MCP URL. */
|
|
14
|
+
url?: string;
|
|
8
15
|
}
|
|
16
|
+
export type H2AMcpEndpointConfig = {
|
|
17
|
+
command: string;
|
|
18
|
+
args: string[];
|
|
19
|
+
} | {
|
|
20
|
+
url: string;
|
|
21
|
+
};
|
|
9
22
|
export interface McpHostConfigSnippet {
|
|
10
23
|
/** JSON snippet to merge into the host's MCP config file. */
|
|
11
24
|
config: {
|
|
12
25
|
mcpServers: {
|
|
13
|
-
h2a:
|
|
14
|
-
command: string;
|
|
15
|
-
args: string[];
|
|
16
|
-
};
|
|
26
|
+
h2a: H2AMcpEndpointConfig;
|
|
17
27
|
};
|
|
18
28
|
};
|
|
19
29
|
path: {
|
|
@@ -23,6 +33,8 @@ export interface McpHostConfigSnippet {
|
|
|
23
33
|
example: string;
|
|
24
34
|
};
|
|
25
35
|
}
|
|
36
|
+
/** Render exactly one selected h2a endpoint, never a local+remote pair. */
|
|
37
|
+
export declare function renderH2aMcpServer(options?: RenderMcpConfigOptions): H2AMcpEndpointConfig;
|
|
26
38
|
/**
|
|
27
39
|
* Renders the JSON snippet a user must add to their Codex CLI MCP config
|
|
28
40
|
* to expose the `h2a mcp-serve` JSON-RPC 2.0 server as an MCP backend.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/hosts/codex.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/hosts/codex.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACnC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAapB,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,MAAM,EAAE;QACN,UAAU,EAAE;YACV,GAAG,EAAE,oBAAoB,CAAC;SAC3B,CAAC;KACH,CAAC;IACF,IAAI,EAAE;QACJ,8DAA8D;QAC9D,IAAI,EAAE,MAAM,CAAC;QACb,0DAA0D;QAC1D,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAaD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAsBtB;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAetB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC;AAEhC;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,CACzB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,oBAAoB,CAAC;CAC3B;AAED,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,QAAQ,CAAC,eAAe,EAAE,CACxB,OAAO,CAAC,EAAE,sBAAsB,KAC7B,oBAAoB,CAAC;CAC3B;AAED,eAAO,MAAM,cAAc,EAAE,6BAQnB,CAAC"}
|
package/dist/hosts/codex.js
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
function assertHttpMcpUrl(value) {
|
|
2
|
+
try {
|
|
3
|
+
const url = new URL(value);
|
|
4
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
5
|
+
throw new Error("unsupported protocol");
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
throw new Error("remote h2a endpoint requires an absolute http(s) MCP URL");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
1
12
|
function buildArgs(baseArgs, root) {
|
|
2
13
|
const out = [...baseArgs];
|
|
3
14
|
if (root) {
|
|
@@ -5,6 +16,30 @@ function buildArgs(baseArgs, root) {
|
|
|
5
16
|
}
|
|
6
17
|
return out;
|
|
7
18
|
}
|
|
19
|
+
/** Render exactly one selected h2a endpoint, never a local+remote pair. */
|
|
20
|
+
export function renderH2aMcpServer(options = {}) {
|
|
21
|
+
const endpoint = options.endpoint ?? "local";
|
|
22
|
+
if (endpoint !== "local" && endpoint !== "remote") {
|
|
23
|
+
throw new Error(`unknown h2a endpoint "${endpoint}"`);
|
|
24
|
+
}
|
|
25
|
+
if (endpoint === "remote") {
|
|
26
|
+
if (!options.url) {
|
|
27
|
+
throw new Error("remote h2a endpoint requires a URL");
|
|
28
|
+
}
|
|
29
|
+
assertHttpMcpUrl(options.url);
|
|
30
|
+
if (options.command || options.args || options.root) {
|
|
31
|
+
throw new Error("remote h2a endpoint cannot include local command, args, or root");
|
|
32
|
+
}
|
|
33
|
+
return { url: options.url };
|
|
34
|
+
}
|
|
35
|
+
if (options.url) {
|
|
36
|
+
throw new Error("local h2a endpoint cannot include a remote URL");
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
command: options.command ?? "h2a",
|
|
40
|
+
args: buildArgs(options.args ?? ["mcp-serve"], options.root)
|
|
41
|
+
};
|
|
42
|
+
}
|
|
8
43
|
/**
|
|
9
44
|
* Renders the JSON snippet a user must add to their Codex CLI MCP config
|
|
10
45
|
* to expose the `h2a mcp-serve` JSON-RPC 2.0 server as an MCP backend.
|
|
@@ -14,15 +49,10 @@ function buildArgs(baseArgs, root) {
|
|
|
14
49
|
* `~/.config/codex/mcp.json` (XDG layout).
|
|
15
50
|
*/
|
|
16
51
|
export function renderMcpConfig(options = {}) {
|
|
17
|
-
const command = options.command ?? "h2a";
|
|
18
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
19
52
|
return {
|
|
20
53
|
config: {
|
|
21
54
|
mcpServers: {
|
|
22
|
-
h2a:
|
|
23
|
-
command,
|
|
24
|
-
args: buildArgs(baseArgs, options.root)
|
|
25
|
-
}
|
|
55
|
+
h2a: renderH2aMcpServer(options)
|
|
26
56
|
}
|
|
27
57
|
},
|
|
28
58
|
path: {
|
package/dist/hosts/codex.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/hosts/codex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/hosts/codex.ts"],"names":[],"mappings":"AAoBA,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAiBD,SAAS,SAAS,CAChB,QAA2B,EAC3B,IAAwB;IAExB,MAAM,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1B,IAAI,IAAI,EAAE,CAAC;QACT,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAChC,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC;IAC7C,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QACD,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IACD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;QACjC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EACF,kEAAkE;gBAClE,sEAAsE;gBACtE,uEAAuE;YACzE,OAAO,EAAE,0BAA0B;SACpC;KACF,CAAC;AACJ,CAAC;AAsCD,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,OAAO;IACb,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/hosts/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../src/hosts/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,sBAA2B,GACnC,oBAAoB,CAgBtB;AAED,eAAO,MAAM,eAAe,EAAE,6BAQpB,CAAC"}
|
package/dist/hosts/gemini.js
CHANGED
|
@@ -1,10 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const out = [...baseArgs];
|
|
3
|
-
if (root) {
|
|
4
|
-
out.push("--root", root);
|
|
5
|
-
}
|
|
6
|
-
return out;
|
|
7
|
-
}
|
|
1
|
+
import { renderH2aMcpServer } from "./codex.js";
|
|
8
2
|
/**
|
|
9
3
|
* Renders the JSON snippet a user must add to their Gemini CLI MCP config
|
|
10
4
|
* to expose the `h2a mcp-serve` JSON-RPC 2.0 server as an MCP backend.
|
|
@@ -14,15 +8,10 @@ function buildArgs(baseArgs, root) {
|
|
|
14
8
|
* root. Both are documented in the path hint.
|
|
15
9
|
*/
|
|
16
10
|
export function renderMcpConfig(options = {}) {
|
|
17
|
-
const command = options.command ?? "h2a";
|
|
18
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
19
11
|
return {
|
|
20
12
|
config: {
|
|
21
13
|
mcpServers: {
|
|
22
|
-
h2a:
|
|
23
|
-
command,
|
|
24
|
-
args: buildArgs(baseArgs, options.root)
|
|
25
|
-
}
|
|
14
|
+
h2a: renderH2aMcpServer(options)
|
|
26
15
|
}
|
|
27
16
|
},
|
|
28
17
|
path: {
|
package/dist/hosts/gemini.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/hosts/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/hosts/gemini.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,UAAkC,EAAE;IAEpC,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EACF,sEAAsE;gBACtE,gEAAgE;gBAChE,qEAAqE;gBACrE,wCAAwC;YAC1C,OAAO,EAAE,yBAAyB;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/hosts/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../src/hosts/hermes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,oBAAoB,CAe1F;AAED,eAAO,MAAM,eAAe,EAAE,6BAQpB,CAAC"}
|
package/dist/hosts/hermes.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const out = [...baseArgs];
|
|
3
|
-
if (root)
|
|
4
|
-
out.push("--root", root);
|
|
5
|
-
return out;
|
|
6
|
-
}
|
|
1
|
+
import { renderH2aMcpServer } from "./codex.js";
|
|
7
2
|
/**
|
|
8
3
|
* Hermes Agent exposes MCP management via `hermes mcp {add,list,test,...}` and
|
|
9
4
|
* stores user configuration under `~/.hermes`. h2a renders the same stdio MCP
|
|
@@ -11,15 +6,10 @@ function buildArgs(baseArgs, root) {
|
|
|
11
6
|
* Hermes' MCP config or register it with `hermes mcp add` where available.
|
|
12
7
|
*/
|
|
13
8
|
export function renderMcpConfig(options = {}) {
|
|
14
|
-
const command = options.command ?? "h2a";
|
|
15
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
16
9
|
return {
|
|
17
10
|
config: {
|
|
18
11
|
mcpServers: {
|
|
19
|
-
h2a:
|
|
20
|
-
command,
|
|
21
|
-
args: buildArgs(baseArgs, options.root)
|
|
22
|
-
}
|
|
12
|
+
h2a: renderH2aMcpServer(options)
|
|
23
13
|
}
|
|
24
14
|
},
|
|
25
15
|
path: {
|
package/dist/hosts/hermes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/hosts/hermes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../src/hosts/hermes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EACF,uEAAuE;gBACvE,uEAAuE;gBACvE,oEAAoE;YACtE,OAAO,EAAE,uBAAuB;SACjC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAkC;IAC5D,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/hosts/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/hosts/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,sBAA2B,GAAG,oBAAoB,CAe1F;AAED,eAAO,MAAM,iBAAiB,EAAE,6BAQtB,CAAC"}
|
package/dist/hosts/opencode.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
const out = [...baseArgs];
|
|
3
|
-
if (root)
|
|
4
|
-
out.push("--root", root);
|
|
5
|
-
return out;
|
|
6
|
-
}
|
|
1
|
+
import { renderH2aMcpServer } from "./codex.js";
|
|
7
2
|
/**
|
|
8
3
|
* OpenCode uses JSON/JSONC project/user configuration and supports plugin/MCP
|
|
9
4
|
* extension points in current distributions. h2a's host setup is deliberately
|
|
@@ -11,15 +6,10 @@ function buildArgs(baseArgs, root) {
|
|
|
11
6
|
* merge/enable operation to the host-specific installer or the user.
|
|
12
7
|
*/
|
|
13
8
|
export function renderMcpConfig(options = {}) {
|
|
14
|
-
const command = options.command ?? "h2a";
|
|
15
|
-
const baseArgs = options.args ?? ["mcp-serve"];
|
|
16
9
|
return {
|
|
17
10
|
config: {
|
|
18
11
|
mcpServers: {
|
|
19
|
-
h2a:
|
|
20
|
-
command,
|
|
21
|
-
args: buildArgs(baseArgs, options.root)
|
|
22
|
-
}
|
|
12
|
+
h2a: renderH2aMcpServer(options)
|
|
23
13
|
}
|
|
24
14
|
},
|
|
25
15
|
path: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/hosts/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/hosts/opencode.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkC,EAAE;IAClE,OAAO;QACL,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,GAAG,EAAE,kBAAkB,CAAC,OAAO,CAAC;aACjC;SACF;QACD,IAAI,EAAE;YACJ,IAAI,EACF,mEAAmE;gBACnE,sEAAsE;gBACtE,qDAAqD;YACvD,OAAO,EAAE,kCAAkC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAkC;IAC9D,WAAW,EAAE,gBAAgB;IAC7B,eAAe,EAAE,gBAAgB;IACjC,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,eAAe;IACzB,IAAI,EAAE,CAAC;IACP,mBAAmB,EAAE,IAAI;IACzB,eAAe;CACP,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -111,6 +111,6 @@ export declare const H2A_CLI_ADAPTER: {
|
|
|
111
111
|
readonly corePackageName: "@sentropic/h2a";
|
|
112
112
|
readonly protocol: "sentropic.h2a";
|
|
113
113
|
readonly hosts: readonly [import("./hosts/codex.js").H2AConfigurableHostDescriptor, import("./hosts/codex.js").H2AConfigurableHostDescriptor, import("./hosts/codex.js").H2AConfigurableHostDescriptor, import("./hosts/codex.js").H2AConfigurableHostDescriptor, import("./hosts/codex.js").H2AConfigurableHostDescriptor, import("./hosts/codex.js").H2AConfigurableHostDescriptor];
|
|
114
|
-
readonly mcpToolNames: readonly ["h2a_register_instance", "h2a_discover_instances", "h2a_open_negotiation", "h2a_offer", "h2a_counteroffer", "h2a_sign", "h2a_stabilize", "h2a_attest_comprehension", "h2a_declare_conflit_interet", "h2a_conflict_posture", "h2a_inbox", "h2a_append_journal", "h2a_escalate", "h2a_session_open", "h2a_session_close", "h2a_discover_sessions", "h2a_nhi_report", "h2a_nhi_inventory", "h2a_nhi_attest", "h2a_nhi_offboard", "h2a_nhi_export", "h2a_blockage_raise", "h2a_blockage_list", "h2a_blockage_resolve", "h2a_conductor", "h2a_conductor_claim", "h2a_conductor_release", "h2a_conductor_launch_check", "h2a_conductor_launch", "h2a_run", "h2a_loop_create", "h2a_loop_join", "h2a_loop_report", "h2a_loop_done", "h2a_loop_stop", "h2a_loop_list", "h2a_loop_status"];
|
|
114
|
+
readonly mcpToolNames: readonly ["h2a_register_instance", "h2a_discover_instances", "h2a_open_negotiation", "h2a_offer", "h2a_counteroffer", "h2a_sign", "h2a_stabilize", "h2a_attest_comprehension", "h2a_declare_conflit_interet", "h2a_conflict_posture", "h2a_inbox", "h2a_append_journal", "h2a_escalate", "h2a_session_open", "h2a_session_close", "h2a_discover_sessions", "h2a_nhi_report", "h2a_nhi_inventory", "h2a_nhi_attest", "h2a_nhi_offboard", "h2a_nhi_export", "h2a_blockage_raise", "h2a_blockage_list", "h2a_blockage_resolve", "h2a_conductor", "h2a_conductor_claim", "h2a_conductor_release", "h2a_conductor_launch_check", "h2a_conductor_launch", "h2a_run", "h2a_loop_create", "h2a_loop_join", "h2a_loop_report", "h2a_loop_done", "h2a_loop_stop", "h2a_loop_list", "h2a_loop_status", "track_report", "track_snapshot", "track_query", "track_validate", "track_audit", "track_branch_provenance", "track_freshness", "track_external_deps", "track_status", "track_verification_runs", "track_scope_validate", "track_cursor", "track_canevas", "track_amendment_trace", "track_workspace_activity"];
|
|
115
115
|
};
|
|
116
116
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const H2A_CLI_MCP_TOOL_NAMES: readonly ["h2a_register_instance", "h2a_discover_instances", "h2a_open_negotiation", "h2a_offer", "h2a_counteroffer", "h2a_sign", "h2a_stabilize", "h2a_attest_comprehension", "h2a_declare_conflit_interet", "h2a_conflict_posture", "h2a_inbox", "h2a_append_journal", "h2a_escalate", "h2a_session_open", "h2a_session_close", "h2a_discover_sessions", "h2a_nhi_report", "h2a_nhi_inventory", "h2a_nhi_attest", "h2a_nhi_offboard", "h2a_nhi_export", "h2a_blockage_raise", "h2a_blockage_list", "h2a_blockage_resolve", "h2a_conductor", "h2a_conductor_claim", "h2a_conductor_release", "h2a_conductor_launch_check", "h2a_conductor_launch", "h2a_run", "h2a_loop_create", "h2a_loop_join", "h2a_loop_report", "h2a_loop_done", "h2a_loop_stop", "h2a_loop_list", "h2a_loop_status"];
|
|
1
|
+
export declare const H2A_CLI_MCP_TOOL_NAMES: readonly ["h2a_register_instance", "h2a_discover_instances", "h2a_open_negotiation", "h2a_offer", "h2a_counteroffer", "h2a_sign", "h2a_stabilize", "h2a_attest_comprehension", "h2a_declare_conflit_interet", "h2a_conflict_posture", "h2a_inbox", "h2a_append_journal", "h2a_escalate", "h2a_session_open", "h2a_session_close", "h2a_discover_sessions", "h2a_nhi_report", "h2a_nhi_inventory", "h2a_nhi_attest", "h2a_nhi_offboard", "h2a_nhi_export", "h2a_blockage_raise", "h2a_blockage_list", "h2a_blockage_resolve", "h2a_conductor", "h2a_conductor_claim", "h2a_conductor_release", "h2a_conductor_launch_check", "h2a_conductor_launch", "h2a_run", "h2a_loop_create", "h2a_loop_join", "h2a_loop_report", "h2a_loop_done", "h2a_loop_stop", "h2a_loop_list", "h2a_loop_status", "track_report", "track_snapshot", "track_query", "track_validate", "track_audit", "track_branch_provenance", "track_freshness", "track_external_deps", "track_status", "track_verification_runs", "track_scope_validate", "track_cursor", "track_canevas", "track_amendment_trace", "track_workspace_activity"];
|
|
2
2
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,6iCAuDzB,CAAC"}
|
package/dist/mcp.js
CHANGED
|
@@ -35,6 +35,23 @@ export const H2A_CLI_MCP_TOOL_NAMES = [
|
|
|
35
35
|
"h2a_loop_done",
|
|
36
36
|
"h2a_loop_stop",
|
|
37
37
|
"h2a_loop_list",
|
|
38
|
-
"h2a_loop_status"
|
|
38
|
+
"h2a_loop_status",
|
|
39
|
+
// Track's read-only tool surface is composed into the selected h2a endpoint.
|
|
40
|
+
// Keep this list aligned with @sentropic/track's exported descriptors.
|
|
41
|
+
"track_report",
|
|
42
|
+
"track_snapshot",
|
|
43
|
+
"track_query",
|
|
44
|
+
"track_validate",
|
|
45
|
+
"track_audit",
|
|
46
|
+
"track_branch_provenance",
|
|
47
|
+
"track_freshness",
|
|
48
|
+
"track_external_deps",
|
|
49
|
+
"track_status",
|
|
50
|
+
"track_verification_runs",
|
|
51
|
+
"track_scope_validate",
|
|
52
|
+
"track_cursor",
|
|
53
|
+
"track_canevas",
|
|
54
|
+
"track_amendment_trace",
|
|
55
|
+
"track_workspace_activity"
|
|
39
56
|
];
|
|
40
57
|
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,WAAW;IACX,kBAAkB;IAClB,UAAU;IACV,eAAe;IACf,0BAA0B;IAC1B,6BAA6B;IAC7B,sBAAsB;IACtB,WAAW;IACX,oBAAoB;IACpB,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,eAAe;IACf,qBAAqB;IACrB,uBAAuB;IACvB,4BAA4B;IAC5B,sBAAsB;IACtB,SAAS;IACT,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,eAAe;IACf,iBAAiB;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,WAAW;IACX,kBAAkB;IAClB,UAAU;IACV,eAAe;IACf,0BAA0B;IAC1B,6BAA6B;IAC7B,sBAAsB;IACtB,WAAW;IACX,oBAAoB;IACpB,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,gBAAgB;IAChB,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,sBAAsB;IACtB,eAAe;IACf,qBAAqB;IACrB,uBAAuB;IACvB,4BAA4B;IAC5B,sBAAsB;IACtB,SAAS;IACT,iBAAiB;IACjB,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,eAAe;IACf,iBAAiB;IACjB,6EAA6E;IAC7E,uEAAuE;IACvE,cAAc;IACd,gBAAgB;IAChB,aAAa;IACb,gBAAgB;IAChB,aAAa;IACb,yBAAyB;IACzB,iBAAiB;IACjB,qBAAqB;IACrB,cAAc;IACd,yBAAyB;IACzB,sBAAsB;IACtB,cAAc;IACd,eAAe;IACf,uBAAuB;IACvB,0BAA0B;CAClB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createMcpServer, type CreateMcpServerOptions, type McpServer } from "./server.js";
|
|
1
|
+
export { createMcpServer, isMcpTransportResult, type CreateMcpServerOptions, type McpTransportResult, type McpServer } from "./server.js";
|
|
2
2
|
export { H2A_CLI_MCP_TOOL_DESCRIPTORS, type McpToolDescriptor, type McpToolName } from "./tools.js";
|
|
3
3
|
export { type McpErrorResult, type McpToolResult } from "./handlers.js";
|
|
4
4
|
export { H2A_MCP_READY_FILE_ENV, H2A_MCP_READY_KIND, H2A_MCP_READY_NONCE_ENV, runMcpStdio, type RunMcpStdioOptions } from "./stdio.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,4BAA4B,EAC5B,KAAK,iBAAiB,EACtB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EACX,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createMcpServer } from "./server.js";
|
|
1
|
+
export { createMcpServer, isMcpTransportResult } from "./server.js";
|
|
2
2
|
export { H2A_CLI_MCP_TOOL_DESCRIPTORS } from "./tools.js";
|
|
3
3
|
export {} from "./handlers.js";
|
|
4
4
|
export { H2A_MCP_READY_FILE_ENV, H2A_MCP_READY_KIND, H2A_MCP_READY_NONCE_ENV, runMcpStdio } from "./stdio.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,oBAAoB,EAIrB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,4BAA4B,EAG7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAGN,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,uBAAuB,EACvB,WAAW,EAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,mBAAmB,EACnB,qBAAqB,EAItB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,eAAe,EAGhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,sBAAsB,EAGvB,MAAM,oBAAoB,CAAC"}
|
|
@@ -33,12 +33,22 @@ export interface CreateMcpServerOptions {
|
|
|
33
33
|
}
|
|
34
34
|
export interface McpServer {
|
|
35
35
|
listTools(): McpToolDescriptor[];
|
|
36
|
-
callTool(name: string, args: Record<string, unknown> | undefined): McpToolResult | McpErrorResult;
|
|
36
|
+
callTool(name: string, args: Record<string, unknown> | undefined): McpToolResult | McpErrorResult | McpTransportResult;
|
|
37
37
|
/** Per-server SessionRegistry, exposed for transport-layer shutdown hooks. */
|
|
38
38
|
readonly sessions: SessionRegistry;
|
|
39
39
|
/** Per-server NotificationDispatcher (DEC-052). */
|
|
40
40
|
readonly notifications: NotificationDispatcher;
|
|
41
41
|
}
|
|
42
|
+
/** A tool result already formatted for the MCP transport (used by Track reads). */
|
|
43
|
+
export interface McpTransportResult {
|
|
44
|
+
[key: string]: unknown;
|
|
45
|
+
content: Array<{
|
|
46
|
+
type: "text";
|
|
47
|
+
text: string;
|
|
48
|
+
}>;
|
|
49
|
+
isError?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export declare function isMcpTransportResult(value: unknown): value is McpTransportResult;
|
|
42
52
|
/**
|
|
43
53
|
* Build an in-process MCP server backed by the local-files runtime.
|
|
44
54
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAqCL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EAqCL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AACvB,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,YAAY,CAAC;AAOpB,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;;OAGG;IACH,aAAa,CAAC,EAAE;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,gBAAgB,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,kBAAkB,CAAC;IACvH,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;CAChD;AAED,mFAAmF;AACnF,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAOhF;AAID;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAuI1E"}
|
|
@@ -3,8 +3,16 @@ import { handleAppendJournal, handleAttestComprehension, handleBlockageList, han
|
|
|
3
3
|
import { NotificationDispatcher } from "./notifications.js";
|
|
4
4
|
import { SessionRegistry } from "./sessions.js";
|
|
5
5
|
import { H2A_CLI_MCP_TOOL_DESCRIPTORS } from "./tools.js";
|
|
6
|
+
import { TRACK_READ_TOOL_DESCRIPTORS, callTrackReadTool } from "@sentropic/track/mcp";
|
|
6
7
|
import { H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS } from "@sentropic/h2a";
|
|
7
8
|
import { executeH2aRun, handleH2aRun } from "./agent-launch.js";
|
|
9
|
+
export function isMcpTransportResult(value) {
|
|
10
|
+
return (typeof value === "object" &&
|
|
11
|
+
value !== null &&
|
|
12
|
+
"content" in value &&
|
|
13
|
+
Array.isArray(value.content));
|
|
14
|
+
}
|
|
15
|
+
const TRACK_READ_TOOL_NAMES = new Set(TRACK_READ_TOOL_DESCRIPTORS.map((tool) => tool.name));
|
|
8
16
|
/**
|
|
9
17
|
* Build an in-process MCP server backed by the local-files runtime.
|
|
10
18
|
*
|
|
@@ -21,6 +29,28 @@ export function createMcpServer(options) {
|
|
|
21
29
|
const notifications = new NotificationDispatcher(sessions, store, options.root, options.notifications?.sink, options.notifications?.intervalMs ??
|
|
22
30
|
H2A_SESSION_DEFAULT_HEARTBEAT_INTERVAL_MS);
|
|
23
31
|
function callTool(name, args) {
|
|
32
|
+
if (TRACK_READ_TOOL_NAMES.has(name)) {
|
|
33
|
+
try {
|
|
34
|
+
const result = callTrackReadTool({ cwd: options.workspaceRoot ?? process.cwd() }, name, args ?? {});
|
|
35
|
+
return {
|
|
36
|
+
content: [
|
|
37
|
+
{ type: "text", text: result.text },
|
|
38
|
+
...(result.hint !== undefined ? [{ type: "text", text: result.hint }] : [])
|
|
39
|
+
]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: "text",
|
|
47
|
+
text: error instanceof Error ? error.message : String(error)
|
|
48
|
+
}
|
|
49
|
+
],
|
|
50
|
+
isError: true
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
24
54
|
const toolName = name;
|
|
25
55
|
switch (toolName) {
|
|
26
56
|
case "h2a_register_instance":
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,yBAAyB,CAAC;AAE5E,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,kBAAkB,EAClB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,eAAe,EAGhB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EAEvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,eAAe,EAEhB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,4BAA4B,EAG7B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/runtime/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/stdio.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/runtime/mcp/stdio.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAS5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA4BxD,MAAM,WAAW,kBAAkB;IACjC,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,8DAA8D;IAC9D,KAAK,EAAE,QAAQ,CAAC;IAChB,gEAAgE;IAChE,MAAM,EAAE,QAAQ,CAAC;IACjB,yEAAyE;IACzE,MAAM,EAAE,QAAQ,CAAC;IACjB;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACrC,CAAC;IACF;;;;OAIG;IACH,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;OAMG;IACH,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;KAChC,CAAC;IACF;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAaD,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AA6FlD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2PtE"}
|
|
@@ -6,7 +6,7 @@ import { detectTmuxLaunchContext } from "../drive/index.js";
|
|
|
6
6
|
import { createLocalStore } from "../local-files/index.js";
|
|
7
7
|
import { reapDeadInstancePresence } from "../local-files/presence.js";
|
|
8
8
|
import { agentVersion } from "../version/agent-version.js";
|
|
9
|
-
import { createMcpServer } from "./server.js";
|
|
9
|
+
import { createMcpServer, isMcpTransportResult } from "./server.js";
|
|
10
10
|
function envInt(name) {
|
|
11
11
|
const raw = process.env[name];
|
|
12
12
|
if (!raw)
|
|
@@ -73,6 +73,8 @@ function handleMethod(server, method, params) {
|
|
|
73
73
|
? p.arguments
|
|
74
74
|
: {};
|
|
75
75
|
const result = server.callTool(name, args);
|
|
76
|
+
if (isMcpTransportResult(result))
|
|
77
|
+
return result;
|
|
76
78
|
const isError = Boolean(result && typeof result === "object" && "error" in result);
|
|
77
79
|
return {
|
|
78
80
|
content: [{ type: "text", text: JSON.stringify(result) }],
|