@rk0429/agentic-relay 0.6.3 → 0.6.4

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 (2) hide show
  1. package/dist/relay.mjs +39 -18
  2. package/package.json +1 -1
package/dist/relay.mjs CHANGED
@@ -717,12 +717,11 @@ var init_server = __esm({
717
717
  this.backendSelector = new BackendSelector();
718
718
  this.server = new McpServer({
719
719
  name: "agentic-relay",
720
- version: "0.6.3"
720
+ version: "0.6.4"
721
721
  });
722
722
  this.registerTools(this.server);
723
723
  }
724
724
  server;
725
- childServer;
726
725
  guard;
727
726
  backendSelector;
728
727
  _childHttpServer;
@@ -912,29 +911,51 @@ ${result.stdout}`;
912
911
  }
913
912
  /**
914
913
  * Start an HTTP server for child agents.
915
- * Creates a separate McpServer instance (since McpServer.connect() can only be called once)
916
- * and binds it to a random port on 127.0.0.1.
914
+ * Each client connection gets its own McpServer + StreamableHTTPServerTransport pair
915
+ * because StreamableHTTPServerTransport only supports a single session per instance.
916
+ * Routes requests to the correct session based on the Mcp-Session-Id header.
917
917
  */
918
918
  async startChildHttpServer() {
919
- this.childServer = new McpServer({
920
- name: "agentic-relay",
921
- version: "0.6.3"
922
- });
923
- this.registerTools(this.childServer);
924
- const childTransport = new StreamableHTTPServerTransport({
925
- sessionIdGenerator: () => randomUUID()
926
- });
919
+ const sessions = /* @__PURE__ */ new Map();
927
920
  const httpServer = createServer(async (req, res) => {
928
921
  const url = req.url ?? "";
929
- if (url === "/mcp" || url.startsWith("/mcp?")) {
930
- await childTransport.handleRequest(req, res);
931
- } else {
922
+ if (url !== "/mcp" && !url.startsWith("/mcp?")) {
932
923
  res.writeHead(404, { "Content-Type": "text/plain" });
933
924
  res.end("Not found");
925
+ return;
926
+ }
927
+ const sessionId = req.headers["mcp-session-id"];
928
+ if (sessionId) {
929
+ const session = sessions.get(sessionId);
930
+ if (session) {
931
+ await session.transport.handleRequest(req, res);
932
+ return;
933
+ }
934
+ }
935
+ const transport = new StreamableHTTPServerTransport({
936
+ sessionIdGenerator: () => randomUUID()
937
+ });
938
+ const server = new McpServer({
939
+ name: "agentic-relay",
940
+ version: "0.6.4"
941
+ });
942
+ this.registerTools(server);
943
+ transport.onclose = () => {
944
+ const sid2 = transport.sessionId;
945
+ if (sid2) {
946
+ sessions.delete(sid2);
947
+ logger.debug(`Child MCP session closed: ${sid2}`);
948
+ }
949
+ };
950
+ await server.connect(transport);
951
+ await transport.handleRequest(req, res);
952
+ const sid = transport.sessionId;
953
+ if (sid) {
954
+ sessions.set(sid, { transport, server });
955
+ logger.debug(`Child MCP session created: ${sid}`);
934
956
  }
935
957
  });
936
958
  this._childHttpServer = httpServer;
937
- await this.childServer.connect(childTransport);
938
959
  await new Promise((resolve) => {
939
960
  httpServer.listen(0, "127.0.0.1", () => {
940
961
  const addr = httpServer.address();
@@ -3898,7 +3919,7 @@ function createVersionCommand(registry2) {
3898
3919
  description: "Show relay and backend versions"
3899
3920
  },
3900
3921
  async run() {
3901
- const relayVersion = "0.6.3";
3922
+ const relayVersion = "0.6.4";
3902
3923
  console.log(`agentic-relay v${relayVersion}`);
3903
3924
  console.log("");
3904
3925
  console.log("Backends:");
@@ -4248,7 +4269,7 @@ void configManager.getConfig().then((config) => {
4248
4269
  var main = defineCommand10({
4249
4270
  meta: {
4250
4271
  name: "relay",
4251
- version: "0.6.3",
4272
+ version: "0.6.4",
4252
4273
  description: "Unified CLI proxy for Claude Code, Codex CLI, and Gemini CLI"
4253
4274
  },
4254
4275
  subCommands: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rk0429/agentic-relay",
3
- "version": "0.6.3",
3
+ "version": "0.6.4",
4
4
  "description": "Unified CLI proxy for Claude Code, Codex CLI, and Gemini CLI with MCP-based multi-layer sub-agent orchestration",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",