@powerhousedao/ph-cli 5.0.3 → 5.0.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.
- package/dist/src/commands/generate.d.ts.map +1 -1
- package/dist/src/commands/generate.js +1 -0
- package/dist/src/commands/generate.js.map +1 -1
- package/dist/src/commands/index.d.ts +0 -2
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +0 -2
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/install.d.ts +1 -1
- package/dist/src/commands/install.d.ts.map +1 -1
- package/dist/src/commands/install.js +2 -1
- package/dist/src/commands/install.js.map +1 -1
- package/dist/src/commands/migrate.d.ts +3 -0
- package/dist/src/commands/migrate.d.ts.map +1 -0
- package/dist/src/commands/migrate.js +8 -0
- package/dist/src/commands/migrate.js.map +1 -0
- package/dist/src/commands/register-commands.d.ts.map +1 -1
- package/dist/src/commands/register-commands.js +2 -4
- package/dist/src/commands/register-commands.js.map +1 -1
- package/dist/src/commands/switchboard.d.ts +2 -2
- package/dist/src/commands/switchboard.d.ts.map +1 -1
- package/dist/src/commands/switchboard.js +4 -1
- package/dist/src/commands/switchboard.js.map +1 -1
- package/dist/src/services/generate.d.ts +4 -0
- package/dist/src/services/generate.d.ts.map +1 -1
- package/dist/src/services/generate.js +13 -1
- package/dist/src/services/generate.js.map +1 -1
- package/dist/src/services/migrate/migrate.d.ts +3 -0
- package/dist/src/services/migrate/migrate.d.ts.map +1 -0
- package/dist/src/services/migrate/migrate.js +282 -0
- package/dist/src/services/migrate/migrate.js.map +1 -0
- package/dist/src/services/migrate/migrations/templates/document-models.d.ts +2 -0
- package/dist/src/services/migrate/migrations/templates/document-models.d.ts.map +1 -0
- package/dist/src/services/migrate/migrations/templates/document-models.js +6 -0
- package/dist/src/services/migrate/migrations/templates/document-models.js.map +1 -0
- package/dist/src/services/migrate/migrations/templates/editors.d.ts +2 -0
- package/dist/src/services/migrate/migrations/templates/editors.d.ts.map +1 -0
- package/dist/src/services/migrate/migrations/templates/editors.js +6 -0
- package/dist/src/services/migrate/migrations/templates/editors.js.map +1 -0
- package/dist/src/services/migrate/migrations/templates/index.d.ts +2 -0
- package/dist/src/services/migrate/migrations/templates/index.d.ts.map +1 -0
- package/dist/src/services/migrate/migrations/templates/index.js +7 -0
- package/dist/src/services/migrate/migrations/templates/index.js.map +1 -0
- package/dist/src/services/migrate/migrations/templates/packageJson.d.ts +55 -0
- package/dist/src/services/migrate/migrations/templates/packageJson.d.ts.map +1 -0
- package/dist/src/services/migrate/migrations/templates/packageJson.js +55 -0
- package/dist/src/services/migrate/migrations/templates/packageJson.js.map +1 -0
- package/dist/src/services/migrate/migrations/templates/tsConfig.d.ts +2 -0
- package/dist/src/services/migrate/migrations/templates/tsConfig.d.ts.map +1 -0
- package/dist/src/services/migrate/migrations/templates/tsConfig.js +45 -0
- package/dist/src/services/migrate/migrations/templates/tsConfig.js.map +1 -0
- package/dist/src/services/switchboard.d.ts +29 -0
- package/dist/src/services/switchboard.d.ts.map +1 -1
- package/dist/src/services/switchboard.js +2 -1
- package/dist/src/services/switchboard.js.map +1 -1
- package/dist/src/services/vetra.d.ts.map +1 -1
- package/dist/src/services/vetra.js +27 -8
- package/dist/src/services/vetra.js.map +1 -1
- package/dist/src/utils/configure-vetra-github-url.d.ts +12 -0
- package/dist/src/utils/configure-vetra-github-url.d.ts.map +1 -0
- package/dist/src/utils/configure-vetra-github-url.js +230 -0
- package/dist/src/utils/configure-vetra-github-url.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +12 -10
- package/dist/src/commands/dev.d.ts +0 -6
- package/dist/src/commands/dev.d.ts.map +0 -1
- package/dist/src/commands/dev.js +0 -25
- package/dist/src/commands/dev.js.map +0 -1
- package/dist/src/commands/reactor.d.ts +0 -9
- package/dist/src/commands/reactor.d.ts.map +0 -1
- package/dist/src/commands/reactor.js +0 -43
- package/dist/src/commands/reactor.js.map +0 -1
- package/dist/src/services/dev.d.ts +0 -10
- package/dist/src/services/dev.d.ts.map +0 -1
- package/dist/src/services/dev.js +0 -77
- package/dist/src/services/dev.js.map +0 -1
- package/dist/src/services/reactor.d.ts +0 -36
- package/dist/src/services/reactor.d.ts.map +0 -1
- package/dist/src/services/reactor.js +0 -92
- package/dist/src/services/reactor.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@powerhousedao/ph-cli",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "AGPL-3.0-only",
|
|
6
6
|
"type": "module",
|
|
@@ -26,19 +26,21 @@
|
|
|
26
26
|
"concurrently": "^9.1.2",
|
|
27
27
|
"copyfiles": "^2.4.1",
|
|
28
28
|
"nodemon": "^3.1.9",
|
|
29
|
-
"vitest": "^3.2.4"
|
|
29
|
+
"vitest": "^3.2.4",
|
|
30
|
+
"document-drive": "5.0.4",
|
|
31
|
+
"document-model": "5.0.4"
|
|
30
32
|
},
|
|
31
33
|
"dependencies": {
|
|
32
34
|
"colorette": "^2.0.20",
|
|
33
35
|
"commander": "^12.1.0",
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"@powerhousedao/
|
|
38
|
-
"@powerhousedao/
|
|
39
|
-
"@powerhousedao/
|
|
40
|
-
"
|
|
41
|
-
"
|
|
36
|
+
"read-pkg": "^9.0.1",
|
|
37
|
+
"ts-morph": "^26.0.0",
|
|
38
|
+
"write-pkg": "^7.0.0",
|
|
39
|
+
"@powerhousedao/builder-tools": "5.0.4",
|
|
40
|
+
"@powerhousedao/codegen": "5.0.4",
|
|
41
|
+
"@powerhousedao/common": "5.0.4",
|
|
42
|
+
"@powerhousedao/config": "5.0.4",
|
|
43
|
+
"@powerhousedao/switchboard": "5.0.4"
|
|
42
44
|
},
|
|
43
45
|
"scripts": {
|
|
44
46
|
"tsc": "tsc",
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { Command } from "commander";
|
|
2
|
-
import type { DevOptions } from "../services/dev.js";
|
|
3
|
-
import type { CommandActionType } from "../types.js";
|
|
4
|
-
export declare const dev: CommandActionType<[DevOptions]>;
|
|
5
|
-
export declare function devCommand(program: Command): void;
|
|
6
|
-
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/commands/dev.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,GAAG,EAAE,iBAAiB,CAAC,CAAC,UAAU,CAAC,CAE/C,CAAC;AAEF,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,QAqB1C"}
|
package/dist/src/commands/dev.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { devHelp } from "../help.js";
|
|
2
|
-
import { setCustomHelp } from "../utils.js";
|
|
3
|
-
async function startDev(options) {
|
|
4
|
-
const Dev = await import("../services/dev.js");
|
|
5
|
-
const { startDev } = Dev;
|
|
6
|
-
return startDev(options);
|
|
7
|
-
}
|
|
8
|
-
export const dev = async (options) => {
|
|
9
|
-
return startDev(options);
|
|
10
|
-
};
|
|
11
|
-
export function devCommand(program) {
|
|
12
|
-
const cmd = program
|
|
13
|
-
.command("dev")
|
|
14
|
-
.description("Starts dev environment")
|
|
15
|
-
.option("--generate", "generate code when document model is updated")
|
|
16
|
-
.option("--switchboard-port <port>", "port to use for the switchboard")
|
|
17
|
-
.option("--https-key-file <HTTPS_KEY_FILE>", "path to the ssl key file")
|
|
18
|
-
.option("--https-cert-file <HTTPS_CERT_FILE>", "path to the ssl cert file")
|
|
19
|
-
.option("--config-file <configFile>", "Path to the powerhouse.config.js file")
|
|
20
|
-
.option("-w, --watch", "if the switchboard should watch for local changes to document models and processors");
|
|
21
|
-
// Use the setCustomHelp utility to apply custom help formatting
|
|
22
|
-
setCustomHelp(cmd, devHelp);
|
|
23
|
-
cmd.action(dev);
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=dev.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/commands/dev.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAGrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,QAAQ,CAAC,OAAmB;IACzC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IACzB,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAoC,KAAK,EAAE,OAAO,EAAE,EAAE;IACpE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,GAAG,GAAG,OAAO;SAChB,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,YAAY,EAAE,8CAA8C,CAAC;SACpE,MAAM,CAAC,2BAA2B,EAAE,iCAAiC,CAAC;SACtE,MAAM,CAAC,mCAAmC,EAAE,0BAA0B,CAAC;SACvE,MAAM,CAAC,qCAAqC,EAAE,2BAA2B,CAAC;SAC1E,MAAM,CACL,4BAA4B,EAC5B,uCAAuC,CACxC;SACA,MAAM,CACL,aAAa,EACb,qFAAqF,CACtF,CAAC;IAEJ,gEAAgE;IAChE,aAAa,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE5B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { LocalReactor } from "@powerhousedao/reactor-local";
|
|
2
|
-
import type { Command } from "commander";
|
|
3
|
-
import type { ReactorOptions } from "../services/reactor.js";
|
|
4
|
-
import type { CommandActionType } from "../types.js";
|
|
5
|
-
export declare const switchboard: CommandActionType<[
|
|
6
|
-
ReactorOptions
|
|
7
|
-
], Promise<LocalReactor>>;
|
|
8
|
-
export declare function reactorCommand(program: Command): void;
|
|
9
|
-
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/commands/reactor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,WAAW,EAAE,iBAAiB,CACzC;IAAC,cAAc;CAAC,EAChB,OAAO,CAAC,YAAY,CAAC,CAGtB,CAAC;AAEF,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,QAqC9C"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { reactorHelp } from "../help.js";
|
|
2
|
-
import { setCustomHelp } from "../utils.js";
|
|
3
|
-
async function startLocalSwitchboard(options) {
|
|
4
|
-
const Switchboard = await import("../services/reactor.js");
|
|
5
|
-
const { startLocalReactor } = Switchboard;
|
|
6
|
-
return startLocalReactor(options);
|
|
7
|
-
}
|
|
8
|
-
export const switchboard = async (options) => {
|
|
9
|
-
return startLocalSwitchboard(options);
|
|
10
|
-
};
|
|
11
|
-
export function reactorCommand(program) {
|
|
12
|
-
const command = program
|
|
13
|
-
.command("reactor")
|
|
14
|
-
.description("Starts local reactor")
|
|
15
|
-
.option("--port <PORT>", "port to host the api", "4001")
|
|
16
|
-
.option("--config-file <configFile>", "Path to the powerhouse.config.js file", "./powerhouse.config.json")
|
|
17
|
-
.option("--generate", "generate code when document model is updated")
|
|
18
|
-
.option("--db-path <DB_PATH>", "path to the database")
|
|
19
|
-
.option("--https-key-file <HTTPS_KEY_FILE>", "path to the ssl key file")
|
|
20
|
-
.option("--https-cert-file <HTTPS_CERT_FILE>", "path to the ssl cert file")
|
|
21
|
-
.option("-w, --watch", "if the reactor should watch for local changes to document models and processors")
|
|
22
|
-
.option("--disable-default-drive", "disable automatic creation of the default 'powerhouse' drive")
|
|
23
|
-
.option("--packages <packages...>", "list of packages to be loaded, if defined then packages on config file are ignored")
|
|
24
|
-
.option("--remote-drives <urls>", "comma-separated remote drive URLs")
|
|
25
|
-
.option("--remote-drives-config <configFile>", "path to JSON file containing remote drive configurations")
|
|
26
|
-
.option("--mcp", "enable Mcp route at /mcp. Default: true")
|
|
27
|
-
.action(async (...args) => {
|
|
28
|
-
await switchboard(...args);
|
|
29
|
-
});
|
|
30
|
-
setCustomHelp(command, reactorHelp);
|
|
31
|
-
}
|
|
32
|
-
if (process.argv.at(2) === "spawn") {
|
|
33
|
-
const optionsArg = process.argv.at(3);
|
|
34
|
-
const options = optionsArg ? JSON.parse(optionsArg) : {};
|
|
35
|
-
startLocalSwitchboard(options)
|
|
36
|
-
.then((reactor) => {
|
|
37
|
-
process.send?.(`reactorUrl:${reactor.driveUrl}`);
|
|
38
|
-
})
|
|
39
|
-
.catch((e) => {
|
|
40
|
-
throw e;
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=reactor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/commands/reactor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,KAAK,UAAU,qBAAqB,CAAC,OAAuB;IAC1D,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;IAC3D,MAAM,EAAE,iBAAiB,EAAE,GAAG,WAAW,CAAC;IAC1C,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAGpB,KAAK,EAAE,OAAO,EAAE,EAAE;IACpB,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,OAAO,GAAG,OAAO;SACpB,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,sBAAsB,CAAC;SACnC,MAAM,CAAC,eAAe,EAAE,sBAAsB,EAAE,MAAM,CAAC;SACvD,MAAM,CACL,4BAA4B,EAC5B,uCAAuC,EACvC,0BAA0B,CAC3B;SACA,MAAM,CAAC,YAAY,EAAE,8CAA8C,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;SACrD,MAAM,CAAC,mCAAmC,EAAE,0BAA0B,CAAC;SACvE,MAAM,CAAC,qCAAqC,EAAE,2BAA2B,CAAC;SAC1E,MAAM,CACL,aAAa,EACb,iFAAiF,CAClF;SACA,MAAM,CACL,yBAAyB,EACzB,8DAA8D,CAC/D;SACA,MAAM,CACL,0BAA0B,EAC1B,oFAAoF,CACrF;SACA,MAAM,CAAC,wBAAwB,EAAE,mCAAmC,CAAC;SACrE,MAAM,CACL,qCAAqC,EACrC,0DAA0D,CAC3D;SACA,MAAM,CAAC,OAAO,EAAE,yCAAyC,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,GAAG,IAAsB,EAAE,EAAE;QAC1C,MAAM,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEL,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,qBAAqB,CAAC,OAAO,CAAC;SAC3B,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,OAAO,CAAC,IAAI,EAAE,CAAC,cAAc,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAU,EAAE,EAAE;QACpB,MAAM,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type DevOptions = {
|
|
2
|
-
generate?: boolean;
|
|
3
|
-
watch?: boolean;
|
|
4
|
-
switchboardPort?: number;
|
|
5
|
-
configFile?: string;
|
|
6
|
-
httpsKeyFile?: string;
|
|
7
|
-
httpsCertFile?: string;
|
|
8
|
-
};
|
|
9
|
-
export declare function startDev({ generate, watch, switchboardPort, configFile, }: DevOptions): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=dev.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../src/services/dev.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AA4EF,wBAAsB,QAAQ,CAAC,EAC7B,QAAQ,EACR,KAAK,EACL,eAA4C,EAC5C,UAAU,GACX,EAAE,UAAU,iBAcZ"}
|
package/dist/src/services/dev.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { getConfig } from "@powerhousedao/config/node";
|
|
2
|
-
import { blue, green, red } from "colorette";
|
|
3
|
-
import { fork } from "node:child_process";
|
|
4
|
-
import path, { dirname } from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { DefaultReactorOptions } from "./reactor.js";
|
|
7
|
-
const __dirname = import.meta.dirname || dirname(fileURLToPath(import.meta.url));
|
|
8
|
-
function spawnLocalSwitchboard(options) {
|
|
9
|
-
const child = fork(path.join(dirname(__dirname), "commands", "switchboard.js"), ["spawn", JSON.stringify(options)], { silent: true });
|
|
10
|
-
return new Promise((resolve) => {
|
|
11
|
-
child.on("message", (message) => {
|
|
12
|
-
const text = message.toString();
|
|
13
|
-
if (text.startsWith("driveUrl:")) {
|
|
14
|
-
const driveUrl = text.substring("driveUrl:".length);
|
|
15
|
-
resolve({ driveUrl });
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
child.stdout.on("data", (data) => {
|
|
19
|
-
const message = data.toString();
|
|
20
|
-
const lines = message.split("\n").filter((line) => line.trim().length);
|
|
21
|
-
for (const line of lines) {
|
|
22
|
-
process.stdout.write(blue(`[Switchboard]: ${line}\n`));
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
child.stderr.on("error", (data) => {
|
|
26
|
-
process.stderr.write(red(`[Switchboard]: ${data.toString()}`));
|
|
27
|
-
});
|
|
28
|
-
child.on("error", (err) => {
|
|
29
|
-
process.stderr.write(red(`[Switchboard]: ${err}`));
|
|
30
|
-
});
|
|
31
|
-
child.on("exit", (code) => {
|
|
32
|
-
console.log(`Switchboard process exited with code ${code}`);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
async function spawnConnect(options = {}, localReactorUrl) {
|
|
37
|
-
if (localReactorUrl) {
|
|
38
|
-
options.defaultDrivesUrl = options.defaultDrivesUrl
|
|
39
|
-
? options.defaultDrivesUrl.concat([localReactorUrl])
|
|
40
|
-
: [localReactorUrl];
|
|
41
|
-
}
|
|
42
|
-
const child = fork(path.join(dirname(__dirname), "commands", "connect.js"), ["spawn", JSON.stringify(options)], {
|
|
43
|
-
silent: true,
|
|
44
|
-
env: {
|
|
45
|
-
...process.env,
|
|
46
|
-
},
|
|
47
|
-
});
|
|
48
|
-
return new Promise((resolve) => {
|
|
49
|
-
child.stdout.on("data", (data) => {
|
|
50
|
-
resolve();
|
|
51
|
-
process.stdout.write(green(`[Connect]: ${data.toString()}`));
|
|
52
|
-
});
|
|
53
|
-
child.stderr.on("data", (data) => {
|
|
54
|
-
process.stderr.write(red(`[Connect]: ${data.toString()}`));
|
|
55
|
-
});
|
|
56
|
-
child.on("close", (code) => {
|
|
57
|
-
console.log(`Connect process exited with code ${code}`);
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
export async function startDev({ generate, watch, switchboardPort = DefaultReactorOptions.port, configFile, }) {
|
|
62
|
-
try {
|
|
63
|
-
const baseConfig = getConfig(configFile);
|
|
64
|
-
const https = baseConfig.reactor?.https;
|
|
65
|
-
const { driveUrl } = await spawnLocalSwitchboard({
|
|
66
|
-
generate,
|
|
67
|
-
port: switchboardPort,
|
|
68
|
-
watch,
|
|
69
|
-
https,
|
|
70
|
-
});
|
|
71
|
-
await spawnConnect({ configFile }, driveUrl);
|
|
72
|
-
}
|
|
73
|
-
catch (error) {
|
|
74
|
-
console.error(error);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=dev.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../../src/services/dev.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { LocalReactor, StartServerOptions } from "@powerhousedao/reactor-local";
|
|
2
|
-
export type ReactorOptions = StartServerOptions & {
|
|
3
|
-
configFile?: string;
|
|
4
|
-
generate?: boolean;
|
|
5
|
-
watch?: boolean;
|
|
6
|
-
dbPath?: string;
|
|
7
|
-
disableDefaultDrive?: boolean;
|
|
8
|
-
remoteDrives?: string;
|
|
9
|
-
remoteDrivesConfig?: string;
|
|
10
|
-
};
|
|
11
|
-
export declare const DefaultReactorOptions: {
|
|
12
|
-
dev: boolean;
|
|
13
|
-
port: number;
|
|
14
|
-
storage: {
|
|
15
|
-
type: "filesystem";
|
|
16
|
-
filesystemPath: string;
|
|
17
|
-
};
|
|
18
|
-
dbPath: string;
|
|
19
|
-
drive: {
|
|
20
|
-
id: string;
|
|
21
|
-
slug: string;
|
|
22
|
-
global: {
|
|
23
|
-
name: string;
|
|
24
|
-
icon: string;
|
|
25
|
-
};
|
|
26
|
-
local: {
|
|
27
|
-
availableOffline: true;
|
|
28
|
-
listeners: never[];
|
|
29
|
-
sharingType: string;
|
|
30
|
-
triggers: never[];
|
|
31
|
-
};
|
|
32
|
-
};
|
|
33
|
-
mcp: true;
|
|
34
|
-
};
|
|
35
|
-
export declare function startLocalReactor(reactorOptions: ReactorOptions): Promise<LocalReactor>;
|
|
36
|
-
//# sourceMappingURL=reactor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.d.ts","sourceRoot":"","sources":["../../../src/services/reactor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,YAAY,EAEZ,kBAAkB,EACnB,MAAM,8BAA8B,CAAC;AAatC,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;CAGjC,CAAC;AAgCF,wBAAsB,iBAAiB,CAAC,cAAc,EAAE,cAAc,yBA2BrE"}
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { generateFromFile } from "@powerhousedao/codegen";
|
|
2
|
-
import { getConfig } from "@powerhousedao/config/node";
|
|
3
|
-
import { DefaultStartServerOptions, startServer, } from "@powerhousedao/reactor-local";
|
|
4
|
-
import { InternalTransmitter } from "document-drive";
|
|
5
|
-
import { readFileSync } from "node:fs";
|
|
6
|
-
export const DefaultReactorOptions = {
|
|
7
|
-
...DefaultStartServerOptions,
|
|
8
|
-
dev: true,
|
|
9
|
-
};
|
|
10
|
-
function parseRemoteDrives(remoteDrivesInput, configFile) {
|
|
11
|
-
let drives = [];
|
|
12
|
-
// Parse URLs from --remote-drives
|
|
13
|
-
if (remoteDrivesInput) {
|
|
14
|
-
drives = remoteDrivesInput
|
|
15
|
-
.split(",")
|
|
16
|
-
.map((url) => url.trim())
|
|
17
|
-
.filter((url) => url);
|
|
18
|
-
}
|
|
19
|
-
// Parse config file from --remote-drives-config
|
|
20
|
-
if (configFile) {
|
|
21
|
-
try {
|
|
22
|
-
const fileContent = readFileSync(configFile, "utf-8");
|
|
23
|
-
const configDrives = JSON.parse(fileContent);
|
|
24
|
-
drives = drives.concat(configDrives);
|
|
25
|
-
}
|
|
26
|
-
catch (error) {
|
|
27
|
-
throw new Error(`Failed to read remote drives config file: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return drives;
|
|
31
|
-
}
|
|
32
|
-
export async function startLocalReactor(reactorOptions) {
|
|
33
|
-
const baseConfig = getConfig(reactorOptions.configFile);
|
|
34
|
-
const options = {
|
|
35
|
-
...DefaultReactorOptions,
|
|
36
|
-
...reactorOptions,
|
|
37
|
-
};
|
|
38
|
-
const { https } = baseConfig.reactor ?? { https: false };
|
|
39
|
-
// Parse remote drives configuration
|
|
40
|
-
const remoteDrives = parseRemoteDrives(reactorOptions.remoteDrives, reactorOptions.remoteDrivesConfig);
|
|
41
|
-
const reactor = await startServer({
|
|
42
|
-
...options,
|
|
43
|
-
https,
|
|
44
|
-
logLevel: baseConfig.logLevel,
|
|
45
|
-
storage: baseConfig.reactor?.storage || options.storage,
|
|
46
|
-
remoteDrives,
|
|
47
|
-
});
|
|
48
|
-
if (options.generate) {
|
|
49
|
-
await addGenerateTransmitter(reactor, baseConfig);
|
|
50
|
-
}
|
|
51
|
-
return reactor;
|
|
52
|
-
}
|
|
53
|
-
// TODO: instead of doing this by hand, we should use the processor manager
|
|
54
|
-
async function addGenerateTransmitter(reactor, config) {
|
|
55
|
-
const processor = {
|
|
56
|
-
onStrands: async function (strands) {
|
|
57
|
-
const documentPaths = new Set();
|
|
58
|
-
for (const strand of strands) {
|
|
59
|
-
documentPaths.add(reactor.getDocumentPath(strand.driveId, strand.documentId));
|
|
60
|
-
}
|
|
61
|
-
for (const path of documentPaths) {
|
|
62
|
-
await generateFromFile(path, config);
|
|
63
|
-
}
|
|
64
|
-
return Promise.resolve();
|
|
65
|
-
},
|
|
66
|
-
onDisconnect: () => Promise.resolve(),
|
|
67
|
-
};
|
|
68
|
-
const listenerManager = reactor.server.listeners;
|
|
69
|
-
// todo: simplify
|
|
70
|
-
const listener = {
|
|
71
|
-
driveId: "powerhouse",
|
|
72
|
-
listenerId: "reactor-local-document-model-generator",
|
|
73
|
-
label: "reactor-local-document-model-generator",
|
|
74
|
-
filter: {
|
|
75
|
-
documentType: ["powerhouse/document-model"],
|
|
76
|
-
scope: ["global"],
|
|
77
|
-
branch: ["*"],
|
|
78
|
-
documentId: ["*"],
|
|
79
|
-
},
|
|
80
|
-
block: false,
|
|
81
|
-
system: false,
|
|
82
|
-
callInfo: {
|
|
83
|
-
data: "",
|
|
84
|
-
name: "reactor-local-document-model-generator",
|
|
85
|
-
transmitterType: "Internal",
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
const transmitter = new InternalTransmitter(reactor.server, processor);
|
|
89
|
-
listener.transmitter = transmitter;
|
|
90
|
-
await listenerManager.setListener(listener.driveId, listener);
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=reactor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reactor.js","sourceRoot":"","sources":["../../../src/services/reactor.ts"],"names":[],"mappings":"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"}
|