@codemation/host 0.6.0 → 0.8.0

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 (226) hide show
  1. package/CHANGELOG.md +483 -0
  2. package/dist/{ApiPaths-CLTHphYZ.js → ApiPaths-Dv1dcHu_.js} +4 -4
  3. package/dist/ApiPaths-Dv1dcHu_.js.map +1 -0
  4. package/dist/{AppConfigFactory-YnveXE9k.d.ts → AppConfigFactory-BT0y0LVC.d.ts} +8490 -5548
  5. package/dist/{AppConfigFactory-C6q-CSKb.js → AppConfigFactory-Cx4qQvRk.js} +112 -52
  6. package/dist/AppConfigFactory-Cx4qQvRk.js.map +1 -0
  7. package/dist/{AppContainerFactory-qaqc-R1D.js → AppContainerFactory-DRTjG7nG.js} +7298 -1732
  8. package/dist/AppContainerFactory-DRTjG7nG.js.map +1 -0
  9. package/dist/{CodemationAppContext-DRu1Dpri.d.ts → CodemationAppContext-CGFYVcSb.d.ts} +14 -4
  10. package/dist/{CodemationAuthoring.types-DZl-sJaM.js → CodemationAuthoring.types-BteaR3Dc.js} +19 -6
  11. package/dist/CodemationAuthoring.types-BteaR3Dc.js.map +1 -0
  12. package/dist/{CodemationAuthoring.types-fBRppnmi.d.ts → CodemationAuthoring.types-DiKKogum.d.ts} +30 -5
  13. package/dist/{CodemationConfigNormalizer-DVko3cVN.d.ts → CodemationConfigNormalizer-48f-T66P.d.ts} +3 -3
  14. package/dist/{CodemationConsumerConfigLoader-BeAUS144.js → CodemationConsumerConfigLoader-By-6tuGc.js} +81 -10
  15. package/dist/CodemationConsumerConfigLoader-By-6tuGc.js.map +1 -0
  16. package/dist/{CodemationConsumerConfigLoader-DJWr86f-.d.ts → CodemationConsumerConfigLoader-_PIYqwVx.d.ts} +18 -2
  17. package/dist/{CodemationPluginListMerger-B-W5Fa_X.js → CodemationPluginListMerger-D1B1IEbt.js} +1 -1
  18. package/dist/{CodemationPluginListMerger-B-W5Fa_X.js.map → CodemationPluginListMerger-D1B1IEbt.js.map} +1 -1
  19. package/dist/{CodemationPluginListMerger-DGc-jfa2.d.ts → CodemationPluginListMerger-DP7djJ9S.d.ts} +151 -19
  20. package/dist/CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js +97 -0
  21. package/dist/CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js.map +1 -0
  22. package/dist/{CodemationWhitelabelConfig-CWbcyQqn.d.ts → CodemationWhitelabelConfig-Ca2mCUeC.d.ts} +2 -2
  23. package/dist/{CollectionContracts.types-DdpHft0i.d.ts → CollectionContracts.types-DDyFYT_D.d.ts} +1 -1
  24. package/dist/{CredentialContractsRegistry-DrMIDSw8.d.ts → CredentialContractsRegistry-Bq2bq28t.d.ts} +2 -2
  25. package/dist/{CredentialServices-UfvHB-rN.d.ts → CredentialServices-BLloBztI.d.ts} +65 -20
  26. package/dist/{CredentialServices-CgxwguAv.js → CredentialServices-Dk8yypeL.js} +310 -51
  27. package/dist/CredentialServices-Dk8yypeL.js.map +1 -0
  28. package/dist/InternalHonoApiRouteRegistrar-c7t3KnV_.d.ts +17 -0
  29. package/dist/InternalPingRegistrar-DY3kSfxP.js +221 -0
  30. package/dist/InternalPingRegistrar-DY3kSfxP.js.map +1 -0
  31. package/dist/{ItemsInputNormalizer-C-KHg9Mo.d.ts → ItemsInputNormalizer-_RwIfRIQ.d.ts} +89 -25
  32. package/dist/{LogLevelPolicyFactory-CampWO0l.d.ts → LogLevelPolicyFactory-ewCHLDLn.d.ts} +2 -2
  33. package/dist/{PublicFrontendBootstrap-DzBgwOnG.d.ts → PublicFrontendBootstrap-Cev3qK46.d.ts} +9 -2
  34. package/dist/PublicFrontendBootstrapFactory-Dv04tJ-6.d.ts +82 -0
  35. package/dist/{PublicFrontendBootstrapJsonCodec-Cl_DLRh0.d.ts → PublicFrontendBootstrapJsonCodec-CXG9Dxft.d.ts} +3 -3
  36. package/dist/{PublicFrontendBootstrapJsonCodec-DzqvA0uo.js → PublicFrontendBootstrapJsonCodec-CegIF_ne.js} +7 -2
  37. package/dist/PublicFrontendBootstrapJsonCodec-CegIF_ne.js.map +1 -0
  38. package/dist/ServerLoggerFactory-Ckk52S3w.js +223 -0
  39. package/dist/ServerLoggerFactory-Ckk52S3w.js.map +1 -0
  40. package/dist/{TelemetryContracts-DbaNomrH.d.ts → TelemetryContracts-BtDx84Cp.d.ts} +13 -4
  41. package/dist/{WorkflowPolicyUiPresentationFactory-DQEY-h_S.d.ts → WorkflowPolicyUiPresentationFactory-6MyjCvBO.d.ts} +2 -2
  42. package/dist/{WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js → WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js} +1 -1
  43. package/dist/{WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js.map → WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js.map} +1 -1
  44. package/dist/{WorkflowViewContracts-CzK2KFuz.d.ts → WorkflowViewContracts-B7aFQcIw.d.ts} +10 -1
  45. package/dist/authoring.d.ts +5 -5
  46. package/dist/authoring.js +1 -1
  47. package/dist/client.d.ts +4 -4
  48. package/dist/client.js +2 -2
  49. package/dist/consumer.d.ts +6 -6
  50. package/dist/consumer.js +2 -2
  51. package/dist/credentials.d.ts +6 -6
  52. package/dist/credentials.js +1 -1
  53. package/dist/devServerSidecar.d.ts +2 -2
  54. package/dist/devServerSidecar.js +1 -94
  55. package/dist/devServerSidecar.js.map +1 -1
  56. package/dist/dto.d.ts +6 -6
  57. package/dist/{index-BbBk26m0.d.ts → index-DilAYwnH.d.ts} +49 -3
  58. package/dist/index.d.ts +141 -21
  59. package/dist/index.js +109 -14
  60. package/dist/index.js.map +1 -0
  61. package/dist/mapping.d.ts +2 -2
  62. package/dist/mapping.js +1 -1
  63. package/dist/nextServer.d.ts +42 -113
  64. package/dist/nextServer.js +9 -7
  65. package/dist/pairing.d.ts +93 -0
  66. package/dist/pairing.js +5 -0
  67. package/dist/pairing.types-snfZ_OzB.d.ts +19 -0
  68. package/dist/persistenceServer-B71RGvSj.d.ts +30 -0
  69. package/dist/{persistenceServer-CmsIKnO9.js → persistenceServer-C-hH4z6l.js} +2 -2
  70. package/dist/{persistenceServer-CmsIKnO9.js.map → persistenceServer-C-hH4z6l.js.map} +1 -1
  71. package/dist/persistenceServer.d.ts +8 -8
  72. package/dist/persistenceServer.js +3 -3
  73. package/dist/{server-MUNGsBYK.d.ts → server-09PKasWR.d.ts} +21 -6
  74. package/dist/{server-CJFfY67o.js → server-vtRCPgRJ.js} +7 -6
  75. package/dist/{server-CJFfY67o.js.map → server-vtRCPgRJ.js.map} +1 -1
  76. package/dist/server.d.ts +14 -14
  77. package/dist/server.js +13 -11
  78. package/package.json +47 -58
  79. package/prisma/migrations/20260519000000_workflow_audit_log/migration.sql +23 -0
  80. package/prisma/migrations/20260519100000_storage_growth_fixes/migration.sql +61 -0
  81. package/prisma/migrations.sqlite/20260519000000_workflow_audit_log/migration.sql +21 -0
  82. package/prisma/migrations.sqlite/20260519100000_storage_growth_fixes/migration.sql +29 -0
  83. package/prisma/schema.postgresql.prisma +55 -17
  84. package/prisma/schema.sqlite.prisma +55 -17
  85. package/prisma-generated/prisma-postgresql-client/edge.js +33 -5
  86. package/prisma-generated/prisma-postgresql-client/index-browser.js +29 -1
  87. package/prisma-generated/prisma-postgresql-client/index.d.ts +8933 -5716
  88. package/prisma-generated/prisma-postgresql-client/index.js +33 -5
  89. package/prisma-generated/prisma-postgresql-client/package.json +1 -1
  90. package/prisma-generated/prisma-postgresql-client/schema.prisma +38 -0
  91. package/prisma-generated/prisma-sqlite-client/edge.js +33 -5
  92. package/prisma-generated/prisma-sqlite-client/index-browser.js +29 -1
  93. package/prisma-generated/prisma-sqlite-client/index.d.ts +8925 -5713
  94. package/prisma-generated/prisma-sqlite-client/index.js +33 -5
  95. package/prisma-generated/prisma-sqlite-client/package.json +1 -1
  96. package/prisma-generated/prisma-sqlite-client/schema.prisma +38 -0
  97. package/scripts/check-collections.mjs +18 -0
  98. package/scripts/generate-prisma-clients.mjs +20 -11
  99. package/src/application/WorkflowAuditLogPruneScheduler.ts +96 -0
  100. package/src/application/auth/AuthenticatedPrincipal.ts +4 -0
  101. package/src/application/commands/StartWorkflowRunCommandHandler.ts +4 -0
  102. package/src/application/contracts/WorkflowViewContracts.ts +6 -0
  103. package/src/application/contracts/WorkflowWebsocketMessage.ts +3 -1
  104. package/src/application/mapping/WorkflowDefinitionMapper.ts +40 -1
  105. package/src/application/runs/WorkflowRunRetentionPruneScheduler.ts +7 -1
  106. package/src/application/telemetry/OtelExecutionTelemetry.types.ts +5 -0
  107. package/src/application/telemetry/OtelExecutionTelemetryFactory.ts +4 -0
  108. package/src/application/telemetry/StoredTelemetrySpanScope.ts +6 -2
  109. package/src/application/telemetry/TelemetryRetentionTimestampFactory.ts +27 -17
  110. package/src/application/telemetry/TelemetrySpanPublisher.ts +11 -0
  111. package/src/application/websocket/TelemetrySpanWebsocketRelay.ts +31 -0
  112. package/src/applicationTokens.ts +20 -1
  113. package/src/audit/IAuditEmitter.ts +32 -0
  114. package/src/audit/PrismaWorkflowAuditLogRepository.ts +34 -0
  115. package/src/audit/WorkflowAuditLogWriter.ts +125 -0
  116. package/src/auth/managed/ManagedAuthConfig.ts +29 -0
  117. package/src/auth/managed/ManagedAuthMiddleware.ts +52 -0
  118. package/src/auth/managed/ManagedCorsMiddleware.ts +43 -0
  119. package/src/auth/managed/ManagedModeBootGuard.ts +27 -0
  120. package/src/auth/managed/index.ts +5 -0
  121. package/src/bootstrap/AppContainerFactory.ts +295 -29
  122. package/src/bootstrap/AppContainerLifecycle.ts +31 -0
  123. package/src/bootstrap/perf/BootTimer.ts +168 -0
  124. package/src/bootstrap/runtime/AppConfigFactory.ts +21 -65
  125. package/src/bootstrap/runtime/FrontendRuntime.ts +4 -1
  126. package/src/bootstrap/runtime/HeadlessApiRuntime.ts +47 -0
  127. package/src/bootstrap/runtime/WorkerRuntime.ts +2 -1
  128. package/src/credentials/BrokerClient.ts +49 -0
  129. package/src/credentials/BrokerRefreshError.ts +12 -0
  130. package/src/credentials/BrokerRefreshInvalidGrantError.ts +13 -0
  131. package/src/credentials/ControlPlaneCatalogFetcher.ts +261 -0
  132. package/src/credentials/CredentialOAuth2MaterialReader.ts +136 -0
  133. package/src/credentials/InternalCredentialsListRegistrar.ts +48 -0
  134. package/src/credentials/InternalCredentialsPushRegistrar.ts +125 -0
  135. package/src/credentials/LocalOAuthFlowExecutor.ts +316 -0
  136. package/src/credentials/ManagedOAuthFlowExecutor.ts +94 -0
  137. package/src/credentials/ManagedOAuthRefreshInvalidGrantError.ts +13 -0
  138. package/src/credentials/catalogTypes.ts +4 -0
  139. package/src/credentials/refresh/CredentialDisconnectedError.ts +11 -0
  140. package/src/domain/credentials/CredentialBindingService.ts +54 -2
  141. package/src/domain/credentials/CredentialKeyRotatedError.ts +22 -0
  142. package/src/domain/credentials/CredentialSecretCipher.ts +68 -6
  143. package/src/domain/credentials/CredentialTypeRegistryImpl.ts +117 -10
  144. package/src/domain/credentials/OAuth2RedirectUriResolver.ts +79 -0
  145. package/src/domain/credentials/WorkflowCredentialNodeResolver.ts +14 -5
  146. package/src/domain/telemetry/TelemetryContracts.ts +7 -1
  147. package/src/domain/workflows/WorkflowActivationPreflight.ts +24 -1
  148. package/src/domain/workflows/WorkflowActivationPreflightRules.ts +40 -1
  149. package/src/index.ts +9 -0
  150. package/src/infrastructure/binary/LocalFilesystemBinaryStorageRegistry.ts +29 -1
  151. package/src/infrastructure/binary/S3BinaryStorage.ts +169 -0
  152. package/src/infrastructure/binary/S3BinaryStorageConfig.ts +17 -0
  153. package/src/infrastructure/config/CodemationPluginRegistrar.ts +3 -1
  154. package/src/infrastructure/persistence/CodemationDatabaseUrlParser.ts +41 -0
  155. package/src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts +8 -3
  156. package/src/infrastructure/persistence/PrismaMigrationDeployer.ts +21 -13
  157. package/src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts +43 -8
  158. package/src/infrastructure/persistence/PrismaWorkflowRunRepository.ts +26 -3
  159. package/src/infrastructure/persistence/PrismaWorkflowSnapshotRepository.ts +48 -0
  160. package/src/mcp/AgentMcpIntegrationImpl.ts +344 -0
  161. package/src/mcp/McpClientFactory.ts +29 -0
  162. package/src/mcp/McpConnectionPool.ts +184 -0
  163. package/src/mcp/McpConnectionPool.types.ts +12 -0
  164. package/src/mcp/McpServerCatalog.ts +104 -0
  165. package/src/mcp/index.ts +5 -0
  166. package/src/pairing/HmacRequestSigner.ts +32 -0
  167. package/src/pairing/IncomingHmacVerifier.ts +82 -0
  168. package/src/pairing/InternalHmacAuthMiddleware.ts +33 -0
  169. package/src/pairing/InternalPingRegistrar.ts +25 -0
  170. package/src/pairing/PairedFetch.ts +33 -0
  171. package/src/pairing/PairingConfigFactory.ts +35 -0
  172. package/src/pairing/PairingConfigToken.ts +6 -0
  173. package/src/pairing/index.ts +14 -0
  174. package/src/pairing/pairing.types.ts +18 -0
  175. package/src/pairing.ts +17 -0
  176. package/src/persistenceServer.ts +1 -0
  177. package/src/presentation/config/AppConfig.ts +7 -1
  178. package/src/presentation/config/CodemationAuthConfig.ts +1 -1
  179. package/src/presentation/config/CodemationAuthoring.types.ts +60 -5
  180. package/src/presentation/config/CodemationConfig.ts +9 -0
  181. package/src/presentation/config/CodemationConfigNormalizer.ts +39 -1
  182. package/src/presentation/config/CodemationPlugin.ts +2 -1
  183. package/src/presentation/frontend/CodemationFrontendAuthSnapshot.ts +5 -0
  184. package/src/presentation/frontend/CodemationFrontendAuthSnapshotFactory.ts +7 -1
  185. package/src/presentation/frontend/PublicFrontendBootstrap.ts +2 -0
  186. package/src/presentation/frontend/PublicFrontendBootstrapFactory.ts +5 -1
  187. package/src/presentation/frontend/PublicFrontendBootstrapJsonCodec.ts +4 -1
  188. package/src/presentation/http/ApiPaths.ts +4 -4
  189. package/src/presentation/http/HeadlessHttpServerFactory.ts +56 -0
  190. package/src/presentation/http/ServerHttpErrorResponseFactory.ts +39 -2
  191. package/src/presentation/http/hono/CodemationHonoApiAppFactory.ts +33 -8
  192. package/src/presentation/http/hono/InternalHonoApiRouteRegistrar.ts +12 -0
  193. package/src/presentation/http/hono/registrars/ManagedMeHonoApiRouteRegistrar.ts +35 -0
  194. package/src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts +2 -2
  195. package/src/presentation/http/routeHandlers/CredentialHttpRouteHandler.ts +28 -0
  196. package/src/presentation/http/routeHandlers/OAuth2HttpRouteHandlerFactory.ts +98 -41
  197. package/src/presentation/server/CodemationConsumerConfigLoader.ts +59 -7
  198. package/src/presentation/server/CodemationPluginDiscovery.ts +5 -0
  199. package/src/presentation/server/WorkflowDefinitionExportsResolver.ts +18 -0
  200. package/src/presentation/server/WorkflowModulePathFinder.ts +12 -1
  201. package/src/presentation/websocket/ManagedWebsocketAuthenticator.ts +50 -0
  202. package/src/presentation/websocket/WebsocketAuthenticator.types.ts +12 -0
  203. package/src/presentation/websocket/WorkflowWebsocketServer.ts +24 -3
  204. package/src/presentation/websocket/WorkflowWebsocketServerFactory.ts +16 -0
  205. package/src/process/ExecaProcessRunner.ts +41 -0
  206. package/src/process/ProcessRunner.types.ts +39 -0
  207. package/src/server.ts +2 -0
  208. package/src/workflows/InternalWorkflowActivationRegistrar.ts +42 -0
  209. package/src/workflows/InternalWorkflowDetailRegistrar.ts +33 -0
  210. package/src/workflows/InternalWorkflowTestRunRegistrar.ts +91 -0
  211. package/src/workflows/InternalWorkflowsListRegistrar.ts +28 -0
  212. package/src/workflows/discovery/WorkflowDirectoryDiscoverer.ts +79 -0
  213. package/tsconfig.json +2 -0
  214. package/vitest.shared.ts +5 -0
  215. package/dist/ApiPaths-CLTHphYZ.js.map +0 -1
  216. package/dist/AppConfigFactory-C6q-CSKb.js.map +0 -1
  217. package/dist/AppContainerFactory-qaqc-R1D.js.map +0 -1
  218. package/dist/CodemationAuthoring.types-DZl-sJaM.js.map +0 -1
  219. package/dist/CodemationConsumerConfigLoader-BeAUS144.js.map +0 -1
  220. package/dist/CredentialServices-CgxwguAv.js.map +0 -1
  221. package/dist/PublicFrontendBootstrapFactory-Cb2pLmDd.d.ts +0 -45
  222. package/dist/PublicFrontendBootstrapJsonCodec-DzqvA0uo.js.map +0 -1
  223. package/dist/ServerLoggerFactory-BKSIh9Xv.js +0 -98
  224. package/dist/ServerLoggerFactory-BKSIh9Xv.js.map +0 -1
  225. package/dist/persistenceServer-vtJAGDat.d.ts +0 -9
  226. package/src/domain/credentials/OAuth2ConnectServiceFactory.ts +0 -411
@@ -1 +1 @@
1
- {"version":3,"file":"CodemationPluginListMerger-B-W5Fa_X.js","names":["packageMetadata: CodemationPluginPackageMetadata","result: CodemationPlugin[]"],"sources":["../src/bootstrap/CodemationBootstrapRequest.ts","../src/presentation/config/CodemationPluginListMerger.ts"],"sourcesContent":["export class CodemationBootstrapRequest {\n readonly consumerRoot: string;\n readonly repoRoot: string;\n readonly workflowSources: ReadonlyArray<string>;\n readonly env?: Readonly<NodeJS.ProcessEnv>;\n\n constructor(\n args: Readonly<{\n consumerRoot: string;\n repoRoot: string;\n workflowSources?: ReadonlyArray<string>;\n env?: Readonly<NodeJS.ProcessEnv>;\n }>,\n ) {\n this.consumerRoot = args.consumerRoot;\n this.repoRoot = args.repoRoot;\n this.workflowSources = [...(args.workflowSources ?? [])];\n this.env = args.env;\n }\n\n resolveEnvironment(): NodeJS.ProcessEnv {\n return {\n ...process.env,\n ...(this.env ?? {}),\n };\n }\n}\n","import { CodemationPluginPackageMetadata, type CodemationPlugin } from \"./CodemationPlugin\";\n\n/**\n * Merges explicitly configured plugins with auto-discovered plugins.\n * Configured plugins are applied first; discovered plugins fill in gaps.\n * Plugins discovered from package.json manifests are deduped by npm package name so the same package is not\n * registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.\n */\nexport class CodemationPluginListMerger {\n constructor(private readonly packageMetadata: CodemationPluginPackageMetadata) {}\n\n merge(\n configuredPlugins: ReadonlyArray<CodemationPlugin>,\n discoveredPlugins: ReadonlyArray<CodemationPlugin>,\n ): ReadonlyArray<CodemationPlugin> {\n const pluginsByPackageId = new Map<string, CodemationPlugin>();\n const pluginsByReference = new Set<CodemationPlugin>();\n const result: CodemationPlugin[] = [];\n\n for (const plugin of configuredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n for (const plugin of discoveredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n return result;\n }\n\n private tryAdd(\n plugin: CodemationPlugin,\n pluginsByPackageId: Map<string, CodemationPlugin>,\n pluginsByReference: Set<CodemationPlugin>,\n result: CodemationPlugin[],\n ): void {\n const packageId = this.packageMetadata.readPackageName(plugin);\n if (packageId) {\n if (pluginsByPackageId.has(packageId)) {\n return;\n }\n pluginsByPackageId.set(packageId, plugin);\n result.push(plugin);\n return;\n }\n if (pluginsByReference.has(plugin)) {\n return;\n }\n pluginsByReference.add(plugin);\n result.push(plugin);\n }\n}\n"],"mappings":";AAAA,IAAa,6BAAb,MAAwC;CACtC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YACE,MAMA;AACA,OAAK,eAAe,KAAK;AACzB,OAAK,WAAW,KAAK;AACrB,OAAK,kBAAkB,CAAC,GAAI,KAAK,mBAAmB,EAAE,CAAE;AACxD,OAAK,MAAM,KAAK;;CAGlB,qBAAwC;AACtC,SAAO;GACL,GAAG,QAAQ;GACX,GAAI,KAAK,OAAO,EAAE;GACnB;;;;;;;;;;;;AChBL,IAAa,6BAAb,MAAwC;CACtC,YAAY,AAAiBA,iBAAkD;EAAlD;;CAE7B,MACE,mBACA,mBACiC;EACjC,MAAM,qCAAqB,IAAI,KAA+B;EAC9D,MAAM,qCAAqB,IAAI,KAAuB;EACtD,MAAMC,SAA6B,EAAE;AAErC,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,SAAO;;CAGT,AAAQ,OACN,QACA,oBACA,oBACA,QACM;EACN,MAAM,YAAY,KAAK,gBAAgB,gBAAgB,OAAO;AAC9D,MAAI,WAAW;AACb,OAAI,mBAAmB,IAAI,UAAU,CACnC;AAEF,sBAAmB,IAAI,WAAW,OAAO;AACzC,UAAO,KAAK,OAAO;AACnB;;AAEF,MAAI,mBAAmB,IAAI,OAAO,CAChC;AAEF,qBAAmB,IAAI,OAAO;AAC9B,SAAO,KAAK,OAAO"}
1
+ {"version":3,"file":"CodemationPluginListMerger-D1B1IEbt.js","names":["packageMetadata: CodemationPluginPackageMetadata","result: CodemationPlugin[]"],"sources":["../src/bootstrap/CodemationBootstrapRequest.ts","../src/presentation/config/CodemationPluginListMerger.ts"],"sourcesContent":["export class CodemationBootstrapRequest {\n readonly consumerRoot: string;\n readonly repoRoot: string;\n readonly workflowSources: ReadonlyArray<string>;\n readonly env?: Readonly<NodeJS.ProcessEnv>;\n\n constructor(\n args: Readonly<{\n consumerRoot: string;\n repoRoot: string;\n workflowSources?: ReadonlyArray<string>;\n env?: Readonly<NodeJS.ProcessEnv>;\n }>,\n ) {\n this.consumerRoot = args.consumerRoot;\n this.repoRoot = args.repoRoot;\n this.workflowSources = [...(args.workflowSources ?? [])];\n this.env = args.env;\n }\n\n resolveEnvironment(): NodeJS.ProcessEnv {\n return {\n ...process.env,\n ...(this.env ?? {}),\n };\n }\n}\n","import { CodemationPluginPackageMetadata, type CodemationPlugin } from \"./CodemationPlugin\";\n\n/**\n * Merges explicitly configured plugins with auto-discovered plugins.\n * Configured plugins are applied first; discovered plugins fill in gaps.\n * Plugins discovered from package.json manifests are deduped by npm package name so the same package is not\n * registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.\n */\nexport class CodemationPluginListMerger {\n constructor(private readonly packageMetadata: CodemationPluginPackageMetadata) {}\n\n merge(\n configuredPlugins: ReadonlyArray<CodemationPlugin>,\n discoveredPlugins: ReadonlyArray<CodemationPlugin>,\n ): ReadonlyArray<CodemationPlugin> {\n const pluginsByPackageId = new Map<string, CodemationPlugin>();\n const pluginsByReference = new Set<CodemationPlugin>();\n const result: CodemationPlugin[] = [];\n\n for (const plugin of configuredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n for (const plugin of discoveredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n return result;\n }\n\n private tryAdd(\n plugin: CodemationPlugin,\n pluginsByPackageId: Map<string, CodemationPlugin>,\n pluginsByReference: Set<CodemationPlugin>,\n result: CodemationPlugin[],\n ): void {\n const packageId = this.packageMetadata.readPackageName(plugin);\n if (packageId) {\n if (pluginsByPackageId.has(packageId)) {\n return;\n }\n pluginsByPackageId.set(packageId, plugin);\n result.push(plugin);\n return;\n }\n if (pluginsByReference.has(plugin)) {\n return;\n }\n pluginsByReference.add(plugin);\n result.push(plugin);\n }\n}\n"],"mappings":";AAAA,IAAa,6BAAb,MAAwC;CACtC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YACE,MAMA;AACA,OAAK,eAAe,KAAK;AACzB,OAAK,WAAW,KAAK;AACrB,OAAK,kBAAkB,CAAC,GAAI,KAAK,mBAAmB,EAAE,CAAE;AACxD,OAAK,MAAM,KAAK;;CAGlB,qBAAwC;AACtC,SAAO;GACL,GAAG,QAAQ;GACX,GAAI,KAAK,OAAO,EAAE;GACnB;;;;;;;;;;;;AChBL,IAAa,6BAAb,MAAwC;CACtC,YAAY,AAAiBA,iBAAkD;EAAlD;;CAE7B,MACE,mBACA,mBACiC;EACjC,MAAM,qCAAqB,IAAI,KAA+B;EAC9D,MAAM,qCAAqB,IAAI,KAAuB;EACtD,MAAMC,SAA6B,EAAE;AAErC,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,SAAO;;CAGT,AAAQ,OACN,QACA,oBACA,oBACA,QACM;EACN,MAAM,YAAY,KAAK,gBAAgB,gBAAgB,OAAO;AAC9D,MAAI,WAAW;AACb,OAAI,mBAAmB,IAAI,UAAU,CACnC;AAEF,sBAAmB,IAAI,WAAW,OAAO;AACzC,UAAO,KAAK,OAAO;AACnB;;AAEF,MAAI,mBAAmB,IAAI,OAAO,CAChC;AAEF,qBAAmB,IAAI,OAAO;AAC9B,SAAO,KAAK,OAAO"}
@@ -1,13 +1,16 @@
1
- import { n as Engine, r as CollectionDefinition, s as Clock } from "./index-BbBk26m0.js";
2
- import { $ as RunCurrentState, Dt as WorkflowId, J as WorkflowDefinition, U as PersistedRunPolicySnapshot, W as RunId, Z as PersistedRunState, at as RunSummary, b as TestCaseRunStatus, ct as AnyCredentialType, d as NodeExecutionRequestHandler, f as NodeExecutionScheduler, g as TypeToken, h as Container, k as WorkflowRunDetailDto, o as BinaryStorage, p as WorkflowRepository, tt as RunPruneCandidate, v as RunEvent, w as WorkflowActivationPolicy, y as RunEventBus } from "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import { C as CodemationContainerRegistration, l as CodemationPluginPackageMetadata, o as CodemationPlugin, r as AppConfig } from "./CodemationAppContext-DRu1Dpri.js";
4
- import { a as CodemationAuthConfig, l as Logger, t as CodemationWhitelabelConfig, u as LoggerFactory } from "./CodemationWhitelabelConfig-CWbcyQqn.js";
5
- import { t as LogLevelPolicyFactory } from "./LogLevelPolicyFactory-CampWO0l.js";
6
- import { t as CredentialStore } from "./CredentialServices-UfvHB-rN.js";
7
- import { i as TelemetryMetricPointStore, n as TelemetryArtifactStore, o as TelemetrySpanStore, r as TelemetryExporter, t as RunTraceContextRepository } from "./TelemetryContracts-DbaNomrH.js";
8
- import { n as PrismaMigrationDeployer, r as PrismaDatabaseClient } from "./AppConfigFactory-YnveXE9k.js";
1
+ import { c as Clock, i as CollectionDefinition, r as Engine, t as OAuthFlowExecutor } from "./index-DilAYwnH.js";
2
+ import { $ as PersistedRunState, A as WorkflowRunDetailDto, G as PersistedRunPolicySnapshot, K as RunId, T as McpServerDeclaration, X as WorkflowDefinition, b as TestCaseRunStatus, d as NodeExecutionRequestHandler, f as NodeExecutionScheduler, g as TypeToken, h as Container, kt as WorkflowId, o as BinaryStorage, p as WorkflowRepository, rt as RunPruneCandidate, st as RunSummary, tt as RunCurrentState, ut as AnyCredentialType, v as RunEvent, w as WorkflowActivationPolicy, y as RunEventBus } from "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import { C as CodemationContainerRegistration, l as CodemationPluginPackageMetadata, o as CodemationPlugin, r as AppConfig } from "./CodemationAppContext-CGFYVcSb.js";
4
+ import { a as CodemationAuthConfig, l as Logger, t as CodemationWhitelabelConfig, u as LoggerFactory } from "./CodemationWhitelabelConfig-Ca2mCUeC.js";
5
+ import { t as LogLevelPolicyFactory } from "./LogLevelPolicyFactory-ewCHLDLn.js";
6
+ import { t as CredentialStore } from "./CredentialServices-BLloBztI.js";
7
+ import { i as TelemetryMetricPointStore, n as TelemetryArtifactStore, o as TelemetrySpanStore, r as TelemetryExporter, s as TelemetrySpanUpsert, t as RunTraceContextRepository } from "./TelemetryContracts-BtDx84Cp.js";
8
+ import { n as PrismaMigrationDeployer, r as PrismaDatabaseClient } from "./AppConfigFactory-BT0y0LVC.js";
9
+ import { t as InternalHonoApiRouteRegistrar } from "./InternalHonoApiRouteRegistrar-c7t3KnV_.js";
10
+ import { s as ProcessRunner } from "./PublicFrontendBootstrapFactory-Dv04tJ-6.js";
9
11
  import "reflect-metadata";
10
- import { Hono } from "hono";
12
+ import { Hono, MiddlewareHandler } from "hono";
13
+ import "jose";
11
14
 
12
15
  //#region src/application/bus/Command.d.ts
13
16
  declare abstract class Command<TResult> {
@@ -37,6 +40,7 @@ declare class CodemationPluginRegistrar {
37
40
  appConfig: AppConfig;
38
41
  registerCredentialType: (type: AnyCredentialType) => void;
39
42
  registerCollection: (definition: CollectionDefinition) => void;
43
+ mergeMcpServers: (declarations: ReadonlyArray<McpServerDeclaration>) => void;
40
44
  loggerFactory: LoggerFactory;
41
45
  }>): Promise<void>;
42
46
  }
@@ -60,6 +64,10 @@ type WorkflowWebsocketMessage = Readonly<{
60
64
  kind: "devBuildFailed";
61
65
  workflowId: string;
62
66
  message: string;
67
+ }> | Readonly<{
68
+ kind: "telemetryEvent";
69
+ runId: string;
70
+ span: TelemetrySpanUpsert;
63
71
  }>;
64
72
  //#endregion
65
73
  //#region src/application/websocket/WorkflowWebsocketPublisher.d.ts
@@ -67,16 +75,41 @@ interface WorkflowWebsocketPublisher {
67
75
  publishToRoom(roomId: string, message: WorkflowWebsocketMessage): Promise<void>;
68
76
  }
69
77
  //#endregion
78
+ //#region ../managed-auth/src/types.d.ts
79
+ /**
80
+ * A successfully verified CP-signed JWT principal.
81
+ * `userId` maps to the JWT `sub` claim; `workspaceId` maps to `aud`.
82
+ */
83
+ interface VerifiedManagedPrincipal {
84
+ readonly userId: string;
85
+ readonly workspaceId: string;
86
+ }
87
+ //#endregion
88
+ //#region src/presentation/websocket/WebsocketAuthenticator.types.d.ts
89
+ /**
90
+ * Authenticates an incoming WebSocket upgrade request.
91
+ *
92
+ * Implementations parse the upgrade URL (e.g. `?token=<jwt>`) and verify the
93
+ * credential. Returns the verified principal on success, or `null` when the
94
+ * request must be rejected with close-code 4401.
95
+ */
96
+ interface WebsocketAuthenticator {
97
+ authenticate(requestUrl: string | undefined): Promise<VerifiedManagedPrincipal | null>;
98
+ }
99
+ //#endregion
70
100
  //#region src/presentation/websocket/WorkflowWebsocketServer.d.ts
71
101
  declare class WorkflowWebsocketServer implements WorkflowWebsocketPublisher {
72
102
  private readonly port;
73
103
  private readonly bindHost;
74
104
  private readonly logger;
105
+ private readonly authenticator;
75
106
  private websocketServer;
76
107
  private readonly sockets;
77
108
  private readonly roomIdsBySocket;
78
109
  private started;
79
- constructor(port: number, bindHost: string, logger: Logger);
110
+ constructor(port: number, bindHost: string, logger: Logger, authenticator?: WebsocketAuthenticator | null);
111
+ /** Returns the actual port the server is listening on (useful when constructed with port 0). */
112
+ get listeningPort(): number;
80
113
  start(): Promise<void>;
81
114
  stop(): Promise<void>;
82
115
  publishToRoom(roomId: string, message: WorkflowWebsocketMessage): Promise<void>;
@@ -109,14 +142,20 @@ declare class AppContainerFactory {
109
142
  constructor(containerRegistrationRegistrar?: CodemationContainerRegistrationRegistrar, pluginRegistrar?: CodemationPluginRegistrar);
110
143
  create(inputs: AppContainerInputs): Promise<Container>;
111
144
  private collectCredentialTypes;
145
+ private registerMcpCatalog;
146
+ private mergeConfigMcpServers;
112
147
  private applyPlugins;
113
148
  private registerCredentialTypes;
149
+ private registerControlPlaneCatalogFetcher;
114
150
  private registerConfiguredRegistrations;
115
151
  private registerCollectionsInfrastructure;
116
152
  private registerCoreInfrastructure;
117
153
  private registerRepositoriesAndBuses;
118
154
  private registerApplicationServicesAndRoutes;
155
+ private registerManagedAuthInfrastructure;
156
+ private registerPairingInfrastructure;
119
157
  private registerOperationalInfrastructure;
158
+ private registerWorkflowAuditWriter;
120
159
  private registerRuntimeInfrastructure;
121
160
  private resolvePrismaOwnership;
122
161
  private registerRuntimeNodeActivationScheduler;
@@ -133,6 +172,8 @@ declare class AppContainerLifecycle {
133
172
  private readonly container;
134
173
  private readonly ownedPrismaClient;
135
174
  constructor(container: Container, ownedPrismaClient: PrismaDatabaseClient | null);
175
+ start(): Promise<void>;
176
+ startWorkerSubscribers(): Promise<void>;
136
177
  stop(args?: Readonly<{
137
178
  stopWebsocketServer?: boolean;
138
179
  }>): Promise<void>;
@@ -406,10 +447,16 @@ declare class TelemetryEnricherChain {
406
447
  //#endregion
407
448
  //#region src/application/telemetry/TelemetryRetentionTimestampFactory.d.ts
408
449
  declare class TelemetryRetentionTimestampFactory {
409
- createSpanExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string | undefined;
410
- createArtifactExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string | undefined;
411
- createMetricExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string | undefined;
412
- createTraceContextExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string | undefined;
450
+ /** Default span retention: 7 days (overridden by policySnapshot). */
451
+ static readonly defaultSpanRetentionSeconds: number;
452
+ /** Default artifact retention: 3 days (overridden by policySnapshot). */
453
+ static readonly defaultArtifactRetentionSeconds: number;
454
+ /** Default metric retention: 30 days (overridden by policySnapshot). */
455
+ static readonly defaultMetricRetentionSeconds: number;
456
+ createSpanExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string;
457
+ createArtifactExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string;
458
+ createMetricExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string;
459
+ createTraceContextExpiry(policySnapshot: PersistedRunPolicySnapshot | undefined, observedAt: Date): string;
413
460
  private createExpiry;
414
461
  }
415
462
  //#endregion
@@ -542,6 +589,10 @@ type AuthenticatedPrincipal = Readonly<{
542
589
  id: string;
543
590
  email: string | null;
544
591
  name: string | null;
592
+ /** Set to "managed-jwt" when the principal was verified from a CP-signed bearer token. */
593
+ source?: "managed-jwt";
594
+ /** The workspace ID from the JWT `aud` claim. Present when source === "managed-jwt". */
595
+ workspaceId?: string;
545
596
  }>;
546
597
  //#endregion
547
598
  //#region src/application/auth/SessionVerifier.d.ts
@@ -549,6 +600,49 @@ interface SessionVerifier {
549
600
  verify(request: Request): Promise<AuthenticatedPrincipal | null>;
550
601
  }
551
602
  //#endregion
603
+ //#region src/presentation/http/ServerHttpRouteParams.d.ts
604
+ type ServerHttpRouteParams = Readonly<Record<string, string>>;
605
+ //#endregion
606
+ //#region src/presentation/http/routeHandlers/BinaryHttpRouteHandlerFactory.d.ts
607
+ declare class BinaryHttpRouteHandler {
608
+ private readonly queryBus;
609
+ private readonly commandBus;
610
+ private readonly binaryStorage;
611
+ constructor(queryBus: QueryBus, commandBus: CommandBus, binaryStorage: BinaryStorage);
612
+ getRunBinaryContent(_: Request, params: ServerHttpRouteParams): Promise<Response>;
613
+ getWorkflowOverlayBinaryContent(_: Request, params: ServerHttpRouteParams): Promise<Response>;
614
+ postWorkflowDebuggerOverlayBinaryUpload(request: Request, params: ServerHttpRouteParams): Promise<Response>;
615
+ private createBinaryResponse;
616
+ private createContentDisposition;
617
+ private escapeFilename;
618
+ }
619
+ //#endregion
620
+ //#region src/presentation/http/hono/HonoApiRouteRegistrar.d.ts
621
+ interface HonoApiRouteRegistrar {
622
+ register(app: Hono): void;
623
+ }
624
+ //#endregion
625
+ //#region src/auth/managed/ManagedCorsMiddleware.d.ts
626
+ /**
627
+ * CORS allowlist middleware for managed mode.
628
+ *
629
+ * Only the single `CP_WEB_ORIGIN` value (provisioner-injected) is permitted.
630
+ * All other origins are refused on preflight with a 403.
631
+ */
632
+ declare class ManagedCorsMiddleware {
633
+ private readonly allowedOrigin;
634
+ constructor(allowedOrigin: string);
635
+ handle(): MiddlewareHandler;
636
+ }
637
+ //#endregion
638
+ //#region src/presentation/http/hono/CodemationHonoApiAppFactory.d.ts
639
+ declare class CodemationHonoApiApp {
640
+ private readonly app;
641
+ constructor(sessionVerifier: SessionVerifier, registrars: ReadonlyArray<HonoApiRouteRegistrar>, binaryHttpRouteHandler: BinaryHttpRouteHandler, internalRegistrars: ReadonlyArray<InternalHonoApiRouteRegistrar>, corsMiddlewareList: ReadonlyArray<ManagedCorsMiddleware>);
642
+ getHono(): Hono;
643
+ fetch(request: Request): Response | Promise<Response>;
644
+ }
645
+ //#endregion
552
646
  //#region src/application/bus/CommandHandler.d.ts
553
647
  declare abstract class CommandHandler<TCommand extends Command<TResult>, TResult> {
554
648
  abstract execute(command: TCommand): Promise<TResult>;
@@ -572,6 +666,11 @@ declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
572
666
  abstract execute(query: TQuery): Promise<TResult>;
573
667
  }
574
668
  //#endregion
669
+ //#region src/application/telemetry/TelemetrySpanPublisher.d.ts
670
+ interface TelemetrySpanPublisher {
671
+ publishSpan(span: TelemetrySpanUpsert): Promise<void>;
672
+ }
673
+ //#endregion
575
674
  //#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
576
675
  type WorkflowDebuggerOverlayState = Readonly<{
577
676
  workflowId: string;
@@ -586,9 +685,35 @@ interface WorkflowDebuggerOverlayRepository {
586
685
  save(state: WorkflowDebuggerOverlayState): Promise<void>;
587
686
  }
588
687
  //#endregion
589
- //#region src/presentation/http/hono/HonoApiRouteRegistrar.d.ts
590
- interface HonoApiRouteRegistrar {
591
- register(app: Hono): void;
688
+ //#region src/audit/IAuditEmitter.d.ts
689
+ /**
690
+ * Workspace-local audit emitter contract.
691
+ * Mirror of the CP-side IAuditEmitter shape; kept separate to avoid cross-repo coupling.
692
+ */
693
+ interface WorkflowAuditActor {
694
+ readonly userId: string;
695
+ readonly sessionId?: string;
696
+ }
697
+ interface WorkflowAuditResource {
698
+ readonly type: string;
699
+ readonly id: string;
700
+ }
701
+ interface WorkflowAuditEntry {
702
+ readonly id: string;
703
+ readonly occurredAt: string;
704
+ readonly actor: WorkflowAuditActor;
705
+ readonly action: string;
706
+ readonly resource: WorkflowAuditResource;
707
+ readonly outcome: "success" | "failure";
708
+ readonly errorCode?: string;
709
+ readonly correlationId?: string;
710
+ /** Denormalised on every row for query convenience. */
711
+ readonly workflowId: string;
712
+ readonly runId?: string;
713
+ readonly nodeId?: string;
714
+ }
715
+ interface IWorkflowAuditEmitter {
716
+ emit(entry: WorkflowAuditEntry): Promise<void>;
592
717
  }
593
718
  //#endregion
594
719
  //#region src/applicationTokens.d.ts
@@ -605,7 +730,11 @@ declare const ApplicationTokens: {
605
730
  readonly CommandHandler: TypeToken<CommandHandler<Command<unknown>, unknown>>;
606
731
  readonly DomainEventHandler: TypeToken<DomainEventHandler<DomainEvent>>;
607
732
  readonly HonoApiRouteRegistrar: TypeToken<HonoApiRouteRegistrar>;
733
+ readonly InternalHonoApiRouteRegistrar: TypeToken<InternalHonoApiRouteRegistrar>;
734
+ readonly ManagedCorsMiddleware: TypeToken<ManagedCorsMiddleware>;
735
+ readonly WebsocketAuthenticator: TypeToken<WebsocketAuthenticator | null>;
608
736
  readonly WorkflowWebsocketPublisher: TypeToken<WorkflowWebsocketPublisher>;
737
+ readonly TelemetrySpanPublisher: TypeToken<TelemetrySpanPublisher>;
609
738
  readonly WorkerRuntimeScheduler: TypeToken<WorkerRuntimeScheduler>;
610
739
  readonly WorkflowDefinitionRepository: TypeToken<WorkflowDefinitionRepository>;
611
740
  readonly WorkflowActivationRepository: TypeToken<WorkflowActivationRepository>;
@@ -625,6 +754,9 @@ declare const ApplicationTokens: {
625
754
  readonly PrismaClient: TypeToken<PrismaDatabaseClient>;
626
755
  readonly SessionVerifier: TypeToken<SessionVerifier>;
627
756
  readonly Clock: TypeToken<Clock>;
757
+ readonly WorkflowAuditEmitter: TypeToken<IWorkflowAuditEmitter>;
758
+ readonly ProcessRunner: TypeToken<ProcessRunner>;
759
+ readonly OAuthFlowExecutor: TypeToken<OAuthFlowExecutor>;
628
760
  };
629
761
  //#endregion
630
762
  //#region src/bootstrap/CodemationBootstrapRequest.d.ts
@@ -656,5 +788,5 @@ declare class CodemationPluginListMerger {
656
788
  private tryAdd;
657
789
  }
658
790
  //#endregion
659
- export { WorkflowWebsocketServer as _, WorkflowDebuggerOverlayRepository as a, CommandBus as b, FrontendRuntime as c, LogFilter as d, WorkflowRunRepository as f, AppContainerFactory as g, AppContainerLifecycle as h, HonoApiRouteRegistrar as i, WorkflowRunRetentionPruneScheduler as l, DatabaseMigrations as m, CodemationBootstrapRequest as n, SessionVerifier as o, CollectionSchemaSyncerHolder as p, ApplicationTokens as r, WorkerRuntime as s, CodemationPluginListMerger as t, ServerLoggerFactory as u, QueryBus as v, Command as x, Query as y };
660
- //# sourceMappingURL=CodemationPluginListMerger-DGc-jfa2.d.ts.map
791
+ export { Command as C, CommandBus as S, AppContainerLifecycle as _, CodemationHonoApiApp as a, QueryBus as b, SessionVerifier as c, WorkflowRunRetentionPruneScheduler as d, ServerLoggerFactory as f, DatabaseMigrations as g, CollectionSchemaSyncerHolder as h, WorkflowDebuggerOverlayRepository as i, WorkerRuntime as l, WorkflowRunRepository as m, CodemationBootstrapRequest as n, BinaryHttpRouteHandler as o, LogFilter as p, ApplicationTokens as r, ServerHttpRouteParams as s, CodemationPluginListMerger as t, FrontendRuntime as u, AppContainerFactory as v, Query as x, WorkflowWebsocketServer as y };
792
+ //# sourceMappingURL=CodemationPluginListMerger-DP7djJ9S.d.ts.map
@@ -0,0 +1,97 @@
1
+ //#region src/presentation/server/CodemationTsyringeParamInfoReader.ts
2
+ var CodemationTsyringeParamInfoReader = class {
3
+ static injectionTokenMetadataKey = "injectionTokens";
4
+ static designParamTypesMetadataKey = "design:paramtypes";
5
+ static read(target) {
6
+ const designParamTypes = this.readDesignParamTypes(target);
7
+ const injectionTokens = this.readInjectionTokens(target);
8
+ Object.keys(injectionTokens).forEach((key) => {
9
+ designParamTypes[Number(key)] = injectionTokens[key];
10
+ });
11
+ return designParamTypes;
12
+ }
13
+ static readDesignParamTypes(target) {
14
+ const reflected = Reflect.getMetadata?.(this.designParamTypesMetadataKey, target);
15
+ return Array.isArray(reflected) ? [...reflected] : [];
16
+ }
17
+ static readInjectionTokens(target) {
18
+ const reflected = Reflect.getOwnMetadata?.(this.injectionTokenMetadataKey, target);
19
+ if (!reflected || typeof reflected !== "object") return {};
20
+ return reflected;
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ //#region src/presentation/server/CodemationTsyringeTypeInfoRegistrar.ts
26
+ var CodemationTsyringeTypeInfoRegistrar = class {
27
+ visitedTokens = /* @__PURE__ */ new Set();
28
+ visitedConfigObjects = /* @__PURE__ */ new Set();
29
+ constructor(container) {
30
+ this.container = container;
31
+ }
32
+ registerWorkflowDefinitions(workflows) {
33
+ for (const workflow of workflows) for (const node of workflow.nodes) {
34
+ this.registerTypeToken(node.type);
35
+ this.registerConfigTokens(node.config);
36
+ }
37
+ }
38
+ registerTypeToken(token) {
39
+ if (typeof token !== "function" || this.visitedTokens.has(token)) return;
40
+ this.visitedTokens.add(token);
41
+ const paramInfo = CodemationTsyringeParamInfoReader.read(token);
42
+ for (const dependency of paramInfo) this.registerDependency(dependency);
43
+ this.registerFactoryProvider(token, paramInfo);
44
+ }
45
+ registerDependency(dependency) {
46
+ const token = this.resolveDependencyToken(dependency);
47
+ if (typeof token !== "function") return;
48
+ if (!this.container.isRegistered(token, true)) return;
49
+ this.registerTypeToken(token);
50
+ }
51
+ registerConfigTokens(value) {
52
+ if (Array.isArray(value)) {
53
+ value.forEach((entry) => this.registerConfigTokens(entry));
54
+ return;
55
+ }
56
+ if (!value || typeof value !== "object") return;
57
+ if (this.visitedConfigObjects.has(value)) return;
58
+ this.visitedConfigObjects.add(value);
59
+ if ("type" in value && typeof value.type === "function") this.registerTypeToken(value.type);
60
+ Object.values(value).forEach((entry) => this.registerConfigTokens(entry));
61
+ }
62
+ registerFactoryProvider(token, paramInfo) {
63
+ if (this.container.isRegistered(token, true)) return;
64
+ const classToken = token;
65
+ const constructorToken = token;
66
+ this.container.register(classToken, { useFactory: (dependencyContainer) => {
67
+ return new constructorToken(...paramInfo.map((dependency) => this.resolveFactoryDependency(dependencyContainer, dependency)));
68
+ } });
69
+ }
70
+ resolveDependencyToken(dependency) {
71
+ if (this.isInjectionDescriptor(dependency)) return dependency.token;
72
+ return dependency;
73
+ }
74
+ resolveFactoryDependency(dependencyContainer, dependency) {
75
+ const token = this.resolveDependencyToken(dependency);
76
+ if (typeof token === "function") {
77
+ if (dependencyContainer.isRegistered(token, true)) try {
78
+ return dependencyContainer.resolve(token);
79
+ } catch (error) {
80
+ if (!this.isMissingTypeInfoError(error)) throw error;
81
+ }
82
+ this.registerTypeToken(token);
83
+ return new token(...CodemationTsyringeParamInfoReader.read(token).map((entry) => this.resolveFactoryDependency(dependencyContainer, entry)));
84
+ }
85
+ return dependencyContainer.resolve(token);
86
+ }
87
+ isInjectionDescriptor(value) {
88
+ return value !== null && typeof value === "object" && "token" in value;
89
+ }
90
+ isMissingTypeInfoError(error) {
91
+ return error instanceof Error && error.message.includes("TypeInfo not known for");
92
+ }
93
+ };
94
+
95
+ //#endregion
96
+ export { CodemationTsyringeParamInfoReader as n, CodemationTsyringeTypeInfoRegistrar as t };
97
+ //# sourceMappingURL=CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js","names":["container: Container"],"sources":["../src/presentation/server/CodemationTsyringeParamInfoReader.ts","../src/presentation/server/CodemationTsyringeTypeInfoRegistrar.ts"],"sourcesContent":["export class CodemationTsyringeParamInfoReader {\n private static readonly injectionTokenMetadataKey = \"injectionTokens\";\n private static readonly designParamTypesMetadataKey = \"design:paramtypes\";\n\n static read(target: object): ReadonlyArray<unknown> {\n const designParamTypes = this.readDesignParamTypes(target);\n const injectionTokens = this.readInjectionTokens(target);\n Object.keys(injectionTokens).forEach((key: string) => {\n designParamTypes[Number(key)] = injectionTokens[key];\n });\n return designParamTypes;\n }\n\n private static readDesignParamTypes(target: object): unknown[] {\n const reflected = Reflect.getMetadata?.(this.designParamTypesMetadataKey, target);\n return Array.isArray(reflected) ? [...reflected] : [];\n }\n\n private static readInjectionTokens(target: object): Record<string, unknown> {\n const reflected = Reflect.getOwnMetadata?.(this.injectionTokenMetadataKey, target);\n if (!reflected || typeof reflected !== \"object\") {\n return {};\n }\n return reflected as Record<string, unknown>;\n }\n}\n","import type { Container, TypeToken, WorkflowDefinition } from \"@codemation/core\";\n\nimport { CodemationTsyringeParamInfoReader } from \"./CodemationTsyringeParamInfoReader\";\n\ntype InjectionDescriptor = Readonly<{\n token?: unknown;\n}>;\n\nexport class CodemationTsyringeTypeInfoRegistrar {\n private readonly visitedTokens = new Set<unknown>();\n private readonly visitedConfigObjects = new Set<object>();\n\n constructor(private readonly container: Container) {}\n\n registerWorkflowDefinitions(workflows: ReadonlyArray<WorkflowDefinition>): void {\n for (const workflow of workflows) {\n for (const node of workflow.nodes) {\n this.registerTypeToken(node.type);\n this.registerConfigTokens(node.config);\n }\n }\n }\n\n registerTypeToken(token: unknown): void {\n if (typeof token !== \"function\" || this.visitedTokens.has(token)) {\n return;\n }\n this.visitedTokens.add(token);\n const paramInfo = CodemationTsyringeParamInfoReader.read(token);\n for (const dependency of paramInfo) {\n this.registerDependency(dependency);\n }\n this.registerFactoryProvider(token as new (...args: ReadonlyArray<unknown>) => unknown, paramInfo);\n }\n\n private registerDependency(dependency: unknown): void {\n const token = this.resolveDependencyToken(dependency);\n if (typeof token !== \"function\") {\n return;\n }\n if (!this.container.isRegistered(token as TypeToken<unknown>, true)) {\n return;\n }\n this.registerTypeToken(token);\n }\n\n private registerConfigTokens(value: unknown): void {\n if (Array.isArray(value)) {\n value.forEach((entry: unknown) => this.registerConfigTokens(entry));\n return;\n }\n if (!value || typeof value !== \"object\") {\n return;\n }\n if (this.visitedConfigObjects.has(value)) {\n return;\n }\n this.visitedConfigObjects.add(value);\n if (\"type\" in value && typeof value.type === \"function\") {\n this.registerTypeToken(value.type);\n }\n Object.values(value).forEach((entry: unknown) => this.registerConfigTokens(entry));\n }\n\n private registerFactoryProvider(\n token: new (...args: ReadonlyArray<unknown>) => unknown,\n paramInfo: ReadonlyArray<unknown>,\n ): void {\n if (this.container.isRegistered(token as TypeToken<unknown>, true)) {\n return;\n }\n const classToken = token as unknown as TypeToken<unknown>;\n const constructorToken = token as unknown as new (...args: ReadonlyArray<unknown>) => unknown;\n this.container.register(classToken, {\n useFactory: (dependencyContainer) => {\n const dependencies = paramInfo.map((dependency: unknown) =>\n this.resolveFactoryDependency(dependencyContainer, dependency),\n );\n return new constructorToken(...dependencies);\n },\n });\n }\n\n private resolveDependencyToken(dependency: unknown): unknown {\n if (this.isInjectionDescriptor(dependency)) {\n return dependency.token;\n }\n return dependency;\n }\n\n private resolveFactoryDependency(dependencyContainer: Container, dependency: unknown): unknown {\n const token = this.resolveDependencyToken(dependency);\n if (typeof token === \"function\") {\n if (dependencyContainer.isRegistered(token as TypeToken<unknown>, true)) {\n try {\n return dependencyContainer.resolve(token as TypeToken<unknown>);\n } catch (error) {\n if (!this.isMissingTypeInfoError(error)) {\n throw error;\n }\n }\n }\n this.registerTypeToken(token);\n const constructorToken = token as unknown as new (...args: ReadonlyArray<unknown>) => unknown;\n const paramInfo = CodemationTsyringeParamInfoReader.read(token);\n const nestedDependencies = paramInfo.map((entry: unknown) =>\n this.resolveFactoryDependency(dependencyContainer, entry),\n );\n return new constructorToken(...nestedDependencies);\n }\n return dependencyContainer.resolve(token as TypeToken<unknown>);\n }\n\n private isInjectionDescriptor(value: unknown): value is InjectionDescriptor {\n return value !== null && typeof value === \"object\" && \"token\" in value;\n }\n\n private isMissingTypeInfoError(error: unknown): boolean {\n return error instanceof Error && error.message.includes(\"TypeInfo not known for\");\n }\n}\n"],"mappings":";AAAA,IAAa,oCAAb,MAA+C;CAC7C,OAAwB,4BAA4B;CACpD,OAAwB,8BAA8B;CAEtD,OAAO,KAAK,QAAwC;EAClD,MAAM,mBAAmB,KAAK,qBAAqB,OAAO;EAC1D,MAAM,kBAAkB,KAAK,oBAAoB,OAAO;AACxD,SAAO,KAAK,gBAAgB,CAAC,SAAS,QAAgB;AACpD,oBAAiB,OAAO,IAAI,IAAI,gBAAgB;IAChD;AACF,SAAO;;CAGT,OAAe,qBAAqB,QAA2B;EAC7D,MAAM,YAAY,QAAQ,cAAc,KAAK,6BAA6B,OAAO;AACjF,SAAO,MAAM,QAAQ,UAAU,GAAG,CAAC,GAAG,UAAU,GAAG,EAAE;;CAGvD,OAAe,oBAAoB,QAAyC;EAC1E,MAAM,YAAY,QAAQ,iBAAiB,KAAK,2BAA2B,OAAO;AAClF,MAAI,CAAC,aAAa,OAAO,cAAc,SACrC,QAAO,EAAE;AAEX,SAAO;;;;;;ACfX,IAAa,sCAAb,MAAiD;CAC/C,AAAiB,gCAAgB,IAAI,KAAc;CACnD,AAAiB,uCAAuB,IAAI,KAAa;CAEzD,YAAY,AAAiBA,WAAsB;EAAtB;;CAE7B,4BAA4B,WAAoD;AAC9E,OAAK,MAAM,YAAY,UACrB,MAAK,MAAM,QAAQ,SAAS,OAAO;AACjC,QAAK,kBAAkB,KAAK,KAAK;AACjC,QAAK,qBAAqB,KAAK,OAAO;;;CAK5C,kBAAkB,OAAsB;AACtC,MAAI,OAAO,UAAU,cAAc,KAAK,cAAc,IAAI,MAAM,CAC9D;AAEF,OAAK,cAAc,IAAI,MAAM;EAC7B,MAAM,YAAY,kCAAkC,KAAK,MAAM;AAC/D,OAAK,MAAM,cAAc,UACvB,MAAK,mBAAmB,WAAW;AAErC,OAAK,wBAAwB,OAA2D,UAAU;;CAGpG,AAAQ,mBAAmB,YAA2B;EACpD,MAAM,QAAQ,KAAK,uBAAuB,WAAW;AACrD,MAAI,OAAO,UAAU,WACnB;AAEF,MAAI,CAAC,KAAK,UAAU,aAAa,OAA6B,KAAK,CACjE;AAEF,OAAK,kBAAkB,MAAM;;CAG/B,AAAQ,qBAAqB,OAAsB;AACjD,MAAI,MAAM,QAAQ,MAAM,EAAE;AACxB,SAAM,SAAS,UAAmB,KAAK,qBAAqB,MAAM,CAAC;AACnE;;AAEF,MAAI,CAAC,SAAS,OAAO,UAAU,SAC7B;AAEF,MAAI,KAAK,qBAAqB,IAAI,MAAM,CACtC;AAEF,OAAK,qBAAqB,IAAI,MAAM;AACpC,MAAI,UAAU,SAAS,OAAO,MAAM,SAAS,WAC3C,MAAK,kBAAkB,MAAM,KAAK;AAEpC,SAAO,OAAO,MAAM,CAAC,SAAS,UAAmB,KAAK,qBAAqB,MAAM,CAAC;;CAGpF,AAAQ,wBACN,OACA,WACM;AACN,MAAI,KAAK,UAAU,aAAa,OAA6B,KAAK,CAChE;EAEF,MAAM,aAAa;EACnB,MAAM,mBAAmB;AACzB,OAAK,UAAU,SAAS,YAAY,EAClC,aAAa,wBAAwB;AAInC,UAAO,IAAI,iBAAiB,GAHP,UAAU,KAAK,eAClC,KAAK,yBAAyB,qBAAqB,WAAW,CAC/D,CAC2C;KAE/C,CAAC;;CAGJ,AAAQ,uBAAuB,YAA8B;AAC3D,MAAI,KAAK,sBAAsB,WAAW,CACxC,QAAO,WAAW;AAEpB,SAAO;;CAGT,AAAQ,yBAAyB,qBAAgC,YAA8B;EAC7F,MAAM,QAAQ,KAAK,uBAAuB,WAAW;AACrD,MAAI,OAAO,UAAU,YAAY;AAC/B,OAAI,oBAAoB,aAAa,OAA6B,KAAK,CACrE,KAAI;AACF,WAAO,oBAAoB,QAAQ,MAA4B;YACxD,OAAO;AACd,QAAI,CAAC,KAAK,uBAAuB,MAAM,CACrC,OAAM;;AAIZ,QAAK,kBAAkB,MAAM;AAM7B,UAAO,IALkB,MAKG,GAJV,kCAAkC,KAAK,MAAM,CAC1B,KAAK,UACxC,KAAK,yBAAyB,qBAAqB,MAAM,CAC1D,CACiD;;AAEpD,SAAO,oBAAoB,QAAQ,MAA4B;;CAGjE,AAAQ,sBAAsB,OAA8C;AAC1E,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,WAAW;;CAGnE,AAAQ,uBAAuB,OAAyB;AACtD,SAAO,iBAAiB,SAAS,MAAM,QAAQ,SAAS,yBAAyB"}
@@ -16,7 +16,7 @@ interface LoggerFactory {
16
16
  * Consumer-declared authentication profile for the hosted UI + HTTP API.
17
17
  * Social provider ids intentionally match Better Auth's provider ids so config stays 1:1 with the auth runtime.
18
18
  */
19
- type CodemationAuthKind = "local" | "oauth" | "oidc";
19
+ type CodemationAuthKind = "local" | "oauth" | "oidc" | "managed";
20
20
  type CodemationAuthOAuthProviderId = Extract<keyof NonNullable<BetterAuthOptions["socialProviders"]>, "github" | "google" | "microsoft">;
21
21
  interface CodemationAuthOAuthProviderConfig {
22
22
  readonly provider: CodemationAuthOAuthProviderId;
@@ -78,4 +78,4 @@ interface CodemationWhitelabelConfig {
78
78
  }
79
79
  //#endregion
80
80
  export { CodemationAuthConfig as a, CodemationAuthOidcProviderConfig as c, CodemationLogRule as i, Logger as l, CodemationLogConfig as n, CodemationAuthKind as o, CodemationLogLevelName as r, CodemationAuthOAuthProviderConfig as s, CodemationWhitelabelConfig as t, LoggerFactory as u };
81
- //# sourceMappingURL=CodemationWhitelabelConfig-CWbcyQqn.d.ts.map
81
+ //# sourceMappingURL=CodemationWhitelabelConfig-Ca2mCUeC.d.ts.map
@@ -84,4 +84,4 @@ interface SyncCollectionsResponseDto {
84
84
  }
85
85
  //#endregion
86
86
  export { withInviteUserResponseLoginMethodsDefaults as _, CollectionSummaryDto as a, AcceptUserInviteRequestDto as c, UpdateUserAccountStatusRequestDto as d, UpsertLocalBootstrapUserResultDto as f, VerifyUserInviteResponseDto as g, UserAccountStatus as h, CollectionRowDto as i, InviteUserRequestDto as l, UserAccountDtoInput as m, CollectionFieldDto as n, ListCollectionRowsResponseDto as o, UserAccountDto as p, CollectionIndexDto as r, SyncCollectionsResponseDto as s, CollectionDetailDto as t, InviteUserResponseDto as u, withUserAccountLoginMethodsDefaults as v };
87
- //# sourceMappingURL=CollectionContracts.types-DdpHft0i.d.ts.map
87
+ //# sourceMappingURL=CollectionContracts.types-DDyFYT_D.d.ts.map
@@ -1,4 +1,4 @@
1
- import { ft as CredentialHealth, gt as CredentialMaterialSourceKind, pt as CredentialInstanceId, vt as CredentialRequirement, wt as CredentialTypeId, xt as CredentialSetupStatus } from "./ItemsInputNormalizer-C-KHg9Mo.js";
1
+ import { Ct as CredentialSetupStatus, Et as CredentialTypeId, bt as CredentialRequirement, ht as CredentialInstanceId, mt as CredentialHealth, vt as CredentialMaterialSourceKind } from "./ItemsInputNormalizer-_RwIfRIQ.js";
2
2
 
3
3
  //#region src/application/contracts/CredentialContractsRegistry.d.ts
4
4
  type CredentialInstanceDto = Readonly<{
@@ -67,4 +67,4 @@ type UpsertCredentialBindingRequest = Readonly<{
67
67
  }>;
68
68
  //#endregion
69
69
  export { UpdateCredentialInstanceRequest as a, WorkflowCredentialHealthSlotDto as c, CredentialOAuth2ConnectionDto as i, CredentialInstanceDto as n, UpsertCredentialBindingRequest as o, CredentialInstanceWithSecretsDto as r, WorkflowCredentialHealthDto as s, CreateCredentialInstanceRequest as t };
70
- //# sourceMappingURL=CredentialContractsRegistry-DrMIDSw8.d.ts.map
70
+ //# sourceMappingURL=CredentialContractsRegistry-Bq2bq28t.d.ts.map
@@ -1,14 +1,40 @@
1
- import { Ct as CredentialTypeDefinition, J as WorkflowDefinition, St as CredentialType, Tt as CredentialTypeRegistry, _t as CredentialOAuth2AuthDefinition, bt as CredentialSessionService, ct as AnyCredentialType, dt as CredentialFieldSchema, ft as CredentialHealth, ht as CredentialJsonRecord, lt as CredentialBinding, mt as CredentialInstanceRecord, p as WorkflowRepository, pt as CredentialInstanceId, ut as CredentialBindingKey, vt as CredentialRequirement, wt as CredentialTypeId } from "./ItemsInputNormalizer-C-KHg9Mo.js";
2
- import { r as AppConfig } from "./CodemationAppContext-DRu1Dpri.js";
3
- import { a as UpdateCredentialInstanceRequest, n as CredentialInstanceDto, r as CredentialInstanceWithSecretsDto, s as WorkflowCredentialHealthDto, t as CreateCredentialInstanceRequest } from "./CredentialContractsRegistry-DrMIDSw8.js";
1
+ import { Dt as CredentialTypeRegistry, Et as CredentialTypeId, St as CredentialSessionService, T as McpServerDeclaration, Tt as CredentialTypeDefinition, X as WorkflowDefinition, _t as CredentialJsonRecord, bt as CredentialRequirement, dt as CredentialBinding, ft as CredentialBindingKey, gt as CredentialInstanceRecord, ht as CredentialInstanceId, mt as CredentialHealth, p as WorkflowRepository, pt as CredentialFieldSchema, ut as AnyCredentialType, wt as CredentialType, yt as CredentialOAuth2AuthDefinition } from "./ItemsInputNormalizer-_RwIfRIQ.js";
2
+ import { r as AppConfig } from "./CodemationAppContext-CGFYVcSb.js";
3
+ import { u as LoggerFactory } from "./CodemationWhitelabelConfig-Ca2mCUeC.js";
4
+ import { a as UpdateCredentialInstanceRequest, n as CredentialInstanceDto, r as CredentialInstanceWithSecretsDto, s as WorkflowCredentialHealthDto, t as CreateCredentialInstanceRequest } from "./CredentialContractsRegistry-Bq2bq28t.js";
4
5
 
5
6
  //#region src/domain/credentials/CredentialTypeRegistryImpl.d.ts
7
+ type CredentialTypeSource = "plugin" | "config" | "controlPlane";
6
8
  declare class CredentialTypeRegistryImpl implements CredentialTypeRegistry {
7
- private readonly credentialTypesById;
8
- register(type: CredentialType$1<any, any, unknown>): void;
9
+ private readonly loggers;
10
+ private readonly entries;
11
+ private readonly bySource;
12
+ constructor(loggers: LoggerFactory);
13
+ merge(source: CredentialTypeSource, types: ReadonlyArray<AnyCredentialType>): void;
14
+ mergeDefinitions(source: CredentialTypeSource, definitions: ReadonlyArray<CredentialTypeDefinition>): void;
15
+ clear(source: CredentialTypeSource): void;
9
16
  listTypes(): ReadonlyArray<CredentialTypeDefinition>;
10
17
  getType(typeId: CredentialTypeId): CredentialTypeDefinition | undefined;
11
18
  getCredentialType(typeId: CredentialTypeId): AnyCredentialType | undefined;
19
+ private insert;
20
+ private recordEntry;
21
+ private createUnsupportedSessionFactory;
22
+ private createUnsupportedHealthTester;
23
+ }
24
+ //#endregion
25
+ //#region src/mcp/McpServerCatalog.d.ts
26
+ type McpServerDeclarationSource = "plugin" | "config" | "controlPlane";
27
+ declare class McpServerCatalog {
28
+ private readonly loggers;
29
+ private readonly entries;
30
+ private readonly bySource;
31
+ private readonly env;
32
+ constructor(loggers: LoggerFactory, appConfig: AppConfig);
33
+ merge(source: McpServerDeclarationSource, declarations: ReadonlyArray<McpServerDeclaration>): void;
34
+ get(id: string): McpServerDeclaration | undefined;
35
+ getAll(): readonly McpServerDeclaration[];
36
+ clear(source: McpServerDeclarationSource): void;
37
+ private validate;
12
38
  }
13
39
  //#endregion
14
40
  //#region src/domain/credentials/WorkflowCredentialNodeResolver.d.ts
@@ -22,6 +48,8 @@ type WorkflowCredentialSlotRef = Readonly<{
22
48
  * Resolves credential requirements for workflow node ids, including connection-owned LLM/tool children.
23
49
  */
24
50
  declare class WorkflowCredentialNodeResolver {
51
+ private readonly mcpCatalog?;
52
+ constructor(mcpCatalog?: McpServerCatalog | undefined);
25
53
  /**
26
54
  * Human-readable label for credential errors (workflow node name or agent › attachment).
27
55
  */
@@ -57,11 +85,22 @@ declare class CredentialFieldEnvOverlayService {
57
85
  }
58
86
  //#endregion
59
87
  //#region src/domain/credentials/CredentialSecretCipher.d.ts
88
+ /**
89
+ * Schema versions:
90
+ * 1 — key = SHA-256(rawValue) (legacy, read-only support retained for migration)
91
+ * 2 — key = HKDF-SHA-256(rawKey32Bytes, ...) (current)
92
+ *
93
+ * All new encryptions are written as v2. Existing v1 records can still be
94
+ * decrypted so operators can re-encrypt at their own pace (re-bind the
95
+ * credential in the UI, or run the one-shot re-encrypt script).
96
+ */
60
97
  declare class CredentialSecretCipher {
61
98
  private readonly appConfig;
62
99
  private static readonly algorithm;
63
- private static readonly schemaVersion;
100
+ private static readonly currentSchemaVersion;
64
101
  private static readonly ivLength;
102
+ private static readonly HKDF_SALT;
103
+ private static readonly HKDF_INFO;
65
104
  constructor(appConfig: AppConfig);
66
105
  encrypt(value: JsonRecord): Readonly<{
67
106
  encryptedJson: string;
@@ -73,7 +112,21 @@ declare class CredentialSecretCipher {
73
112
  encryptionKeyId: string;
74
113
  schemaVersion: number;
75
114
  }>): JsonRecord;
76
- private resolveKeyMaterial;
115
+ /**
116
+ * Current (v2) key derivation: HKDF-SHA-256 with a fixed application salt and info label.
117
+ * Input must be a base64-encoded 32-byte value (`CODEMATION_CREDENTIALS_MASTER_KEY`).
118
+ */
119
+ private resolveKeyMaterialV2;
120
+ /**
121
+ * Legacy (v1) key derivation: SHA-256 of the raw env string.
122
+ * Retained for decrypt-side backward compatibility only.
123
+ */
124
+ private resolveKeyMaterialV1;
125
+ /**
126
+ * Validates and returns the raw 32-byte key material from the env var.
127
+ * Throws if the env var is absent or does not decode to exactly 32 bytes.
128
+ */
129
+ private resolveBase64Key32Bytes;
77
130
  private resolveKeyId;
78
131
  }
79
132
  //#endregion
@@ -132,29 +185,21 @@ declare class CredentialBindingService {
132
185
  private readonly workflowRepository;
133
186
  private readonly credentialSessionService;
134
187
  private readonly workflowCredentialNodeResolver;
135
- constructor(credentialStore: CredentialStore, credentialInstanceService: CredentialInstanceService, workflowRepository: WorkflowRepository, credentialSessionService: MutableCredentialSessionService, workflowCredentialNodeResolver: WorkflowCredentialNodeResolver);
188
+ private readonly logger;
189
+ constructor(credentialStore: CredentialStore, credentialInstanceService: CredentialInstanceService, workflowRepository: WorkflowRepository, credentialSessionService: MutableCredentialSessionService, workflowCredentialNodeResolver: WorkflowCredentialNodeResolver, loggerFactory: LoggerFactory);
136
190
  upsertBinding(args: Readonly<{
137
191
  workflowId: string;
138
192
  nodeId: string;
139
193
  slotKey: string;
140
194
  instanceId: CredentialInstanceId;
141
195
  }>): Promise<CredentialBinding>;
196
+ assertRequiredCredentialsBound(workflowId: string): Promise<void>;
142
197
  listWorkflowHealth(workflowId: string): Promise<WorkflowCredentialHealthDto>;
143
198
  private requireWorkflow;
144
199
  private requireRequirement;
145
200
  private toBindingKeyString;
146
201
  }
147
202
  //#endregion
148
- //#region src/domain/credentials/CredentialRuntimeMaterialService.d.ts
149
- declare class CredentialRuntimeMaterialService {
150
- private readonly credentialStore;
151
- private readonly credentialMaterialResolver;
152
- private readonly credentialSecretCipher;
153
- private readonly credentialTypeRegistry;
154
- constructor(credentialStore: CredentialStore, credentialMaterialResolver: CredentialMaterialResolver, credentialSecretCipher: CredentialSecretCipher, credentialTypeRegistry: CredentialTypeRegistryImpl);
155
- compose(instance: CredentialInstanceRecord$1): Promise<JsonRecord>;
156
- }
157
- //#endregion
158
203
  //#region src/domain/credentials/CredentialServices.d.ts
159
204
  type JsonRecord = CredentialJsonRecord;
160
205
  type CredentialSecretRef = Readonly<{
@@ -238,5 +283,5 @@ type MutableCredentialSessionService = CredentialSessionService & Readonly<{
238
283
  evictBinding(bindingKey: CredentialBindingKey): void;
239
284
  }>;
240
285
  //#endregion
241
- export { CredentialInstanceService as a, CredentialSecretCipher as c, CredentialBindingService as i, CredentialFieldEnvOverlayService as l, CredentialType$1 as n, CredentialOAuth2ScopeResolver as o, CredentialRuntimeMaterialService as r, CredentialMaterialResolver as s, CredentialStore as t, CredentialTypeRegistryImpl as u };
242
- //# sourceMappingURL=CredentialServices-UfvHB-rN.d.ts.map
286
+ export { CredentialSecretCipher as a, CredentialInstanceService as i, CredentialType$1 as n, McpServerCatalog as o, CredentialBindingService as r, CredentialStore as t };
287
+ //# sourceMappingURL=CredentialServices-BLloBztI.d.ts.map