@powerhousedao/switchboard 5.1.0 → 5.2.0-staging.2
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/CHANGELOG.md +1279 -57
- package/Dockerfile +9 -1
- package/README.md +0 -1
- package/dist/src/config.d.ts +2 -0
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +14 -0
- package/dist/src/config.js.map +1 -1
- package/dist/src/connect-crypto.d.ts +41 -0
- package/dist/src/connect-crypto.d.ts.map +1 -0
- package/dist/src/connect-crypto.js +127 -0
- package/dist/src/connect-crypto.js.map +1 -0
- package/dist/src/feature-flags.d.ts +0 -2
- package/dist/src/feature-flags.d.ts.map +1 -1
- package/dist/src/feature-flags.js +0 -8
- package/dist/src/feature-flags.js.map +1 -1
- package/dist/src/server.d.ts +1 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +55 -17
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +19 -3
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +4 -2
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +31 -5
- package/dist/src/utils.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/entrypoint.sh +2 -2
- package/package.json +12 -6
- package/tsconfig.json +3 -0
package/Dockerfile
CHANGED
|
@@ -25,6 +25,7 @@ ENV PH_SWITCHBOARD_GUESTS_LIST="0x123,0x456"
|
|
|
25
25
|
# Database
|
|
26
26
|
ENV PH_SWITCHBOARD_DATABASE_URL="dev.db"
|
|
27
27
|
ENV PH_SWITCHBOARD_REDIS_URL=""
|
|
28
|
+
ENV SKIP_DB_MIGRATIONS="false"
|
|
28
29
|
|
|
29
30
|
# Heroku Workaround
|
|
30
31
|
ENV PORT=4001
|
|
@@ -36,6 +37,8 @@ ENV PH_SWITCHBOARD_PORT=$PORT
|
|
|
36
37
|
ARG TAG=latest
|
|
37
38
|
ENV TAG=$TAG
|
|
38
39
|
# RUN apk add --no-cache openssl
|
|
40
|
+
# Configure JSR registry for @jsr scoped packages
|
|
41
|
+
RUN pnpm config set @jsr:registry https://npm.jsr.io
|
|
39
42
|
RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
|
|
40
43
|
RUN case "$TAG" in \
|
|
41
44
|
*dev*) ph init project --dev --package-manager pnpm ;; \
|
|
@@ -46,7 +49,12 @@ RUN case "$TAG" in \
|
|
|
46
49
|
|
|
47
50
|
WORKDIR /app/project
|
|
48
51
|
|
|
49
|
-
#
|
|
52
|
+
# Install curl for health checks
|
|
53
|
+
RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
|
|
50
54
|
|
|
55
|
+
EXPOSE $PORT
|
|
56
|
+
|
|
57
|
+
HEALTHCHECK --interval=30s --timeout=3s --start-period=30s --retries=3 \
|
|
58
|
+
CMD curl -f http://localhost:${PORT}/health || exit 1
|
|
51
59
|
|
|
52
60
|
ENTRYPOINT ["/app/entrypoint.sh"]
|
package/README.md
CHANGED
package/dist/src/config.d.ts
CHANGED
package/dist/src/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,UAAU,MAAM;IACd,QAAQ,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,UAAU,CAAC;CACnB;AACD,eAAO,MAAM,MAAM,EAAE,MA4BpB,CAAC"}
|
package/dist/src/config.js
CHANGED
|
@@ -15,5 +15,19 @@ export const config = {
|
|
|
15
15
|
? Number(process.env.PH_SWITCHBOARD_PORT)
|
|
16
16
|
: (switchboard?.port ?? 4001),
|
|
17
17
|
mcp: true,
|
|
18
|
+
drive: {
|
|
19
|
+
id: "powerhouse",
|
|
20
|
+
slug: "powerhouse",
|
|
21
|
+
global: {
|
|
22
|
+
name: "Powerhouse",
|
|
23
|
+
icon: "https://ipfs.io/ipfs/QmcaTDBYn8X2psGaXe7iQ6qd8q6oqHLgxvMX9yXf7f9uP7",
|
|
24
|
+
},
|
|
25
|
+
local: {
|
|
26
|
+
availableOffline: true,
|
|
27
|
+
listeners: [],
|
|
28
|
+
sharingType: "public",
|
|
29
|
+
triggers: [],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
18
32
|
};
|
|
19
33
|
//# sourceMappingURL=config.js.map
|
package/dist/src/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;AAC7B,MAAM,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;AASjC,MAAM,CAAC,MAAM,MAAM,GAAW;IAC5B,QAAQ,EAAE;QACR,0FAA0F;QAC1F,GAAG,EACD,OAAO,CAAC,GAAG,CAAC,2BAA2B;YACvC,WAAW,EAAE,QAAQ,EAAE,GAAG;YAC1B,QAAQ;KACX;IACD,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,mBAAmB;QAC/B,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACzC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,CAAC;IACjC,GAAG,EAAE,IAAI;IACT,KAAK,EAAE;QACL,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE;YACN,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,qEAAqE;SAC5E;QACD,KAAK,EAAE;YACL,gBAAgB,EAAE,IAAI;YACtB,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,EAAE;SACb;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type IConnectCrypto, type JsonWebKeyPairStorage, type JwkKeyPair } from "@renown/sdk";
|
|
2
|
+
/**
|
|
3
|
+
* Key storage that supports:
|
|
4
|
+
* 1. PH_RENOWN_PRIVATE_KEY environment variable (JSON-encoded JwkKeyPair)
|
|
5
|
+
* 2. Custom file path passed via options
|
|
6
|
+
* 3. Falls back to file storage at .keypair.json in current working directory
|
|
7
|
+
*/
|
|
8
|
+
export declare class SwitchboardKeyStorage implements JsonWebKeyPairStorage {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(filePath?: string);
|
|
11
|
+
loadKeyPair(): Promise<JwkKeyPair | undefined>;
|
|
12
|
+
saveKeyPair(keyPair: JwkKeyPair): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface ConnectCryptoOptions {
|
|
15
|
+
/** Path to the keypair file. Defaults to .keypair.json in cwd */
|
|
16
|
+
keypairPath?: string;
|
|
17
|
+
/** If true, won't generate a new keypair if none exists */
|
|
18
|
+
requireExisting?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Initialize ConnectCrypto for the switchboard.
|
|
22
|
+
* This allows the switchboard to authenticate with remote services
|
|
23
|
+
* using the same identity established during `ph login`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function initConnectCrypto(options?: ConnectCryptoOptions): Promise<IConnectCrypto | null>;
|
|
26
|
+
/**
|
|
27
|
+
* Get the current ConnectCrypto instance.
|
|
28
|
+
* Returns null if not initialized.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getConnectCrypto(): IConnectCrypto | null;
|
|
31
|
+
/**
|
|
32
|
+
* Get the DID of the current ConnectCrypto instance.
|
|
33
|
+
* Returns null if not initialized.
|
|
34
|
+
*/
|
|
35
|
+
export declare function getConnectDid(): Promise<string | null>;
|
|
36
|
+
/**
|
|
37
|
+
* Get a bearer token for authenticating with remote services.
|
|
38
|
+
* Returns null if ConnectCrypto is not initialized.
|
|
39
|
+
*/
|
|
40
|
+
export declare function getBearerToken(driveUrl: string, address?: string, refresh?: boolean): Promise<string | null>;
|
|
41
|
+
//# sourceMappingURL=connect-crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-crypto.d.ts","sourceRoot":"","sources":["../../src/connect-crypto.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAUrB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,qBAAqB;;gBAGrD,QAAQ,CAAC,EAAE,MAAM;IAUvB,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAuB9C,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CAgCtD;AAKD,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CA0BhC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,GAAG,IAAI,CAExD;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAK5D;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,UAAQ,GACd,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAKxB"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ConnectCrypto, } from "@renown/sdk";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { childLogger } from "document-drive";
|
|
5
|
+
const logger = childLogger(["switchboard", "connect-crypto"]);
|
|
6
|
+
const ENV_KEY_NAME = "PH_RENOWN_PRIVATE_KEY";
|
|
7
|
+
const DEFAULT_KEYPAIR_PATH = join(process.cwd(), ".keypair.json");
|
|
8
|
+
/**
|
|
9
|
+
* Key storage that supports:
|
|
10
|
+
* 1. PH_RENOWN_PRIVATE_KEY environment variable (JSON-encoded JwkKeyPair)
|
|
11
|
+
* 2. Custom file path passed via options
|
|
12
|
+
* 3. Falls back to file storage at .keypair.json in current working directory
|
|
13
|
+
*/
|
|
14
|
+
export class SwitchboardKeyStorage {
|
|
15
|
+
#filePath;
|
|
16
|
+
constructor(filePath) {
|
|
17
|
+
this.#filePath = filePath || DEFAULT_KEYPAIR_PATH;
|
|
18
|
+
// Ensure directory exists
|
|
19
|
+
const dir = dirname(this.#filePath);
|
|
20
|
+
if (!existsSync(dir)) {
|
|
21
|
+
mkdirSync(dir, { recursive: true });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async loadKeyPair() {
|
|
25
|
+
// First check environment variable
|
|
26
|
+
const envKey = process.env[ENV_KEY_NAME];
|
|
27
|
+
if (envKey) {
|
|
28
|
+
try {
|
|
29
|
+
const keyPair = JSON.parse(envKey);
|
|
30
|
+
// Validate it has the required structure
|
|
31
|
+
if (keyPair.publicKey && keyPair.privateKey) {
|
|
32
|
+
logger.debug("Loaded keypair from environment variable");
|
|
33
|
+
return keyPair;
|
|
34
|
+
}
|
|
35
|
+
logger.warn(`${ENV_KEY_NAME} is set but doesn't contain valid publicKey and privateKey`);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
logger.warn(`Failed to parse ${ENV_KEY_NAME} as JSON:`, e);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Fall back to file storage
|
|
42
|
+
return this.#loadFromFile();
|
|
43
|
+
}
|
|
44
|
+
async saveKeyPair(keyPair) {
|
|
45
|
+
// Don't save if using env var
|
|
46
|
+
if (process.env[ENV_KEY_NAME]) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
// Save to file
|
|
50
|
+
this.#saveToFile(keyPair);
|
|
51
|
+
}
|
|
52
|
+
#loadFromFile() {
|
|
53
|
+
try {
|
|
54
|
+
if (!existsSync(this.#filePath)) {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
const data = readFileSync(this.#filePath, "utf-8");
|
|
58
|
+
const parsed = JSON.parse(data);
|
|
59
|
+
const keyPair = parsed.keyPair;
|
|
60
|
+
if (keyPair) {
|
|
61
|
+
logger.debug(`Loaded keypair from ${this.#filePath}`);
|
|
62
|
+
}
|
|
63
|
+
return keyPair;
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
#saveToFile(keyPair) {
|
|
70
|
+
const data = { keyPair };
|
|
71
|
+
writeFileSync(this.#filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
72
|
+
logger.debug(`Saved keypair to ${this.#filePath}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Singleton instance of ConnectCrypto for the switchboard
|
|
76
|
+
let connectCryptoInstance = null;
|
|
77
|
+
/**
|
|
78
|
+
* Initialize ConnectCrypto for the switchboard.
|
|
79
|
+
* This allows the switchboard to authenticate with remote services
|
|
80
|
+
* using the same identity established during `ph login`.
|
|
81
|
+
*/
|
|
82
|
+
export async function initConnectCrypto(options = {}) {
|
|
83
|
+
const { keypairPath, requireExisting = false } = options;
|
|
84
|
+
const keyStorage = new SwitchboardKeyStorage(keypairPath);
|
|
85
|
+
// Check if we have an existing keypair
|
|
86
|
+
const existingKeyPair = await keyStorage.loadKeyPair();
|
|
87
|
+
if (!existingKeyPair && requireExisting) {
|
|
88
|
+
logger.warn("No existing keypair found and requireExisting is true. " +
|
|
89
|
+
'Run "ph login" to create one.');
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (!existingKeyPair) {
|
|
93
|
+
logger.info("No existing keypair found. A new one will be generated.");
|
|
94
|
+
}
|
|
95
|
+
connectCryptoInstance = new ConnectCrypto(keyStorage);
|
|
96
|
+
const did = await connectCryptoInstance.did();
|
|
97
|
+
logger.info(`Switchboard identity initialized: ${did}`);
|
|
98
|
+
return connectCryptoInstance;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get the current ConnectCrypto instance.
|
|
102
|
+
* Returns null if not initialized.
|
|
103
|
+
*/
|
|
104
|
+
export function getConnectCrypto() {
|
|
105
|
+
return connectCryptoInstance;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get the DID of the current ConnectCrypto instance.
|
|
109
|
+
* Returns null if not initialized.
|
|
110
|
+
*/
|
|
111
|
+
export async function getConnectDid() {
|
|
112
|
+
if (!connectCryptoInstance) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
return connectCryptoInstance.did();
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Get a bearer token for authenticating with remote services.
|
|
119
|
+
* Returns null if ConnectCrypto is not initialized.
|
|
120
|
+
*/
|
|
121
|
+
export async function getBearerToken(driveUrl, address, refresh = false) {
|
|
122
|
+
if (!connectCryptoInstance) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return connectCryptoInstance.getBearerToken(driveUrl, address, refresh);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=connect-crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-crypto.js","sourceRoot":"","sources":["../../src/connect-crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,2 @@
|
|
|
1
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
2
|
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,sDAOrC
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,sDAOrC"}
|
|
@@ -6,12 +6,4 @@ export async function initFeatureFlags() {
|
|
|
6
6
|
await OpenFeature.setProviderAndWait(provider);
|
|
7
7
|
return OpenFeature.getClient();
|
|
8
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
9
|
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -1 +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
|
|
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"}
|
package/dist/src/server.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import type { StartServerOptions, SwitchboardReactor } from "./types.js";
|
|
3
3
|
export declare const startSwitchboard: (options?: StartServerOptions) => Promise<SwitchboardReactor>;
|
|
4
|
+
export { getBearerToken, getConnectCrypto, getConnectDid, } from "./connect-crypto.js";
|
|
4
5
|
export * from "./types.js";
|
|
5
6
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/src/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AA0CA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAkQzE,eAAO,MAAM,gBAAgB,GAC3B,UAAS,kBAAuB,KAC/B,OAAO,CAAC,kBAAkB,CA8C5B,CAAC;AAEF,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,cAAc,YAAY,CAAC"}
|
package/dist/src/server.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
2
|
+
import { PGlite } from "@electric-sql/pglite";
|
|
3
|
+
import { CompositeChannelFactory, EventBus, ReactorBuilder, ReactorClientBuilder, SyncBuilder, } from "@powerhousedao/reactor";
|
|
3
4
|
import { VitePackageLoader, getUniqueDocumentModels, initializeAndStartAPI, startViteServer, } from "@powerhousedao/reactor-api";
|
|
4
5
|
import * as Sentry from "@sentry/node";
|
|
5
6
|
import { DocumentAlreadyExistsError, InMemoryCache, ReactorBuilder as LegacyReactorBuilder, RedisCache, childLogger, driveDocumentModelModule, } from "document-drive";
|
|
@@ -8,9 +9,13 @@ import { PrismaStorageFactory } from "document-drive/storage/prisma";
|
|
|
8
9
|
import { documentModelDocumentModelModule } from "document-model";
|
|
9
10
|
import dotenv from "dotenv";
|
|
10
11
|
import express from "express";
|
|
12
|
+
import { Kysely, PostgresDialect } from "kysely";
|
|
13
|
+
import { PGliteDialect } from "kysely-pglite-dialect";
|
|
11
14
|
import path from "path";
|
|
15
|
+
import { Pool } from "pg";
|
|
12
16
|
import { initRedis } from "./clients/redis.js";
|
|
13
|
-
import {
|
|
17
|
+
import { initConnectCrypto } from "./connect-crypto.js";
|
|
18
|
+
import { initFeatureFlags } from "./feature-flags.js";
|
|
14
19
|
import { initProfilerFromEnv } from "./profiler.js";
|
|
15
20
|
import { addDefaultDrive, addRemoteDrive, isPostgresUrl } from "./utils.js";
|
|
16
21
|
const logger = childLogger(["switchboard"]);
|
|
@@ -66,7 +71,7 @@ async function initReactorStorage(cache, dbPath = "./.ph/drive-storage") {
|
|
|
66
71
|
storagePath: filesystemPath,
|
|
67
72
|
};
|
|
68
73
|
}
|
|
69
|
-
async function initServer(serverPort, options) {
|
|
74
|
+
async function initServer(serverPort, options, connectCrypto) {
|
|
70
75
|
const { dev, packages = [], remoteDrives = [] } = options;
|
|
71
76
|
const dbPath = options.dbPath ?? process.env.DATABASE_URL;
|
|
72
77
|
// start redis if configured
|
|
@@ -115,13 +120,36 @@ async function initServer(serverPort, options) {
|
|
|
115
120
|
...documentModels,
|
|
116
121
|
]))
|
|
117
122
|
.withLegacyStorage(storage)
|
|
123
|
+
.withSync(new SyncBuilder().withChannelFactory(new CompositeChannelFactory()))
|
|
118
124
|
.withFeatures({
|
|
119
125
|
legacyStorageEnabled: true,
|
|
120
126
|
});
|
|
121
|
-
|
|
127
|
+
if (dbPath && isPostgresUrl(dbPath)) {
|
|
128
|
+
const connectionString = dbPath.includes("amazonaws") && !dbPath.includes("sslmode=no-verify")
|
|
129
|
+
? dbPath + "?sslmode=no-verify"
|
|
130
|
+
: dbPath;
|
|
131
|
+
const pool = new Pool({ connectionString });
|
|
132
|
+
const kysely = new Kysely({
|
|
133
|
+
dialect: new PostgresDialect({ pool }),
|
|
134
|
+
});
|
|
135
|
+
builder.withKysely(kysely);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
const pglitePath = dbPath || "./.ph/reactor-storage";
|
|
139
|
+
const pglite = new PGlite(pglitePath);
|
|
140
|
+
const kysely = new Kysely({
|
|
141
|
+
dialect: new PGliteDialect(pglite),
|
|
142
|
+
});
|
|
143
|
+
builder.withKysely(kysely);
|
|
144
|
+
}
|
|
145
|
+
const module = await new ReactorClientBuilder()
|
|
122
146
|
.withReactorBuilder(builder)
|
|
123
|
-
.
|
|
124
|
-
|
|
147
|
+
.buildModule();
|
|
148
|
+
const syncManager = module.reactorModule?.syncModule?.syncManager;
|
|
149
|
+
if (!syncManager) {
|
|
150
|
+
throw new Error("SyncManager not available from ReactorClientBuilder");
|
|
151
|
+
}
|
|
152
|
+
return { client: module.client, syncManager };
|
|
125
153
|
};
|
|
126
154
|
let defaultDriveUrl = undefined;
|
|
127
155
|
// TODO get path from powerhouse config
|
|
@@ -146,12 +174,12 @@ async function initServer(serverPort, options) {
|
|
|
146
174
|
configFile: options.configFile ??
|
|
147
175
|
path.join(process.cwd(), "powerhouse.config.json"),
|
|
148
176
|
mcp: options.mcp ?? true,
|
|
149
|
-
|
|
177
|
+
enableDocumentModelSubgraphs: options.enableDocumentModelSubgraphs,
|
|
150
178
|
});
|
|
151
|
-
const { driveServer } = api;
|
|
179
|
+
const { client, driveServer } = api;
|
|
152
180
|
// Create default drive if provided
|
|
153
181
|
if (options.drive) {
|
|
154
|
-
defaultDriveUrl = await addDefaultDrive(
|
|
182
|
+
defaultDriveUrl = await addDefaultDrive(client, options.drive, serverPort);
|
|
155
183
|
}
|
|
156
184
|
// add vite middleware after express app is initialized if applicable
|
|
157
185
|
if (vite) {
|
|
@@ -188,19 +216,17 @@ async function initServer(serverPort, options) {
|
|
|
188
216
|
defaultDriveUrl,
|
|
189
217
|
api,
|
|
190
218
|
reactor: driveServer,
|
|
219
|
+
connectCrypto,
|
|
191
220
|
};
|
|
192
221
|
}
|
|
193
222
|
export const startSwitchboard = async (options = {}) => {
|
|
194
223
|
const serverPort = options.port ?? DEFAULT_PORT;
|
|
195
224
|
// Initialize feature flags
|
|
196
|
-
await initFeatureFlags();
|
|
197
|
-
const
|
|
198
|
-
options.
|
|
199
|
-
isReactorv2Enabled: enabled,
|
|
200
|
-
};
|
|
201
|
-
const dualActionCreateEnabled = await isDualActionCreateEnabled();
|
|
225
|
+
const featureFlags = await initFeatureFlags();
|
|
226
|
+
const enableDocumentModelSubgraphs = await featureFlags.getBooleanValue("DOCUMENT_MODEL_SUBGRAPHS_ENABLED", options.enableDocumentModelSubgraphs ?? true);
|
|
227
|
+
options.enableDocumentModelSubgraphs = enableDocumentModelSubgraphs;
|
|
202
228
|
options.reactorOptions = {
|
|
203
|
-
enableDualActionCreate:
|
|
229
|
+
enableDualActionCreate: true,
|
|
204
230
|
};
|
|
205
231
|
if (process.env.PYROSCOPE_SERVER_ADDRESS) {
|
|
206
232
|
try {
|
|
@@ -211,8 +237,19 @@ export const startSwitchboard = async (options = {}) => {
|
|
|
211
237
|
logger.error("Error starting profiler", e);
|
|
212
238
|
}
|
|
213
239
|
}
|
|
240
|
+
// Initialize ConnectCrypto if identity options are provided or keypair exists
|
|
241
|
+
let connectCrypto = null;
|
|
242
|
+
try {
|
|
243
|
+
connectCrypto = await initConnectCrypto(options.identity);
|
|
244
|
+
}
|
|
245
|
+
catch (e) {
|
|
246
|
+
logger.warn("Failed to initialize ConnectCrypto:", e);
|
|
247
|
+
if (options.identity?.requireExisting) {
|
|
248
|
+
throw new Error('Identity required but failed to initialize. Run "ph login" first.');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
214
251
|
try {
|
|
215
|
-
return await initServer(serverPort, options);
|
|
252
|
+
return await initServer(serverPort, options, connectCrypto);
|
|
216
253
|
}
|
|
217
254
|
catch (e) {
|
|
218
255
|
Sentry.captureException(e);
|
|
@@ -220,5 +257,6 @@ export const startSwitchboard = async (options = {}) => {
|
|
|
220
257
|
throw e;
|
|
221
258
|
}
|
|
222
259
|
};
|
|
260
|
+
export { getBearerToken, getConnectCrypto, getConnectDid, } from "./connect-crypto.js";
|
|
223
261
|
export * from "./types.js";
|
|
224
262
|
//# sourceMappingURL=server.js.map
|
package/dist/src/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AACA,OAAO,EACL,QAAQ,EACR,cAAc,EACd,oBAAoB,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
import type { IConnectCrypto } from "@renown/sdk";
|
|
1
2
|
import type { DriveInput, IDocumentDriveServer } from "document-drive";
|
|
2
3
|
export type StorageOptions = {
|
|
3
4
|
type: "filesystem" | "memory" | "postgres" | "browser";
|
|
4
5
|
filesystemPath?: string;
|
|
5
6
|
postgresUrl?: string;
|
|
6
7
|
};
|
|
8
|
+
export type IdentityOptions = {
|
|
9
|
+
/** Path to the keypair file. Defaults to ~/.ph/keypair.json */
|
|
10
|
+
keypairPath?: string;
|
|
11
|
+
/**
|
|
12
|
+
* If true, won't start without an existing keypair.
|
|
13
|
+
* Use this to ensure the switchboard only runs with an authenticated identity.
|
|
14
|
+
*/
|
|
15
|
+
requireExisting?: boolean;
|
|
16
|
+
};
|
|
7
17
|
export type StartServerOptions = {
|
|
8
18
|
configFile?: string;
|
|
9
19
|
port?: number;
|
|
@@ -22,18 +32,24 @@ export type StartServerOptions = {
|
|
|
22
32
|
users: string[];
|
|
23
33
|
admins: string[];
|
|
24
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* Identity options for ConnectCrypto.
|
|
37
|
+
* When configured, the switchboard will load the keypair from `ph login`
|
|
38
|
+
* and can authenticate with remote services on behalf of the user.
|
|
39
|
+
*/
|
|
40
|
+
identity?: IdentityOptions;
|
|
25
41
|
mcp?: boolean;
|
|
26
42
|
processorConfig?: Map<string, unknown>;
|
|
27
43
|
disableLocalPackages?: boolean;
|
|
28
|
-
subgraphs?: {
|
|
29
|
-
isReactorv2Enabled?: boolean;
|
|
30
|
-
};
|
|
31
44
|
reactorOptions?: {
|
|
32
45
|
enableDualActionCreate?: boolean;
|
|
33
46
|
};
|
|
47
|
+
enableDocumentModelSubgraphs?: boolean;
|
|
34
48
|
};
|
|
35
49
|
export type SwitchboardReactor = {
|
|
36
50
|
defaultDriveUrl: string | undefined;
|
|
37
51
|
reactor: IDocumentDriveServer;
|
|
52
|
+
/** The ConnectCrypto instance if identity was initialized */
|
|
53
|
+
connectCrypto: IConnectCrypto | null;
|
|
38
54
|
};
|
|
39
55
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEvE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE;QACf,sBAAsB,CAAC,EAAE,OAAO,CAAC;KAClC,CAAC;IACF,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,6DAA6D;IAC7D,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;CACtC,CAAC"}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { IReactorClient } from "@powerhousedao/reactor";
|
|
2
|
+
import type { DocumentDriveDocument, DriveInput } from "document-drive";
|
|
3
|
+
import type { IDocumentDriveServer } from "document-drive";
|
|
4
|
+
export declare function addDefaultDrive(client: IReactorClient, drive: DriveInput, serverPort: number): Promise<string>;
|
|
3
5
|
export declare function isPostgresUrl(url: string): boolean;
|
|
4
6
|
export declare function addRemoteDrive(driveServer: IDocumentDriveServer, remoteDriveUrl: string): Promise<DocumentDriveDocument>;
|
|
5
7
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,mBAiDnB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,WAExC;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,oBAAoB,EACjC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAyBhC"}
|
package/dist/src/utils.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { driveCreateDocument, driveCreateState } from "document-drive";
|
|
2
2
|
import { generateId } from "document-model/core";
|
|
3
|
-
export async function addDefaultDrive(
|
|
3
|
+
export async function addDefaultDrive(client, drive, serverPort) {
|
|
4
4
|
let driveId = drive.id;
|
|
5
5
|
if (!driveId || driveId.length === 0) {
|
|
6
6
|
driveId = drive.slug;
|
|
@@ -8,12 +8,38 @@ export async function addDefaultDrive(driveServer, drive, serverPort) {
|
|
|
8
8
|
if (!driveId || driveId.length === 0) {
|
|
9
9
|
throw new Error("Invalid Drive Id");
|
|
10
10
|
}
|
|
11
|
+
const { global } = driveCreateState();
|
|
12
|
+
const document = driveCreateDocument({
|
|
13
|
+
global: {
|
|
14
|
+
...global,
|
|
15
|
+
name: drive.global.name,
|
|
16
|
+
icon: drive.global.icon ?? global.icon,
|
|
17
|
+
},
|
|
18
|
+
local: {
|
|
19
|
+
availableOffline: drive.local?.availableOffline ?? false,
|
|
20
|
+
sharingType: drive.local?.sharingType ?? "public",
|
|
21
|
+
listeners: drive.local?.listeners ?? [],
|
|
22
|
+
triggers: drive.local?.triggers ?? [],
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
if (drive.id && drive.id.length > 0) {
|
|
26
|
+
document.header.id = drive.id;
|
|
27
|
+
}
|
|
28
|
+
if (drive.slug && drive.slug.length > 0) {
|
|
29
|
+
document.header.slug = drive.slug;
|
|
30
|
+
}
|
|
31
|
+
if (drive.global.name) {
|
|
32
|
+
document.header.name = drive.global.name;
|
|
33
|
+
}
|
|
34
|
+
if (drive.preferredEditor) {
|
|
35
|
+
document.header.meta = { preferredEditor: drive.preferredEditor };
|
|
36
|
+
}
|
|
11
37
|
try {
|
|
12
|
-
|
|
13
|
-
await driveServer.addDrive(drive);
|
|
38
|
+
await client.create(document);
|
|
14
39
|
}
|
|
15
40
|
catch (e) {
|
|
16
|
-
|
|
41
|
+
const errorMessage = e instanceof Error ? e.message : String(e);
|
|
42
|
+
if (!errorMessage.includes("already exists")) {
|
|
17
43
|
throw e;
|
|
18
44
|
}
|
|
19
45
|
}
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|