agent-comms 8.9.4 → 8.10.1
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/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +2 -2
- package/dist/bridges/claude-code/channel.d.ts +2 -1
- package/dist/bridges/claude-code/channel.d.ts.map +1 -1
- package/dist/bridges/claude-code/channel.js +3 -3
- package/dist/bridges/claude-code/channel.js.map +1 -1
- package/dist/bridges/mcp/server.d.ts +2 -10
- package/dist/bridges/mcp/server.d.ts.map +1 -1
- package/dist/bridges/mcp/server.js.map +1 -1
- package/dist/bridges/registry.d.ts +3 -1
- package/dist/bridges/registry.d.ts.map +1 -1
- package/dist/bridges/registry.js.map +1 -1
- package/dist/cli-main.d.ts +37 -0
- package/dist/cli-main.d.ts.map +1 -0
- package/dist/cli-main.js +511 -0
- package/dist/cli-main.js.map +1 -0
- package/dist/cli.d.ts +1 -22
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -506
- package/dist/cli.js.map +1 -1
- package/dist/core/bridge-mesh.d.ts +7 -0
- package/dist/core/bridge-mesh.d.ts.map +1 -1
- package/dist/core/bridge-mesh.js.map +1 -1
- package/dist/core/data-frame-routing.d.ts +28 -2
- package/dist/core/data-frame-routing.d.ts.map +1 -1
- package/dist/core/data-frame-routing.js +75 -4
- package/dist/core/data-frame-routing.js.map +1 -1
- package/dist/core/hub-session.d.ts +7 -1
- package/dist/core/hub-session.d.ts.map +1 -1
- package/dist/core/hub-session.js +25 -0
- package/dist/core/hub-session.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/wire-mesh-transport.d.ts +0 -1
- package/dist/core/wire-mesh-transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport.js +3 -2
- package/dist/core/wire-mesh-transport.js.map +1 -1
- package/dist/test/account-ledger-helpers.d.ts +35 -0
- package/dist/test/account-ledger-helpers.d.ts.map +1 -0
- package/dist/test/account-ledger-helpers.js +81 -0
- package/dist/test/account-ledger-helpers.js.map +1 -0
- package/dist/test/account-ledger-hub-replication.integration.test.d.ts +5 -0
- package/dist/test/account-ledger-hub-replication.integration.test.d.ts.map +1 -0
- package/dist/test/account-ledger-hub-replication.integration.test.js +100 -0
- package/dist/test/account-ledger-hub-replication.integration.test.js.map +1 -0
- package/dist/test/account-ledger-replication.integration.test.js +4 -66
- package/dist/test/account-ledger-replication.integration.test.js.map +1 -1
- package/dist/test/bridge-stdout.runner.d.ts +5 -0
- package/dist/test/bridge-stdout.runner.d.ts.map +1 -0
- package/dist/test/bridge-stdout.runner.js +49 -0
- package/dist/test/bridge-stdout.runner.js.map +1 -0
- package/dist/test/data-frame-routing.unit.test.d.ts +5 -0
- package/dist/test/data-frame-routing.unit.test.d.ts.map +1 -0
- package/dist/test/data-frame-routing.unit.test.js +79 -0
- package/dist/test/data-frame-routing.unit.test.js.map +1 -0
- package/dist/test/mcp-stdout-channel.integration.test.js +9 -3
- package/dist/test/mcp-stdout-channel.integration.test.js.map +1 -1
- package/package.json +1 -1
- package/dist/test/mcp-bridge.runner.d.ts +0 -5
- package/dist/test/mcp-bridge.runner.d.ts.map +0 -1
- package/dist/test/mcp-bridge.runner.js +0 -25
- package/dist/test/mcp-bridge.runner.js.map +0 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* routeRelayedDataFrame's gates (agent-comms#358): a core/data frame that arrived through a relay pairing is acted on only when it names one of the account's writer logs and its authenticated sender holds the same account.
|
|
3
|
+
*/
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
import { routeRelayedDataFrame, } from "../core/data-frame-routing.js";
|
|
6
|
+
const SENDER = "sender-device";
|
|
7
|
+
const LOG_ID_BYTES = Uint8Array.from({ length: 4 }, (_, i) => i);
|
|
8
|
+
function haveFrame() {
|
|
9
|
+
return {
|
|
10
|
+
type: "data-have",
|
|
11
|
+
peer: LOG_ID_BYTES,
|
|
12
|
+
"head-seq": 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function setup(options) {
|
|
16
|
+
const reply = haveFrame();
|
|
17
|
+
const handleDataFrame = vi.fn(async () => reply);
|
|
18
|
+
const ledger = {
|
|
19
|
+
ownsLog: () => options.ownsLog,
|
|
20
|
+
handleDataFrame,
|
|
21
|
+
announcements: async () => [],
|
|
22
|
+
};
|
|
23
|
+
const account = {
|
|
24
|
+
ledger: () => ledger,
|
|
25
|
+
isAccountPeer: async () => options.isAccountPeer,
|
|
26
|
+
};
|
|
27
|
+
const send = vi.fn(async () => {
|
|
28
|
+
// Resolves with nothing, like a send that succeeded.
|
|
29
|
+
});
|
|
30
|
+
const hub = { peers: () => [], send };
|
|
31
|
+
return { account, hub, handleDataFrame, send, reply };
|
|
32
|
+
}
|
|
33
|
+
describe("routeRelayedDataFrame", () => {
|
|
34
|
+
it("answers an account peer's frame for an account log through the same pairing", async () => {
|
|
35
|
+
const { account, hub, handleDataFrame, send, reply } = setup({
|
|
36
|
+
ownsLog: true,
|
|
37
|
+
isAccountPeer: true,
|
|
38
|
+
});
|
|
39
|
+
const frame = haveFrame();
|
|
40
|
+
await routeRelayedDataFrame({ account, hub, onError: undefined }, SENDER, frame);
|
|
41
|
+
expect(handleDataFrame).toHaveBeenCalledWith(frame);
|
|
42
|
+
expect(send).toHaveBeenCalledWith(SENDER, reply);
|
|
43
|
+
});
|
|
44
|
+
it("drops a frame from a device that does not hold the account", async () => {
|
|
45
|
+
const { account, hub, handleDataFrame, send } = setup({
|
|
46
|
+
ownsLog: true,
|
|
47
|
+
isAccountPeer: false,
|
|
48
|
+
});
|
|
49
|
+
await routeRelayedDataFrame({ account, hub, onError: undefined }, SENDER, haveFrame());
|
|
50
|
+
expect(handleDataFrame).not.toHaveBeenCalled();
|
|
51
|
+
expect(send).not.toHaveBeenCalled();
|
|
52
|
+
});
|
|
53
|
+
it("drops a frame about a log that is not one of the account's", async () => {
|
|
54
|
+
const { account, hub, handleDataFrame, send } = setup({
|
|
55
|
+
ownsLog: false,
|
|
56
|
+
isAccountPeer: true,
|
|
57
|
+
});
|
|
58
|
+
await routeRelayedDataFrame({ account, hub, onError: undefined }, SENDER, haveFrame());
|
|
59
|
+
expect(handleDataFrame).not.toHaveBeenCalled();
|
|
60
|
+
expect(send).not.toHaveBeenCalled();
|
|
61
|
+
});
|
|
62
|
+
it("reports a failure to answer and does not throw", async () => {
|
|
63
|
+
const { account, hub, send } = setup({
|
|
64
|
+
ownsLog: true,
|
|
65
|
+
isAccountPeer: true,
|
|
66
|
+
});
|
|
67
|
+
send.mockRejectedValue(new Error("no pairing"));
|
|
68
|
+
const errors = [];
|
|
69
|
+
await routeRelayedDataFrame({
|
|
70
|
+
account,
|
|
71
|
+
hub,
|
|
72
|
+
onError: (error) => {
|
|
73
|
+
errors.push(error);
|
|
74
|
+
},
|
|
75
|
+
}, SENDER, haveFrame());
|
|
76
|
+
expect(errors.map((error) => error.message)).toEqual(["no pairing"]);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=data-frame-routing.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-frame-routing.unit.test.js","sourceRoot":"","sources":["../../src/test/data-frame-routing.unit.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const cleanups = new TeardownStack();
|
|
|
14
14
|
afterEach(async () => {
|
|
15
15
|
await cleanups.run();
|
|
16
16
|
});
|
|
17
|
-
const RUNNER = path.join(path.dirname(fileURLToPath(import.meta.url)), "
|
|
17
|
+
const RUNNER = path.join(path.dirname(fileURLToPath(import.meta.url)), "bridge-stdout.runner.ts");
|
|
18
18
|
const INITIALIZE_ID = 1;
|
|
19
19
|
const TOOLS_LIST_ID = 2;
|
|
20
20
|
/** Startup includes a real store init and web server start in a fresh process, so the wait is generous; the test's own timeout is the backstop. */
|
|
@@ -28,7 +28,8 @@ function isJsonRpcMessage(value) {
|
|
|
28
28
|
"jsonrpc" in value &&
|
|
29
29
|
value.jsonrpc === "2.0");
|
|
30
30
|
}
|
|
31
|
-
|
|
31
|
+
const ENTRIES = ["mcp", "claude-code", "bare-command"];
|
|
32
|
+
it.each(ENTRIES)("writes only JSON-RPC messages to stdout and puts the web UI banner on stderr (%s)", async (entry) => {
|
|
32
33
|
const slotDir = fs.mkdtempSync(path.join(tmpdir(), "agent-comms-mcp-test-"));
|
|
33
34
|
cleanups.push(async () => {
|
|
34
35
|
fs.rmSync(slotDir, { recursive: true, force: true });
|
|
@@ -38,12 +39,17 @@ it("writes only JSON-RPC messages to stdout and puts the web UI banner on stderr
|
|
|
38
39
|
"tsx",
|
|
39
40
|
RUNNER,
|
|
40
41
|
JSON.stringify({
|
|
42
|
+
entry,
|
|
41
43
|
coordinatorPort: await freeLocalPort(),
|
|
42
44
|
firstContactPort: await freeLocalPort(),
|
|
43
45
|
hubUrl: await unreachableHubUrl(),
|
|
44
46
|
slotDir,
|
|
45
47
|
}),
|
|
46
|
-
], {
|
|
48
|
+
], {
|
|
49
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
50
|
+
// The claude-code bridge keeps its pending-message files under the home directory, and every bridge keeps its user and machine identities there.
|
|
51
|
+
env: { ...process.env, HOME: slotDir },
|
|
52
|
+
});
|
|
47
53
|
const exited = new Promise((resolve) => {
|
|
48
54
|
child.once("exit", () => {
|
|
49
55
|
resolve();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-stdout-channel.integration.test.js","sourceRoot":"","sources":["../../src/test/mcp-stdout-channel.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;AAErC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,
|
|
1
|
+
{"version":3,"file":"mcp-stdout-channel.integration.test.js","sourceRoot":"","sources":["../../src/test/mcp-stdout-channel.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,aAAa,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,aAAa,EACb,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;AAErC,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAC5C,yBAAyB,CAC1B,CAAC;AAKF,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,mJAAmJ;AACnJ,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,SAAS,WAAW,CAAC,OAAgC;IACnD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,SAAS,IAAI,KAAK;QAClB,KAAK,CAAC,OAAO,KAAK,KAAK,CACxB,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAEzE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CACd,mFAAmF,EACnF,KAAK,EAAE,KAAK,EAAE,EAAE;IACd,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAC7C,CAAC;IACF,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAC/B,OAAO,CAAC,QAAQ,EAChB;QACE,UAAU;QACV,KAAK;QACL,MAAM;QACN,IAAI,CAAC,SAAS,CAAC;YACb,KAAK;YACL,eAAe,EAAE,MAAM,aAAa,EAAE;YACtC,gBAAgB,EAAE,MAAM,aAAa,EAAE;YACvC,MAAM,EAAE,MAAM,iBAAiB,EAAE;YACjC,OAAO;SACR,CAAC;KACH,EACD;QACE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC/B,iJAAiJ;QACjJ,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;KACvC,CACF,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAC3C,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACtB,MAAM,MAAM,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,MAAM,GAAG,uCAAuC,CAAC;IACvD,IAAI,YAAY,GAAe,GAAG,EAAE,CAAC,SAAS,CAAC;IAC/C,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QAC3B,YAAY,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnE,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CACJ,IAAI,KAAK,CACP,sEAAsE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,MAAM,EAAE,CACrH,CACF,CAAC;QACJ,CAAC,EAAE,mBAAmB,CAAC,CAAC;QACxB,sIAAsI;QACtI,MAAM,gBAAgB,GAAG,GAAS,EAAE;YAClC,IACE,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC3B,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EACvB,CAAC;gBACD,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,YAAY,GAAG,gBAAgB,CAAC;QAChC,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACpE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,IACE,OAAO,MAAM,KAAK,QAAQ;oBAC1B,MAAM,KAAK,IAAI;oBACf,IAAI,IAAI,MAAM;oBACd,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,EAC7B,CAAC;oBACD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,2HAA2H;YAC7H,CAAC;YACD,gBAAgB,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,CAAC,KAAK,CACf,WAAW,CAAC;QACV,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE;YACN,eAAe,EAAE,uBAAuB;YACxC,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,OAAO,EAAE;SAC9D;KACF,CAAC,CACH,CAAC;IACF,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACxE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,sBAAsB,CAAC;IAE7B,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IACrD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC,CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Child-process entry for mcp-stdout-channel.integration.test.ts: runs the real MCP bridge (bridges/mcp/server.ts) against an isolated mesh, with its ports, hub and identity directory taken from a JSON argument, so the test can own the process's stdin and read exactly what it writes to stdout.
|
|
3
|
-
*/
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=mcp-bridge.runner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-bridge.runner.d.ts","sourceRoot":"","sources":["../../src/test/mcp-bridge.runner.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Child-process entry for mcp-stdout-channel.integration.test.ts: runs the real MCP bridge (bridges/mcp/server.ts) against an isolated mesh, with its ports, hub and identity directory taken from a JSON argument, so the test can own the process's stdin and read exactly what it writes to stdout.
|
|
3
|
-
*/
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import { run } from "../bridges/mcp/server.js";
|
|
6
|
-
const argumentSchema = z.object({
|
|
7
|
-
coordinatorPort: z.number(),
|
|
8
|
-
firstContactPort: z.number(),
|
|
9
|
-
hubUrl: z.string(),
|
|
10
|
-
slotDir: z.string(),
|
|
11
|
-
});
|
|
12
|
-
const raw = process.argv[2];
|
|
13
|
-
if (raw === undefined) {
|
|
14
|
-
throw new Error("expected a JSON argument");
|
|
15
|
-
}
|
|
16
|
-
const args = argumentSchema.parse(JSON.parse(raw));
|
|
17
|
-
await run({
|
|
18
|
-
mesh: {
|
|
19
|
-
coordinatorPort: args.coordinatorPort,
|
|
20
|
-
firstContactPort: args.firstContactPort,
|
|
21
|
-
hubUrl: args.hubUrl,
|
|
22
|
-
},
|
|
23
|
-
slot: { harness: "mcp", cwd: process.cwd(), dir: args.slotDir },
|
|
24
|
-
});
|
|
25
|
-
//# sourceMappingURL=mcp-bridge.runner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-bridge.runner.js","sourceRoot":"","sources":["../../src/test/mcp-bridge.runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AAE/C,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;IACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC9C,CAAC;AACD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AAEnD,MAAM,GAAG,CAAC;IACR,IAAI,EAAE;QACJ,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB;IACD,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE;CAChE,CAAC,CAAC"}
|