@powerhousedao/reactor-mcp 4.1.0-dev.8 → 4.1.0-dev.80

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 (67) hide show
  1. package/dist/src/cli.js +4 -3
  2. package/dist/src/cli.js.map +1 -1
  3. package/dist/src/express.d.ts +5 -0
  4. package/dist/src/express.d.ts.map +1 -0
  5. package/dist/src/express.js +59 -0
  6. package/dist/src/express.js.map +1 -0
  7. package/dist/src/feature-flags.d.ts +4 -0
  8. package/dist/src/feature-flags.d.ts.map +1 -0
  9. package/dist/src/feature-flags.js +17 -0
  10. package/dist/src/feature-flags.js.map +1 -0
  11. package/dist/src/index.d.ts +4 -6
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +4 -85
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/logger.d.ts +3 -0
  16. package/dist/src/logger.d.ts.map +1 -0
  17. package/dist/src/logger.js +3 -0
  18. package/dist/src/logger.js.map +1 -0
  19. package/dist/src/sdk/chat.d.ts.map +1 -1
  20. package/dist/src/sdk/chat.js +3 -2
  21. package/dist/src/sdk/chat.js.map +1 -1
  22. package/dist/src/server.d.ts +1 -1
  23. package/dist/src/server.d.ts.map +1 -1
  24. package/dist/src/server.js +1 -2
  25. package/dist/src/server.js.map +1 -1
  26. package/dist/src/stdio/index.d.ts +7 -0
  27. package/dist/src/stdio/index.d.ts.map +1 -0
  28. package/dist/src/stdio/index.js +94 -0
  29. package/dist/src/stdio/index.js.map +1 -0
  30. package/dist/src/{loader.d.ts → stdio/loader.d.ts} +1 -1
  31. package/dist/src/stdio/loader.d.ts.map +1 -0
  32. package/dist/src/{loader.js → stdio/loader.js} +5 -2
  33. package/dist/src/stdio/loader.js.map +1 -0
  34. package/dist/src/tools/index.d.ts +3 -0
  35. package/dist/src/tools/index.d.ts.map +1 -0
  36. package/dist/src/tools/index.js +3 -0
  37. package/dist/src/tools/index.js.map +1 -0
  38. package/dist/src/{mcp → tools}/reactor.d.ts +10 -10
  39. package/dist/src/tools/reactor.d.ts.map +1 -0
  40. package/dist/src/{mcp → tools}/reactor.js +17 -16
  41. package/dist/src/tools/reactor.js.map +1 -0
  42. package/dist/src/tools/types.d.ts.map +1 -0
  43. package/dist/src/{mcp → tools}/types.js.map +1 -1
  44. package/dist/src/{mcp → tools}/utils.d.ts +3 -3
  45. package/dist/src/tools/utils.d.ts.map +1 -0
  46. package/dist/src/{mcp → tools}/utils.js +6 -7
  47. package/dist/src/tools/utils.js.map +1 -0
  48. package/dist/test/reactor.test.d.ts +2 -0
  49. package/dist/test/reactor.test.d.ts.map +1 -0
  50. package/dist/test/reactor.test.js +501 -0
  51. package/dist/test/reactor.test.js.map +1 -0
  52. package/dist/tsconfig.tsbuildinfo +1 -0
  53. package/dist/vitest.config.d.ts +3 -0
  54. package/dist/vitest.config.d.ts.map +1 -0
  55. package/dist/vitest.config.js +9 -0
  56. package/dist/vitest.config.js.map +1 -0
  57. package/package.json +20 -24
  58. package/dist/src/loader.d.ts.map +0 -1
  59. package/dist/src/loader.js.map +0 -1
  60. package/dist/src/mcp/reactor.d.ts.map +0 -1
  61. package/dist/src/mcp/reactor.js.map +0 -1
  62. package/dist/src/mcp/types.d.ts.map +0 -1
  63. package/dist/src/mcp/utils.d.ts.map +0 -1
  64. package/dist/src/mcp/utils.js.map +0 -1
  65. package/dist/tsconfig.lib.tsbuildinfo +0 -1
  66. /package/dist/src/{mcp → tools}/types.d.ts +0 -0
  67. /package/dist/src/{mcp → tools}/types.js +0 -0
package/dist/src/cli.js CHANGED
@@ -1,9 +1,10 @@
1
- import { init } from "./index.js";
2
- init({
1
+ import { logger } from "./logger.js";
2
+ import { initStdioMcpServer } from "./stdio/index.js";
3
+ initStdioMcpServer({
3
4
  remoteDrive: process.argv.at(2),
4
5
  root: process.cwd(),
5
6
  }).catch((error) => {
6
- console.error(error);
7
+ logger.error(error);
7
8
  process.exit(1);
8
9
  });
9
10
  //# sourceMappingURL=cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,IAAI,CAAC;IACH,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;CACpB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/B,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE;CACpB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { IDocumentDriveServer } from "document-drive";
3
+ import type { Express } from "express";
4
+ export declare function setupMcpServer(reactor: IDocumentDriveServer, app: Express): Promise<McpServer>;
5
+ //# sourceMappingURL=express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../src/express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,SAAS,CAAC;AAI1D,wBAAsB,cAAc,CAClC,OAAO,EAAE,oBAAoB,EAC7B,GAAG,EAAE,OAAO,GACX,OAAO,CAAC,SAAS,CAAC,CA6DpB"}
@@ -0,0 +1,59 @@
1
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
2
+ import { logger } from "./logger.js";
3
+ import { createServer } from "./server.js";
4
+ export async function setupMcpServer(reactor, app) {
5
+ const server = await createServer(reactor);
6
+ app.post("/mcp", (req, res) => {
7
+ // In stateless mode, create a new instance of transport and server for each request
8
+ // to ensure complete isolation. A single instance would cause request ID collisions
9
+ // when multiple clients connect concurrently.
10
+ try {
11
+ const transport = new StreamableHTTPServerTransport({
12
+ sessionIdGenerator: undefined,
13
+ });
14
+ res.on("close", () => {
15
+ void transport.close();
16
+ void server.close();
17
+ });
18
+ void server.connect(transport);
19
+ void transport.handleRequest(req, res, req.body);
20
+ }
21
+ catch (error) {
22
+ logger.error("Error handling MCP request:", error);
23
+ if (!res.headersSent) {
24
+ res.status(500).json({
25
+ jsonrpc: "2.0",
26
+ error: {
27
+ code: -32603,
28
+ message: "Internal server error",
29
+ },
30
+ id: null,
31
+ });
32
+ }
33
+ }
34
+ });
35
+ // SSE notifications not supported in stateless mode
36
+ app.get("/mcp", (req, res) => {
37
+ res.writeHead(405).end(JSON.stringify({
38
+ jsonrpc: "2.0",
39
+ error: {
40
+ code: -32000,
41
+ message: "Method not allowed.",
42
+ },
43
+ id: null,
44
+ }));
45
+ });
46
+ // Session termination not needed in stateless mode
47
+ app.delete("/mcp", (req, res) => {
48
+ res.writeHead(405).end(JSON.stringify({
49
+ jsonrpc: "2.0",
50
+ error: {
51
+ code: -32000,
52
+ message: "Method not allowed.",
53
+ },
54
+ id: null,
55
+ }));
56
+ });
57
+ return server;
58
+ }
59
+ //# sourceMappingURL=express.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.js","sourceRoot":"","sources":["../../src/express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAGnG,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA6B,EAC7B,GAAY;IAEZ,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC/C,oFAAoF;QACpF,oFAAoF;QACpF,8CAA8C;QAC9C,IAAI,CAAC;YACH,MAAM,SAAS,GACb,IAAI,6BAA6B,CAAC;gBAChC,kBAAkB,EAAE,SAAS;aAC9B,CAAC,CAAC;YACL,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACnB,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;gBACvB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,KAAK,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/B,KAAK,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,CAAC,KAAK;wBACZ,OAAO,EAAE,uBAAuB;qBACjC;oBACD,EAAE,EAAE,IAAI;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oDAAoD;IACpD,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CACpB,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,CAAC,KAAK;gBACZ,OAAO,EAAE,qBAAqB;aAC/B;YACD,EAAE,EAAE,IAAI;SACT,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACjD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,CACpB,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,CAAC,KAAK;gBACZ,OAAO,EAAE,qBAAqB;aAC/B;YACD,EAAE,EAAE,IAAI;SACT,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare function initFeatureFlags(): Promise<import("@openfeature/server-sdk").Client>;
2
+ export declare function isReactorv2Enabled(): Promise<boolean>;
3
+ export declare function isDualActionCreateEnabled(): Promise<boolean>;
4
+ //# sourceMappingURL=feature-flags.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,sDAOrC;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG3D;AAED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAMlE"}
@@ -0,0 +1,17 @@
1
+ import { EnvVarProvider } from "@openfeature/env-var-provider";
2
+ import { OpenFeature } from "@openfeature/server-sdk";
3
+ export async function initFeatureFlags() {
4
+ // for now, we're only using env vars for feature flags
5
+ const provider = new EnvVarProvider();
6
+ await OpenFeature.setProviderAndWait(provider);
7
+ return OpenFeature.getClient();
8
+ }
9
+ export async function isReactorv2Enabled() {
10
+ const client = OpenFeature.getClient();
11
+ return await client.getBooleanValue("FEATURE_REACTORV2_ENABLED", false);
12
+ }
13
+ export async function isDualActionCreateEnabled() {
14
+ const client = OpenFeature.getClient();
15
+ return await client.getBooleanValue("FEATURE_DUAL_ACTION_CREATE_ENABLED", false);
16
+ }
17
+ //# sourceMappingURL=feature-flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,uDAAuD;IACvD,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IAEtC,MAAM,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE/C,OAAO,WAAW,CAAC,SAAS,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IACvC,OAAO,MAAM,MAAM,CAAC,eAAe,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;IACvC,OAAO,MAAM,MAAM,CAAC,eAAe,CACjC,oCAAoC,EACpC,KAAK,CACN,CAAC;AACJ,CAAC"}
@@ -1,7 +1,5 @@
1
- export interface IMcpOptions {
2
- remoteDrive?: string;
3
- root?: string;
4
- documentModelsDir?: string;
5
- }
6
- export declare function init(options?: IMcpOptions): Promise<void>;
1
+ export { setupMcpServer } from "./express.js";
2
+ export { createServer } from "./server.js";
3
+ export * from "./tools/index.js";
4
+ export * from "./tools/types.js";
7
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAkBD,wBAAsB,IAAI,CAAC,OAAO,CAAC,EAAE,WAAW,iBAoF/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,86 +1,5 @@
1
- import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
2
- import { driveDocumentModelModule, ReactorBuilder } from "document-drive";
3
- import { documentModelDocumentModelModule, generateId, } from "document-model";
4
- import { VitePackageLoader } from "./loader.js";
5
- import { createServer } from "./server.js";
6
- const baseDocumentModels = [
7
- documentModelDocumentModelModule,
8
- driveDocumentModelModule,
9
- ];
10
- async function createReactor(documentModels = []) {
11
- const builder = new ReactorBuilder(baseDocumentModels.concat(documentModels));
12
- // .withStorage(
13
- // new FilesystemStorage("./.ph/mcp/storage"),
14
- // );
15
- const reactor = builder.build();
16
- await reactor.initialize();
17
- return reactor;
18
- }
19
- export async function init(options) {
20
- const { remoteDrive, root, documentModelsDir = "./document-models", } = options ?? {};
21
- // if root of project is passed then loads local document models
22
- let documentModelsLoader;
23
- const documentModels = [];
24
- if (root) {
25
- documentModelsLoader = new VitePackageLoader(root, documentModelsDir);
26
- try {
27
- const loadedModels = await documentModelsLoader.load();
28
- documentModels.push(...loadedModels);
29
- console.log("Loaded document models:", loadedModels.map((m) => m.documentModel.name).join(", "));
30
- }
31
- catch (e) {
32
- console.error(e);
33
- }
34
- }
35
- // initializes reactor with loaded document models
36
- const reactor = await createReactor(documentModels);
37
- // listens for changes in the local document models to update the reactor
38
- if (documentModelsLoader) {
39
- const unsubscribe = await documentModelsLoader.onDocumentModelsChange((models) => {
40
- reactor.setDocumentModelModules(baseDocumentModels.concat(models));
41
- });
42
- process.on("exit", () => {
43
- unsubscribe();
44
- });
45
- }
46
- // if a remote drive is passed then adds it to the reactor
47
- if (remoteDrive) {
48
- try {
49
- await reactor.addRemoteDrive(remoteDrive, {
50
- sharingType: "PUBLIC",
51
- availableOffline: true,
52
- listeners: [
53
- {
54
- block: true,
55
- callInfo: {
56
- data: remoteDrive,
57
- name: "switchboard-push",
58
- transmitterType: "SwitchboardPush",
59
- },
60
- filter: {
61
- branch: ["main"],
62
- documentId: ["*"],
63
- documentType: ["*"],
64
- scope: ["global"],
65
- },
66
- label: "Switchboard Sync",
67
- listenerId: generateId(),
68
- system: true,
69
- },
70
- ],
71
- triggers: [],
72
- });
73
- }
74
- catch (e) {
75
- throw new Error(`Failed to add remote drive "${remoteDrive}": ${e instanceof Error ? e.message : e}`, {
76
- cause: e,
77
- });
78
- }
79
- }
80
- // starts the server
81
- const server = await createServer(reactor);
82
- // starts Stdio transport
83
- const transport = new StdioServerTransport();
84
- await server.connect(transport);
85
- }
1
+ export { setupMcpServer } from "./express.js";
2
+ export { createServer } from "./server.js";
3
+ export * from "./tools/index.js";
4
+ export * from "./tools/types.js";
86
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ILogger } from "document-drive";
2
+ export declare const logger: ILogger;
3
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,eAAO,MAAM,MAAM,EAAE,OAAsC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { childLogger } from "document-drive";
2
+ export const logger = childLogger(["reactor-mcp"]);
3
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,MAAM,MAAM,GAAY,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/sdk/chat.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,GAAE,WAAgB;IAU/B,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBrD,aAAa,CACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/sdk/chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAgB,QAAQ,EAAE,MAAM,IAAI,CAAC;AAIjD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;gBAEjB,OAAO,GAAE,WAAgB;IAU/B,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAyBrD,aAAa,CACjB,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAC/B,OAAO,CAAC,IAAI,CAAC;CAqBjB"}
@@ -1,5 +1,6 @@
1
1
  import { createOpenAI } from "@ai-sdk/openai";
2
2
  import { streamText } from "ai";
3
+ import { logger } from "../logger.js";
3
4
  export class LLMChat {
4
5
  provider;
5
6
  model;
@@ -31,7 +32,7 @@ export class LLMChat {
31
32
  return fullResponse;
32
33
  }
33
34
  catch (error) {
34
- console.error("Error sending message to LLM:", error);
35
+ logger.error("Error sending message to LLM:", error);
35
36
  throw error;
36
37
  }
37
38
  }
@@ -51,7 +52,7 @@ export class LLMChat {
51
52
  }
52
53
  }
53
54
  catch (error) {
54
- console.error("Error streaming message from LLM:", error);
55
+ logger.error("Error streaming message from LLM:", error);
55
56
  throw error;
56
57
  }
57
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/sdk/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAchC,MAAM,OAAO,OAAO;IACV,QAAQ,CAAW;IACnB,KAAK,CAAS;IACd,YAAY,CAAS;IAE7B,YAAY,UAAuB,EAAE;QACnC,IAAI,CAAC,QAAQ;YACX,OAAO,CAAC,QAAQ;gBAChB,YAAY,CAAC;oBACX,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;iBACzC,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,8BAA8B,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAuB;QACvC,IAAI,CAAC;YACH,MAAM,YAAY,GAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/C,YAAY,IAAI,QAAQ,CAAC;YAC3B,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAAuB,EACvB,OAAgC;QAEhC,IAAI,CAAC;YACH,MAAM,YAAY,GAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC1D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/sdk/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAatC,MAAM,OAAO,OAAO;IACV,QAAQ,CAAW;IACnB,KAAK,CAAS;IACd,YAAY,CAAS;IAE7B,YAAY,UAAuB,EAAE;QACnC,IAAI,CAAC,QAAQ;YACX,OAAO,CAAC,QAAQ;gBAChB,YAAY,CAAC;oBACX,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;iBACzC,CAAC,CAAC;QACL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,8BAA8B,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAuB;QACvC,IAAI,CAAC;YACH,MAAM,YAAY,GAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/C,YAAY,IAAI,QAAQ,CAAC;YAC3B,CAAC;YAED,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,QAAuB,EACvB,OAAgC;QAEhC,IAAI,CAAC;YACH,MAAM,YAAY,GAAmB,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC1D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB,CAAC,CAAC,CAAC;YAEJ,MAAM,MAAM,GAAG,UAAU,CAAC;gBACxB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,YAAY;gBACzB,QAAQ,EAAE,YAAY;aACvB,CAAC,CAAC;YAEH,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC/C,OAAO,CAAC,QAAQ,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YACzD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,5 +1,5 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- import { type IDocumentDriveServer } from "document-drive";
2
+ import type { IDocumentDriveServer } from "document-drive";
3
3
  export declare const ReactorMcpInstructions = "MUST BE USED when handling documents or document-models for the Powerhouse/Vetra ecosystem.\nThere are 5 main concepts to know of: \n- Document Model: A template for creating documents. It defines the schema and allowed operations for a type of document.\n- Document: An instance of a document model. It contains actual data following the structure defined by the document model and can be changed using operations.\n- Drive: A document of type \"powerhouse/document-drive\" which represents a collection of documents and folders. To add documents to a drive, use the \"addActions\" tool with an \"ADD_FILE\" action.\n- Action: A proposed change to a document. It is a JSON object with the action name and input that defines the action to be taken on the document. Should be dispatched by calling the \"addActions\" tool.\n- Operation: A change done to a document. It contains the action object plus additional metadata such as the index of the operation in the document history, the timestamp it was added, the hash of the resulting document data, the number of operations skipped, and the error message if the operation failed. Actions dispatched with \"addActions\" get converted into an operation.\n\nWhen planning to add multiple actions to a document, try to reduce the number of \"addActions\" calls to a minimum by adding multiple actions at once.\nUnless the user specifies otherwise, and a drive with slug \"vetra\" is available, add newly created documents to it.\n\nExamples:\n<example>Context: User needs to create a new document model for their application. user: 'I need to create a user profile document model with fields for name, email, and preferences' assistant: 'I'll use the reactor-mcp-server to help you create this document model.' <commentary>Since the user is requesting document model creation, use the reactor-mcp-document-expert agent to ensure proper reactor-mcp tool usage.</commentary></example> <example>Context: User is building a content management system and needs create documents for certain types of document models. user: 'Can you help me create example documents for blog posts and categories document models?' assistant: 'Let me use the reactor-mcp-server to create these documents using the appropriate reactor-mcp tool calls.' <commentary>Document model creation requires the reactor-mcp-server tool calls to ensure compliance.</commentary></example>\n<example>Context: User needs to create a new document instance of a given document model. user: 'I need to create a demo user profile document' assistant: 'I'll use the reactor-mcp-server to help you create this document with example values.' <commentary>Since the user is requesting document model creation, use the reactor-mcp-document-expert agent to ensure proper reactor-mcp tool usage.</commentary></example> <example>Context: User is building a content management system and needs create documents for certain types of document models. user: 'Can you help me create example documents for blog posts and categories document models?' assistant: 'Let me use the reactor-mcp-server to create these documents using the appropriate reactor-mcp tool calls.' <commentary>Document creation requires the reactor-mcp-server tool calls to ensure compliance.</commentary></example>\n";
4
4
  export declare function createServer(reactor: IDocumentDriveServer): Promise<McpServer>;
5
5
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,eAAO,MAAM,sBAAsB,+sGAclC,CAAC;AAEF,wBAAsB,YAAY,CAAC,OAAO,EAAE,oBAAoB,sBAoD/D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,eAAO,MAAM,sBAAsB,+sGAclC,CAAC;AAEF,wBAAsB,YAAY,CAChC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,SAAS,CAAC,CAmDpB"}
@@ -1,5 +1,5 @@
1
- import { createReactorMcpProvider } from "#mcp/reactor.js";
2
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { createReactorMcpProvider } from "./tools/reactor.js";
3
3
  export const ReactorMcpInstructions = `MUST BE USED when handling documents or document-models for the Powerhouse/Vetra ecosystem.
4
4
  There are 5 main concepts to know of:
5
5
  - Document Model: A template for creating documents. It defines the schema and allowed operations for a type of document.
@@ -49,7 +49,6 @@ export async function createServer(reactor) {
49
49
  const { callback, ...toolSchema } = reactorProvider.tools.getDocumentModels;
50
50
  // server.registerTool("getDocumentModels", toolSchema, callback);
51
51
  Object.entries(reactorProvider.tools).forEach(([toolName, { callback, ...schema }]) => {
52
- // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
53
52
  server.registerTool(toolName, schema, callback);
54
53
  });
55
54
  return server;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;CAcrC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA6B;IAC9D,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,sBAAsB;KACrC,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE;gBACT,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI;aAClB;SACF;KACF,CACF,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,cAAc,EACd,wBAAwB,EACxB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,YAAY;KACvB,EACD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACR,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,sBAAsB;aAC7B;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC5E,kEAAkE;IAClE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAC3C,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,iEAAiE;QACjE,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAa,EAAE,QAAe,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;CAcrC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAA6B;IAE7B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;QACE,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,sBAAsB;QACnC,YAAY,EAAE,sBAAsB;KACrC,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;YACT,SAAS,EAAE;gBACT,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;aAClB;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI;aAClB;SACF;KACF,CACF,CAAC;IAEF,MAAM,CAAC,gBAAgB,CACrB,cAAc,EACd,wBAAwB,EACxB;QACE,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,0DAA0D;QACvE,QAAQ,EAAE,YAAY;KACvB,EACD,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACR,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,sBAAsB;aAC7B;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,eAAe,GAAG,MAAM,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEhE,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC5E,kEAAkE;IAClE,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,OAAO,CAC3C,CAAC,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAa,EAAE,QAAe,CAAC,CAAC;IAChE,CAAC,CACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface IMcpOptions {
2
+ remoteDrive?: string;
3
+ root?: string;
4
+ documentModelsDir?: string;
5
+ }
6
+ export declare function initStdioMcpServer(options?: IMcpOptions): Promise<void>;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/stdio/index.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAmBD,wBAAsB,kBAAkB,CAAC,OAAO,CAAC,EAAE,WAAW,iBA4F7D"}
@@ -0,0 +1,94 @@
1
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
2
+ import { driveDocumentModelModule, ReactorBuilder, } from "document-drive";
3
+ import { documentModelDocumentModelModule } from "document-model";
4
+ import { generateId } from "document-model/core";
5
+ import { initFeatureFlags, isDualActionCreateEnabled, } from "../feature-flags.js";
6
+ import { logger } from "../logger.js";
7
+ import { createServer } from "../server.js";
8
+ import { VitePackageLoader } from "./loader.js";
9
+ const baseDocumentModels = [
10
+ documentModelDocumentModelModule,
11
+ driveDocumentModelModule,
12
+ ];
13
+ async function createReactor(documentModels, documentDriveServerOptions) {
14
+ const reactor = new ReactorBuilder(baseDocumentModels.concat(documentModels))
15
+ .withOptions(documentDriveServerOptions)
16
+ .build();
17
+ await reactor.initialize();
18
+ return reactor;
19
+ }
20
+ export async function initStdioMcpServer(options) {
21
+ const { remoteDrive, root, documentModelsDir = "./document-models", } = options ?? {};
22
+ // initialize feature flags
23
+ await initFeatureFlags();
24
+ // if root of project is passed then loads local document models
25
+ let documentModelsLoader;
26
+ const documentModels = [];
27
+ if (root) {
28
+ documentModelsLoader = new VitePackageLoader(root, documentModelsDir);
29
+ try {
30
+ const loadedModels = await documentModelsLoader.load();
31
+ documentModels.push(...loadedModels);
32
+ logger.log("Loaded document models:", loadedModels.map((m) => m.documentModel.global.name).join(", "));
33
+ }
34
+ catch (e) {
35
+ logger.error(e);
36
+ }
37
+ }
38
+ // initializes reactor with loaded document models
39
+ const dualActionCreateEnabled = await isDualActionCreateEnabled();
40
+ const reactor = await createReactor(documentModels, {
41
+ featureFlags: {
42
+ enableDualActionCreate: dualActionCreateEnabled,
43
+ },
44
+ });
45
+ // listens for changes in the local document models to update the reactor
46
+ if (documentModelsLoader) {
47
+ const unsubscribe = await documentModelsLoader.onDocumentModelsChange((models) => {
48
+ reactor.setDocumentModelModules(baseDocumentModels.concat(models));
49
+ });
50
+ process.on("exit", () => {
51
+ unsubscribe();
52
+ });
53
+ }
54
+ // if a remote drive is passed then adds it to the reactor
55
+ if (remoteDrive) {
56
+ try {
57
+ await reactor.addRemoteDrive(remoteDrive, {
58
+ sharingType: "PUBLIC",
59
+ availableOffline: true,
60
+ listeners: [
61
+ {
62
+ block: true,
63
+ callInfo: {
64
+ data: remoteDrive,
65
+ name: "switchboard-push",
66
+ transmitterType: "SwitchboardPush",
67
+ },
68
+ filter: {
69
+ branch: ["main"],
70
+ documentId: ["*"],
71
+ documentType: ["*"],
72
+ scope: ["global"],
73
+ },
74
+ label: "Switchboard Sync",
75
+ listenerId: generateId(),
76
+ system: true,
77
+ },
78
+ ],
79
+ triggers: [],
80
+ });
81
+ }
82
+ catch (e) {
83
+ throw new Error(`Failed to add remote drive "${remoteDrive}": ${e instanceof Error ? e.message : e}`, {
84
+ cause: e,
85
+ });
86
+ }
87
+ }
88
+ // starts the server
89
+ const server = await createServer(reactor);
90
+ // starts Stdio transport
91
+ const transport = new StdioServerTransport();
92
+ await server.connect(transport);
93
+ }
94
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/stdio/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type DocumentModelModule } from "document-model";
1
+ import type { DocumentModelModule } from "document-model";
2
2
  interface IPackageLoader {
3
3
  load(): Promise<DocumentModelModule[]>;
4
4
  onDocumentModelsChange(callback: (models: DocumentModelModule[]) => void): Promise<() => void>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/stdio/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAM1D,UAAU,cAAc;IACtB,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACvC,sBAAsB,CACpB,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI,GAChD,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;CACxB;AAkBD,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiD;IAExE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAE3C,OAAO,CAAC,IAAI,CAA4B;gBAE5B,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAKnD,OAAO,KAAK,QAAQ,GAEnB;YAEa,QAAQ;IA4BhB,IAAI,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAoCtC,sBAAsB,CAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI;CAepD"}
@@ -9,6 +9,10 @@ function debounce(func, delay = 100) {
9
9
  timeoutId = setTimeout(() => func(...args), delay);
10
10
  };
11
11
  }
12
+ function isSubpath(parent, dir) {
13
+ const relative = path.relative(parent, dir);
14
+ return relative && !relative.startsWith("..") && !path.isAbsolute(relative);
15
+ }
12
16
  export class VitePackageLoader {
13
17
  logger = childLogger(["reactor-local", "vite-loader"]);
14
18
  root;
@@ -56,7 +60,6 @@ export class VitePackageLoader {
56
60
  // duck type
57
61
  const documentModels = [];
58
62
  for (const dm of exports) {
59
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
60
63
  if (dm.documentModel) {
61
64
  documentModels.push(dm);
62
65
  }
@@ -72,7 +75,7 @@ export class VitePackageLoader {
72
75
  async onDocumentModelsChange(callback) {
73
76
  const vite = await this.initVite();
74
77
  const listener = debounce(async (changedPath) => {
75
- if (path.matchesGlob(changedPath, path.join(this.fullPath, "**"))) {
78
+ if (isSubpath(this.fullPath, changedPath)) {
76
79
  const documentModels = await this.load();
77
80
  callback(documentModels);
78
81
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/stdio/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./reactor.js";
2
+ export * from "./utils.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./reactor.js";
2
+ export * from "./utils.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { IDocumentDriveServer } from "document-drive";
2
- import { type DocumentModelState } from "document-model";
2
+ import type { DocumentModelGlobalState } from "document-model";
3
3
  import { z } from "zod";
4
4
  import type { ToolSchema, ToolWithCallback } from "./types.js";
5
5
  export declare const createDocumentTool: {
@@ -226,7 +226,7 @@ export declare const getDocumentModelSchemaTool: {
226
226
  readonly type: z.ZodString;
227
227
  };
228
228
  readonly outputSchema: {
229
- readonly schema: z.ZodObject<Properties<DocumentModelState>>;
229
+ readonly schema: z.ZodObject<Properties<DocumentModelGlobalState>>;
230
230
  };
231
231
  };
232
232
  export declare const getDocumentModelsTool: {
@@ -242,15 +242,15 @@ export declare const getDocumentModelsTool: {
242
242
  authorName: z.ZodString;
243
243
  authorWebsite: z.ZodString;
244
244
  }, "strip", z.ZodTypeAny, {
245
- type: string;
246
245
  name: string;
246
+ type: string;
247
247
  description: string;
248
248
  extension: string;
249
249
  authorName: string;
250
250
  authorWebsite: string;
251
251
  }, {
252
- type: string;
253
252
  name: string;
253
+ type: string;
254
254
  description: string;
255
255
  extension: string;
256
256
  authorName: string;
@@ -474,7 +474,7 @@ declare const allTools: readonly [{
474
474
  readonly type: z.ZodString;
475
475
  };
476
476
  readonly outputSchema: {
477
- readonly schema: z.ZodObject<Properties<DocumentModelState>>;
477
+ readonly schema: z.ZodObject<Properties<DocumentModelGlobalState>>;
478
478
  };
479
479
  }, {
480
480
  readonly name: "getDocumentModels";
@@ -489,15 +489,15 @@ declare const allTools: readonly [{
489
489
  authorName: z.ZodString;
490
490
  authorWebsite: z.ZodString;
491
491
  }, "strip", z.ZodTypeAny, {
492
- type: string;
493
492
  name: string;
493
+ type: string;
494
494
  description: string;
495
495
  extension: string;
496
496
  authorName: string;
497
497
  authorWebsite: string;
498
498
  }, {
499
- type: string;
500
499
  name: string;
500
+ type: string;
501
501
  description: string;
502
502
  extension: string;
503
503
  authorName: string;
@@ -807,15 +807,15 @@ export declare function createReactorMcpProvider(reactor: IDocumentDriveServer):
807
807
  authorName: z.ZodString;
808
808
  authorWebsite: z.ZodString;
809
809
  }, "strip", z.ZodTypeAny, {
810
- type: string;
811
810
  name: string;
811
+ type: string;
812
812
  description: string;
813
813
  extension: string;
814
814
  authorName: string;
815
815
  authorWebsite: string;
816
816
  }, {
817
- type: string;
818
817
  name: string;
818
+ type: string;
819
819
  description: string;
820
820
  extension: string;
821
821
  authorName: string;
@@ -832,7 +832,7 @@ export declare function createReactorMcpProvider(reactor: IDocumentDriveServer):
832
832
  readonly type: z.ZodString;
833
833
  };
834
834
  readonly outputSchema: {
835
- readonly schema: z.ZodObject<Properties<DocumentModelState>>;
835
+ readonly schema: z.ZodObject<Properties<DocumentModelGlobalState>>;
836
836
  };
837
837
  } & {
838
838
  callback: (args: {