@powerhousedao/switchboard 6.0.0-dev.2 → 6.0.0-dev.200

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 (74) hide show
  1. package/Auth.md +45 -27
  2. package/CHANGELOG.md +1749 -4
  3. package/README.md +13 -12
  4. package/dist/index.d.mts +1 -0
  5. package/dist/index.mjs +129 -0
  6. package/dist/index.mjs.map +1 -0
  7. package/dist/install-packages.d.mts +1 -0
  8. package/dist/install-packages.mjs +31 -0
  9. package/dist/install-packages.mjs.map +1 -0
  10. package/dist/migrate.d.mts +1 -0
  11. package/dist/migrate.mjs +55 -0
  12. package/dist/migrate.mjs.map +1 -0
  13. package/dist/server-BMtyzhoR.mjs +291 -0
  14. package/dist/server-BMtyzhoR.mjs.map +1 -0
  15. package/dist/server.d.mts +93 -0
  16. package/dist/server.d.mts.map +1 -0
  17. package/dist/server.mjs +4 -0
  18. package/dist/utils-DFl0ezBT.mjs +44 -0
  19. package/dist/utils-DFl0ezBT.mjs.map +1 -0
  20. package/dist/utils.d.mts +9 -0
  21. package/dist/utils.d.mts.map +1 -0
  22. package/dist/utils.mjs +2 -0
  23. package/package.json +53 -39
  24. package/test/metrics.test.ts +202 -0
  25. package/tsconfig.json +11 -2
  26. package/tsdown.config.ts +16 -0
  27. package/vitest.config.ts +11 -0
  28. package/Dockerfile +0 -60
  29. package/dist/src/clients/redis.d.ts +0 -5
  30. package/dist/src/clients/redis.d.ts.map +0 -1
  31. package/dist/src/clients/redis.js +0 -48
  32. package/dist/src/clients/redis.js.map +0 -1
  33. package/dist/src/config.d.ts +0 -12
  34. package/dist/src/config.d.ts.map +0 -1
  35. package/dist/src/config.js +0 -33
  36. package/dist/src/config.js.map +0 -1
  37. package/dist/src/connect-crypto.d.ts +0 -41
  38. package/dist/src/connect-crypto.d.ts.map +0 -1
  39. package/dist/src/connect-crypto.js +0 -127
  40. package/dist/src/connect-crypto.js.map +0 -1
  41. package/dist/src/feature-flags.d.ts +0 -2
  42. package/dist/src/feature-flags.d.ts.map +0 -1
  43. package/dist/src/feature-flags.js +0 -9
  44. package/dist/src/feature-flags.js.map +0 -1
  45. package/dist/src/index.d.ts +0 -3
  46. package/dist/src/index.d.ts.map +0 -1
  47. package/dist/src/index.js +0 -21
  48. package/dist/src/index.js.map +0 -1
  49. package/dist/src/install-packages.d.ts +0 -2
  50. package/dist/src/install-packages.d.ts.map +0 -1
  51. package/dist/src/install-packages.js +0 -36
  52. package/dist/src/install-packages.js.map +0 -1
  53. package/dist/src/migrate.d.ts +0 -3
  54. package/dist/src/migrate.d.ts.map +0 -1
  55. package/dist/src/migrate.js +0 -65
  56. package/dist/src/migrate.js.map +0 -1
  57. package/dist/src/profiler.d.ts +0 -4
  58. package/dist/src/profiler.d.ts.map +0 -1
  59. package/dist/src/profiler.js +0 -17
  60. package/dist/src/profiler.js.map +0 -1
  61. package/dist/src/server.d.ts +0 -6
  62. package/dist/src/server.d.ts.map +0 -1
  63. package/dist/src/server.js +0 -289
  64. package/dist/src/server.js.map +0 -1
  65. package/dist/src/types.d.ts +0 -64
  66. package/dist/src/types.d.ts.map +0 -1
  67. package/dist/src/types.js +0 -2
  68. package/dist/src/types.js.map +0 -1
  69. package/dist/src/utils.d.ts +0 -6
  70. package/dist/src/utils.d.ts.map +0 -1
  71. package/dist/src/utils.js +0 -92
  72. package/dist/src/utils.js.map +0 -1
  73. package/dist/tsconfig.tsbuildinfo +0 -1
  74. package/entrypoint.sh +0 -22
package/Dockerfile DELETED
@@ -1,60 +0,0 @@
1
- FROM node:22 AS build
2
- WORKDIR /app
3
- COPY . .
4
- RUN chmod +x entrypoint.sh
5
- ENV PNPM_HOME="/pnpm"
6
- ENV PATH="$PNPM_HOME:$PATH"
7
- RUN corepack enable && corepack install --global pnpm@9.8.0
8
- ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0
9
-
10
- ENV HUSKY=false
11
-
12
- # Packages
13
- ENV PH_PACKAGES=""
14
-
15
- # Nx
16
- ENV NX_SOCKET_DIR="/tmp/nx"
17
- ENV NX_DAEMON=false
18
-
19
- # Auth
20
- ENV PH_SWITCHBOARD_AUTH_ENABLED=false
21
- ENV PH_SWITCHBOARD_ADMINS_LIST="0x123,0x456"
22
- ENV PH_SWITCHBOARD_USERS_LIST="0x123,0x456"
23
- ENV PH_SWITCHBOARD_GUESTS_LIST="0x123,0x456"
24
-
25
- # Database
26
- ENV PH_SWITCHBOARD_DATABASE_URL="dev.db"
27
- ENV PH_SWITCHBOARD_REDIS_URL=""
28
- ENV SKIP_DB_MIGRATIONS="false"
29
-
30
- # Heroku Workaround
31
- ENV PORT=4001
32
-
33
- # Switchboard
34
- ENV PH_SWITCHBOARD_PORT=$PORT
35
-
36
- # Other
37
- ARG TAG=latest
38
- ENV TAG=$TAG
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
42
- RUN pnpm add -g ph-cmd@$TAG prisma@5.17.0
43
-
44
- RUN case "$TAG" in \
45
- *dev*) ph init project --dev --package-manager pnpm ;; \
46
- *staging*) ph init project --staging --package-manager pnpm ;; \
47
- *) ph init project --package-manager pnpm ;; \
48
- esac
49
-
50
- WORKDIR /app/project
51
-
52
- # Install curl for health checks
53
- RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*
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
59
-
60
- ENTRYPOINT ["/app/entrypoint.sh"]
@@ -1,5 +0,0 @@
1
- import type { RedisClientType } from "redis";
2
- export declare let redisClient: RedisClientType | undefined;
3
- export declare const initRedis: (url: string) => Promise<RedisClientType | undefined>;
4
- export declare const closeRedis: () => Promise<void> | undefined;
5
- //# sourceMappingURL=redis.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis.d.ts","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAG7C,eAAO,IAAI,WAAW,EAAE,eAAe,GAAG,SAAS,CAAC;AACpD,eAAO,MAAM,SAAS,GACpB,KAAK,MAAM,KACV,OAAO,CAAC,eAAe,GAAG,SAAS,CAiCrC,CAAC;AAeF,eAAO,MAAM,UAAU,iCAItB,CAAC"}
@@ -1,48 +0,0 @@
1
- import { createClient } from "redis";
2
- export let redisClient;
3
- export const initRedis = async (url) => {
4
- if (redisClient) {
5
- return redisClient;
6
- }
7
- return new Promise((resolve, reject) => {
8
- const socket = url.includes("rediss")
9
- ? {
10
- tls: true,
11
- rejectUnauthorized: false,
12
- }
13
- : undefined;
14
- redisClient = createClient({
15
- url,
16
- socket,
17
- });
18
- redisClient
19
- .connect()
20
- .then((client) => {
21
- redisClient = client;
22
- client.on("error", (err) => {
23
- console.warn("Redis Client Error", err);
24
- });
25
- resolve(client);
26
- })
27
- .catch(async (e) => {
28
- reject(e instanceof Error ? e : new Error(JSON.stringify(e)));
29
- // await redisClient.disconnect();
30
- // console.warn("Redis Client Error", e);
31
- });
32
- });
33
- };
34
- const timer = setInterval(async () => {
35
- try {
36
- if (redisClient) {
37
- await redisClient.ping();
38
- }
39
- }
40
- catch (err) {
41
- console.error("Ping Interval Error", err);
42
- }
43
- }, 1000 * 60 * 4);
44
- export const closeRedis = () => {
45
- clearInterval(timer);
46
- return redisClient?.disconnect();
47
- };
48
- //# sourceMappingURL=redis.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"redis.js","sourceRoot":"","sources":["../../../src/clients/redis.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,MAAM,CAAC,IAAI,WAAwC,CAAC;AACpD,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAC5B,GAAW,EAC2B,EAAE;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnC,CAAC,CAAC;gBACE,GAAG,EAAE,IAAI;gBACT,kBAAkB,EAAE,KAAK;aAC1B;YACH,CAAC,CAAC,SAAS,CAAC;QACd,WAAW,GAAG,YAAY,CAAC;YACzB,GAAG;YACH,MAAM;SACP,CAAC,CAAC;QAEH,WAAW;aACR,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,WAAW,GAAG,MAAM,CAAC;YAErB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzB,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,EAAE,CAAU,EAAE,EAAE;YAC1B,MAAM,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9D,kCAAkC;YAClC,yCAAyC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,WAAW,CACvB,KAAK,IAAI,EAAE;IACT,IAAI,CAAC;QACH,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC,EACD,IAAI,GAAG,EAAE,GAAG,CAAC,CACd,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,aAAa,CAAC,KAAK,CAAC,CAAC;IAErB,OAAO,WAAW,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { DriveInput } from "document-drive";
2
- interface Config {
3
- database: {
4
- url: string;
5
- };
6
- port: number;
7
- mcp: boolean;
8
- drive: DriveInput;
9
- }
10
- export declare const config: Config;
11
- export {};
12
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
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"}
@@ -1,33 +0,0 @@
1
- import dotenv from "dotenv";
2
- dotenv.config();
3
- import { getConfig } from "@powerhousedao/config/node";
4
- const phConfig = getConfig();
5
- const { switchboard } = phConfig;
6
- export const config = {
7
- database: {
8
- // url: process.env.PH_SWITCHBOARD_DATABASE_URL ?? switchboard?.database?.url ?? "dev.db",
9
- url: process.env.PH_SWITCHBOARD_DATABASE_URL ??
10
- switchboard?.database?.url ??
11
- "dev.db",
12
- },
13
- port: process.env.PH_SWITCHBOARD_PORT &&
14
- !isNaN(Number(process.env.PH_SWITCHBOARD_PORT))
15
- ? Number(process.env.PH_SWITCHBOARD_PORT)
16
- : (switchboard?.port ?? 4001),
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
- },
32
- };
33
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
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"}
@@ -1,41 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,127 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-crypto.js","sourceRoot":"","sources":["../../src/connect-crypto.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function initFeatureFlags(): Promise<import("@openfeature/server-sdk").Client>;
2
- //# sourceMappingURL=feature-flags.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/feature-flags.ts"],"names":[],"mappings":"AAGA,wBAAsB,gBAAgB,sDAOrC"}
@@ -1,9 +0,0 @@
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
- //# sourceMappingURL=feature-flags.js.map
@@ -1 +0,0 @@
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,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
package/dist/src/index.js DELETED
@@ -1,21 +0,0 @@
1
- #!/usr/bin/env node
2
- import { config } from "./config.js";
3
- import { startSwitchboard } from "./server.js";
4
- function ensureNodeVersion(minVersion = "22") {
5
- const version = process.versions.node;
6
- if (!version) {
7
- return;
8
- }
9
- if (version < minVersion) {
10
- console.error(`Node version ${minVersion} or higher is required. Current version: ${version}`);
11
- process.exit(1);
12
- }
13
- }
14
- // Ensure minimum Node.js version
15
- ensureNodeVersion("22");
16
- process.on("SIGINT", () => {
17
- console.log("\nShutting down...");
18
- process.exit(0);
19
- });
20
- startSwitchboard(config).catch(console.error);
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,SAAS,iBAAiB,CAAC,UAAU,GAAG,IAAI;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;IACtC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CACX,gBAAgB,UAAU,4CAA4C,OAAO,EAAE,CAChF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AACD,iCAAiC;AACjC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAExB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=install-packages.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-packages.d.ts","sourceRoot":"","sources":["../../src/install-packages.ts"],"names":[],"mappings":""}
@@ -1,36 +0,0 @@
1
- import { execSync } from "child_process";
2
- import fs from "fs";
3
- import path from "path";
4
- // Get the list of packages to install from the environment variable
5
- const pkgs = process.env.PH_PACKAGES?.split(",") || [];
6
- // Skip if no packages to install
7
- if (pkgs.length === 0 || (pkgs.length === 1 && pkgs[0] === "")) {
8
- process.exit(0);
9
- }
10
- try {
11
- // Read the package.json file to check existing dependencies
12
- const packageJsonPath = path.join(process.cwd(), "package.json");
13
- const packageJsonContent = fs.readFileSync(packageJsonPath, "utf-8");
14
- const packageJson = JSON.parse(packageJsonContent);
15
- // Get all installed dependencies
16
- const installedDependencies = {
17
- ...(packageJson.dependencies || {}),
18
- ...(packageJson.devDependencies || {}),
19
- };
20
- for (const pkg of pkgs) {
21
- if (pkg === "")
22
- continue;
23
- // Check if the package is already installed
24
- if (installedDependencies[pkg]) {
25
- console.log(`> Package ${pkg} is already installed, skipping`);
26
- continue;
27
- }
28
- console.log(`> Installing ${pkg}`);
29
- execSync(`pnpm add ${pkg}@latest`, { stdio: "inherit" });
30
- }
31
- }
32
- catch (error) {
33
- console.error("Error in package installation:", error);
34
- process.exit(1);
35
- }
36
- //# sourceMappingURL=install-packages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"install-packages.js","sourceRoot":"","sources":["../../src/install-packages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB,oEAAoE;AACpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAEvD,iCAAiC;AACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC;IACH,4DAA4D;IAC5D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,kBAAkB,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAgB,CAAC;IAElE,iCAAiC;IACjC,MAAM,qBAAqB,GAA2B;QACpD,GAAG,CAAC,WAAW,CAAC,YAAY,IAAI,EAAE,CAAC;QACnC,GAAG,CAAC,WAAW,CAAC,eAAe,IAAI,EAAE,CAAC;KACvC,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,EAAE;YAAE,SAAS;QAEzB,4CAA4C;QAC5C,IAAI,qBAAqB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,iCAAiC,CAAC,CAAC;YAC/D,SAAS;QACX,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QACnC,QAAQ,CAAC,YAAY,GAAG,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=migrate.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":""}
@@ -1,65 +0,0 @@
1
- #!/usr/bin/env node
2
- import { Kysely, PostgresDialect } from "kysely";
3
- import { Pool } from "pg";
4
- import { runMigrations, getMigrationStatus, REACTOR_SCHEMA, } from "@powerhousedao/reactor";
5
- import { getConfig } from "@powerhousedao/config/node";
6
- function isPostgresUrl(url) {
7
- return url.startsWith("postgresql://") || url.startsWith("postgres://");
8
- }
9
- async function main() {
10
- const command = process.argv[2];
11
- const config = getConfig();
12
- const dbPath = process.env.PH_REACTOR_DATABASE_URL ??
13
- process.env.DATABASE_URL ??
14
- config.switchboard?.database?.url;
15
- if (!dbPath || !isPostgresUrl(dbPath)) {
16
- console.log("No PostgreSQL URL configured. Skipping migrations.");
17
- console.log("(PGlite migrations are handled automatically on startup)");
18
- return;
19
- }
20
- console.log(`Database: ${dbPath}`);
21
- const pool = new Pool({ connectionString: dbPath });
22
- const db = new Kysely({
23
- dialect: new PostgresDialect({ pool }),
24
- });
25
- try {
26
- if (command === "status") {
27
- console.log("\nChecking migration status...");
28
- const migrations = await getMigrationStatus(db, REACTOR_SCHEMA);
29
- console.log("\nMigration Status:");
30
- console.log("=================");
31
- for (const migration of migrations) {
32
- const status = migration.executedAt
33
- ? `[OK] Executed at ${migration.executedAt.toISOString()}`
34
- : "[--] Pending";
35
- console.log(`${status} - ${migration.name}`);
36
- }
37
- }
38
- else {
39
- console.log("\nRunning migrations...");
40
- const result = await runMigrations(db, REACTOR_SCHEMA);
41
- if (!result.success) {
42
- console.error("Migration failed:", result.error?.message);
43
- process.exit(1);
44
- }
45
- if (result.migrationsExecuted.length === 0) {
46
- console.log("No migrations to run - database is up to date");
47
- }
48
- else {
49
- console.log(`Successfully executed ${result.migrationsExecuted.length} migration(s):`);
50
- for (const name of result.migrationsExecuted) {
51
- console.log(` - ${name}`);
52
- }
53
- }
54
- }
55
- }
56
- catch (error) {
57
- console.error("Error:", error instanceof Error ? error.message : String(error));
58
- process.exit(1);
59
- }
60
- finally {
61
- await db.destroy();
62
- }
63
- }
64
- void main();
65
- //# sourceMappingURL=migrate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/migrate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { PyroscopeConfig } from "@pyroscope/nodejs";
2
- export declare function initProfilerFromEnv(env: typeof process.env): Promise<void>;
3
- export declare function initProfiler(options?: PyroscopeConfig): Promise<void>;
4
- //# sourceMappingURL=profiler.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiler.d.ts","sourceRoot":"","sources":["../../src/profiler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,OAAO,OAAO,CAAC,GAAG,iBAehE;AAED,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE,eAAe,iBAK3D"}
@@ -1,17 +0,0 @@
1
- export async function initProfilerFromEnv(env) {
2
- const { PYROSCOPE_SERVER_ADDRESS: serverAddress, PYROSCOPE_APPLICATION_NAME: appName, PYROSCOPE_USER: basicAuthUser, PYROSCOPE_PASSWORD: basicAuthPassword, } = env;
3
- const options = {
4
- serverAddress,
5
- appName,
6
- basicAuthUser,
7
- basicAuthPassword,
8
- };
9
- return initProfiler(options);
10
- }
11
- export async function initProfiler(options) {
12
- console.log("Initializing Pyroscope profiler at:", options?.serverAddress);
13
- const Pyroscope = await import("@pyroscope/nodejs");
14
- Pyroscope.init(options);
15
- Pyroscope.start();
16
- }
17
- //# sourceMappingURL=profiler.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiler.js","sourceRoot":"","sources":["../../src/profiler.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAuB;IAC/D,MAAM,EACJ,wBAAwB,EAAE,aAAa,EACvC,0BAA0B,EAAE,OAAO,EACnC,cAAc,EAAE,aAAa,EAC7B,kBAAkB,EAAE,iBAAiB,GACtC,GAAG,GAAG,CAAC;IAER,MAAM,OAAO,GAAoB;QAC/B,aAAa;QACb,OAAO;QACP,aAAa;QACb,iBAAiB;KAClB,CAAC;IACF,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAyB;IAC1D,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACpD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,SAAS,CAAC,KAAK,EAAE,CAAC;AACpB,CAAC"}
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env node
2
- import type { StartServerOptions, SwitchboardReactor } from "./types.js";
3
- export declare const startSwitchboard: (options?: StartServerOptions) => Promise<SwitchboardReactor>;
4
- export { getBearerToken, getConnectCrypto, getConnectDid, } from "./connect-crypto.js";
5
- export * from "./types.js";
6
- //# sourceMappingURL=server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":";AA2CA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAiSzE,eAAO,MAAM,gBAAgB,GAC3B,UAAS,kBAAuB,KAC/B,OAAO,CAAC,kBAAkB,CAiE5B,CAAC;AAEF,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,cAAc,YAAY,CAAC"}