@powerhousedao/reactor-mcp 6.0.0-dev.200 → 6.0.0-dev.202

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/dist/index.d.mts CHANGED
@@ -10,7 +10,7 @@ import { CallToolResult, Prompt, Resource, ToolAnnotations } from "@modelcontext
10
10
  //#region src/mcp-routes.d.ts
11
11
  /** Minimal interface for an HTTP adapter that supports Node.js-style route handlers. */
12
12
  interface NodeRouteAdapter {
13
- mountNodeRoute(method: "DELETE" | "GET" | "POST", path: string, handler: (req: IncomingMessage, res: ServerResponse, body?: unknown) => void): void;
13
+ mountNodeRoute(method: "DELETE" | "GET" | "POST", path: string, handler: (req: IncomingMessage, res: ServerResponse, body?: unknown) => void | Promise<void>): void;
14
14
  }
15
15
  interface SetupMcpServerOptions {
16
16
  client: IReactorClient;
@@ -20,7 +20,7 @@ interface SetupMcpServerOptions {
20
20
  type TransportFactory = (opts: {
21
21
  sessionIdGenerator: undefined;
22
22
  }) => InstanceType<typeof StreamableHTTPServerTransport>;
23
- declare function setupMcpServer(options: SetupMcpServerOptions, httpAdapter: NodeRouteAdapter, createTransport?: TransportFactory): Promise<McpServer>;
23
+ declare function setupMcpServer(options: SetupMcpServerOptions, httpAdapter: NodeRouteAdapter, createTransport?: TransportFactory): Promise<void>;
24
24
  //#endregion
25
25
  //#region src/server.d.ts
26
26
  interface CreateServerOptions {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/mcp-routes.ts","../src/server.ts","../src/tools/types.ts","../src/tools/reactor.ts","../src/tools/utils.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/mcp-routes.ts","../src/server.ts","../src/tools/types.ts","../src/tools/reactor.ts","../src/tools/utils.ts"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -9,27 +9,28 @@ const METHOD_NOT_ALLOWED = JSON.stringify({
9
9
  },
10
10
  id: null
11
11
  });
12
+ const INTERNAL_SERVER_ERROR = JSON.stringify({
13
+ jsonrpc: "2.0",
14
+ error: {
15
+ code: -32603,
16
+ message: "Internal server error"
17
+ },
18
+ id: null
19
+ });
12
20
  async function setupMcpServer(options, httpAdapter, createTransport = (opts) => new StreamableHTTPServerTransport(opts)) {
13
- const server = await createServer(options);
14
- httpAdapter.mountNodeRoute("POST", "/mcp", (req, res, body) => {
21
+ httpAdapter.mountNodeRoute("POST", "/mcp", async (req, res, body) => {
15
22
  try {
23
+ const server = await createServer(options);
16
24
  const transport = createTransport({ sessionIdGenerator: void 0 });
17
25
  res.on("close", () => {
18
26
  transport.close();
19
27
  server.close();
20
28
  });
21
- server.connect(transport);
22
- transport.handleRequest(req, res, body);
29
+ await server.connect(transport);
30
+ await transport.handleRequest(req, res, body);
23
31
  } catch (error) {
24
32
  logger.error("Error handling MCP request:", error);
25
- if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" }).end(JSON.stringify({
26
- jsonrpc: "2.0",
27
- error: {
28
- code: -32603,
29
- message: "Internal server error"
30
- },
31
- id: null
32
- }));
33
+ if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" }).end(INTERNAL_SERVER_ERROR);
33
34
  }
34
35
  });
35
36
  httpAdapter.mountNodeRoute("GET", "/mcp", (_req, res) => {
@@ -38,7 +39,6 @@ async function setupMcpServer(options, httpAdapter, createTransport = (opts) =>
38
39
  httpAdapter.mountNodeRoute("DELETE", "/mcp", (_req, res) => {
39
40
  res.writeHead(405).end(METHOD_NOT_ALLOWED);
40
41
  });
41
- return server;
42
42
  }
43
43
  //#endregion
44
44
  export { InvalidToolOutputError, addActionsTool, addDriveTool, addRemoteDriveTool, createDocumentTool, createReactorMcpProvider, createServer, deleteDocumentTool, deleteDriveTool, getDocumentModelSchemaTool, getDocumentModelsTool, getDocumentTool, getDocumentsTool, getDriveTool, getDrivesTool, setupMcpServer, toolWithCallback, validateDocumentModelAction };
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/mcp-routes.ts"],"sourcesContent":["import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport type { IReactorClient, ISyncManager } from \"@powerhousedao/reactor\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\n\n/** Minimal interface for an HTTP adapter that supports Node.js-style route handlers. */\ninterface NodeRouteAdapter {\n mountNodeRoute(\n method: \"DELETE\" | \"GET\" | \"POST\",\n path: string,\n handler: (\n req: IncomingMessage,\n res: ServerResponse,\n body?: unknown,\n ) => void,\n ): void;\n}\nimport { logger } from \"./logger.js\";\nimport { createServer } from \"./server.js\";\n\nexport interface SetupMcpServerOptions {\n client: IReactorClient;\n syncManager?: ISyncManager;\n}\n\nconst METHOD_NOT_ALLOWED = JSON.stringify({\n jsonrpc: \"2.0\",\n error: { code: -32000, message: \"Method not allowed.\" },\n id: null,\n});\n\n/** @internal Injected in tests to avoid relying on constructor mock semantics. */\ntype TransportFactory = (opts: {\n sessionIdGenerator: undefined;\n}) => InstanceType<typeof StreamableHTTPServerTransport>;\n\nexport async function setupMcpServer(\n options: SetupMcpServerOptions,\n httpAdapter: NodeRouteAdapter,\n // Allow tests to inject a factory function instead of relying on `new vi.fn()`\n // constructor semantics, which differ between macOS and Linux environments.\n createTransport: TransportFactory = (opts) =>\n new StreamableHTTPServerTransport(opts),\n): Promise<McpServer> {\n const server = await createServer(options);\n\n httpAdapter.mountNodeRoute(\n \"POST\",\n \"/mcp\",\n (req: IncomingMessage, res: ServerResponse, body?: unknown) => {\n // In stateless mode, create a new instance of transport and server for each\n // request to ensure complete isolation. A single instance would cause request\n // ID collisions when multiple clients connect concurrently.\n try {\n const transport = createTransport({\n sessionIdGenerator: undefined,\n });\n res.on(\"close\", () => {\n void transport.close();\n void server.close();\n });\n void server.connect(transport);\n void transport.handleRequest(req, res, body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res.writeHead(500, { \"Content-Type\": \"application/json\" }).end(\n JSON.stringify({\n jsonrpc: \"2.0\",\n error: { code: -32603, message: \"Internal server error\" },\n id: null,\n }),\n );\n }\n }\n },\n );\n\n // SSE notifications not supported in stateless mode\n httpAdapter.mountNodeRoute(\n \"GET\",\n \"/mcp\",\n (_req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(405).end(METHOD_NOT_ALLOWED);\n },\n );\n\n // Session termination not needed in stateless mode\n httpAdapter.mountNodeRoute(\n \"DELETE\",\n \"/mcp\",\n (_req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(405).end(METHOD_NOT_ALLOWED);\n },\n );\n\n return server;\n}\n"],"mappings":";;;AAyBA,MAAM,qBAAqB,KAAK,UAAU;CACxC,SAAS;CACT,OAAO;EAAE,MAAM;EAAQ,SAAS;EAAuB;CACvD,IAAI;CACL,CAAC;AAOF,eAAsB,eACpB,SACA,aAGA,mBAAqC,SACnC,IAAI,8BAA8B,KAAK,EACrB;CACpB,MAAM,SAAS,MAAM,aAAa,QAAQ;AAE1C,aAAY,eACV,QACA,SACC,KAAsB,KAAqB,SAAmB;AAI7D,MAAI;GACF,MAAM,YAAY,gBAAgB,EAChC,oBAAoB,KAAA,GACrB,CAAC;AACF,OAAI,GAAG,eAAe;AACf,cAAU,OAAO;AACjB,WAAO,OAAO;KACnB;AACG,UAAO,QAAQ,UAAU;AACzB,aAAU,cAAc,KAAK,KAAK,KAAK;WACrC,OAAO;AACd,UAAO,MAAM,+BAA+B,MAAM;AAClD,OAAI,CAAC,IAAI,YACP,KAAI,UAAU,KAAK,EAAE,gBAAgB,oBAAoB,CAAC,CAAC,IACzD,KAAK,UAAU;IACb,SAAS;IACT,OAAO;KAAE,MAAM;KAAQ,SAAS;KAAyB;IACzD,IAAI;IACL,CAAC,CACH;;GAIR;AAGD,aAAY,eACV,OACA,SACC,MAAuB,QAAwB;AAC9C,MAAI,UAAU,IAAI,CAAC,IAAI,mBAAmB;GAE7C;AAGD,aAAY,eACV,UACA,SACC,MAAuB,QAAwB;AAC9C,MAAI,UAAU,IAAI,CAAC,IAAI,mBAAmB;GAE7C;AAED,QAAO"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/mcp-routes.ts"],"sourcesContent":["import { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport type { IReactorClient, ISyncManager } from \"@powerhousedao/reactor\";\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\n\n/** Minimal interface for an HTTP adapter that supports Node.js-style route handlers. */\ninterface NodeRouteAdapter {\n mountNodeRoute(\n method: \"DELETE\" | \"GET\" | \"POST\",\n path: string,\n handler: (\n req: IncomingMessage,\n res: ServerResponse,\n body?: unknown,\n ) => void | Promise<void>,\n ): void;\n}\nimport { logger } from \"./logger.js\";\nimport { createServer } from \"./server.js\";\n\nexport interface SetupMcpServerOptions {\n client: IReactorClient;\n syncManager?: ISyncManager;\n}\n\nconst METHOD_NOT_ALLOWED = JSON.stringify({\n jsonrpc: \"2.0\",\n error: { code: -32000, message: \"Method not allowed.\" },\n id: null,\n});\n\nconst INTERNAL_SERVER_ERROR = JSON.stringify({\n jsonrpc: \"2.0\",\n error: { code: -32603, message: \"Internal server error\" },\n id: null,\n});\n\n/** @internal Injected in tests to avoid relying on constructor mock semantics. */\ntype TransportFactory = (opts: {\n sessionIdGenerator: undefined;\n}) => InstanceType<typeof StreamableHTTPServerTransport>;\n\nexport async function setupMcpServer(\n options: SetupMcpServerOptions,\n httpAdapter: NodeRouteAdapter,\n // Allow tests to inject a factory function instead of relying on `new vi.fn()`\n // constructor semantics, which differ between macOS and Linux environments.\n createTransport: TransportFactory = (opts) =>\n new StreamableHTTPServerTransport(opts),\n): Promise<void> {\n httpAdapter.mountNodeRoute(\n \"POST\",\n \"/mcp\",\n async (req: IncomingMessage, res: ServerResponse, body?: unknown) => {\n // Stateless mode: every request owns its McpServer + transport so\n // concurrent or slow handlers cannot collide on a shared Protocol\n // instance (which throws \"Already connected to a transport\").\n try {\n const server = await createServer(options);\n const transport = createTransport({ sessionIdGenerator: undefined });\n res.on(\"close\", () => {\n void transport.close();\n void server.close();\n });\n await server.connect(transport);\n await transport.handleRequest(req, res, body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res\n .writeHead(500, { \"Content-Type\": \"application/json\" })\n .end(INTERNAL_SERVER_ERROR);\n }\n }\n },\n );\n\n // SSE notifications not supported in stateless mode\n httpAdapter.mountNodeRoute(\n \"GET\",\n \"/mcp\",\n (_req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(405).end(METHOD_NOT_ALLOWED);\n },\n );\n\n // Session termination not needed in stateless mode\n httpAdapter.mountNodeRoute(\n \"DELETE\",\n \"/mcp\",\n (_req: IncomingMessage, res: ServerResponse) => {\n res.writeHead(405).end(METHOD_NOT_ALLOWED);\n },\n );\n}\n"],"mappings":";;;AAwBA,MAAM,qBAAqB,KAAK,UAAU;CACxC,SAAS;CACT,OAAO;EAAE,MAAM;EAAQ,SAAS;EAAuB;CACvD,IAAI;CACL,CAAC;AAEF,MAAM,wBAAwB,KAAK,UAAU;CAC3C,SAAS;CACT,OAAO;EAAE,MAAM;EAAQ,SAAS;EAAyB;CACzD,IAAI;CACL,CAAC;AAOF,eAAsB,eACpB,SACA,aAGA,mBAAqC,SACnC,IAAI,8BAA8B,KAAK,EAC1B;AACf,aAAY,eACV,QACA,QACA,OAAO,KAAsB,KAAqB,SAAmB;AAInE,MAAI;GACF,MAAM,SAAS,MAAM,aAAa,QAAQ;GAC1C,MAAM,YAAY,gBAAgB,EAAE,oBAAoB,KAAA,GAAW,CAAC;AACpE,OAAI,GAAG,eAAe;AACf,cAAU,OAAO;AACjB,WAAO,OAAO;KACnB;AACF,SAAM,OAAO,QAAQ,UAAU;AAC/B,SAAM,UAAU,cAAc,KAAK,KAAK,KAAK;WACtC,OAAO;AACd,UAAO,MAAM,+BAA+B,MAAM;AAClD,OAAI,CAAC,IAAI,YACP,KACG,UAAU,KAAK,EAAE,gBAAgB,oBAAoB,CAAC,CACtD,IAAI,sBAAsB;;GAIpC;AAGD,aAAY,eACV,OACA,SACC,MAAuB,QAAwB;AAC9C,MAAI,UAAU,IAAI,CAAC,IAAI,mBAAmB;GAE7C;AAGD,aAAY,eACV,UACA,SACC,MAAuB,QAAwB;AAC9C,MAAI,UAAU,IAAI,CAAC,IAAI,mBAAmB;GAE7C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/reactor-mcp",
3
- "version": "6.0.0-dev.200",
3
+ "version": "6.0.0-dev.202",
4
4
  "description": "MCP server for document model operations in the Powerhouse ecosystem. For document model creation tasks, consider using the document-model-creator agent which provides a more guided experience.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -37,11 +37,11 @@
37
37
  "change-case": "5.4.4",
38
38
  "vite": "8.0.8",
39
39
  "zod": "4.3.6",
40
- "@powerhousedao/codegen": "6.0.0-dev.200",
41
- "@powerhousedao/shared": "6.0.0-dev.200",
42
- "@powerhousedao/config": "6.0.0-dev.200",
43
- "@powerhousedao/reactor": "6.0.0-dev.200",
44
- "document-model": "6.0.0-dev.200"
40
+ "@powerhousedao/codegen": "6.0.0-dev.202",
41
+ "@powerhousedao/reactor": "6.0.0-dev.202",
42
+ "@powerhousedao/config": "6.0.0-dev.202",
43
+ "@powerhousedao/shared": "6.0.0-dev.202",
44
+ "document-model": "6.0.0-dev.202"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "25.2.3",