@powerhousedao/switchboard 6.0.0-dev.12 → 6.0.0-dev.120

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 (47) hide show
  1. package/Auth.md +45 -27
  2. package/CHANGELOG.md +1007 -5
  3. package/Dockerfile +2 -2
  4. package/README.md +13 -12
  5. package/dist/src/config.d.ts +1 -1
  6. package/dist/src/config.d.ts.map +1 -1
  7. package/dist/src/index.js +33 -5
  8. package/dist/src/index.js.map +1 -1
  9. package/dist/src/metrics.d.ts +7 -0
  10. package/dist/src/metrics.d.ts.map +1 -0
  11. package/dist/src/metrics.js +34 -0
  12. package/dist/src/metrics.js.map +1 -0
  13. package/dist/src/profiler.d.ts +6 -1
  14. package/dist/src/profiler.d.ts.map +1 -1
  15. package/dist/src/profiler.js +31 -5
  16. package/dist/src/profiler.js.map +1 -1
  17. package/dist/src/renown.d.ts +24 -0
  18. package/dist/src/renown.d.ts.map +1 -0
  19. package/dist/src/renown.js +45 -0
  20. package/dist/src/renown.js.map +1 -0
  21. package/dist/src/server.d.ts +0 -1
  22. package/dist/src/server.d.ts.map +1 -1
  23. package/dist/src/server.js +146 -145
  24. package/dist/src/server.js.map +1 -1
  25. package/dist/src/types.d.ts +27 -18
  26. package/dist/src/types.d.ts.map +1 -1
  27. package/dist/src/utils.d.ts +2 -3
  28. package/dist/src/utils.d.ts.map +1 -1
  29. package/dist/src/utils.js +3 -32
  30. package/dist/src/utils.js.map +1 -1
  31. package/dist/test/metrics.test.d.ts +2 -0
  32. package/dist/test/metrics.test.d.ts.map +1 -0
  33. package/dist/test/metrics.test.js +121 -0
  34. package/dist/test/metrics.test.js.map +1 -0
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/dist/vitest.config.d.ts +3 -0
  37. package/dist/vitest.config.d.ts.map +1 -0
  38. package/dist/vitest.config.js +11 -0
  39. package/dist/vitest.config.js.map +1 -0
  40. package/package.json +34 -25
  41. package/test/metrics.test.ts +202 -0
  42. package/tsconfig.json +17 -4
  43. package/vitest.config.ts +11 -0
  44. package/dist/src/connect-crypto.d.ts +0 -41
  45. package/dist/src/connect-crypto.d.ts.map +0 -1
  46. package/dist/src/connect-crypto.js +0 -127
  47. package/dist/src/connect-crypto.js.map +0 -1
@@ -1,87 +1,52 @@
1
1
  #!/usr/bin/env node
2
+ import { 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, EventBus, 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, VitePackageLoader, createViteLogger, getUniqueDocumentModels, initializeAndStartAPI, startViteServer, } from "@powerhousedao/reactor-api";
12
+ import { driveDocumentModelModule } from "@powerhousedao/shared/document-drive";
13
+ import { documentModels as vetraDocumentModels } from "@powerhousedao/vetra";
14
+ import { processorFactory as vetraProcessorFactory } from "@powerhousedao/vetra/processors";
6
15
  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";
16
+ import { childLogger, documentModelDocumentModelModule } from "document-model";
12
17
  import dotenv from "dotenv";
13
- import express from "express";
14
18
  import { Kysely, PostgresDialect } from "kysely";
15
19
  import { PGliteDialect } from "kysely-pglite-dialect";
16
20
  import path from "path";
17
21
  import { Pool } from "pg";
18
22
  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;
60
- }
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");
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);
75
48
  }
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
51
  // start redis if configured
87
52
  const redisUrl = process.env.REDIS_TLS_URL ?? process.env.REDIS_URL;
@@ -91,48 +56,46 @@ async function initServer(serverPort, options, connectCrypto) {
91
56
  redis = await initRedis(redisUrl);
92
57
  }
93
58
  catch (e) {
94
- logger.error(e);
59
+ logger.error("@error", e);
95
60
  }
96
61
  }
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) => {
62
+ // use postgres url for read model storage if available, otherwise use local PGlite path
63
+ const readModelPath = dbPath || ".ph/read-storage";
64
+ // HTTP registry package loading
65
+ let httpDocumentModels = [];
66
+ const configPath = options.configFile ?? path.join(process.cwd(), "powerhouse.config.json");
67
+ const config = getConfig(configPath);
68
+ const registryUrl = process.env.PH_REGISTRY_URL ?? config.packageRegistryUrl;
69
+ const registryPackages = process.env.PH_REGISTRY_PACKAGES;
70
+ let httpLoader;
71
+ if (registryUrl) {
72
+ httpLoader = new HttpPackageLoader({ registryUrl });
73
+ }
74
+ if (httpLoader && registryPackages) {
75
+ const packageNames = registryPackages.split(",").map((p) => p.trim());
76
+ httpDocumentModels = await httpLoader.loadPackages(packageNames, logger);
77
+ logger.info(`Loaded ${httpDocumentModels.length} HTTP document models from ${packageNames.length} packages`);
78
+ }
79
+ const reactorLogger = logger.child(["reactor"]);
80
+ const initializeClient = async (documentModels) => {
123
81
  const eventBus = new EventBus();
124
82
  const builder = new ReactorBuilder()
125
83
  .withEventBus(eventBus)
126
84
  .withDocumentModels(getUniqueDocumentModels([
127
85
  documentModelDocumentModelModule,
128
86
  driveDocumentModelModule,
87
+ ...vetraDocumentModels,
129
88
  ...documentModels,
89
+ ...httpDocumentModels,
130
90
  ]))
131
- .withLegacyStorage(storage)
132
- .withSync(new SyncBuilder().withChannelFactory(new CompositeChannelFactory(new ConsoleLogger(["switchboard"]))))
133
- .withFeatures({
134
- legacyStorageEnabled: !options.reactorOptions?.storageV2,
135
- });
91
+ .withChannelScheme(ChannelScheme.SWITCHBOARD)
92
+ .withSignalHandlers()
93
+ .withLogger(reactorLogger);
94
+ const maxSkipThreshold = parseInt(process.env.MAX_SKIP_THRESHOLD ?? "", 10);
95
+ if (!isNaN(maxSkipThreshold) && maxSkipThreshold > 0) {
96
+ builder.withExecutorConfig({ maxSkipThreshold });
97
+ logger.info(`Reactor maxSkipThreshold set to ${maxSkipThreshold}`);
98
+ }
136
99
  const reactorDbUrl = process.env.PH_REACTOR_DATABASE_URL;
137
100
  if (reactorDbUrl && isPostgresUrl(reactorDbUrl)) {
138
101
  const connectionString = reactorDbUrl.includes("?")
@@ -154,70 +117,119 @@ async function initServer(serverPort, options, connectCrypto) {
154
117
  builder.withKysely(kysely);
155
118
  logger.info("Using PGlite for reactor storage");
156
119
  }
120
+ if (httpLoader && options.dynamicModelLoading) {
121
+ builder.withDocumentModelLoader(httpLoader);
122
+ }
157
123
  const clientBuilder = new ReactorClientBuilder().withReactorBuilder(builder);
158
- if (connectCrypto) {
159
- clientBuilder.withSigner(new ConnectCryptoSigner(connectCrypto));
124
+ if (renown) {
125
+ const signerConfig = getRenownSignerConfig(renown, options.identity?.requireSignatures);
126
+ clientBuilder.withSigner(signerConfig);
160
127
  }
161
128
  const module = await clientBuilder.buildModule();
162
- const syncManager = module.reactorModule?.syncModule?.syncManager;
163
- if (!syncManager) {
164
- throw new Error("SyncManager not available from ReactorClientBuilder");
129
+ if (module.reactorModule) {
130
+ const instrumentation = new ReactorInstrumentation(module.reactorModule);
131
+ instrumentation.start();
132
+ reactorLogger.info("Reactor metrics instrumentation started");
165
133
  }
166
- return { client: module.client, syncManager };
134
+ return module;
167
135
  };
168
136
  let defaultDriveUrl = undefined;
169
137
  // TODO get path from powerhouse config
170
138
  // start vite server if dev mode is enabled
171
139
  const basePath = process.cwd();
172
- const vite = dev ? await startViteServer(process.cwd()) : undefined;
140
+ const viteLogger = createViteLogger(logger);
141
+ const vite = dev
142
+ ? await startViteServer(process.cwd(), viteLogger)
143
+ : undefined;
173
144
  // get paths to local document models
174
145
  if (!options.disableLocalPackages) {
175
146
  packages.push(basePath);
176
147
  }
177
148
  // create loader
178
149
  const packageLoader = vite ? VitePackageLoader.build(vite) : undefined;
179
- // Start the API with the reactor and options
180
- const api = await initializeAndStartAPI(initializeDriveServer, initializeClient, {
181
- express: app,
150
+ const apiLogger = logger.child(["reactor-api"]);
151
+ const api = await initializeAndStartAPI(initializeClient, {
182
152
  port: serverPort,
183
153
  dbPath: readModelPath,
184
154
  https: options.https,
185
155
  packageLoader,
186
156
  packages: packages,
187
157
  processorConfig: options.processorConfig,
158
+ processors: {
159
+ "@powerhousedao/vetra": [vetraProcessorFactory],
160
+ },
188
161
  configFile: options.configFile ??
189
162
  path.join(process.cwd(), "powerhouse.config.json"),
190
163
  mcp: options.mcp ?? true,
164
+ logger: apiLogger,
191
165
  enableDocumentModelSubgraphs: options.enableDocumentModelSubgraphs,
192
- });
193
- const { client, driveServer } = api;
166
+ }, "switchboard");
167
+ if (process.env.SENTRY_DSN) {
168
+ // Register Sentry error handler after all routes are established.
169
+ // The adapter calls the framework-specific Sentry setup internally.
170
+ api.httpAdapter.setupSentryErrorHandler(Sentry);
171
+ }
172
+ const { client, graphqlManager, documentModelRegistry } = api;
173
+ // Wire up dynamic package management if HTTP loader is configured
174
+ if (httpLoader) {
175
+ const packageManagementService = new PackageManagementService({
176
+ defaultRegistryUrl: registryUrl,
177
+ httpLoader,
178
+ documentModelRegistry,
179
+ });
180
+ packageManagementService.setOnModelsChanged(async () => {
181
+ await graphqlManager.regenerateDocumentModelSubgraphs();
182
+ });
183
+ const packagesSubgraph = new PackagesSubgraph({
184
+ relationalDb: undefined,
185
+ analyticsStore: undefined,
186
+ reactorClient: client,
187
+ graphqlManager,
188
+ syncManager: api.syncManager,
189
+ path: graphqlManager.getBasePath(),
190
+ packageManagementService,
191
+ });
192
+ void graphqlManager
193
+ .registerSubgraphInstance(packagesSubgraph, "graphql", false)
194
+ .then(() => graphqlManager.updateRouter())
195
+ .catch((error) => {
196
+ logger.error("Failed to register packages subgraph: @error", error);
197
+ });
198
+ }
194
199
  // Create default drive if provided
195
200
  if (options.drive) {
196
- if (!connectCrypto) {
197
- throw new Error("Cannot create default drive without ConnectCrypto identity");
201
+ if (!renown) {
202
+ throw new Error("Cannot create default drive without Renown identity");
198
203
  }
199
- defaultDriveUrl = await addDefaultDrive(driveServer, client, options.drive, serverPort);
204
+ defaultDriveUrl = await addDefaultDrive(client, options.drive, serverPort);
200
205
  }
201
206
  // add vite middleware after express app is initialized if applicable
202
207
  if (vite) {
203
- api.app.use(vite.middlewares);
208
+ api.httpAdapter.mountRawMiddleware(vite.middlewares);
204
209
  }
205
210
  // Connect to remote drives AFTER packages are loaded
206
211
  if (remoteDrives.length > 0) {
207
212
  for (const remoteDriveUrl of remoteDrives) {
208
213
  let driveId;
209
214
  try {
210
- const remoteDrive = await addRemoteDrive(driveServer, remoteDriveUrl);
211
- driveId = remoteDrive.header.id;
212
- logger.debug(`Remote drive ${remoteDriveUrl} synced`);
215
+ const { syncManager } = api;
216
+ const parsed = parseDriveUrl(remoteDriveUrl);
217
+ driveId = parsed.driveId;
218
+ const remoteName = `remote-drive-${driveId}-${crypto.randomUUID()}`;
219
+ await syncManager.add(remoteName, driveCollectionId("main", driveId), {
220
+ type: "gql",
221
+ parameters: { url: parsed.graphqlEndpoint },
222
+ });
223
+ logger.debug("Remote drive @remoteDriveUrl synced", remoteDriveUrl);
213
224
  }
214
225
  catch (error) {
215
- if (error instanceof DocumentAlreadyExistsError) {
216
- logger.debug(`Remote drive already added: ${remoteDriveUrl}`);
226
+ if (error instanceof Error &&
227
+ error.message.includes("already exists")) {
228
+ logger.debug("Remote drive already added: @remoteDriveUrl", remoteDriveUrl);
217
229
  driveId = remoteDriveUrl.split("/").pop();
218
230
  }
219
231
  else {
220
- logger.error(`Failed to connect to remote drive ${remoteDriveUrl}:`, error);
232
+ logger.error("Failed to connect to remote drive @remoteDriveUrl: @error", remoteDriveUrl, error);
221
233
  }
222
234
  }
223
235
  finally {
@@ -232,8 +244,8 @@ async function initServer(serverPort, options, connectCrypto) {
232
244
  return {
233
245
  defaultDriveUrl,
234
246
  api,
235
- reactor: driveServer,
236
- connectCrypto,
247
+ reactor: client,
248
+ renown,
237
249
  };
238
250
  }
239
251
  export const startSwitchboard = async (options = {}) => {
@@ -243,47 +255,36 @@ export const startSwitchboard = async (options = {}) => {
243
255
  const enableDocumentModelSubgraphs = await featureFlags.getBooleanValue(DOCUMENT_MODEL_SUBGRAPHS_ENABLED, options.enableDocumentModelSubgraphs ??
244
256
  DOCUMENT_MODEL_SUBGRAPHS_ENABLED_DEFAULT);
245
257
  options.enableDocumentModelSubgraphs = enableDocumentModelSubgraphs;
246
- const storageV2 = await featureFlags.getBooleanValue(REACTOR_STORAGE_V2, options.reactorOptions?.storageV2 ?? REACTOR_STORAGE_V2_DEFAULT);
247
- const enableDualActionCreate = await featureFlags.getBooleanValue(ENABLE_DUAL_ACTION_CREATE, options.reactorOptions?.enableDualActionCreate ??
248
- ENABLE_DUAL_ACTION_CREATE_DEFAULT);
249
- options.reactorOptions = {
250
- enableDualActionCreate,
251
- storageV2,
252
- };
253
- logger.info("Feature flags:", {
258
+ const requireSignatures = options.identity?.requireSignatures ??
259
+ (await featureFlags.getBooleanValue(REQUIRE_SIGNATURES, REQUIRE_SIGNATURES_DEFAULT));
260
+ options.identity = { ...options.identity, requireSignatures };
261
+ const logger = options.logger ?? defaultLogger;
262
+ logger.info("Feature flags: @flags", JSON.stringify({
254
263
  DOCUMENT_MODEL_SUBGRAPHS_ENABLED: enableDocumentModelSubgraphs,
255
- REACTOR_STORAGE_V2: storageV2,
256
- ENABLE_DUAL_ACTION_CREATE: enableDualActionCreate,
257
- });
258
- if (process.env.PYROSCOPE_SERVER_ADDRESS) {
259
- try {
260
- await initProfilerFromEnv(process.env);
261
- }
262
- catch (e) {
263
- Sentry.captureException(e);
264
- logger.error("Error starting profiler", e);
265
- }
266
- }
267
- // Initialize ConnectCrypto if identity options are provided or keypair exists
268
- let connectCrypto = null;
264
+ REQUIRE_SIGNATURES: requireSignatures,
265
+ }, null, 2));
266
+ // Initialize Renown if identity options are provided or keypair exists
267
+ let renown = null;
269
268
  try {
270
- connectCrypto = await initConnectCrypto(options.identity);
269
+ renown = await initRenown(options.identity);
271
270
  }
272
271
  catch (e) {
273
- logger.warn("Failed to initialize ConnectCrypto:", e);
272
+ logger.warn("Failed to initialize ConnectCrypto: @error", e);
274
273
  if (options.identity?.requireExisting) {
275
274
  throw new Error('Identity required but failed to initialize. Run "ph login" first.');
276
275
  }
277
276
  }
278
277
  try {
279
- return await initServer(serverPort, options, connectCrypto);
278
+ return await initServer(serverPort, options, renown);
280
279
  }
281
280
  catch (e) {
282
281
  Sentry.captureException(e);
283
- logger.error("App crashed", e);
282
+ logger.error("App crashed: @error", e);
284
283
  throw e;
285
284
  }
286
285
  };
287
- export { getBearerToken, getConnectCrypto, getConnectDid, } from "./connect-crypto.js";
288
286
  export * from "./types.js";
287
+ if (import.meta.main) {
288
+ await startSwitchboard();
289
+ }
289
290
  //# 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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,WAAiC,EACjC,MAAsB,EACtB,KAAiB,EACjB,UAAkB;IAElB,IAAI,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC;IACvB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACtC,CAAC;IAED,oCAAoC;IACpC,IAAI,aAAa,CAAC;IAClB,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,EAAE;IACJ,CAAC;IAED,gDAAgD;IAChD,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,oBAAoB,UAAU,MAAM,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,mBAAmB,CAAC;QACnC,MAAM,EAAE;YACN,GAAG,MAAM;YACT,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;YACvB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;SACvC;QACD,KAAK,EAAE;YACL,gBAAgB,EAAE,KAAK,CAAC,KAAK,EAAE,gBAAgB,IAAI,KAAK;YACxD,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,IAAI,QAAQ;YACjD,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE;YACvC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE;SACtC;KACF,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;IAChC,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACpC,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACtB,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,YAAY,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,2EAA2E;IAC3E,6EAA6E;IAC5E,WAAkD,CAAC,YAAY,CAAC,IAAI,CACnE,YAAY,EACZ,QAAiC,CAClC,CAAC;IAEF,OAAO,oBAAoB,UAAU,MAAM,OAAO,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAiC,EACjC,cAAsB;IAEtB,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,cAAc,EAAE;QACtD,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE;YACT;gBACE,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE;oBACR,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,kBAAkB;oBACxB,eAAe,EAAE,iBAAiB;iBACnC;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,CAAC,MAAM,CAAC;oBAChB,UAAU,EAAE,CAAC,GAAG,CAAC;oBACjB,YAAY,EAAE,CAAC,GAAG,CAAC;oBACnB,KAAK,EAAE,CAAC,QAAQ,CAAC;iBAClB;gBACD,KAAK,EAAE,kBAAkB;gBACzB,UAAU,EAAE,UAAU,EAAE;gBACxB,MAAM,EAAE,IAAI;aACb;SACF;QACD,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=metrics.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.test.d.ts","sourceRoot":"","sources":["../../test/metrics.test.ts"],"names":[],"mappings":""}