@powerhousedao/reactor-mcp 4.1.0-dev.4 → 4.1.0-dev.7
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/src/cli.js +4 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +73 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/loader.d.ts +18 -0
- package/dist/src/loader.d.ts.map +1 -0
- package/dist/src/loader.js +86 -0
- package/dist/src/loader.js.map +1 -0
- package/dist/src/mcp/reactor.d.ts +461 -244
- package/dist/src/mcp/reactor.d.ts.map +1 -1
- package/dist/src/mcp/reactor.js +198 -146
- package/dist/src/mcp/reactor.js.map +1 -1
- package/dist/src/mcp/utils.d.ts +8 -21
- package/dist/src/mcp/utils.d.ts.map +1 -1
- package/dist/src/mcp/utils.js +59 -21
- package/dist/src/mcp/utils.js.map +1 -1
- package/dist/src/sdk/chat.d.ts +19 -0
- package/dist/src/sdk/chat.d.ts.map +1 -0
- package/dist/src/sdk/chat.js +59 -0
- package/dist/src/sdk/chat.js.map +1 -0
- package/dist/src/server.d.ts +3 -2
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +38 -759
- package/dist/src/server.js.map +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/package.json +8 -5
- package/dist/src/reactor.d.ts +0 -43
- package/dist/src/reactor.d.ts.map +0 -1
- package/dist/src/reactor.js +0 -142
- package/dist/src/reactor.js.map +0 -1
- package/dist/src/utils.d.ts +0 -10
- package/dist/src/utils.d.ts.map +0 -1
- package/dist/src/utils.js +0 -57
- package/dist/src/utils.js.map +0 -1
package/dist/src/cli.js
CHANGED
package/dist/src/cli.js.map
CHANGED
|
@@ -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,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;
|
|
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"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"
|
|
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,iBA2E/C"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,10 +1,78 @@
|
|
|
1
1
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
2
|
-
import {
|
|
2
|
+
import { driveDocumentModelModule, ReactorBuilder } from "document-drive";
|
|
3
|
+
import { documentModelDocumentModelModule, generateId, } from "document-model";
|
|
4
|
+
import { VitePackageLoader } from "./loader.js";
|
|
3
5
|
import { createServer } from "./server.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
+
await reactor.addRemoteDrive(remoteDrive, {
|
|
49
|
+
sharingType: "PUBLIC",
|
|
50
|
+
availableOffline: true,
|
|
51
|
+
listeners: [
|
|
52
|
+
{
|
|
53
|
+
block: true,
|
|
54
|
+
callInfo: {
|
|
55
|
+
data: remoteDrive,
|
|
56
|
+
name: "switchboard-push",
|
|
57
|
+
transmitterType: "SwitchboardPush",
|
|
58
|
+
},
|
|
59
|
+
filter: {
|
|
60
|
+
branch: ["main"],
|
|
61
|
+
documentId: ["*"],
|
|
62
|
+
documentType: ["*"],
|
|
63
|
+
scope: ["global"],
|
|
64
|
+
},
|
|
65
|
+
label: "Switchboard Sync",
|
|
66
|
+
listenerId: generateId(),
|
|
67
|
+
system: true,
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
triggers: [],
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
// starts the server
|
|
74
|
+
const server = await createServer(reactor);
|
|
75
|
+
// starts Stdio transport
|
|
8
76
|
const transport = new StdioServerTransport();
|
|
9
77
|
await server.connect(transport);
|
|
10
78
|
}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type DocumentModelModule } from "document-model";
|
|
2
|
+
interface IPackageLoader {
|
|
3
|
+
load(): Promise<DocumentModelModule[]>;
|
|
4
|
+
onDocumentModelsChange(callback: (models: DocumentModelModule[]) => void): Promise<() => void>;
|
|
5
|
+
}
|
|
6
|
+
export declare class VitePackageLoader implements IPackageLoader {
|
|
7
|
+
private readonly logger;
|
|
8
|
+
private readonly root;
|
|
9
|
+
private readonly documentModelsDir;
|
|
10
|
+
private vite;
|
|
11
|
+
constructor(root: string, documentModelsDir: string);
|
|
12
|
+
private get fullPath();
|
|
13
|
+
private initVite;
|
|
14
|
+
load(): Promise<DocumentModelModule[]>;
|
|
15
|
+
onDocumentModelsChange(callback: (models: DocumentModelModule[]) => void): Promise<() => void>;
|
|
16
|
+
}
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAK1D,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;AAaD,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;IAqCtC,sBAAsB,CAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,IAAI;CAepD"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { childLogger } from "document-drive";
|
|
2
|
+
import { access } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { createServer } from "vite";
|
|
5
|
+
function debounce(func, delay = 100) {
|
|
6
|
+
let timeoutId;
|
|
7
|
+
return (...args) => {
|
|
8
|
+
clearTimeout(timeoutId);
|
|
9
|
+
timeoutId = setTimeout(() => func(...args), delay);
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export class VitePackageLoader {
|
|
13
|
+
logger = childLogger(["reactor-local", "vite-loader"]);
|
|
14
|
+
root;
|
|
15
|
+
documentModelsDir;
|
|
16
|
+
vite;
|
|
17
|
+
constructor(root, documentModelsDir) {
|
|
18
|
+
this.root = root;
|
|
19
|
+
this.documentModelsDir = documentModelsDir;
|
|
20
|
+
}
|
|
21
|
+
get fullPath() {
|
|
22
|
+
return path.join(this.root, this.documentModelsDir);
|
|
23
|
+
}
|
|
24
|
+
async initVite() {
|
|
25
|
+
if (this.vite) {
|
|
26
|
+
return this.vite;
|
|
27
|
+
}
|
|
28
|
+
this.vite = await createServer({
|
|
29
|
+
root: this.root,
|
|
30
|
+
logLevel: "info",
|
|
31
|
+
server: {
|
|
32
|
+
hmr: false,
|
|
33
|
+
middlewareMode: true,
|
|
34
|
+
warmup: {
|
|
35
|
+
ssrFiles: [this.fullPath],
|
|
36
|
+
},
|
|
37
|
+
fs: {
|
|
38
|
+
allow: [this.fullPath],
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
optimizeDeps: {
|
|
42
|
+
// It's recommended to disable deps optimization
|
|
43
|
+
noDiscovery: true,
|
|
44
|
+
include: [],
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
return this.vite;
|
|
48
|
+
}
|
|
49
|
+
async load() {
|
|
50
|
+
const vite = await this.initVite();
|
|
51
|
+
await access(this.fullPath);
|
|
52
|
+
this.logger.verbose("Loading document models from", this.fullPath);
|
|
53
|
+
try {
|
|
54
|
+
const localDMs = (await vite.ssrLoadModule(this.fullPath));
|
|
55
|
+
const exports = Object.values(localDMs);
|
|
56
|
+
// duck type
|
|
57
|
+
const documentModels = [];
|
|
58
|
+
for (const dm of exports) {
|
|
59
|
+
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
|
60
|
+
if (dm.documentModel) {
|
|
61
|
+
documentModels.push(dm);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
this.logger.verbose(` ➜ Loaded ${documentModels.length} Document Models from: ${this.fullPath}`);
|
|
65
|
+
return documentModels;
|
|
66
|
+
}
|
|
67
|
+
catch (e) {
|
|
68
|
+
this.logger.verbose(` ➜ No Document Models found for: ${this.fullPath}${e ? `\n${JSON.stringify(e)}` : ""}`);
|
|
69
|
+
}
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
async onDocumentModelsChange(callback) {
|
|
73
|
+
const vite = await this.initVite();
|
|
74
|
+
const listener = debounce(async (changedPath) => {
|
|
75
|
+
if (path.matchesGlob(changedPath, path.join(this.fullPath, "**"))) {
|
|
76
|
+
const documentModels = await this.load();
|
|
77
|
+
callback(documentModels);
|
|
78
|
+
}
|
|
79
|
+
}, 100);
|
|
80
|
+
vite.watcher.on("change", listener);
|
|
81
|
+
return () => {
|
|
82
|
+
vite.watcher.off("change", listener);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/loader.ts"],"names":[],"mappings":"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"}
|