@powerhousedao/switchboard 6.0.0-dev.15 → 6.0.0-dev.150

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 (52) hide show
  1. package/Auth.md +45 -27
  2. package/CHANGELOG.md +1210 -5
  3. package/README.md +13 -12
  4. package/dist/src/config.d.ts +1 -1
  5. package/dist/src/config.d.ts.map +1 -1
  6. package/dist/src/index.js +33 -5
  7. package/dist/src/index.js.map +1 -1
  8. package/dist/src/metrics.d.ts +7 -0
  9. package/dist/src/metrics.d.ts.map +1 -0
  10. package/dist/src/metrics.js +34 -0
  11. package/dist/src/metrics.js.map +1 -0
  12. package/dist/src/profiler.d.ts +6 -1
  13. package/dist/src/profiler.d.ts.map +1 -1
  14. package/dist/src/profiler.js +31 -5
  15. package/dist/src/profiler.js.map +1 -1
  16. package/dist/src/renown.d.ts +24 -0
  17. package/dist/src/renown.d.ts.map +1 -0
  18. package/dist/src/renown.js +45 -0
  19. package/dist/src/renown.js.map +1 -0
  20. package/dist/src/server.d.ts +0 -1
  21. package/dist/src/server.d.ts.map +1 -1
  22. package/dist/src/server.js +162 -173
  23. package/dist/src/server.js.map +1 -1
  24. package/dist/src/types.d.ts +27 -18
  25. package/dist/src/types.d.ts.map +1 -1
  26. package/dist/src/utils.d.ts +2 -3
  27. package/dist/src/utils.d.ts.map +1 -1
  28. package/dist/src/utils.js +3 -32
  29. package/dist/src/utils.js.map +1 -1
  30. package/dist/test/metrics.test.d.ts +2 -0
  31. package/dist/test/metrics.test.d.ts.map +1 -0
  32. package/dist/test/metrics.test.js +121 -0
  33. package/dist/test/metrics.test.js.map +1 -0
  34. package/dist/tsconfig.tsbuildinfo +1 -1
  35. package/dist/vitest.config.d.ts +3 -0
  36. package/dist/vitest.config.d.ts.map +1 -0
  37. package/dist/vitest.config.js +11 -0
  38. package/dist/vitest.config.js.map +1 -0
  39. package/package.json +35 -26
  40. package/test/metrics.test.ts +202 -0
  41. package/tsconfig.json +17 -4
  42. package/vitest.config.ts +11 -0
  43. package/Dockerfile +0 -86
  44. package/dist/src/clients/redis.d.ts +0 -5
  45. package/dist/src/clients/redis.d.ts.map +0 -1
  46. package/dist/src/clients/redis.js +0 -48
  47. package/dist/src/clients/redis.js.map +0 -1
  48. package/dist/src/connect-crypto.d.ts +0 -41
  49. package/dist/src/connect-crypto.d.ts.map +0 -1
  50. package/dist/src/connect-crypto.js +0 -127
  51. package/dist/src/connect-crypto.js.map +0 -1
  52. package/entrypoint.sh +0 -17
@@ -1,138 +1,89 @@
1
1
  #!/usr/bin/env node
2
+ import { ImportPackageLoader, httpsHooksPath, } from "@powerhousedao/reactor-api";
3
+ import { register } from "node:module";
4
+ // Register HTTP/HTTPS module loader hooks for dynamic package imports
5
+ register(httpsHooksPath, import.meta.url);
2
6
  import { PGlite } from "@electric-sql/pglite";
3
- import { CompositeChannelFactory, ConsoleLogger, driveCollectionId, EventBus, parseDriveUrl, ReactorBuilder, ReactorClientBuilder, SyncBuilder, } from "@powerhousedao/reactor";
4
- import { VitePackageLoader, getUniqueDocumentModels, initializeAndStartAPI, startViteServer, } from "@powerhousedao/reactor-api";
5
- import { ConnectCryptoSigner } from "@renown/sdk";
7
+ import { metrics } from "@opentelemetry/api";
8
+ import { getConfig } from "@powerhousedao/config/node";
9
+ import { ReactorInstrumentation } from "@powerhousedao/opentelemetry-instrumentation-reactor";
10
+ import { ChannelScheme, EventBus, ReactorBuilder, ReactorClientBuilder, driveCollectionId, parseDriveUrl, } from "@powerhousedao/reactor";
11
+ import { HttpPackageLoader, PackageManagementService, PackagesSubgraph, getUniqueDocumentModels, initializeAndStartAPI, } from "@powerhousedao/reactor-api";
12
+ import { VitePackageLoader, createViteLogger, startViteServer, } from "@powerhousedao/reactor-api/vite";
13
+ import { driveDocumentModelModule } from "@powerhousedao/shared/document-drive";
14
+ import { documentModels as vetraDocumentModels } from "@powerhousedao/vetra";
15
+ import { processorFactory as vetraProcessorFactory } from "@powerhousedao/vetra/processors";
6
16
  import * as Sentry from "@sentry/node";
7
- import { DocumentAlreadyExistsError, InMemoryCache, ReactorBuilder as LegacyReactorBuilder, childLogger, driveDocumentModelModule, } from "document-drive";
8
- import { RedisCache } from "document-drive/cache/redis";
9
- import { FilesystemStorage } from "document-drive/storage/filesystem";
10
- import { PrismaStorageFactory } from "document-drive/storage/prisma";
11
- import { documentModelDocumentModelModule } from "document-model";
17
+ import { childLogger, documentModelDocumentModelModule } from "document-model";
12
18
  import dotenv from "dotenv";
13
- import express from "express";
14
19
  import { Kysely, PostgresDialect } from "kysely";
15
20
  import { PGliteDialect } from "kysely-pglite-dialect";
16
21
  import path from "path";
17
22
  import { Pool } from "pg";
18
- import { initRedis } from "./clients/redis.js";
19
- import { initConnectCrypto } from "./connect-crypto.js";
20
23
  import { initFeatureFlags } from "./feature-flags.js";
21
- import { initProfilerFromEnv } from "./profiler.js";
22
- import { addDefaultDrive, addRemoteDrive, isPostgresUrl } from "./utils.js";
23
- const logger = childLogger(["switchboard"]);
24
+ import { getRenownSignerConfig, initRenown } from "./renown.js";
25
+ import { addDefaultDrive, isPostgresUrl } from "./utils.js";
26
+ const defaultLogger = childLogger(["switchboard"]);
24
27
  dotenv.config();
25
28
  // Feature flag constants
26
29
  const DOCUMENT_MODEL_SUBGRAPHS_ENABLED = "DOCUMENT_MODEL_SUBGRAPHS_ENABLED";
27
30
  const DOCUMENT_MODEL_SUBGRAPHS_ENABLED_DEFAULT = true;
28
- const REACTOR_STORAGE_V2 = "REACTOR_STORAGE_V2";
29
- const REACTOR_STORAGE_V2_DEFAULT = true;
30
- const ENABLE_DUAL_ACTION_CREATE = "ENABLE_DUAL_ACTION_CREATE";
31
- const ENABLE_DUAL_ACTION_CREATE_DEFAULT = true;
32
- // Create a monolith express app for all subgraphs
33
- const app = express();
31
+ const REQUIRE_SIGNATURES = "REQUIRE_SIGNATURES";
32
+ const REQUIRE_SIGNATURES_DEFAULT = false;
34
33
  if (process.env.SENTRY_DSN) {
35
- logger.info("Initialized Sentry with env:", process.env.SENTRY_ENV);
34
+ defaultLogger.info("Initialized Sentry with env: @env", process.env.SENTRY_ENV);
36
35
  Sentry.init({
37
36
  dsn: process.env.SENTRY_DSN,
38
37
  environment: process.env.SENTRY_ENV,
39
38
  });
40
- Sentry.setupExpressErrorHandler(app);
41
39
  }
42
40
  const DEFAULT_PORT = process.env.PORT ? Number(process.env.PORT) : 4001;
43
- async function initPrismaStorage(connectionString, cache) {
44
- try {
45
- const prismaFactory = new PrismaStorageFactory(connectionString, cache);
46
- await prismaFactory.checkConnection();
47
- return prismaFactory.build();
48
- }
49
- catch (e) {
50
- const prismaConnectError = "Can't reach database server at";
51
- if (e instanceof Error && e.message.includes(prismaConnectError)) {
52
- const dbUrl = connectionString;
53
- const safeUrl = `${dbUrl.slice(0, dbUrl.indexOf(":") + 1)}{...}${dbUrl.slice(dbUrl.indexOf("@"), dbUrl.lastIndexOf("?"))}`;
54
- logger.warn(`Can't reach database server at '${safeUrl}'`);
55
- }
56
- else {
57
- logger.error(e);
58
- }
59
- throw e;
41
+ async function initServer(serverPort, options, renown) {
42
+ // Register the global MeterProvider before ReactorInstrumentation is
43
+ // constructed. setGlobalMeterProvider is a one-way door — once set it cannot
44
+ // be unset — so this must happen before initializeClient calls
45
+ // instrumentation.start() → createMetrics() → metrics.getMeter().
46
+ if (options.meterProvider) {
47
+ metrics.setGlobalMeterProvider(options.meterProvider);
60
48
  }
61
- }
62
- async function initReactorStorage(cache, dbPath = "./.ph/drive-storage") {
63
- const isPostgres = isPostgresUrl(dbPath);
64
- try {
65
- if (isPostgres) {
66
- const connectionString = dbPath.includes("amazonaws") && !dbPath.includes("sslmode=no-verify")
67
- ? dbPath + "?sslmode=no-verify"
68
- : dbPath;
69
- const storage = await initPrismaStorage(connectionString, cache);
70
- return { storage, storagePath: dbPath };
71
- }
72
- }
73
- catch {
74
- logger.warn("Falling back to filesystem storage");
75
- }
76
- // if url was postgres and connection failed, fallback to filesystem on default path
77
- const filesystemPath = isPostgres ? "./.ph/drive-storage" : dbPath;
78
- return {
79
- storage: new FilesystemStorage(path.join(process.cwd(), filesystemPath)),
80
- storagePath: filesystemPath,
81
- };
82
- }
83
- async function initServer(serverPort, options, connectCrypto) {
84
- const { dev, packages = [], remoteDrives = [] } = options;
49
+ const { dev, packages = [], remoteDrives = [], logger = defaultLogger, } = options;
85
50
  const dbPath = options.dbPath ?? process.env.DATABASE_URL;
86
- // start redis if configured
87
- const redisUrl = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
88
- let redis;
89
- if (redisUrl) {
90
- try {
91
- redis = await initRedis(redisUrl);
92
- }
93
- catch (e) {
94
- logger.error(e);
95
- }
51
+ // use postgres url for read model storage if available, otherwise use local PGlite path
52
+ const readModelPath = dbPath || ".ph/read-storage";
53
+ // HTTP registry package loading
54
+ const configPath = options.configFile ?? path.join(process.cwd(), "powerhouse.config.json");
55
+ const config = getConfig(configPath);
56
+ const registryUrl = process.env.PH_REGISTRY_URL ?? config.packageRegistryUrl;
57
+ const registryPackages = process.env.PH_REGISTRY_PACKAGES;
58
+ let httpLoader;
59
+ if (registryUrl) {
60
+ httpLoader = new HttpPackageLoader({ registryUrl });
61
+ registryPackages?.split(",").forEach((p) => {
62
+ const name = p.trim();
63
+ if (!packages.includes(name)) {
64
+ packages.push(name);
65
+ }
66
+ });
96
67
  }
97
- const cache = redis ? new RedisCache(redis) : new InMemoryCache();
98
- const { storage, storagePath } = await initReactorStorage(cache, dbPath);
99
- // if dbPath is not configured, or it was a postgres url but the connection failed,
100
- // use default path for read model storage
101
- const readModelPath = !dbPath || (isPostgresUrl(dbPath) && dbPath !== storagePath)
102
- ? ".ph/read-storage"
103
- : dbPath;
104
- const initializeDriveServer = async (documentModels) => {
105
- const driveServer = new LegacyReactorBuilder(getUniqueDocumentModels([
106
- documentModelDocumentModelModule,
107
- driveDocumentModelModule,
108
- ...documentModels,
109
- ]))
110
- .withStorage(storage)
111
- .withCache(cache)
112
- .withOptions({
113
- featureFlags: {
114
- enableDualActionCreate: options.reactorOptions?.enableDualActionCreate ?? false,
115
- },
116
- })
117
- .build();
118
- // init drive server
119
- await driveServer.initialize();
120
- return driveServer;
121
- };
122
- const initializeClient = async (driveServer, documentModels) => {
68
+ const reactorLogger = logger.child(["reactor"]);
69
+ const initializeClient = async (documentModels) => {
123
70
  const eventBus = new EventBus();
124
71
  const builder = new ReactorBuilder()
125
72
  .withEventBus(eventBus)
126
73
  .withDocumentModels(getUniqueDocumentModels([
127
74
  documentModelDocumentModelModule,
128
75
  driveDocumentModelModule,
76
+ ...vetraDocumentModels,
129
77
  ...documentModels,
130
78
  ]))
131
- .withLegacyStorage(storage)
132
- .withSync(new SyncBuilder().withChannelFactory(new CompositeChannelFactory(new ConsoleLogger(["switchboard"]))))
133
- .withFeatures({
134
- legacyStorageEnabled: !options.reactorOptions?.storageV2,
135
- });
79
+ .withChannelScheme(ChannelScheme.SWITCHBOARD)
80
+ .withSignalHandlers()
81
+ .withLogger(reactorLogger);
82
+ const maxSkipThreshold = parseInt(process.env.MAX_SKIP_THRESHOLD ?? "", 10);
83
+ if (!isNaN(maxSkipThreshold) && maxSkipThreshold > 0) {
84
+ builder.withExecutorConfig({ maxSkipThreshold });
85
+ logger.info(`Reactor maxSkipThreshold set to ${maxSkipThreshold}`);
86
+ }
136
87
  const reactorDbUrl = process.env.PH_REACTOR_DATABASE_URL;
137
88
  if (reactorDbUrl && isPostgresUrl(reactorDbUrl)) {
138
89
  const connectionString = reactorDbUrl.includes("?")
@@ -154,85 +105,134 @@ async function initServer(serverPort, options, connectCrypto) {
154
105
  builder.withKysely(kysely);
155
106
  logger.info("Using PGlite for reactor storage");
156
107
  }
108
+ if (httpLoader && options.dynamicModelLoading) {
109
+ builder.withDocumentModelLoader(httpLoader.documentModelLoader);
110
+ }
157
111
  const clientBuilder = new ReactorClientBuilder().withReactorBuilder(builder);
158
- if (connectCrypto) {
159
- clientBuilder.withSigner(new ConnectCryptoSigner(connectCrypto));
112
+ if (renown) {
113
+ const signerConfig = getRenownSignerConfig(renown, options.identity?.requireSignatures);
114
+ clientBuilder.withSigner(signerConfig);
160
115
  }
161
116
  const module = await clientBuilder.buildModule();
162
- // Return the full ReactorClientModule
117
+ if (module.reactorModule) {
118
+ const instrumentation = new ReactorInstrumentation(module.reactorModule);
119
+ instrumentation.start();
120
+ reactorLogger.info("Reactor metrics instrumentation started");
121
+ }
163
122
  return module;
164
123
  };
165
124
  let defaultDriveUrl = undefined;
166
125
  // TODO get path from powerhouse config
167
126
  // start vite server if dev mode is enabled
168
127
  const basePath = process.cwd();
169
- const vite = dev ? await startViteServer(process.cwd()) : undefined;
128
+ const viteLogger = createViteLogger(logger);
129
+ const vite = dev
130
+ ? await startViteServer(process.cwd(), viteLogger)
131
+ : undefined;
170
132
  // get paths to local document models
171
133
  if (!options.disableLocalPackages) {
172
134
  packages.push(basePath);
173
135
  }
174
- // storageV2=true means use new reactor (NOT legacy)
175
- const legacyReactor = !options.reactorOptions?.storageV2;
176
- // create loader with legacyReactor option
177
- const packageLoader = vite
178
- ? VitePackageLoader.build(vite, { legacyReactor })
179
- : undefined;
180
- const api = await initializeAndStartAPI(initializeDriveServer, initializeClient, {
181
- express: app,
136
+ // create loaders
137
+ const packageLoaders = [];
138
+ if (vite) {
139
+ packageLoaders.push(VitePackageLoader.build(vite));
140
+ }
141
+ else {
142
+ packageLoaders.push(new ImportPackageLoader());
143
+ }
144
+ if (httpLoader) {
145
+ packageLoaders.push(httpLoader);
146
+ registryPackages?.split(",").forEach((p) => {
147
+ const name = p.trim();
148
+ if (!packages.includes(name)) {
149
+ packages.push(name);
150
+ }
151
+ });
152
+ }
153
+ const apiLogger = logger.child(["reactor-api"]);
154
+ const api = await initializeAndStartAPI(initializeClient, {
182
155
  port: serverPort,
183
156
  dbPath: readModelPath,
184
157
  https: options.https,
185
- packageLoader,
158
+ packageLoaders: packageLoaders.length > 0 ? packageLoaders : undefined,
186
159
  packages: packages,
187
160
  processorConfig: options.processorConfig,
161
+ processors: {
162
+ "@powerhousedao/vetra": [vetraProcessorFactory],
163
+ },
188
164
  configFile: options.configFile ??
189
165
  path.join(process.cwd(), "powerhouse.config.json"),
190
166
  mcp: options.mcp ?? true,
167
+ logger: apiLogger,
191
168
  enableDocumentModelSubgraphs: options.enableDocumentModelSubgraphs,
192
- legacyReactor,
193
- });
194
- const { client, driveServer } = api;
169
+ }, "switchboard");
170
+ if (process.env.SENTRY_DSN) {
171
+ // Register Sentry error handler after all routes are established.
172
+ // The adapter calls the framework-specific Sentry setup internally.
173
+ api.httpAdapter.setupSentryErrorHandler(Sentry);
174
+ }
175
+ const { client, graphqlManager, documentModelRegistry } = api;
176
+ // Wire up dynamic package management if HTTP loader is configured
177
+ if (httpLoader) {
178
+ const packageManagementService = new PackageManagementService({
179
+ defaultRegistryUrl: registryUrl,
180
+ httpLoader,
181
+ documentModelRegistry,
182
+ });
183
+ packageManagementService.setOnModelsChanged(() => {
184
+ graphqlManager.regenerateDocumentModelSubgraphs().catch(logger.error);
185
+ });
186
+ const packagesSubgraph = new PackagesSubgraph({
187
+ relationalDb: undefined,
188
+ analyticsStore: undefined,
189
+ reactorClient: client,
190
+ graphqlManager,
191
+ syncManager: api.syncManager,
192
+ path: graphqlManager.getBasePath(),
193
+ packageManagementService,
194
+ });
195
+ void graphqlManager
196
+ .registerSubgraphInstance(packagesSubgraph, "graphql", false)
197
+ .then(() => graphqlManager.updateRouter())
198
+ .catch((error) => {
199
+ logger.error("Failed to register packages subgraph: @error", error);
200
+ });
201
+ }
195
202
  // Create default drive if provided
196
203
  if (options.drive) {
197
- if (!connectCrypto) {
198
- throw new Error("Cannot create default drive without ConnectCrypto identity");
204
+ if (!renown) {
205
+ throw new Error("Cannot create default drive without Renown identity");
199
206
  }
200
- defaultDriveUrl = await addDefaultDrive(driveServer, client, options.drive, serverPort);
207
+ defaultDriveUrl = await addDefaultDrive(client, options.drive, serverPort);
201
208
  }
202
209
  // add vite middleware after express app is initialized if applicable
203
210
  if (vite) {
204
- api.app.use(vite.middlewares);
211
+ api.httpAdapter.mountRawMiddleware(vite.middlewares);
205
212
  }
206
213
  // Connect to remote drives AFTER packages are loaded
207
214
  if (remoteDrives.length > 0) {
208
215
  for (const remoteDriveUrl of remoteDrives) {
209
216
  let driveId;
210
217
  try {
211
- if (legacyReactor) {
212
- // Use legacy reactor's addRemoteDrive
213
- const remoteDrive = await addRemoteDrive(driveServer, remoteDriveUrl);
214
- driveId = remoteDrive.header.id;
215
- }
216
- else {
217
- // Use new reactor's sync manager
218
- const { syncManager } = api;
219
- const parsed = parseDriveUrl(remoteDriveUrl);
220
- driveId = parsed.driveId;
221
- const remoteName = `remote-drive-${driveId}-${crypto.randomUUID()}`;
222
- await syncManager.add(remoteName, driveCollectionId("main", driveId), {
223
- type: "gql",
224
- parameters: { url: parsed.graphqlEndpoint },
225
- });
226
- }
227
- logger.debug(`Remote drive ${remoteDriveUrl} synced`);
218
+ const { syncManager } = api;
219
+ const parsed = parseDriveUrl(remoteDriveUrl);
220
+ driveId = parsed.driveId;
221
+ const remoteName = `remote-drive-${driveId}-${crypto.randomUUID()}`;
222
+ await syncManager.add(remoteName, driveCollectionId("main", driveId), {
223
+ type: "gql",
224
+ parameters: { url: parsed.graphqlEndpoint },
225
+ });
226
+ logger.debug("Remote drive @remoteDriveUrl synced", remoteDriveUrl);
228
227
  }
229
228
  catch (error) {
230
- if (error instanceof DocumentAlreadyExistsError) {
231
- logger.debug(`Remote drive already added: ${remoteDriveUrl}`);
229
+ if (error instanceof Error &&
230
+ error.message.includes("already exists")) {
231
+ logger.debug("Remote drive already added: @remoteDriveUrl", remoteDriveUrl);
232
232
  driveId = remoteDriveUrl.split("/").pop();
233
233
  }
234
234
  else {
235
- logger.error(`Failed to connect to remote drive ${remoteDriveUrl}:`, error);
235
+ logger.error("Failed to connect to remote drive @remoteDriveUrl: @error", remoteDriveUrl, error);
236
236
  }
237
237
  }
238
238
  finally {
@@ -247,8 +247,8 @@ async function initServer(serverPort, options, connectCrypto) {
247
247
  return {
248
248
  defaultDriveUrl,
249
249
  api,
250
- reactor: driveServer,
251
- connectCrypto,
250
+ reactor: client,
251
+ renown,
252
252
  };
253
253
  }
254
254
  export const startSwitchboard = async (options = {}) => {
@@ -258,47 +258,36 @@ export const startSwitchboard = async (options = {}) => {
258
258
  const enableDocumentModelSubgraphs = await featureFlags.getBooleanValue(DOCUMENT_MODEL_SUBGRAPHS_ENABLED, options.enableDocumentModelSubgraphs ??
259
259
  DOCUMENT_MODEL_SUBGRAPHS_ENABLED_DEFAULT);
260
260
  options.enableDocumentModelSubgraphs = enableDocumentModelSubgraphs;
261
- const storageV2 = await featureFlags.getBooleanValue(REACTOR_STORAGE_V2, options.reactorOptions?.storageV2 ?? REACTOR_STORAGE_V2_DEFAULT);
262
- const enableDualActionCreate = await featureFlags.getBooleanValue(ENABLE_DUAL_ACTION_CREATE, options.reactorOptions?.enableDualActionCreate ??
263
- ENABLE_DUAL_ACTION_CREATE_DEFAULT);
264
- options.reactorOptions = {
265
- enableDualActionCreate,
266
- storageV2,
267
- };
268
- logger.info("Feature flags:", {
261
+ const requireSignatures = options.identity?.requireSignatures ??
262
+ (await featureFlags.getBooleanValue(REQUIRE_SIGNATURES, REQUIRE_SIGNATURES_DEFAULT));
263
+ options.identity = { ...options.identity, requireSignatures };
264
+ const logger = options.logger ?? defaultLogger;
265
+ logger.info("Feature flags: @flags", JSON.stringify({
269
266
  DOCUMENT_MODEL_SUBGRAPHS_ENABLED: enableDocumentModelSubgraphs,
270
- REACTOR_STORAGE_V2: storageV2,
271
- ENABLE_DUAL_ACTION_CREATE: enableDualActionCreate,
272
- });
273
- if (process.env.PYROSCOPE_SERVER_ADDRESS) {
274
- try {
275
- await initProfilerFromEnv(process.env);
276
- }
277
- catch (e) {
278
- Sentry.captureException(e);
279
- logger.error("Error starting profiler", e);
280
- }
281
- }
282
- // Initialize ConnectCrypto if identity options are provided or keypair exists
283
- let connectCrypto = null;
267
+ REQUIRE_SIGNATURES: requireSignatures,
268
+ }, null, 2));
269
+ // Initialize Renown if identity options are provided or keypair exists
270
+ let renown = null;
284
271
  try {
285
- connectCrypto = await initConnectCrypto(options.identity);
272
+ renown = await initRenown(options.identity);
286
273
  }
287
274
  catch (e) {
288
- logger.warn("Failed to initialize ConnectCrypto:", e);
275
+ logger.warn("Failed to initialize ConnectCrypto: @error", e);
289
276
  if (options.identity?.requireExisting) {
290
277
  throw new Error('Identity required but failed to initialize. Run "ph login" first.');
291
278
  }
292
279
  }
293
280
  try {
294
- return await initServer(serverPort, options, connectCrypto);
281
+ return await initServer(serverPort, options, renown);
295
282
  }
296
283
  catch (e) {
297
284
  Sentry.captureException(e);
298
- logger.error("App crashed", e);
285
+ logger.error("App crashed: @error", e);
299
286
  throw e;
300
287
  }
301
288
  };
302
- export { getBearerToken, getConnectCrypto, getConnectDid, } from "./connect-crypto.js";
303
289
  export * from "./types.js";
290
+ if (import.meta.main) {
291
+ await startSwitchboard();
292
+ }
304
293
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
- import type { IConnectCrypto } from "@renown/sdk";
2
- import type { DriveInput, IDocumentDriveServer } from "document-drive";
1
+ import type { MeterProvider } from "@opentelemetry/api";
2
+ import type { IReactorClient } from "@powerhousedao/reactor";
3
+ import type { IRenown } from "@renown/sdk";
4
+ import type { DriveInput } from "@powerhousedao/shared/document-drive";
5
+ import type { ILogger } from "document-model";
3
6
  export type StorageOptions = {
4
7
  type: "filesystem" | "memory" | "postgres" | "browser";
5
8
  filesystemPath?: string;
@@ -13,6 +16,10 @@ export type IdentityOptions = {
13
16
  * Use this to ensure the switchboard only runs with an authenticated identity.
14
17
  */
15
18
  requireExisting?: boolean;
19
+ /** Base url of the Renown instance to use */
20
+ baseUrl?: string;
21
+ /** If true, unsigned actions will be rejected */
22
+ requireSignatures?: boolean;
16
23
  };
17
24
  export type StartServerOptions = {
18
25
  configFile?: string;
@@ -33,7 +40,7 @@ export type StartServerOptions = {
33
40
  admins: string[];
34
41
  };
35
42
  /**
36
- * Identity options for ConnectCrypto.
43
+ * Identity options for Renown.
37
44
  * When configured, the switchboard will load the keypair from `ph login`
38
45
  * and can authenticate with remote services on behalf of the user.
39
46
  */
@@ -41,24 +48,26 @@ export type StartServerOptions = {
41
48
  mcp?: boolean;
42
49
  processorConfig?: Map<string, unknown>;
43
50
  disableLocalPackages?: boolean;
44
- reactorOptions?: {
45
- /**
46
- * When true, both legacy and new reactors will use CREATE/UPDATE operation
47
- * flow for new documents.
48
- */
49
- enableDualActionCreate?: boolean;
50
- /**
51
- * When true, the new Reactor uses only the new Kysely-based storage
52
- * instead of the legacy document-drive storage.
53
- */
54
- storageV2?: boolean;
55
- };
56
51
  enableDocumentModelSubgraphs?: boolean;
52
+ /**
53
+ * When true, enables dynamic loading of document models from the registry
54
+ * when an unknown document type is encountered during sync.
55
+ * Disabled by default — enable with DYNAMIC_MODEL_LOADING=true env var.
56
+ */
57
+ dynamicModelLoading?: boolean;
58
+ logger?: ILogger;
59
+ /**
60
+ * OpenTelemetry MeterProvider to register as the global provider before
61
+ * ReactorInstrumentation starts. Must be provided here rather than set
62
+ * externally to guarantee the registration happens before
63
+ * instrumentation.start() reads the global provider via metrics.getMeter().
64
+ */
65
+ meterProvider?: MeterProvider;
57
66
  };
58
67
  export type SwitchboardReactor = {
59
68
  defaultDriveUrl: string | undefined;
60
- reactor: IDocumentDriveServer;
61
- /** The ConnectCrypto instance if identity was initialized */
62
- connectCrypto: IConnectCrypto | null;
69
+ reactor: IReactorClient;
70
+ /** The Renown instance if identity was initialized */
71
+ renown: IRenown | null;
63
72
  };
64
73
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
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;;;WAGG;QACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;QAEjC;;;WAGG;QACH,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,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;IAE1B,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,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,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,cAAc,CAAC;IACxB,sDAAsD;IACtD,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;CACxB,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import type { IReactorClient } from "@powerhousedao/reactor";
2
- import type { DocumentDriveDocument, DriveInput, IDocumentDriveServer } from "document-drive";
3
- export declare function addDefaultDrive(driveServer: IDocumentDriveServer, client: IReactorClient, drive: DriveInput, serverPort: number): Promise<string>;
2
+ import type { DriveInput } from "@powerhousedao/shared/document-drive";
3
+ export declare function addDefaultDrive(client: IReactorClient, drive: DriveInput, serverPort: number): Promise<string>;
4
4
  export declare function isPostgresUrl(url: string): boolean;
5
- export declare function addRemoteDrive(driveServer: IDocumentDriveServer, remoteDriveUrl: string): Promise<DocumentDriveDocument>;
6
5
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
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,EAEV,qBAAqB,EACrB,UAAU,EACV,oBAAoB,EACrB,MAAM,gBAAgB,CAAC;AAIxB,wBAAsB,eAAe,CACnC,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,mBAqEnB;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"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAGvE,wBAAsB,eAAe,CACnC,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,UAAU,EACjB,UAAU,EAAE,MAAM,mBA8DnB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,WAExC"}
package/dist/src/utils.js CHANGED
@@ -1,6 +1,6 @@
1
- import { driveCreateDocument, driveCreateState } from "document-drive";
2
- import { generateId } from "document-model/core";
3
- export async function addDefaultDrive(driveServer, client, drive, serverPort) {
1
+ import { driveCreateDocument, driveCreateState, } from "@powerhousedao/shared/document-drive";
2
+ import { generateId } from "@powerhousedao/shared/document-model";
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;
@@ -55,38 +55,9 @@ export async function addDefaultDrive(driveServer, client, drive, serverPort) {
55
55
  throw e;
56
56
  }
57
57
  }
58
- // YIKES: this is a backward compatibility hack to emit a drive added event
59
- // This should be removed once we are not supporting legacy write operations.
60
- driveServer.eventEmitter.emit("driveAdded", document);
61
58
  return `http://localhost:${serverPort}/d/${driveId}`;
62
59
  }
63
60
  export function isPostgresUrl(url) {
64
61
  return url.startsWith("postgresql") || url.startsWith("postgres");
65
62
  }
66
- export async function addRemoteDrive(driveServer, remoteDriveUrl) {
67
- return await driveServer.addRemoteDrive(remoteDriveUrl, {
68
- availableOffline: true,
69
- sharingType: "public",
70
- listeners: [
71
- {
72
- block: true,
73
- callInfo: {
74
- data: remoteDriveUrl,
75
- name: "switchboard-push",
76
- transmitterType: "SwitchboardPush",
77
- },
78
- filter: {
79
- branch: ["main"],
80
- documentId: ["*"],
81
- documentType: ["*"],
82
- scope: ["global"],
83
- },
84
- label: "Switchboard Sync",
85
- listenerId: generateId(),
86
- system: true,
87
- },
88
- ],
89
- triggers: [],
90
- });
91
- }
92
63
  //# sourceMappingURL=utils.js.map