@powerhousedao/reactor-api 6.0.0-dev.6 → 6.0.0-dev.61

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 (211) hide show
  1. package/dist/codegen.js +1 -1
  2. package/dist/codegen.js.map +1 -1
  3. package/dist/src/config.d.ts +1 -2
  4. package/dist/src/config.d.ts.map +1 -1
  5. package/dist/src/config.js +1 -5
  6. package/dist/src/config.js.map +1 -1
  7. package/dist/src/graphql/auth/resolvers.d.ts +17 -0
  8. package/dist/src/graphql/auth/resolvers.d.ts.map +1 -1
  9. package/dist/src/graphql/auth/resolvers.js +54 -0
  10. package/dist/src/graphql/auth/resolvers.js.map +1 -1
  11. package/dist/src/graphql/auth/schema.graphql +27 -5
  12. package/dist/src/graphql/auth/subgraph.d.ts +25 -0
  13. package/dist/src/graphql/auth/subgraph.d.ts.map +1 -1
  14. package/dist/src/graphql/auth/subgraph.js +45 -1
  15. package/dist/src/graphql/auth/subgraph.js.map +1 -1
  16. package/dist/src/graphql/base-subgraph.d.ts +12 -3
  17. package/dist/src/graphql/base-subgraph.d.ts.map +1 -1
  18. package/dist/src/graphql/base-subgraph.js +94 -0
  19. package/dist/src/graphql/base-subgraph.js.map +1 -1
  20. package/dist/src/graphql/document-model-subgraph.d.ts +28 -43
  21. package/dist/src/graphql/document-model-subgraph.d.ts.map +1 -1
  22. package/dist/src/graphql/document-model-subgraph.js +425 -83
  23. package/dist/src/graphql/document-model-subgraph.js.map +1 -1
  24. package/dist/src/graphql/drive-subgraph.d.ts.map +1 -1
  25. package/dist/src/graphql/drive-subgraph.js +47 -35
  26. package/dist/src/graphql/drive-subgraph.js.map +1 -1
  27. package/dist/src/graphql/graphql-manager.d.ts +13 -5
  28. package/dist/src/graphql/graphql-manager.d.ts.map +1 -1
  29. package/dist/src/graphql/graphql-manager.js +206 -137
  30. package/dist/src/graphql/graphql-manager.js.map +1 -1
  31. package/dist/src/graphql/index.d.ts +1 -0
  32. package/dist/src/graphql/index.d.ts.map +1 -1
  33. package/dist/src/graphql/index.js +1 -0
  34. package/dist/src/graphql/index.js.map +1 -1
  35. package/dist/src/graphql/reactor/adapters.d.ts +10 -2
  36. package/dist/src/graphql/reactor/adapters.d.ts.map +1 -1
  37. package/dist/src/graphql/reactor/adapters.js +35 -1
  38. package/dist/src/graphql/reactor/adapters.js.map +1 -1
  39. package/dist/src/graphql/reactor/factory.d.ts +12 -1
  40. package/dist/src/graphql/reactor/factory.d.ts.map +1 -1
  41. package/dist/src/graphql/reactor/factory.js +1 -1
  42. package/dist/src/graphql/reactor/factory.js.map +1 -1
  43. package/dist/src/graphql/reactor/gen/graphql.d.ts +221 -76
  44. package/dist/src/graphql/reactor/gen/graphql.d.ts.map +1 -1
  45. package/dist/src/graphql/reactor/gen/graphql.js +129 -10
  46. package/dist/src/graphql/reactor/gen/graphql.js.map +1 -1
  47. package/dist/src/graphql/reactor/index.d.ts +1 -1
  48. package/dist/src/graphql/reactor/index.d.ts.map +1 -1
  49. package/dist/src/graphql/reactor/index.js +1 -1
  50. package/dist/src/graphql/reactor/index.js.map +1 -1
  51. package/dist/src/graphql/reactor/operations.graphql +84 -1
  52. package/dist/src/graphql/reactor/requester.with-zod.d.ts.map +1 -1
  53. package/dist/src/graphql/reactor/requester.with-zod.js +104 -38
  54. package/dist/src/graphql/reactor/requester.with-zod.js.map +1 -1
  55. package/dist/src/graphql/reactor/resolvers.d.ts +77 -25
  56. package/dist/src/graphql/reactor/resolvers.d.ts.map +1 -1
  57. package/dist/src/graphql/reactor/resolvers.js +164 -70
  58. package/dist/src/graphql/reactor/resolvers.js.map +1 -1
  59. package/dist/src/graphql/reactor/schema.graphql +70 -30
  60. package/dist/src/graphql/reactor/subgraph.d.ts +2 -31
  61. package/dist/src/graphql/reactor/subgraph.d.ts.map +1 -1
  62. package/dist/src/graphql/reactor/subgraph.js +132 -209
  63. package/dist/src/graphql/reactor/subgraph.js.map +1 -1
  64. package/dist/src/graphql/reactor/validation.d.ts +23 -5
  65. package/dist/src/graphql/reactor/validation.d.ts.map +1 -1
  66. package/dist/src/graphql/reactor/validation.js +15 -1
  67. package/dist/src/graphql/reactor/validation.js.map +1 -1
  68. package/dist/src/graphql/system/index.d.ts +0 -1
  69. package/dist/src/graphql/system/index.d.ts.map +1 -1
  70. package/dist/src/graphql/system/index.js +0 -1
  71. package/dist/src/graphql/system/index.js.map +1 -1
  72. package/dist/src/graphql/types.d.ts +6 -5
  73. package/dist/src/graphql/types.d.ts.map +1 -1
  74. package/dist/src/graphql/utils.d.ts.map +1 -1
  75. package/dist/src/graphql/utils.js +7 -3
  76. package/dist/src/graphql/utils.js.map +1 -1
  77. package/dist/src/migrations/002_add_document_protection.d.ts +4 -0
  78. package/dist/src/migrations/002_add_document_protection.d.ts.map +1 -0
  79. package/dist/src/migrations/002_add_document_protection.js +18 -0
  80. package/dist/src/migrations/002_add_document_protection.js.map +1 -0
  81. package/dist/src/migrations/index.d.ts.map +1 -1
  82. package/dist/src/migrations/index.js +2 -0
  83. package/dist/src/migrations/index.js.map +1 -1
  84. package/dist/src/packages/import-loader.d.ts +5 -3
  85. package/dist/src/packages/import-loader.d.ts.map +1 -1
  86. package/dist/src/packages/import-loader.js +19 -10
  87. package/dist/src/packages/import-loader.js.map +1 -1
  88. package/dist/src/packages/package-manager.d.ts +2 -2
  89. package/dist/src/packages/package-manager.d.ts.map +1 -1
  90. package/dist/src/packages/package-manager.js.map +1 -1
  91. package/dist/src/packages/types.d.ts +9 -4
  92. package/dist/src/packages/types.d.ts.map +1 -1
  93. package/dist/src/packages/util.d.ts +3 -2
  94. package/dist/src/packages/util.d.ts.map +1 -1
  95. package/dist/src/packages/util.js +1 -1
  96. package/dist/src/packages/util.js.map +1 -1
  97. package/dist/src/packages/vite-loader.d.ts +10 -8
  98. package/dist/src/packages/vite-loader.d.ts.map +1 -1
  99. package/dist/src/packages/vite-loader.js +33 -10
  100. package/dist/src/packages/vite-loader.js.map +1 -1
  101. package/dist/src/server.d.ts +18 -11
  102. package/dist/src/server.d.ts.map +1 -1
  103. package/dist/src/server.js +147 -90
  104. package/dist/src/server.js.map +1 -1
  105. package/dist/src/services/auth.service.d.ts +0 -12
  106. package/dist/src/services/auth.service.d.ts.map +1 -1
  107. package/dist/src/services/auth.service.js +13 -40
  108. package/dist/src/services/auth.service.js.map +1 -1
  109. package/dist/src/services/authorization.service.d.ts +70 -0
  110. package/dist/src/services/authorization.service.d.ts.map +1 -0
  111. package/dist/src/services/authorization.service.js +155 -0
  112. package/dist/src/services/authorization.service.js.map +1 -0
  113. package/dist/src/services/document-permission.service.d.ts +47 -7
  114. package/dist/src/services/document-permission.service.d.ts.map +1 -1
  115. package/dist/src/services/document-permission.service.js +162 -7
  116. package/dist/src/services/document-permission.service.js.map +1 -1
  117. package/dist/src/tracing.js +3 -1
  118. package/dist/src/tracing.js.map +1 -1
  119. package/dist/src/types.d.ts +5 -5
  120. package/dist/src/types.d.ts.map +1 -1
  121. package/dist/src/utils/auth.d.ts +1 -1
  122. package/dist/src/utils/auth.d.ts.map +1 -1
  123. package/dist/src/utils/auth.js +5 -12
  124. package/dist/src/utils/auth.js.map +1 -1
  125. package/dist/src/utils/create-schema.d.ts +21 -1
  126. package/dist/src/utils/create-schema.d.ts.map +1 -1
  127. package/dist/src/utils/create-schema.js +289 -16
  128. package/dist/src/utils/create-schema.js.map +1 -1
  129. package/dist/src/utils/db.d.ts +8 -0
  130. package/dist/src/utils/db.d.ts.map +1 -1
  131. package/dist/src/utils/db.js.map +1 -1
  132. package/dist/src/utils/drive-url.d.ts +2 -0
  133. package/dist/src/utils/drive-url.d.ts.map +1 -0
  134. package/dist/src/utils/drive-url.js +3 -0
  135. package/dist/src/utils/drive-url.js.map +1 -0
  136. package/dist/src/utils/index.d.ts +1 -0
  137. package/dist/src/utils/index.d.ts.map +1 -1
  138. package/dist/src/utils/index.js +1 -0
  139. package/dist/src/utils/index.js.map +1 -1
  140. package/dist/test/authorization.service.test.d.ts +2 -0
  141. package/dist/test/authorization.service.test.d.ts.map +1 -0
  142. package/dist/test/authorization.service.test.js +252 -0
  143. package/dist/test/authorization.service.test.js.map +1 -0
  144. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts +2 -0
  145. package/dist/test/connect-switchboard-reshuffle-convergence.test.d.ts.map +1 -0
  146. package/dist/test/connect-switchboard-reshuffle-convergence.test.js +203 -0
  147. package/dist/test/connect-switchboard-reshuffle-convergence.test.js.map +1 -0
  148. package/dist/test/connect-switchboard-sync.test.d.ts +2 -0
  149. package/dist/test/connect-switchboard-sync.test.d.ts.map +1 -0
  150. package/dist/test/connect-switchboard-sync.test.js +581 -0
  151. package/dist/test/connect-switchboard-sync.test.js.map +1 -0
  152. package/dist/test/document-drive-subgraph.test.d.ts +2 -0
  153. package/dist/test/document-drive-subgraph.test.d.ts.map +1 -0
  154. package/dist/test/document-drive-subgraph.test.js +186 -0
  155. package/dist/test/document-drive-subgraph.test.js.map +1 -0
  156. package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts +2 -0
  157. package/dist/test/document-model-subgraph-legacy-permissions.test.d.ts.map +1 -0
  158. package/dist/test/document-model-subgraph-legacy-permissions.test.js +460 -0
  159. package/dist/test/document-model-subgraph-legacy-permissions.test.js.map +1 -0
  160. package/dist/test/document-model-subgraph-permissions.test.d.ts +2 -0
  161. package/dist/test/document-model-subgraph-permissions.test.d.ts.map +1 -0
  162. package/dist/test/document-model-subgraph-permissions.test.js +573 -0
  163. package/dist/test/document-model-subgraph-permissions.test.js.map +1 -0
  164. package/dist/test/document-model-subgraph.test.d.ts +2 -0
  165. package/dist/test/document-model-subgraph.test.d.ts.map +1 -0
  166. package/dist/test/document-model-subgraph.test.js +439 -0
  167. package/dist/test/document-model-subgraph.test.js.map +1 -0
  168. package/dist/test/drive-handlers.js +1 -1
  169. package/dist/test/drive-handlers.js.map +1 -1
  170. package/dist/test/drive-info-endpoint.test.d.ts +2 -0
  171. package/dist/test/drive-info-endpoint.test.d.ts.map +1 -0
  172. package/dist/test/drive-info-endpoint.test.js +123 -0
  173. package/dist/test/drive-info-endpoint.test.js.map +1 -0
  174. package/dist/test/drive-subgraph-permissions.test.js +1 -30
  175. package/dist/test/drive-subgraph-permissions.test.js.map +1 -1
  176. package/dist/test/permissions-integration.test.js +5 -19
  177. package/dist/test/permissions-integration.test.js.map +1 -1
  178. package/dist/test/push-backfill.test.d.ts +2 -0
  179. package/dist/test/push-backfill.test.d.ts.map +1 -0
  180. package/dist/test/push-backfill.test.js +298 -0
  181. package/dist/test/push-backfill.test.js.map +1 -0
  182. package/dist/test/reactor-client.test.js +4 -4
  183. package/dist/test/reactor-client.test.js.map +1 -1
  184. package/dist/test/reactor-resolvers.test.js +8 -11
  185. package/dist/test/reactor-resolvers.test.js.map +1 -1
  186. package/dist/test/reactor-subgraph-permissions.test.js +6 -35
  187. package/dist/test/reactor-subgraph-permissions.test.js.map +1 -1
  188. package/dist/test/subscriptions.test.js +2 -0
  189. package/dist/test/subscriptions.test.js.map +1 -1
  190. package/dist/test/utils/gql-resolver-bridge.d.ts +4 -1
  191. package/dist/test/utils/gql-resolver-bridge.d.ts.map +1 -1
  192. package/dist/test/utils/gql-resolver-bridge.js +36 -7
  193. package/dist/test/utils/gql-resolver-bridge.js.map +1 -1
  194. package/dist/tsconfig.tsbuildinfo +1 -1
  195. package/package.json +44 -55
  196. package/dist/src/graphql/system/system-subgraph.d.ts +0 -49
  197. package/dist/src/graphql/system/system-subgraph.d.ts.map +0 -1
  198. package/dist/src/graphql/system/system-subgraph.js +0 -130
  199. package/dist/src/graphql/system/system-subgraph.js.map +0 -1
  200. package/dist/test/system.test.d.ts +0 -2
  201. package/dist/test/system.test.d.ts.map +0 -1
  202. package/dist/test/system.test.js +0 -211
  203. package/dist/test/system.test.js.map +0 -1
  204. package/dist/test/three-reactor-gql-sync.test.d.ts +0 -2
  205. package/dist/test/three-reactor-gql-sync.test.d.ts.map +0 -1
  206. package/dist/test/three-reactor-gql-sync.test.js +0 -368
  207. package/dist/test/three-reactor-gql-sync.test.js.map +0 -1
  208. package/dist/test/two-reactor-gql-sync.test.d.ts +0 -2
  209. package/dist/test/two-reactor-gql-sync.test.d.ts.map +0 -1
  210. package/dist/test/two-reactor-gql-sync.test.js +0 -348
  211. package/dist/test/two-reactor-gql-sync.test.js.map +0 -1
@@ -2,17 +2,28 @@ import { viteCommonjs } from "@originjs/vite-plugin-commonjs";
2
2
  import { childLogger } from "document-drive";
3
3
  import path from "node:path";
4
4
  import { readPackage } from "read-pkg";
5
- import { createServer } from "vite";
5
+ import { createLogger, createServer } from "vite";
6
6
  import { isSubgraphClass } from "../graphql/utils.js";
7
7
  import { debounce, isSubpath } from "./util.js";
8
+ export function createViteLogger(logger, prefix = "") {
9
+ const customLogger = createLogger("info", {
10
+ prefix,
11
+ });
12
+ customLogger.info = logger.info;
13
+ customLogger.warn = logger.warn;
14
+ customLogger.error = logger.error;
15
+ return customLogger;
16
+ }
8
17
  export class VitePackageLoader {
9
18
  logger = childLogger(["reactor-api", "vite-loader"]);
19
+ legacyReactor;
10
20
  vite;
11
- static build(vite) {
12
- return new VitePackageLoader(vite);
21
+ static build(vite, options) {
22
+ return new VitePackageLoader(vite, options);
13
23
  }
14
- constructor(vite) {
24
+ constructor(vite, options) {
15
25
  this.vite = vite;
26
+ this.legacyReactor = options?.legacyReactor ?? false;
16
27
  }
17
28
  getDocumentModelsPath(identifier) {
18
29
  return path.join(identifier, "./document-models");
@@ -73,11 +84,22 @@ export class VitePackageLoader {
73
84
  const fullPath = this.getProcessorsPath(identifier);
74
85
  this.logger.verbose("Loading processors from", fullPath);
75
86
  try {
76
- const module = await this.vite.ssrLoadModule(fullPath);
77
- if (module.processorFactory &&
78
- typeof module.processorFactory === "function") {
79
- this.logger.verbose(` ➜ Loaded Processor factory from: ${identifier}`);
80
- return module.processorFactory;
87
+ const pkgModule = await this.vite.ssrLoadModule(fullPath);
88
+ // Choose factory based on constructor option
89
+ const factoryName = this.legacyReactor
90
+ ? "processorFactoryLegacy"
91
+ : "processorFactory";
92
+ const factory = pkgModule?.[factoryName];
93
+ if (factory && typeof factory === "function") {
94
+ this.logger.verbose(` ➜ Loaded Processor Factory (${factoryName}) from: ${identifier}`);
95
+ return factory;
96
+ }
97
+ // Fallback: if legacy requested but not found, try default (backwards compat)
98
+ if (this.legacyReactor &&
99
+ pkgModule?.processorFactory &&
100
+ typeof pkgModule.processorFactory === "function") {
101
+ this.logger.verbose(` ➜ Loaded Processor Factory (fallback to processorFactory) from: ${identifier}`);
102
+ return pkgModule.processorFactory;
81
103
  }
82
104
  }
83
105
  catch (e) {
@@ -127,11 +149,12 @@ export class VitePackageLoader {
127
149
  };
128
150
  }
129
151
  }
130
- export async function startViteServer(root) {
152
+ export async function startViteServer(root, logger) {
131
153
  const packageJson = await readPackage({ cwd: root });
132
154
  const vite = await createServer({
133
155
  root,
134
156
  configFile: false,
157
+ logger,
135
158
  server: { middlewareMode: true, watch: { ignored: ["**/.ph/**"] } },
136
159
  appType: "custom",
137
160
  build: {
@@ -1 +1 @@
1
- {"version":3,"file":"vite-loader.js","sourceRoot":"","sources":["../../../src/packages/vite-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vite-loader.js","sourceRoot":"","sources":["../../../src/packages/vite-loader.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import type { PGlite } from "@electric-sql/pglite";
2
- import type { IDocumentModelRegistry, IReactorClient, ISyncManager } from "@powerhousedao/reactor";
3
- import type { IDocumentDriveServer } from "document-drive";
2
+ import type { IDocumentModelRegistry, IReactorClient, ISyncManager, ReactorClientModule } from "@powerhousedao/reactor";
3
+ import type { IDocumentDriveServer, ILogger } from "document-drive";
4
4
  import type { DocumentModelModule } from "document-model";
5
5
  import type { Express } from "express";
6
6
  import type { Pool } from "pg";
7
+ import type { ProcessorApp } from "@powerhousedao/shared/processors";
7
8
  import { DocumentPermissionService } from "./services/document-permission.service.js";
8
9
  import type { API, IPackageLoader, Processor } from "./types.js";
9
10
  type Options = {
@@ -15,10 +16,7 @@ type Options = {
15
16
  packages?: string[];
16
17
  auth?: {
17
18
  enabled: boolean;
18
- guests: string[];
19
- users: string[];
20
19
  admins: string[];
21
- freeEntry: boolean;
22
20
  };
23
21
  https?: {
24
22
  keyPath: string;
@@ -37,6 +35,17 @@ type Options = {
37
35
  */
38
36
  documentPermissionService?: DocumentPermissionService;
39
37
  enableDocumentModelSubgraphs?: boolean;
38
+ /**
39
+ * When true, uses the new DocumentModelSubgraph class that uses reactorClient.
40
+ * When false (default), uses the legacy DocumentModelSubgraphLegacy class.
41
+ */
42
+ useNewDocumentModelSubgraph?: boolean;
43
+ /**
44
+ * When true, uses the legacy ProcessorManager from document-drive and hooks up
45
+ * the driveAdded event. When false (default), uses ProcessorManager from ReactorModule.
46
+ */
47
+ legacyReactor?: boolean;
48
+ logger?: ILogger;
40
49
  };
41
50
  /**
42
51
  * Starts the API server with pre-initialized drive server and client instances.
@@ -47,24 +56,22 @@ type Options = {
47
56
  *
48
57
  * @returns The API server components.
49
58
  */
50
- export declare function startAPI(driveServer: IDocumentDriveServer, client: IReactorClient, registry: IDocumentModelRegistry, syncManager: ISyncManager, options: Options): Promise<API>;
59
+ export declare function startAPI(driveServer: IDocumentDriveServer, client: IReactorClient, registry: IDocumentModelRegistry, syncManager: ISyncManager, options: Options, processorApp: ProcessorApp): Promise<API>;
51
60
  /**
52
61
  * Initializes and starts the API server using initializer functions.
53
62
  * This function first loads packages to get document models, then calls the initializer functions
54
63
  * to create the drive server and client instances with the appropriate dependencies.
55
64
  *
56
65
  * @param driveServerInitializer - Initializer function that creates the document drive server with document models.
57
- * @param clientInitializer - Initializer function that creates the reactor client and sync manager with the drive server.
66
+ * @param clientInitializer - Initializer function that creates the reactor client module with the drive server.
58
67
  * @param options - Additional options for server configuration.
59
68
  *
60
69
  * @returns The API server components along with the created drive server and client instances.
61
70
  */
62
- export declare function initializeAndStartAPI(driveServerInitializer: (documentModelModules: DocumentModelModule[]) => Promise<IDocumentDriveServer>, clientInitializer: (driveServer: IDocumentDriveServer, documentModels: DocumentModelModule[]) => Promise<{
63
- client: IReactorClient;
64
- syncManager: ISyncManager;
65
- }>, options: Options): Promise<API & {
71
+ export declare function initializeAndStartAPI(driveServerInitializer: (documentModelModules: DocumentModelModule[]) => Promise<IDocumentDriveServer>, clientInitializer: (driveServer: IDocumentDriveServer, documentModels: DocumentModelModule[]) => Promise<ReactorClientModule>, options: Options, processorApp: ProcessorApp): Promise<API & {
66
72
  driveServer: IDocumentDriveServer;
67
73
  client: IReactorClient;
74
+ syncManager: ISyncManager;
68
75
  }>;
69
76
  export {};
70
77
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,YAAY,EACb,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAEV,oBAAoB,EAKrB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAkB/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AASjE,KAAK,OAAO,GAAG;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,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;QACjB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,CAAC;AAifF;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,GAAG,CAAC,CA+Cd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,sBAAsB,EAAE,CACtB,oBAAoB,EAAE,mBAAmB,EAAE,KACxC,OAAO,CAAC,oBAAoB,CAAC,EAClC,iBAAiB,EAAE,CACjB,WAAW,EAAE,oBAAoB,EACjC,cAAc,EAAE,mBAAmB,EAAE,KAClC,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,WAAW,EAAE,YAAY,CAAA;CAAE,CAAC,EACnE,OAAO,EAAE,OAAO,GACf,OAAO,CACR,GAAG,GAAG;IAAE,WAAW,EAAE,oBAAoB,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,CACpE,CAsDA"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EAEd,YAAY,EACZ,mBAAmB,EAEpB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAEV,oBAAoB,EACpB,OAAO,EAKR,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAQvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAgBrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2CAA2C,CAAC;AAEtF,OAAO,KAAK,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AASjE,KAAK,OAAO,GAAG;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,IAAI,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,CAAC,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EACF;QACE,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GACD,OAAO,GACP,SAAS,CAAC;IACd,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC;;;OAGG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAmkBF;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,oBAAoB,EACjC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,sBAAsB,EAChC,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,GAAG,CAAC,CAuDd;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,sBAAsB,EAAE,CACtB,oBAAoB,EAAE,mBAAmB,EAAE,KACxC,OAAO,CAAC,oBAAoB,CAAC,EAClC,iBAAiB,EAAE,CACjB,WAAW,EAAE,oBAAoB,EACjC,cAAc,EAAE,mBAAmB,EAAE,KAClC,OAAO,CAAC,mBAAmB,CAAC,EACjC,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE,YAAY,GACzB,OAAO,CACR,GAAG,GAAG;IACJ,WAAW,EAAE,oBAAoB,CAAC;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,EAAE,YAAY,CAAC;CAC3B,CACF,CAwEA"}
@@ -2,14 +2,12 @@ import { PostgresAnalyticsStore } from "@powerhousedao/analytics-engine-pg";
2
2
  import { getConfig } from "@powerhousedao/config/node";
3
3
  import { setupMcpServer } from "@powerhousedao/reactor-mcp";
4
4
  import devcert from "devcert";
5
- import { childLogger, createRelationalDb, ProcessorManager, } from "document-drive";
5
+ import { childLogger, createRelationalDbLegacy, ProcessorManagerLegacy, } from "document-drive";
6
6
  import express from "express";
7
7
  import fs from "node:fs";
8
8
  import https from "node:https";
9
9
  import path from "node:path";
10
10
  import { WebSocketServer } from "ws";
11
- // Import tracing - initializes OpenTelemetry and provides stub functions for backwards compatibility
12
- import { initTracing, isTracingEnabled, trace } from "./tracing.js";
13
11
  import { config, DefaultCoreSubgraphs } from "./config.js";
14
12
  import { AuthSubgraph } from "./graphql/auth/subgraph.js";
15
13
  import { GraphQLManager } from "./graphql/graphql-manager.js";
@@ -19,9 +17,11 @@ import { runMigrations } from "./migrations/index.js";
19
17
  import { ImportPackageLoader } from "./packages/import-loader.js";
20
18
  import { getUniqueDocumentModels, PackageManager, } from "./packages/package-manager.js";
21
19
  import { AuthService } from "./services/auth.service.js";
20
+ import { AuthorizationService } from "./services/authorization.service.js";
22
21
  import { DocumentPermissionService } from "./services/document-permission.service.js";
22
+ import { initTracing, isTracingEnabled, trace } from "./tracing.js";
23
23
  import { getDbClient, initAnalyticsStoreSql, } from "./utils/db.js";
24
- const logger = childLogger(["reactor-api", "server"]);
24
+ const defaultLogger = childLogger(["reactor-api", "server"]);
25
25
  const DEFAULT_PORT = 4000;
26
26
  /**
27
27
  * Sets up the Express app with necessary routes
@@ -44,7 +44,7 @@ function setupGraphQlExplorer(router) {
44
44
  */
45
45
  async function initializeDatabaseAndAnalytics(dbPath) {
46
46
  const { db, knex } = getDbClient(dbPath);
47
- const relationalDb = createRelationalDb(db);
47
+ const relationalDb = createRelationalDbLegacy(db);
48
48
  const analyticsStore = new PostgresAnalyticsStore({
49
49
  knex,
50
50
  });
@@ -56,16 +56,14 @@ async function initializeDatabaseAndAnalytics(dbPath) {
56
56
  /**
57
57
  * Sets up the subgraph manager and registers subgraphs
58
58
  */
59
- async function setupGraphQLManager(app, httpServer, wsServer, reactor, client, relationalDb, analyticsStore, syncManager, subgraphs, auth, documentPermissionService, enableDocumentModelSubgraphs) {
60
- const graphqlManager = new GraphQLManager(config.basePath, app, httpServer, wsServer, reactor, client, relationalDb, analyticsStore, syncManager, {
59
+ async function setupGraphQLManager(app, httpServer, wsServer, reactor, client, relationalDb, analyticsStore, syncManager, subgraphs, logger, auth, documentPermissionService, enableDocumentModelSubgraphs, useNewDocumentModelSubgraph, port, authorizationService) {
60
+ const graphqlManager = new GraphQLManager(config.basePath, app, httpServer, wsServer, reactor, client, relationalDb, analyticsStore, syncManager, logger, {
61
61
  enabled: auth?.enabled ?? false,
62
- guests: auth?.guests ?? [],
63
- users: auth?.users ?? [],
64
62
  admins: auth?.admins ?? [],
65
- freeEntry: auth?.freeEntry ?? false,
66
63
  }, documentPermissionService, {
67
64
  enableDocumentModelSubgraphs,
68
- });
65
+ useNewDocumentModelSubgraph,
66
+ }, port, authorizationService);
69
67
  await graphqlManager.init(subgraphs.core);
70
68
  for (const [, collection] of subgraphs.extended.entries()) {
71
69
  for (const subgraph of collection) {
@@ -94,10 +92,7 @@ function setupEventListeners(pkgManager, reactor, graphqlManager, processorManag
94
92
  pkgManager.onProcessorsChange(async (processors) => {
95
93
  for (const [packageName, fns] of processors) {
96
94
  await processorManager.unregisterFactory(packageName);
97
- const factories = fns.map((fn) => fn({
98
- analyticsStore: module.analyticsStore,
99
- relationalDb: module.relationalDb,
100
- }));
95
+ const factories = fns.map((fn) => fn(module));
101
96
  await processorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(factories.map((factory) => Promise.resolve(factory(driveHeader))))).flat());
102
97
  }
103
98
  });
@@ -105,7 +100,7 @@ function setupEventListeners(pkgManager, reactor, graphqlManager, processorManag
105
100
  /**
106
101
  * Starts the server (HTTP or HTTPS) and attaches WebSocket server
107
102
  */
108
- async function startServer(app, port, httpsOptions) {
103
+ async function startServer(app, port, httpsOptions, logger) {
109
104
  let httpServer;
110
105
  if (httpsOptions) {
111
106
  const currentDir = process.cwd();
@@ -153,60 +148,52 @@ async function _setupCommonInfrastructure(options) {
153
148
  const app = options.express ?? express();
154
149
  // Setup auth configuration
155
150
  let admins = [];
156
- let users = [];
157
- let guests = [];
158
151
  let authEnabled = false;
159
- let freeEntry = false;
160
152
  if (options.configFile) {
161
153
  const config = getConfig(options.configFile);
162
154
  admins = config.auth?.admins?.map((a) => a.toLowerCase()) ?? [];
163
- users = config.auth?.users?.map((u) => u.toLowerCase()) ?? [];
164
- guests = config.auth?.guests?.map((g) => g.toLowerCase()) ?? [];
165
155
  authEnabled = config.auth?.enabled ?? false;
166
- freeEntry = config.auth?.freeEntry ?? false;
167
156
  }
168
157
  else if (options.auth) {
169
158
  admins = options.auth?.admins?.map((a) => a.toLowerCase()) ?? [];
170
- users = options.auth?.users?.map((u) => u.toLowerCase()) ?? [];
171
- guests = options.auth?.guests?.map((g) => g.toLowerCase()) ?? [];
172
159
  authEnabled = options.auth?.enabled ?? false;
173
- freeEntry = options.auth?.freeEntry ?? false;
174
160
  }
175
- const { AUTH_ENABLED, GUESTS, USERS, ADMINS, FREE_ENTRY, DOCUMENT_PERMISSIONS_ENABLED, SKIP_CREDENTIAL_VERIFICATION, } = process.env;
161
+ const { AUTH_ENABLED, ADMINS, DEFAULT_PROTECTION, DOCUMENT_PERMISSIONS_ENABLED, SKIP_CREDENTIAL_VERIFICATION, } = process.env;
176
162
  if (AUTH_ENABLED !== undefined) {
177
163
  authEnabled = AUTH_ENABLED === "true";
178
164
  }
179
- if (GUESTS !== undefined) {
180
- guests = GUESTS.split(",").map((g) => g.toLowerCase());
181
- }
182
- if (USERS !== undefined) {
183
- users = USERS.split(",").map((u) => u.toLowerCase());
184
- }
185
165
  if (ADMINS !== undefined) {
186
166
  admins = ADMINS.split(",").map((a) => a.toLowerCase());
187
167
  }
188
- if (FREE_ENTRY !== undefined) {
189
- freeEntry = FREE_ENTRY === "true";
168
+ let defaultProtection = false;
169
+ if (DEFAULT_PROTECTION !== undefined) {
170
+ defaultProtection = DEFAULT_PROTECTION.toLowerCase() === "true";
171
+ }
172
+ // Warn about deprecated env vars
173
+ const { USERS, GUESTS, FREE_ENTRY } = process.env;
174
+ if (USERS || GUESTS || FREE_ENTRY) {
175
+ console.warn("[DEPRECATION WARNING] The USERS, GUESTS, and FREE_ENTRY environment variables are no longer supported. " +
176
+ "Access control is now managed per-document via the DocumentProtection system. " +
177
+ "Use DEFAULT_PROTECTION=true for strict mode, or manage protection per document via the GraphQL API. " +
178
+ "See the auth documentation for migration guidance.");
190
179
  }
191
180
  let skipCredentialVerification = false;
192
181
  if (SKIP_CREDENTIAL_VERIFICATION !== undefined) {
193
182
  skipCredentialVerification = SKIP_CREDENTIAL_VERIFICATION === "true";
194
183
  }
195
- const authService = new AuthService({
196
- enabled: authEnabled,
197
- guests,
198
- users,
199
- admins,
200
- freeEntry,
201
- skipCredentialVerification,
202
- });
203
184
  // Health check endpoint (before auth middleware)
204
185
  app.get("/health", (_req, res) => {
205
186
  res.status(200).send("OK");
206
187
  });
188
+ const logger = options.logger ?? defaultLogger;
207
189
  // add auth middleware if auth is enabled
208
190
  if (authEnabled) {
209
191
  logger.info("Setting up Auth middleware");
192
+ const authService = new AuthService({
193
+ enabled: authEnabled,
194
+ admins,
195
+ skipCredentialVerification,
196
+ });
210
197
  // Apply auth middleware to all routes including GraphQL
211
198
  app.use((req, res, next) => {
212
199
  authService.authenticate(req, res, next);
@@ -224,11 +211,21 @@ async function _setupCommonInfrastructure(options) {
224
211
  // Run document permission migrations
225
212
  await runMigrations(db);
226
213
  logger.info("Document permission migrations completed");
227
- documentPermissionService = new DocumentPermissionService(db);
214
+ documentPermissionService = new DocumentPermissionService(db, { defaultProtection });
228
215
  logger.info("Document permission service initialized");
229
216
  }
217
+ // Create AuthorizationService when document permission service is available
218
+ let authorizationService;
219
+ if (documentPermissionService) {
220
+ authorizationService = new AuthorizationService(documentPermissionService, {
221
+ admins,
222
+ defaultProtection,
223
+ });
224
+ logger.info("Authorization service initialized");
225
+ }
230
226
  // Initialize package manager
231
- const packageLoader = options.packageLoader ?? new ImportPackageLoader();
227
+ const legacyReactor = options.legacyReactor ?? false;
228
+ const packageLoader = options.packageLoader ?? new ImportPackageLoader({ legacyReactor });
232
229
  const loaders = [packageLoader];
233
230
  const packages = new PackageManager(loaders, {
234
231
  configFile: options.configFile,
@@ -239,62 +236,110 @@ async function _setupCommonInfrastructure(options) {
239
236
  app,
240
237
  auth: {
241
238
  enabled: authEnabled,
242
- guests,
243
- users,
244
239
  admins,
245
- freeEntry,
246
240
  },
247
241
  relationalDb,
248
242
  analyticsStore,
249
243
  documentPermissionService,
244
+ authorizationService,
250
245
  packages,
251
246
  };
252
247
  }
253
248
  /**
254
249
  * Private helper function containing common setup logic for API initialization
255
250
  */
256
- async function _setupAPI(reactor, reactorClient, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth) {
257
- const module = { relationalDb, analyticsStore };
251
+ async function _setupAPI(reactor, reactorClient, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth, legacyReactor, processorApp, reactorProcessorManager, authorizationService) {
252
+ const module = {
253
+ relationalDb,
254
+ analyticsStore,
255
+ processorApp,
256
+ config: options.processorConfig,
257
+ };
258
258
  const mcpServerEnabled = options.mcp ?? true;
259
+ const logger = options.logger ?? defaultLogger;
259
260
  // initialize processors
260
- const processorManager = new ProcessorManager(reactor.listeners, reactor);
261
- for (const [packageName, fns] of [
262
- ...processors.entries(),
263
- ...Object.entries(options.processors ?? {}),
264
- ]) {
265
- const factories = fns.map((fn) => {
266
- try {
267
- return fn({
268
- analyticsStore: module.analyticsStore,
269
- relationalDb: module.relationalDb,
270
- config: options.processorConfig,
271
- });
272
- }
273
- catch (e) {
274
- logger.error(`Error initializing processor factory for package ${packageName}:`, e);
275
- return null;
261
+ let processorManager;
262
+ if (legacyReactor) {
263
+ // LEGACY PATH - use document-drive ProcessorManager
264
+ processorManager = new ProcessorManagerLegacy(reactor.listeners, reactor);
265
+ for (const [packageName, fns] of [
266
+ ...processors.entries(),
267
+ ...Object.entries(options.processors ?? {}),
268
+ ]) {
269
+ const factories = fns.map((fn) => {
270
+ try {
271
+ return fn(module);
272
+ }
273
+ catch (e) {
274
+ logger.error(`Error initializing processor factory for package ${packageName}:`, e);
275
+ return null;
276
+ }
277
+ });
278
+ const validFactories = factories.filter((factory) => factory !== null && typeof factory === "function");
279
+ if (!validFactories.length) {
280
+ continue;
276
281
  }
282
+ await processorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(validFactories.map(async (factory) => {
283
+ try {
284
+ return await factory(driveHeader);
285
+ }
286
+ catch (e) {
287
+ logger.error(`Error creating processor for drive ${driveHeader.id}:`, e);
288
+ return [];
289
+ }
290
+ }))).flat());
291
+ }
292
+ // hook up processor manager to drive added event
293
+ reactor.on("driveAdded", async (drive) => {
294
+ await processorManager.registerDrive(drive.header.id);
277
295
  });
278
- const validFactories = factories.filter((factory) => factory !== null && typeof factory === "function");
279
- if (!validFactories.length) {
280
- continue;
296
+ }
297
+ else {
298
+ // NEW REACTOR PATH - use ProcessorManager from ReactorModule
299
+ if (!reactorProcessorManager) {
300
+ throw new Error("ProcessorManager not available from ReactorModule");
281
301
  }
282
- await processorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(validFactories.map(async (factory) => {
283
- try {
284
- return await factory(driveHeader);
285
- }
286
- catch (e) {
287
- logger.error(`Error creating processor for drive ${driveHeader.id}:`, e);
288
- return [];
302
+ // Create a wrapper that adapts the legacy-style ProcessorManager interface
303
+ // to track processors for the API response
304
+ processorManager = new ProcessorManagerLegacy(reactor.listeners, reactor);
305
+ for (const [packageName, fns] of [
306
+ ...processors.entries(),
307
+ ...Object.entries(options.processors ?? {}),
308
+ ]) {
309
+ const factories = fns.map((fn) => {
310
+ try {
311
+ return fn(module);
312
+ }
313
+ catch (e) {
314
+ logger.error(`Error initializing processor factory for package ${packageName}:`, e);
315
+ return null;
316
+ }
317
+ });
318
+ // Filter and cast to the reactor types
319
+ // When legacyReactor=false, PackageLoader loads processorFactory which
320
+ // returns factories implementing reactor's IProcessor interface
321
+ const validFactories = factories.filter((factory) => factory !== null && typeof factory === "function");
322
+ if (!validFactories.length) {
323
+ continue;
289
324
  }
290
- }))).flat());
325
+ // Register with the new reactor ProcessorManager
326
+ // Cast the results to ReactorProcessorRecord since the loaded factories
327
+ // implement the new reactor interface when legacyReactor=false
328
+ await reactorProcessorManager.registerFactory(packageName, async (driveHeader) => (await Promise.all(validFactories.map(async (factory) => {
329
+ try {
330
+ const result = await factory(driveHeader);
331
+ return result;
332
+ }
333
+ catch (e) {
334
+ logger.error(`Error creating processor for drive ${driveHeader.id}:`, e);
335
+ return [];
336
+ }
337
+ }))).flat());
338
+ }
339
+ // No driveAdded event listener needed - ProcessorManager is a read model
291
340
  }
292
- // hook up processor manager to drive added event
293
- reactor.on("driveAdded", async (drive) => {
294
- await processorManager.registerDrive(drive.header.id);
295
- });
296
341
  // Start the server
297
- const { httpServer, wsServer } = await startServer(app, port, options.https);
342
+ const { httpServer, wsServer } = await startServer(app, port, options.https, logger);
298
343
  // set up subgraph manager
299
344
  const coreSubgraphs = DefaultCoreSubgraphs.slice();
300
345
  coreSubgraphs.push(ReactorSubgraph);
@@ -306,7 +351,7 @@ async function _setupAPI(reactor, reactorClient, syncManager, app, port, package
306
351
  const graphqlManager = await setupGraphQLManager(app, httpServer, wsServer, reactor, reactorClient, relationalDb, analyticsStore, syncManager, {
307
352
  extended: subgraphs,
308
353
  core: coreSubgraphs,
309
- }, auth, documentPermissionService, options.enableDocumentModelSubgraphs);
354
+ }, logger.child(["graphql-manager"]), auth, documentPermissionService, options.enableDocumentModelSubgraphs, options.useNewDocumentModelSubgraph, port, authorizationService);
310
355
  // Set up event listeners
311
356
  setupEventListeners(packages, reactor, graphqlManager, processorManager, module);
312
357
  if (mcpServerEnabled) {
@@ -329,8 +374,8 @@ async function _setupAPI(reactor, reactorClient, syncManager, app, port, package
329
374
  *
330
375
  * @returns The API server components.
331
376
  */
332
- export async function startAPI(driveServer, client, registry, syncManager, options) {
333
- const { port, app, auth, relationalDb, analyticsStore, documentPermissionService, packages, } = await trace("reactor-api.setup.infrastructure", { tags: { "resource.name": "infrastructure" } }, () => _setupCommonInfrastructure(options));
377
+ export async function startAPI(driveServer, client, registry, syncManager, options, processorApp) {
378
+ const { port, app, auth, relationalDb, analyticsStore, documentPermissionService, authorizationService, packages, } = await trace("reactor-api.setup.infrastructure", { tags: { "resource.name": "infrastructure" } }, () => _setupCommonInfrastructure(options));
334
379
  const { documentModels, processors, subgraphs } = await trace("reactor-api.packages.init", { tags: { "resource.name": "packages" } }, () => packages.init());
335
380
  // pass to legacy reactor
336
381
  driveServer.setDocumentModelModules(getUniqueDocumentModels([
@@ -339,7 +384,10 @@ export async function startAPI(driveServer, client, registry, syncManager, optio
339
384
  ]));
340
385
  // pass to registry
341
386
  registry.registerModules(...documentModels);
342
- return _setupAPI(driveServer, client, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth);
387
+ // startAPI always uses legacy reactor since it doesn't have ReactorClientModule
388
+ const legacyReactor = true;
389
+ return _setupAPI(driveServer, client, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth, legacyReactor, processorApp, undefined, // no reactorProcessorManager in legacy mode
390
+ authorizationService);
343
391
  }
344
392
  /**
345
393
  * Initializes and starts the API server using initializer functions.
@@ -347,21 +395,30 @@ export async function startAPI(driveServer, client, registry, syncManager, optio
347
395
  * to create the drive server and client instances with the appropriate dependencies.
348
396
  *
349
397
  * @param driveServerInitializer - Initializer function that creates the document drive server with document models.
350
- * @param clientInitializer - Initializer function that creates the reactor client and sync manager with the drive server.
398
+ * @param clientInitializer - Initializer function that creates the reactor client module with the drive server.
351
399
  * @param options - Additional options for server configuration.
352
400
  *
353
401
  * @returns The API server components along with the created drive server and client instances.
354
402
  */
355
- export async function initializeAndStartAPI(driveServerInitializer, clientInitializer, options) {
356
- const { port, app, auth, relationalDb, analyticsStore, documentPermissionService, packages, } = await trace("reactor-api.setup.infrastructure", { tags: { "resource.name": "infrastructure" } }, () => _setupCommonInfrastructure(options));
403
+ export async function initializeAndStartAPI(driveServerInitializer, clientInitializer, options, processorApp) {
404
+ const { port, app, auth, relationalDb, analyticsStore, documentPermissionService, authorizationService, packages, } = await trace("reactor-api.setup.infrastructure", { tags: { "resource.name": "infrastructure" } }, () => _setupCommonInfrastructure(options));
357
405
  const { documentModels, processors, subgraphs } = await trace("reactor-api.packages.init", { tags: { "resource.name": "packages" } }, () => packages.init());
358
406
  const reactor = await trace("reactor-api.drive-server.init", { tags: { "resource.name": "drive-server" } }, () => driveServerInitializer(documentModels));
359
- const { client: reactorClient, syncManager } = await trace("reactor-api.reactor-client.init", { tags: { "resource.name": "reactor-client" } }, () => clientInitializer(reactor, documentModels));
360
- const api = await _setupAPI(reactor, reactorClient, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth);
407
+ const reactorClientModule = await trace("reactor-api.reactor-client.init", { tags: { "resource.name": "reactor-client" } }, () => clientInitializer(reactor, documentModels));
408
+ // Extract client and syncManager from the module
409
+ const reactorClient = reactorClientModule.client;
410
+ const syncManager = reactorClientModule.reactorModule?.syncModule?.syncManager;
411
+ if (!syncManager) {
412
+ throw new Error("SyncManager not available from ReactorClientModule");
413
+ }
414
+ const legacyReactor = options.legacyReactor ?? false;
415
+ const reactorProcessorManager = reactorClientModule.reactorModule?.processorManager;
416
+ const api = await _setupAPI(reactor, reactorClient, syncManager, app, port, packages, relationalDb, analyticsStore, documentPermissionService, processors, subgraphs, options, auth, legacyReactor, processorApp, reactorProcessorManager, authorizationService);
361
417
  return {
362
418
  ...api,
363
419
  driveServer: reactor,
364
420
  client: reactorClient,
421
+ syncManager,
365
422
  };
366
423
  }
367
424
  //# sourceMappingURL=server.js.map