@codemation/host 0.6.0 → 0.7.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 (223) hide show
  1. package/CHANGELOG.md +431 -0
  2. package/LICENSE +1 -37
  3. package/dist/{ApiPaths-CLTHphYZ.js → ApiPaths-Dv1dcHu_.js} +4 -4
  4. package/dist/ApiPaths-Dv1dcHu_.js.map +1 -0
  5. package/dist/{AppConfigFactory-C6q-CSKb.js → AppConfigFactory-Cx4qQvRk.js} +112 -52
  6. package/dist/AppConfigFactory-Cx4qQvRk.js.map +1 -0
  7. package/dist/{AppConfigFactory-YnveXE9k.d.ts → AppConfigFactory-DnLoQ9Li.d.ts} +8490 -5548
  8. package/dist/{AppContainerFactory-qaqc-R1D.js → AppContainerFactory-DqKYCRNP.js} +7641 -2083
  9. package/dist/AppContainerFactory-DqKYCRNP.js.map +1 -0
  10. package/dist/{CodemationAppContext-DRu1Dpri.d.ts → CodemationAppContext-CKVv9W9q.d.ts} +8 -4
  11. package/dist/{CodemationAuthoring.types-fBRppnmi.d.ts → CodemationAuthoring.types-DA3G3s6d.d.ts} +25 -5
  12. package/dist/{CodemationAuthoring.types-DZl-sJaM.js → CodemationAuthoring.types-NGkBcmmT.js} +18 -6
  13. package/dist/CodemationAuthoring.types-NGkBcmmT.js.map +1 -0
  14. package/dist/{CodemationConfigNormalizer-DVko3cVN.d.ts → CodemationConfigNormalizer-BAKjetJ6.d.ts} +3 -3
  15. package/dist/{CodemationConsumerConfigLoader-BeAUS144.js → CodemationConsumerConfigLoader-GYpBBvqE.js} +79 -10
  16. package/dist/CodemationConsumerConfigLoader-GYpBBvqE.js.map +1 -0
  17. package/dist/{CodemationConsumerConfigLoader-DJWr86f-.d.ts → CodemationConsumerConfigLoader-nxOqvv46.d.ts} +17 -2
  18. package/dist/{CodemationPluginListMerger-B-W5Fa_X.js → CodemationPluginListMerger-D1B1IEbt.js} +1 -1
  19. package/dist/{CodemationPluginListMerger-B-W5Fa_X.js.map → CodemationPluginListMerger-D1B1IEbt.js.map} +1 -1
  20. package/dist/{CodemationPluginListMerger-DGc-jfa2.d.ts → CodemationPluginListMerger-DKLAHT2b.d.ts} +123 -16
  21. package/dist/CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js +97 -0
  22. package/dist/CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js.map +1 -0
  23. package/dist/{CodemationWhitelabelConfig-CWbcyQqn.d.ts → CodemationWhitelabelConfig-Ca2mCUeC.d.ts} +2 -2
  24. package/dist/{CollectionContracts.types-DdpHft0i.d.ts → CollectionContracts.types-DDyFYT_D.d.ts} +1 -1
  25. package/dist/{CredentialContractsRegistry-DrMIDSw8.d.ts → CredentialContractsRegistry-Bq2bq28t.d.ts} +2 -2
  26. package/dist/{CredentialServices-UfvHB-rN.d.ts → CredentialServices-Be2I60Th.d.ts} +65 -20
  27. package/dist/{CredentialServices-CgxwguAv.js → CredentialServices-Dk8yypeL.js} +310 -51
  28. package/dist/CredentialServices-Dk8yypeL.js.map +1 -0
  29. package/dist/InternalHonoApiRouteRegistrar-Ce1yxpnO.d.ts +17 -0
  30. package/dist/InternalPingRegistrar-DY3kSfxP.js +221 -0
  31. package/dist/InternalPingRegistrar-DY3kSfxP.js.map +1 -0
  32. package/dist/{ItemsInputNormalizer-C-KHg9Mo.d.ts → ItemsInputNormalizer-_RwIfRIQ.d.ts} +89 -25
  33. package/dist/{LogLevelPolicyFactory-CampWO0l.d.ts → LogLevelPolicyFactory-ewCHLDLn.d.ts} +2 -2
  34. package/dist/{PublicFrontendBootstrap-DzBgwOnG.d.ts → PublicFrontendBootstrap-Cev3qK46.d.ts} +9 -2
  35. package/dist/PublicFrontendBootstrapFactory-CY2FS-5g.d.ts +82 -0
  36. package/dist/{PublicFrontendBootstrapJsonCodec-Cl_DLRh0.d.ts → PublicFrontendBootstrapJsonCodec-CXG9Dxft.d.ts} +3 -3
  37. package/dist/{PublicFrontendBootstrapJsonCodec-DzqvA0uo.js → PublicFrontendBootstrapJsonCodec-CegIF_ne.js} +7 -2
  38. package/dist/PublicFrontendBootstrapJsonCodec-CegIF_ne.js.map +1 -0
  39. package/dist/ServerLoggerFactory-Ckk52S3w.js +223 -0
  40. package/dist/ServerLoggerFactory-Ckk52S3w.js.map +1 -0
  41. package/dist/{TelemetryContracts-DbaNomrH.d.ts → TelemetryContracts-BtDx84Cp.d.ts} +13 -4
  42. package/dist/{WorkflowPolicyUiPresentationFactory-DQEY-h_S.d.ts → WorkflowPolicyUiPresentationFactory-6MyjCvBO.d.ts} +2 -2
  43. package/dist/{WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js → WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js} +1 -1
  44. package/dist/{WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js.map → WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js.map} +1 -1
  45. package/dist/{WorkflowViewContracts-CzK2KFuz.d.ts → WorkflowViewContracts-B7aFQcIw.d.ts} +10 -1
  46. package/dist/authoring.d.ts +5 -5
  47. package/dist/authoring.js +1 -1
  48. package/dist/client.d.ts +4 -4
  49. package/dist/client.js +2 -2
  50. package/dist/consumer.d.ts +6 -6
  51. package/dist/consumer.js +2 -2
  52. package/dist/credentials.d.ts +6 -6
  53. package/dist/credentials.js +1 -1
  54. package/dist/devServerSidecar.d.ts +2 -2
  55. package/dist/devServerSidecar.js +1 -94
  56. package/dist/devServerSidecar.js.map +1 -1
  57. package/dist/dto.d.ts +6 -6
  58. package/dist/{index-BbBk26m0.d.ts → index-DilAYwnH.d.ts} +49 -3
  59. package/dist/index.d.ts +110 -21
  60. package/dist/index.js +15 -13
  61. package/dist/mapping.d.ts +2 -2
  62. package/dist/mapping.js +1 -1
  63. package/dist/nextServer.d.ts +43 -88
  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-CmsIKnO9.js → persistenceServer-C-hH4z6l.js} +2 -2
  69. package/dist/{persistenceServer-CmsIKnO9.js.map → persistenceServer-C-hH4z6l.js.map} +1 -1
  70. package/dist/persistenceServer-CeTHtC6E.d.ts +30 -0
  71. package/dist/persistenceServer.d.ts +8 -8
  72. package/dist/persistenceServer.js +3 -3
  73. package/dist/{server-MUNGsBYK.d.ts → server-C4bS62rg.d.ts} +21 -6
  74. package/dist/{server-CJFfY67o.js → server-Y7kxwtCK.js} +7 -6
  75. package/dist/{server-CJFfY67o.js.map → server-Y7kxwtCK.js.map} +1 -1
  76. package/dist/server.d.ts +14 -14
  77. package/dist/server.js +13 -11
  78. package/package.json +29 -42
  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 +277 -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/WorkerRuntime.ts +2 -1
  127. package/src/credentials/BrokerClient.ts +49 -0
  128. package/src/credentials/BrokerRefreshError.ts +12 -0
  129. package/src/credentials/BrokerRefreshInvalidGrantError.ts +13 -0
  130. package/src/credentials/ControlPlaneCatalogFetcher.ts +261 -0
  131. package/src/credentials/CredentialOAuth2MaterialReader.ts +136 -0
  132. package/src/credentials/InternalCredentialsListRegistrar.ts +48 -0
  133. package/src/credentials/InternalCredentialsPushRegistrar.ts +125 -0
  134. package/src/credentials/LocalOAuthFlowExecutor.ts +316 -0
  135. package/src/credentials/ManagedOAuthFlowExecutor.ts +94 -0
  136. package/src/credentials/ManagedOAuthRefreshInvalidGrantError.ts +13 -0
  137. package/src/credentials/catalogTypes.ts +4 -0
  138. package/src/credentials/refresh/CredentialDisconnectedError.ts +11 -0
  139. package/src/domain/credentials/CredentialBindingService.ts +54 -2
  140. package/src/domain/credentials/CredentialKeyRotatedError.ts +22 -0
  141. package/src/domain/credentials/CredentialSecretCipher.ts +68 -6
  142. package/src/domain/credentials/CredentialTypeRegistryImpl.ts +117 -10
  143. package/src/domain/credentials/OAuth2RedirectUriResolver.ts +79 -0
  144. package/src/domain/credentials/WorkflowCredentialNodeResolver.ts +14 -5
  145. package/src/domain/telemetry/TelemetryContracts.ts +7 -1
  146. package/src/domain/workflows/WorkflowActivationPreflight.ts +24 -1
  147. package/src/domain/workflows/WorkflowActivationPreflightRules.ts +40 -1
  148. package/src/index.ts +6 -0
  149. package/src/infrastructure/binary/LocalFilesystemBinaryStorageRegistry.ts +29 -1
  150. package/src/infrastructure/binary/S3BinaryStorage.ts +169 -0
  151. package/src/infrastructure/binary/S3BinaryStorageConfig.ts +17 -0
  152. package/src/infrastructure/config/CodemationPluginRegistrar.ts +3 -1
  153. package/src/infrastructure/persistence/CodemationDatabaseUrlParser.ts +41 -0
  154. package/src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts +8 -3
  155. package/src/infrastructure/persistence/PrismaMigrationDeployer.ts +21 -13
  156. package/src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts +43 -8
  157. package/src/infrastructure/persistence/PrismaWorkflowRunRepository.ts +26 -3
  158. package/src/infrastructure/persistence/PrismaWorkflowSnapshotRepository.ts +48 -0
  159. package/src/mcp/AgentMcpIntegrationImpl.ts +344 -0
  160. package/src/mcp/McpClientFactory.ts +29 -0
  161. package/src/mcp/McpConnectionPool.ts +184 -0
  162. package/src/mcp/McpConnectionPool.types.ts +12 -0
  163. package/src/mcp/McpServerCatalog.ts +104 -0
  164. package/src/mcp/index.ts +5 -0
  165. package/src/pairing/HmacRequestSigner.ts +32 -0
  166. package/src/pairing/IncomingHmacVerifier.ts +82 -0
  167. package/src/pairing/InternalHmacAuthMiddleware.ts +33 -0
  168. package/src/pairing/InternalPingRegistrar.ts +25 -0
  169. package/src/pairing/PairedFetch.ts +33 -0
  170. package/src/pairing/PairingConfigFactory.ts +35 -0
  171. package/src/pairing/PairingConfigToken.ts +6 -0
  172. package/src/pairing/index.ts +14 -0
  173. package/src/pairing/pairing.types.ts +18 -0
  174. package/src/pairing.ts +17 -0
  175. package/src/persistenceServer.ts +1 -0
  176. package/src/presentation/config/AppConfig.ts +7 -1
  177. package/src/presentation/config/CodemationAuthConfig.ts +1 -1
  178. package/src/presentation/config/CodemationAuthoring.types.ts +54 -5
  179. package/src/presentation/config/CodemationConfig.ts +3 -0
  180. package/src/presentation/config/CodemationConfigNormalizer.ts +39 -1
  181. package/src/presentation/config/CodemationPlugin.ts +2 -1
  182. package/src/presentation/frontend/CodemationFrontendAuthSnapshot.ts +5 -0
  183. package/src/presentation/frontend/CodemationFrontendAuthSnapshotFactory.ts +7 -1
  184. package/src/presentation/frontend/PublicFrontendBootstrap.ts +2 -0
  185. package/src/presentation/frontend/PublicFrontendBootstrapFactory.ts +5 -1
  186. package/src/presentation/frontend/PublicFrontendBootstrapJsonCodec.ts +4 -1
  187. package/src/presentation/http/ApiPaths.ts +4 -4
  188. package/src/presentation/http/ServerHttpErrorResponseFactory.ts +39 -2
  189. package/src/presentation/http/hono/CodemationHonoApiAppFactory.ts +33 -8
  190. package/src/presentation/http/hono/InternalHonoApiRouteRegistrar.ts +12 -0
  191. package/src/presentation/http/hono/registrars/ManagedMeHonoApiRouteRegistrar.ts +35 -0
  192. package/src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts +2 -2
  193. package/src/presentation/http/routeHandlers/CredentialHttpRouteHandler.ts +28 -0
  194. package/src/presentation/http/routeHandlers/OAuth2HttpRouteHandlerFactory.ts +98 -41
  195. package/src/presentation/server/CodemationConsumerConfigLoader.ts +54 -7
  196. package/src/presentation/server/CodemationPluginDiscovery.ts +5 -0
  197. package/src/presentation/server/WorkflowDefinitionExportsResolver.ts +18 -0
  198. package/src/presentation/server/WorkflowModulePathFinder.ts +12 -1
  199. package/src/presentation/websocket/ManagedWebsocketAuthenticator.ts +50 -0
  200. package/src/presentation/websocket/WebsocketAuthenticator.types.ts +12 -0
  201. package/src/presentation/websocket/WorkflowWebsocketServer.ts +24 -3
  202. package/src/process/ExecaProcessRunner.ts +41 -0
  203. package/src/process/ProcessRunner.types.ts +39 -0
  204. package/src/server.ts +2 -0
  205. package/src/workflows/InternalWorkflowActivationRegistrar.ts +42 -0
  206. package/src/workflows/InternalWorkflowDetailRegistrar.ts +33 -0
  207. package/src/workflows/InternalWorkflowTestRunRegistrar.ts +91 -0
  208. package/src/workflows/InternalWorkflowsListRegistrar.ts +28 -0
  209. package/src/workflows/discovery/WorkflowDirectoryDiscoverer.ts +79 -0
  210. package/tsconfig.json +2 -0
  211. package/vitest.shared.ts +5 -0
  212. package/dist/ApiPaths-CLTHphYZ.js.map +0 -1
  213. package/dist/AppConfigFactory-C6q-CSKb.js.map +0 -1
  214. package/dist/AppContainerFactory-qaqc-R1D.js.map +0 -1
  215. package/dist/CodemationAuthoring.types-DZl-sJaM.js.map +0 -1
  216. package/dist/CodemationConsumerConfigLoader-BeAUS144.js.map +0 -1
  217. package/dist/CredentialServices-CgxwguAv.js.map +0 -1
  218. package/dist/PublicFrontendBootstrapFactory-Cb2pLmDd.d.ts +0 -45
  219. package/dist/PublicFrontendBootstrapJsonCodec-DzqvA0uo.js.map +0 -1
  220. package/dist/ServerLoggerFactory-BKSIh9Xv.js +0 -98
  221. package/dist/ServerLoggerFactory-BKSIh9Xv.js.map +0 -1
  222. package/dist/persistenceServer-vtJAGDat.d.ts +0 -9
  223. package/src/domain/credentials/OAuth2ConnectServiceFactory.ts +0 -411
@@ -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-CKVv9W9q.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-Be2I60Th.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-DnLoQ9Li.js";
9
+ import { s as ProcessRunner } from "./PublicFrontendBootstrapFactory-CY2FS-5g.js";
10
+ import { t as InternalHonoApiRouteRegistrar } from "./InternalHonoApiRouteRegistrar-Ce1yxpnO.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
@@ -572,6 +623,11 @@ declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
572
623
  abstract execute(query: TQuery): Promise<TResult>;
573
624
  }
574
625
  //#endregion
626
+ //#region src/application/telemetry/TelemetrySpanPublisher.d.ts
627
+ interface TelemetrySpanPublisher {
628
+ publishSpan(span: TelemetrySpanUpsert): Promise<void>;
629
+ }
630
+ //#endregion
575
631
  //#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
576
632
  type WorkflowDebuggerOverlayState = Readonly<{
577
633
  workflowId: string;
@@ -591,6 +647,50 @@ interface HonoApiRouteRegistrar {
591
647
  register(app: Hono): void;
592
648
  }
593
649
  //#endregion
650
+ //#region src/auth/managed/ManagedCorsMiddleware.d.ts
651
+ /**
652
+ * CORS allowlist middleware for managed mode.
653
+ *
654
+ * Only the single `CP_WEB_ORIGIN` value (provisioner-injected) is permitted.
655
+ * All other origins are refused on preflight with a 403.
656
+ */
657
+ declare class ManagedCorsMiddleware {
658
+ private readonly allowedOrigin;
659
+ constructor(allowedOrigin: string);
660
+ handle(): MiddlewareHandler;
661
+ }
662
+ //#endregion
663
+ //#region src/audit/IAuditEmitter.d.ts
664
+ /**
665
+ * Workspace-local audit emitter contract.
666
+ * Mirror of the CP-side IAuditEmitter shape; kept separate to avoid cross-repo coupling.
667
+ */
668
+ interface WorkflowAuditActor {
669
+ readonly userId: string;
670
+ readonly sessionId?: string;
671
+ }
672
+ interface WorkflowAuditResource {
673
+ readonly type: string;
674
+ readonly id: string;
675
+ }
676
+ interface WorkflowAuditEntry {
677
+ readonly id: string;
678
+ readonly occurredAt: string;
679
+ readonly actor: WorkflowAuditActor;
680
+ readonly action: string;
681
+ readonly resource: WorkflowAuditResource;
682
+ readonly outcome: "success" | "failure";
683
+ readonly errorCode?: string;
684
+ readonly correlationId?: string;
685
+ /** Denormalised on every row for query convenience. */
686
+ readonly workflowId: string;
687
+ readonly runId?: string;
688
+ readonly nodeId?: string;
689
+ }
690
+ interface IWorkflowAuditEmitter {
691
+ emit(entry: WorkflowAuditEntry): Promise<void>;
692
+ }
693
+ //#endregion
594
694
  //#region src/applicationTokens.d.ts
595
695
  declare const ApplicationTokens: {
596
696
  readonly CodemationAuthConfig: TypeToken<CodemationAuthConfig | undefined>;
@@ -605,7 +705,11 @@ declare const ApplicationTokens: {
605
705
  readonly CommandHandler: TypeToken<CommandHandler<Command<unknown>, unknown>>;
606
706
  readonly DomainEventHandler: TypeToken<DomainEventHandler<DomainEvent>>;
607
707
  readonly HonoApiRouteRegistrar: TypeToken<HonoApiRouteRegistrar>;
708
+ readonly InternalHonoApiRouteRegistrar: TypeToken<InternalHonoApiRouteRegistrar>;
709
+ readonly ManagedCorsMiddleware: TypeToken<ManagedCorsMiddleware>;
710
+ readonly WebsocketAuthenticator: TypeToken<WebsocketAuthenticator | null>;
608
711
  readonly WorkflowWebsocketPublisher: TypeToken<WorkflowWebsocketPublisher>;
712
+ readonly TelemetrySpanPublisher: TypeToken<TelemetrySpanPublisher>;
609
713
  readonly WorkerRuntimeScheduler: TypeToken<WorkerRuntimeScheduler>;
610
714
  readonly WorkflowDefinitionRepository: TypeToken<WorkflowDefinitionRepository>;
611
715
  readonly WorkflowActivationRepository: TypeToken<WorkflowActivationRepository>;
@@ -625,6 +729,9 @@ declare const ApplicationTokens: {
625
729
  readonly PrismaClient: TypeToken<PrismaDatabaseClient>;
626
730
  readonly SessionVerifier: TypeToken<SessionVerifier>;
627
731
  readonly Clock: TypeToken<Clock>;
732
+ readonly WorkflowAuditEmitter: TypeToken<IWorkflowAuditEmitter>;
733
+ readonly ProcessRunner: TypeToken<ProcessRunner>;
734
+ readonly OAuthFlowExecutor: TypeToken<OAuthFlowExecutor>;
628
735
  };
629
736
  //#endregion
630
737
  //#region src/bootstrap/CodemationBootstrapRequest.d.ts
@@ -656,5 +763,5 @@ declare class CodemationPluginListMerger {
656
763
  private tryAdd;
657
764
  }
658
765
  //#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
766
+ export { Command as S, AppContainerFactory as _, HonoApiRouteRegistrar as a, Query as b, WorkerRuntime as c, ServerLoggerFactory as d, LogFilter as f, AppContainerLifecycle as g, DatabaseMigrations as h, ManagedCorsMiddleware as i, FrontendRuntime as l, CollectionSchemaSyncerHolder as m, CodemationBootstrapRequest as n, WorkflowDebuggerOverlayRepository as o, WorkflowRunRepository as p, ApplicationTokens as r, SessionVerifier as s, CodemationPluginListMerger as t, WorkflowRunRetentionPruneScheduler as u, WorkflowWebsocketServer as v, CommandBus as x, QueryBus as y };
767
+ //# sourceMappingURL=CodemationPluginListMerger-DKLAHT2b.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":"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"}
@@ -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-CKVv9W9q.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-Be2I60Th.d.ts.map