@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,4 +1,4 @@
1
- import { A as TelemetryArtifactAttachment, M as TelemetryMetricRecord, N as TelemetrySpanEventRecord, j as TelemetryAttributes } from "./ItemsInputNormalizer-C-KHg9Mo.js";
1
+ import { M as TelemetryAttributes, N as TelemetryMetricRecord, P as TelemetrySpanEventRecord, j as TelemetryArtifactAttachment } from "./ItemsInputNormalizer-_RwIfRIQ.js";
2
2
 
3
3
  //#region src/domain/telemetry/TelemetryContracts.d.ts
4
4
  type TelemetrySpanStatus = "running" | "completed" | "failed";
@@ -78,6 +78,8 @@ interface TelemetryArtifactRecord {
78
78
  readonly previewJson?: unknown;
79
79
  readonly payloadText?: string;
80
80
  readonly payloadJson?: unknown;
81
+ /** Set when the payload was offloaded to BinaryStorage (byteLength > 64 KB). */
82
+ readonly payloadStorageKey?: string;
81
83
  readonly bytes?: number;
82
84
  readonly truncated?: boolean;
83
85
  readonly createdAt: string;
@@ -183,7 +185,14 @@ interface TelemetrySpanStore {
183
185
  interface TelemetryArtifactStore {
184
186
  save(record: TelemetryArtifactWrite): Promise<TelemetryArtifactRecord>;
185
187
  listByTraceId(traceId: string): Promise<ReadonlyArray<TelemetryArtifactRecord>>;
186
- pruneExpired(args: TelemetryPruneArgs): Promise<number>;
188
+ /**
189
+ * Deletes expired artifacts. Returns the count of deleted rows and any
190
+ * `payloadStorageKey` references that callers must clean up from BinaryStorage.
191
+ */
192
+ pruneExpired(args: TelemetryPruneArgs): Promise<{
193
+ count: number;
194
+ storageKeys: ReadonlyArray<string>;
195
+ }>;
187
196
  }
188
197
  interface TelemetryMetricPointStore {
189
198
  save(record: TelemetryMetricPointWrite): Promise<TelemetryMetricPointRecord>;
@@ -194,5 +203,5 @@ interface TelemetryExporter {
194
203
  exportSpans(spans: ReadonlyArray<TelemetrySpanRecord>): Promise<void>;
195
204
  }
196
205
  //#endregion
197
- export { TelemetrySpanStatus as a, TelemetryMetricPointStore as i, TelemetryArtifactStore as n, TelemetrySpanStore as o, TelemetryExporter as r, RunTraceContextRepository as t };
198
- //# sourceMappingURL=TelemetryContracts-DbaNomrH.d.ts.map
206
+ export { TelemetrySpanStatus as a, TelemetryMetricPointStore as i, TelemetryArtifactStore as n, TelemetrySpanStore as o, TelemetryExporter as r, TelemetrySpanUpsert as s, RunTraceContextRepository as t };
207
+ //# sourceMappingURL=TelemetryContracts-BtDx84Cp.d.ts.map
@@ -1,4 +1,4 @@
1
- import { B as NodeDefinition, J as WorkflowDefinition } from "./ItemsInputNormalizer-C-KHg9Mo.js";
1
+ import { V as NodeDefinition, X as WorkflowDefinition } from "./ItemsInputNormalizer-_RwIfRIQ.js";
2
2
 
3
3
  //#region src/application/mapping/WorkflowPolicyUiPresentationFactory.d.ts
4
4
  /** UI-facing policy labels derived from workflow/node definitions (live or hydrated snapshot). */
@@ -12,4 +12,4 @@ declare class WorkflowPolicyUiPresentationFactory {
12
12
  }
13
13
  //#endregion
14
14
  export { WorkflowPolicyUiPresentationFactory as t };
15
- //# sourceMappingURL=WorkflowPolicyUiPresentationFactory-DQEY-h_S.d.ts.map
15
+ //# sourceMappingURL=WorkflowPolicyUiPresentationFactory-6MyjCvBO.d.ts.map
@@ -32,4 +32,4 @@ var WorkflowPolicyUiPresentationFactory = class {
32
32
 
33
33
  //#endregion
34
34
  export { WorkflowPolicyUiPresentationFactory as t };
35
- //# sourceMappingURL=WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js.map
35
+ //# sourceMappingURL=WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkflowPolicyUiPresentationFactory-DhPqQ9aB.js","names":[],"sources":["../src/application/mapping/WorkflowPolicyUiPresentationFactory.ts"],"sourcesContent":["import type { NodeDefinition, RetryPolicySpec, WorkflowDefinition } from \"@codemation/core/browser\";\n\n/** UI-facing policy labels derived from workflow/node definitions (live or hydrated snapshot). */\nexport class WorkflowPolicyUiPresentationFactory {\n workflowHasErrorHandler(workflow: WorkflowDefinition): boolean {\n return workflow.workflowErrorHandler !== undefined;\n }\n\n nodeRetrySummary(config: NodeDefinition[\"config\"]): string | undefined {\n const spec = config.retryPolicy as RetryPolicySpec | undefined;\n if (!spec) return undefined;\n if (spec.kind === \"none\") return \"Retry: off\";\n if (spec.kind === \"fixed\") return `Retry: ${spec.maxAttempts}x @ ${spec.delayMs}ms`;\n if (spec.kind === \"exponential\") {\n const jitter = spec.jitter ? \", jitter\" : \"\";\n return `Retry: exp ${spec.maxAttempts}x from ${spec.initialDelayMs}ms (x${spec.multiplier}${jitter})`;\n }\n return undefined;\n }\n\n nodeHasErrorHandler(config: NodeDefinition[\"config\"]): boolean {\n return config.nodeErrorHandler !== undefined;\n }\n\n snapshotNodeRetrySummary(config: unknown): string | undefined {\n const record = this.asRecord(config);\n const spec = record.retryPolicy as RetryPolicySpec | undefined;\n if (!spec || typeof spec !== \"object\") return undefined;\n return this.nodeRetrySummary({ retryPolicy: spec } as NodeDefinition[\"config\"]);\n }\n\n snapshotNodeHasErrorHandler(config: unknown): boolean {\n return this.asRecord(config).nodeErrorHandler !== undefined;\n }\n\n private asRecord(value: unknown): Readonly<Record<string, unknown>> {\n return value !== null && typeof value === \"object\" ? (value as Record<string, unknown>) : {};\n }\n}\n"],"mappings":";;AAGA,IAAa,sCAAb,MAAiD;CAC/C,wBAAwB,UAAuC;AAC7D,SAAO,SAAS,yBAAyB;;CAG3C,iBAAiB,QAAsD;EACrE,MAAM,OAAO,OAAO;AACpB,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,KAAK,SAAS,OAAQ,QAAO;AACjC,MAAI,KAAK,SAAS,QAAS,QAAO,UAAU,KAAK,YAAY,MAAM,KAAK,QAAQ;AAChF,MAAI,KAAK,SAAS,eAAe;GAC/B,MAAM,SAAS,KAAK,SAAS,aAAa;AAC1C,UAAO,cAAc,KAAK,YAAY,SAAS,KAAK,eAAe,OAAO,KAAK,aAAa,OAAO;;;CAKvG,oBAAoB,QAA2C;AAC7D,SAAO,OAAO,qBAAqB;;CAGrC,yBAAyB,QAAqC;EAE5D,MAAM,OADS,KAAK,SAAS,OAAO,CAChB;AACpB,MAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO;AAC9C,SAAO,KAAK,iBAAiB,EAAE,aAAa,MAAM,CAA6B;;CAGjF,4BAA4B,QAA0B;AACpD,SAAO,KAAK,SAAS,OAAO,CAAC,qBAAqB;;CAGpD,AAAQ,SAAS,OAAmD;AAClE,SAAO,UAAU,QAAQ,OAAO,UAAU,WAAY,QAAoC,EAAE"}
1
+ {"version":3,"file":"WorkflowPolicyUiPresentationFactory-Bb-ae_Zh.js","names":[],"sources":["../src/application/mapping/WorkflowPolicyUiPresentationFactory.ts"],"sourcesContent":["import type { NodeDefinition, RetryPolicySpec, WorkflowDefinition } from \"@codemation/core/browser\";\n\n/** UI-facing policy labels derived from workflow/node definitions (live or hydrated snapshot). */\nexport class WorkflowPolicyUiPresentationFactory {\n workflowHasErrorHandler(workflow: WorkflowDefinition): boolean {\n return workflow.workflowErrorHandler !== undefined;\n }\n\n nodeRetrySummary(config: NodeDefinition[\"config\"]): string | undefined {\n const spec = config.retryPolicy as RetryPolicySpec | undefined;\n if (!spec) return undefined;\n if (spec.kind === \"none\") return \"Retry: off\";\n if (spec.kind === \"fixed\") return `Retry: ${spec.maxAttempts}x @ ${spec.delayMs}ms`;\n if (spec.kind === \"exponential\") {\n const jitter = spec.jitter ? \", jitter\" : \"\";\n return `Retry: exp ${spec.maxAttempts}x from ${spec.initialDelayMs}ms (x${spec.multiplier}${jitter})`;\n }\n return undefined;\n }\n\n nodeHasErrorHandler(config: NodeDefinition[\"config\"]): boolean {\n return config.nodeErrorHandler !== undefined;\n }\n\n snapshotNodeRetrySummary(config: unknown): string | undefined {\n const record = this.asRecord(config);\n const spec = record.retryPolicy as RetryPolicySpec | undefined;\n if (!spec || typeof spec !== \"object\") return undefined;\n return this.nodeRetrySummary({ retryPolicy: spec } as NodeDefinition[\"config\"]);\n }\n\n snapshotNodeHasErrorHandler(config: unknown): boolean {\n return this.asRecord(config).nodeErrorHandler !== undefined;\n }\n\n private asRecord(value: unknown): Readonly<Record<string, unknown>> {\n return value !== null && typeof value === \"object\" ? (value as Record<string, unknown>) : {};\n }\n}\n"],"mappings":";;AAGA,IAAa,sCAAb,MAAiD;CAC/C,wBAAwB,UAAuC;AAC7D,SAAO,SAAS,yBAAyB;;CAG3C,iBAAiB,QAAsD;EACrE,MAAM,OAAO,OAAO;AACpB,MAAI,CAAC,KAAM,QAAO;AAClB,MAAI,KAAK,SAAS,OAAQ,QAAO;AACjC,MAAI,KAAK,SAAS,QAAS,QAAO,UAAU,KAAK,YAAY,MAAM,KAAK,QAAQ;AAChF,MAAI,KAAK,SAAS,eAAe;GAC/B,MAAM,SAAS,KAAK,SAAS,aAAa;AAC1C,UAAO,cAAc,KAAK,YAAY,SAAS,KAAK,eAAe,OAAO,KAAK,aAAa,OAAO;;;CAKvG,oBAAoB,QAA2C;AAC7D,SAAO,OAAO,qBAAqB;;CAGrC,yBAAyB,QAAqC;EAE5D,MAAM,OADS,KAAK,SAAS,OAAO,CAChB;AACpB,MAAI,CAAC,QAAQ,OAAO,SAAS,SAAU,QAAO;AAC9C,SAAO,KAAK,iBAAiB,EAAE,aAAa,MAAM,CAA6B;;CAGjF,4BAA4B,QAA0B;AACpD,SAAO,KAAK,SAAS,OAAO,CAAC,qBAAqB;;CAGpD,AAAQ,SAAS,OAAmD;AAClE,SAAO,UAAU,QAAQ,OAAO,UAAU,WAAY,QAAoC,EAAE"}
@@ -29,6 +29,15 @@ type WorkflowNodeDto = Readonly<{
29
29
  * the properties panel as an "Open in editor" navigation link.
30
30
  */
31
31
  referencedWorkflowId?: string;
32
+ /**
33
+ * Static configuration summary for the inspector — short label/value pairs that describe
34
+ * what this node will do at a glance, before any run telemetry exists. Pulled from the
35
+ * node config's optional `inspectorSummary()` hook (`NodeConfigBase.inspectorSummary`).
36
+ */
37
+ inspectorSummary?: ReadonlyArray<Readonly<{
38
+ label: string;
39
+ value: string;
40
+ }>>;
32
41
  }>;
33
42
  type WorkflowEdgeDto = Readonly<{
34
43
  from: Readonly<{
@@ -60,4 +69,4 @@ type WorkflowSummary = Readonly<{
60
69
  }>;
61
70
  //#endregion
62
71
  export { WorkflowSummary as i, WorkflowEdgeDto as n, WorkflowNodeDto as r, WorkflowDto as t };
63
- //# sourceMappingURL=WorkflowViewContracts-CzK2KFuz.d.ts.map
72
+ //# sourceMappingURL=WorkflowViewContracts-B7aFQcIw.d.ts.map
@@ -1,6 +1,6 @@
1
- import "./index-BbBk26m0.js";
2
- import "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import { a as defineCodemationApp, i as FriendlyCodemationExecutionConfig, n as DefinePluginOptions, o as definePlugin, r as FriendlyCodemationDatabaseConfig, s as workflow, t as DefineCodemationAppOptions } from "./CodemationAuthoring.types-fBRppnmi.js";
4
- import { _ as CodemationEngineExecutionLimitsConfig, b as CodemationSchedulerConfig, c as CodemationPluginContext, d as CodemationAppSchedulerConfig, f as CodemationAppSchedulerKind, g as CodemationDatabaseKind, h as CodemationDatabaseConfig, m as CodemationConfig, n as CodemationRegistrationContextBase, o as CodemationPlugin, p as CodemationApplicationRuntimeConfig, s as CodemationPluginConfig, t as CodemationAppContext, u as CodemationAppDefinition, v as CodemationEventBusConfig, x as CodemationSchedulerKind, y as CodemationEventBusKind } from "./CodemationAppContext-DRu1Dpri.js";
5
- import "./CodemationWhitelabelConfig-CWbcyQqn.js";
1
+ import "./index-DilAYwnH.js";
2
+ import "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import { a as defineCodemationApp, i as FriendlyCodemationExecutionConfig, n as DefinePluginOptions, o as definePlugin, r as FriendlyCodemationDatabaseConfig, s as workflow, t as DefineCodemationAppOptions } from "./CodemationAuthoring.types-DA3G3s6d.js";
4
+ import { _ as CodemationEngineExecutionLimitsConfig, b as CodemationSchedulerConfig, c as CodemationPluginContext, d as CodemationAppSchedulerConfig, f as CodemationAppSchedulerKind, g as CodemationDatabaseKind, h as CodemationDatabaseConfig, m as CodemationConfig, n as CodemationRegistrationContextBase, o as CodemationPlugin, p as CodemationApplicationRuntimeConfig, s as CodemationPluginConfig, t as CodemationAppContext, u as CodemationAppDefinition, v as CodemationEventBusConfig, x as CodemationSchedulerKind, y as CodemationEventBusKind } from "./CodemationAppContext-CKVv9W9q.js";
5
+ import "./CodemationWhitelabelConfig-Ca2mCUeC.js";
6
6
  export { type CodemationAppContext, type CodemationAppDefinition, type CodemationAppSchedulerConfig, type CodemationAppSchedulerKind, type CodemationApplicationRuntimeConfig, type CodemationConfig, type CodemationDatabaseConfig, type CodemationDatabaseKind, type CodemationEngineExecutionLimitsConfig, type CodemationEventBusConfig, type CodemationEventBusKind, type CodemationPlugin, type CodemationPluginConfig, type CodemationPluginContext, type CodemationRegistrationContextBase, type CodemationSchedulerConfig, type CodemationSchedulerKind, type DefineCodemationAppOptions, type DefinePluginOptions, type FriendlyCodemationDatabaseConfig, type FriendlyCodemationExecutionConfig, defineCodemationApp, definePlugin, workflow };
package/dist/authoring.js CHANGED
@@ -1,4 +1,4 @@
1
- import { n as definePlugin, t as defineCodemationApp } from "./CodemationAuthoring.types-DZl-sJaM.js";
1
+ import { n as definePlugin, t as defineCodemationApp } from "./CodemationAuthoring.types-NGkBcmmT.js";
2
2
  import { workflow } from "@codemation/core-nodes";
3
3
 
4
4
  export { defineCodemationApp, definePlugin, workflow };
package/dist/client.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { l as Logger, t as CodemationWhitelabelConfig, u as LoggerFactory } from "./CodemationWhitelabelConfig-CWbcyQqn.js";
2
- import { i as LogLevelPolicy, n as logLevelPolicyFactory, r as LogLevel } from "./LogLevelPolicyFactory-CampWO0l.js";
3
- import { a as ApiPaths, i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-Cl_DLRh0.js";
4
- import { a as CodemationFrontendAuthSnapshot, i as CodemationFrontendAuthProviderSnapshot, n as InternalAuthBootstrap, r as FrontendAppConfig, t as PublicFrontendBootstrap } from "./PublicFrontendBootstrap-DzBgwOnG.js";
1
+ import { l as Logger, t as CodemationWhitelabelConfig, u as LoggerFactory } from "./CodemationWhitelabelConfig-Ca2mCUeC.js";
2
+ import { i as LogLevelPolicy, n as logLevelPolicyFactory, r as LogLevel } from "./LogLevelPolicyFactory-ewCHLDLn.js";
3
+ import { a as ApiPaths, i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-CXG9Dxft.js";
4
+ import { a as CodemationFrontendAuthSnapshot, i as CodemationFrontendAuthProviderSnapshot, n as InternalAuthBootstrap, r as FrontendAppConfig, t as PublicFrontendBootstrap } from "./PublicFrontendBootstrap-Cev3qK46.js";
5
5
 
6
6
  //#region src/infrastructure/logging/BrowserLoggerFactory.d.ts
7
7
  declare class BrowserLoggerFactory implements LoggerFactory {
package/dist/client.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { n as logLevelPolicyFactory, r as ConsoleLogger } from "./LogLevelPolicyFactory-DCUzIN6G.js";
2
- import { n as InAppCallbackUrlPolicy, t as ApiPaths } from "./ApiPaths-CLTHphYZ.js";
3
- import { i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-DzqvA0uo.js";
2
+ import { n as InAppCallbackUrlPolicy, t as ApiPaths } from "./ApiPaths-Dv1dcHu_.js";
3
+ import { i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-CegIF_ne.js";
4
4
 
5
5
  //#region src/infrastructure/logging/BrowserLoggerFactory.ts
6
6
  var BrowserLoggerFactory = class {
@@ -1,7 +1,7 @@
1
- import "./index-BbBk26m0.js";
2
- import "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import "./CodemationAppContext-DRu1Dpri.js";
4
- import "./CodemationWhitelabelConfig-CWbcyQqn.js";
5
- import "./CodemationConfigNormalizer-DVko3cVN.js";
6
- import { i as CodemationConsumerAppResolver, n as CodemationConsumerConfigResolution, r as CodemationConsumerApp, t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-DJWr86f-.js";
1
+ import "./index-DilAYwnH.js";
2
+ import "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import "./CodemationAppContext-CKVv9W9q.js";
4
+ import "./CodemationWhitelabelConfig-Ca2mCUeC.js";
5
+ import "./CodemationConfigNormalizer-BAKjetJ6.js";
6
+ import { i as CodemationConsumerAppResolver, n as CodemationConsumerConfigResolution, r as CodemationConsumerApp, t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-nxOqvv46.js";
7
7
  export { type CodemationConsumerApp, CodemationConsumerAppResolver, CodemationConsumerConfigLoader, type CodemationConsumerConfigResolution };
package/dist/consumer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import "./LogLevelPolicyFactory-DCUzIN6G.js";
2
- import { i as CodemationConsumerAppResolver, t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-BeAUS144.js";
3
- import "./ServerLoggerFactory-BKSIh9Xv.js";
2
+ import { i as CodemationConsumerAppResolver, t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-GYpBBvqE.js";
3
+ import "./ServerLoggerFactory-Ckk52S3w.js";
4
4
  import "./decorateParam-BWxkAUSj.js";
5
5
  import "./decorate-CXWmflG_.js";
6
6
 
@@ -1,9 +1,9 @@
1
- import "./index-BbBk26m0.js";
2
- import { ct as AnyCredentialType, ft as CredentialHealth, yt as CredentialSessionFactoryArgs } from "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import "./CodemationAppContext-DRu1Dpri.js";
4
- import "./CodemationWhitelabelConfig-CWbcyQqn.js";
5
- import { a as CredentialInstanceService, i as CredentialBindingService, n as CredentialType } from "./CredentialServices-UfvHB-rN.js";
6
- import "./CredentialContractsRegistry-DrMIDSw8.js";
1
+ import "./index-DilAYwnH.js";
2
+ import { mt as CredentialHealth, ut as AnyCredentialType, xt as CredentialSessionFactoryArgs } from "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import "./CodemationAppContext-CKVv9W9q.js";
4
+ import "./CodemationWhitelabelConfig-Ca2mCUeC.js";
5
+ import { i as CredentialInstanceService, n as CredentialType, r as CredentialBindingService } from "./CredentialServices-Be2I60Th.js";
6
+ import "./CredentialContractsRegistry-Bq2bq28t.js";
7
7
 
8
8
  //#region src/infrastructure/credentials/OpenAiApiKeyCredentialShapes.types.d.ts
9
9
  /**
@@ -1,6 +1,6 @@
1
1
  import "./decorateParam-BWxkAUSj.js";
2
2
  import "./decorate-CXWmflG_.js";
3
- import { a as CredentialInstanceService, h as OpenAiApiKeyCredentialHealthTester, i as CredentialBindingService, m as OpenAiApiKeyCredentialTypeFactory } from "./CredentialServices-CgxwguAv.js";
3
+ import { a as CredentialInstanceService, g as OpenAiApiKeyCredentialHealthTester, h as OpenAiApiKeyCredentialTypeFactory, i as CredentialBindingService } from "./CredentialServices-Dk8yypeL.js";
4
4
 
5
5
  //#region src/credentials.ts
6
6
  const defaultOpenAiApiKeyCredentialTypeFactory = new OpenAiApiKeyCredentialTypeFactory(new OpenAiApiKeyCredentialHealthTester(globalThis.fetch));
@@ -1,5 +1,5 @@
1
- import "./index-BbBk26m0.js";
2
- import { J as WorkflowDefinition, h as Container } from "./ItemsInputNormalizer-C-KHg9Mo.js";
1
+ import "./index-DilAYwnH.js";
2
+ import { X as WorkflowDefinition, h as Container } from "./ItemsInputNormalizer-_RwIfRIQ.js";
3
3
 
4
4
  //#region src/presentation/server/CodemationTsyringeParamInfoReader.d.ts
5
5
  declare class CodemationTsyringeParamInfoReader {
@@ -1,98 +1,5 @@
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
- };
1
+ import { n as CodemationTsyringeParamInfoReader, t as CodemationTsyringeTypeInfoRegistrar } from "./CodemationTsyringeTypeInfoRegistrar-Bj6FJYFz.js";
94
2
 
95
- //#endregion
96
3
  //#region src/presentation/server/DevelopmentRuntimeRouteGuard.ts
97
4
  var DevelopmentRuntimeRouteGuard = class DevelopmentRuntimeRouteGuard {
98
5
  static isAuthorized(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"devServerSidecar.js","names":["container: Container"],"sources":["../src/presentation/server/CodemationTsyringeParamInfoReader.ts","../src/presentation/server/CodemationTsyringeTypeInfoRegistrar.ts","../src/presentation/server/DevelopmentRuntimeRouteGuard.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","export type DevelopmentRuntimeSignal =\n | Readonly<{ kind: \"buildStarted\"; buildVersion?: string }>\n | Readonly<{ kind: \"buildCompleted\"; buildVersion?: string }>\n | Readonly<{ kind: \"buildFailed\"; message: string }>;\n\nexport class DevelopmentRuntimeRouteGuard {\n static isAuthorized(request: Request): boolean {\n if (this.isLoopbackRequest(request)) {\n return true;\n }\n const expectedToken = process.env.CODEMATION_DEV_SERVER_TOKEN;\n if (!expectedToken) {\n return true;\n }\n return request.headers.get(\"x-codemation-dev-token\") === expectedToken;\n }\n\n private static isLoopbackRequest(request: Request): boolean {\n const requestUrl = new URL(request.url);\n return requestUrl.hostname === \"127.0.0.1\" || requestUrl.hostname === \"localhost\" || requestUrl.hostname === \"::1\";\n }\n\n static async parseSignal(request: Request): Promise<DevelopmentRuntimeSignal> {\n const payload = (await request.json()) as Readonly<{\n kind?: unknown;\n buildVersion?: unknown;\n message?: unknown;\n }>;\n return DevelopmentRuntimeRouteGuard.parseSignalFromPayload(payload);\n }\n\n static parseSignalFromPayload(\n payload: Readonly<{\n kind?: unknown;\n buildVersion?: unknown;\n message?: unknown;\n }>,\n ): DevelopmentRuntimeSignal {\n if (payload.kind === \"buildStarted\") {\n return {\n kind: payload.kind,\n buildVersion: typeof payload.buildVersion === \"string\" ? payload.buildVersion : undefined,\n };\n }\n if (payload.kind === \"buildCompleted\") {\n return {\n kind: payload.kind,\n buildVersion: typeof payload.buildVersion === \"string\" ? payload.buildVersion : undefined,\n };\n }\n if (payload.kind === \"buildFailed\" && typeof payload.message === \"string\" && payload.message.length > 0) {\n return {\n kind: payload.kind,\n message: payload.message,\n };\n }\n throw new Error(\"Unsupported development runtime signal.\");\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;;;;;;ACjHrF,IAAa,+BAAb,MAAa,6BAA6B;CACxC,OAAO,aAAa,SAA2B;AAC7C,MAAI,KAAK,kBAAkB,QAAQ,CACjC,QAAO;EAET,MAAM,gBAAgB,QAAQ,IAAI;AAClC,MAAI,CAAC,cACH,QAAO;AAET,SAAO,QAAQ,QAAQ,IAAI,yBAAyB,KAAK;;CAG3D,OAAe,kBAAkB,SAA2B;EAC1D,MAAM,aAAa,IAAI,IAAI,QAAQ,IAAI;AACvC,SAAO,WAAW,aAAa,eAAe,WAAW,aAAa,eAAe,WAAW,aAAa;;CAG/G,aAAa,YAAY,SAAqD;EAC5E,MAAM,UAAW,MAAM,QAAQ,MAAM;AAKrC,SAAO,6BAA6B,uBAAuB,QAAQ;;CAGrE,OAAO,uBACL,SAK0B;AAC1B,MAAI,QAAQ,SAAS,eACnB,QAAO;GACL,MAAM,QAAQ;GACd,cAAc,OAAO,QAAQ,iBAAiB,WAAW,QAAQ,eAAe;GACjF;AAEH,MAAI,QAAQ,SAAS,iBACnB,QAAO;GACL,MAAM,QAAQ;GACd,cAAc,OAAO,QAAQ,iBAAiB,WAAW,QAAQ,eAAe;GACjF;AAEH,MAAI,QAAQ,SAAS,iBAAiB,OAAO,QAAQ,YAAY,YAAY,QAAQ,QAAQ,SAAS,EACpG,QAAO;GACL,MAAM,QAAQ;GACd,SAAS,QAAQ;GAClB;AAEH,QAAM,IAAI,MAAM,0CAA0C"}
1
+ {"version":3,"file":"devServerSidecar.js","names":[],"sources":["../src/presentation/server/DevelopmentRuntimeRouteGuard.ts"],"sourcesContent":["export type DevelopmentRuntimeSignal =\n | Readonly<{ kind: \"buildStarted\"; buildVersion?: string }>\n | Readonly<{ kind: \"buildCompleted\"; buildVersion?: string }>\n | Readonly<{ kind: \"buildFailed\"; message: string }>;\n\nexport class DevelopmentRuntimeRouteGuard {\n static isAuthorized(request: Request): boolean {\n if (this.isLoopbackRequest(request)) {\n return true;\n }\n const expectedToken = process.env.CODEMATION_DEV_SERVER_TOKEN;\n if (!expectedToken) {\n return true;\n }\n return request.headers.get(\"x-codemation-dev-token\") === expectedToken;\n }\n\n private static isLoopbackRequest(request: Request): boolean {\n const requestUrl = new URL(request.url);\n return requestUrl.hostname === \"127.0.0.1\" || requestUrl.hostname === \"localhost\" || requestUrl.hostname === \"::1\";\n }\n\n static async parseSignal(request: Request): Promise<DevelopmentRuntimeSignal> {\n const payload = (await request.json()) as Readonly<{\n kind?: unknown;\n buildVersion?: unknown;\n message?: unknown;\n }>;\n return DevelopmentRuntimeRouteGuard.parseSignalFromPayload(payload);\n }\n\n static parseSignalFromPayload(\n payload: Readonly<{\n kind?: unknown;\n buildVersion?: unknown;\n message?: unknown;\n }>,\n ): DevelopmentRuntimeSignal {\n if (payload.kind === \"buildStarted\") {\n return {\n kind: payload.kind,\n buildVersion: typeof payload.buildVersion === \"string\" ? payload.buildVersion : undefined,\n };\n }\n if (payload.kind === \"buildCompleted\") {\n return {\n kind: payload.kind,\n buildVersion: typeof payload.buildVersion === \"string\" ? payload.buildVersion : undefined,\n };\n }\n if (payload.kind === \"buildFailed\" && typeof payload.message === \"string\" && payload.message.length > 0) {\n return {\n kind: payload.kind,\n message: payload.message,\n };\n }\n throw new Error(\"Unsupported development runtime signal.\");\n }\n}\n"],"mappings":";;;AAKA,IAAa,+BAAb,MAAa,6BAA6B;CACxC,OAAO,aAAa,SAA2B;AAC7C,MAAI,KAAK,kBAAkB,QAAQ,CACjC,QAAO;EAET,MAAM,gBAAgB,QAAQ,IAAI;AAClC,MAAI,CAAC,cACH,QAAO;AAET,SAAO,QAAQ,QAAQ,IAAI,yBAAyB,KAAK;;CAG3D,OAAe,kBAAkB,SAA2B;EAC1D,MAAM,aAAa,IAAI,IAAI,QAAQ,IAAI;AACvC,SAAO,WAAW,aAAa,eAAe,WAAW,aAAa,eAAe,WAAW,aAAa;;CAG/G,aAAa,YAAY,SAAqD;EAC5E,MAAM,UAAW,MAAM,QAAQ,MAAM;AAKrC,SAAO,6BAA6B,uBAAuB,QAAQ;;CAGrE,OAAO,uBACL,SAK0B;AAC1B,MAAI,QAAQ,SAAS,eACnB,QAAO;GACL,MAAM,QAAQ;GACd,cAAc,OAAO,QAAQ,iBAAiB,WAAW,QAAQ,eAAe;GACjF;AAEH,MAAI,QAAQ,SAAS,iBACnB,QAAO;GACL,MAAM,QAAQ;GACd,cAAc,OAAO,QAAQ,iBAAiB,WAAW,QAAQ,eAAe;GACjF;AAEH,MAAI,QAAQ,SAAS,iBAAiB,OAAO,QAAQ,YAAY,YAAY,QAAQ,QAAQ,SAAS,EACpG,QAAO;GACL,MAAM,QAAQ;GACd,SAAS,QAAQ;GAClB;AAEH,QAAM,IAAI,MAAM,0CAA0C"}
package/dist/dto.d.ts CHANGED
@@ -1,9 +1,9 @@
1
- import "./index-BbBk26m0.js";
2
- import { R as JsonValue, b as TestCaseRunStatus, rt as RunStatus, x as TestSuiteRunStatus } from "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import { a as UpdateCredentialInstanceRequest, c as WorkflowCredentialHealthSlotDto, i as CredentialOAuth2ConnectionDto, n as CredentialInstanceDto, o as UpsertCredentialBindingRequest, r as CredentialInstanceWithSecretsDto, s as WorkflowCredentialHealthDto, t as CreateCredentialInstanceRequest } from "./CredentialContractsRegistry-DrMIDSw8.js";
4
- import { a as TelemetrySpanStatus } from "./TelemetryContracts-DbaNomrH.js";
5
- import { i as WorkflowSummary, n as WorkflowEdgeDto, r as WorkflowNodeDto, t as WorkflowDto } from "./WorkflowViewContracts-CzK2KFuz.js";
6
- import { _ as withInviteUserResponseLoginMethodsDefaults, a as CollectionSummaryDto, c as AcceptUserInviteRequestDto, d as UpdateUserAccountStatusRequestDto, f as UpsertLocalBootstrapUserResultDto, g as VerifyUserInviteResponseDto, h as UserAccountStatus, i as CollectionRowDto, l as InviteUserRequestDto, m as UserAccountDtoInput, n as CollectionFieldDto, o as ListCollectionRowsResponseDto, p as UserAccountDto, r as CollectionIndexDto, s as SyncCollectionsResponseDto, t as CollectionDetailDto, u as InviteUserResponseDto, v as withUserAccountLoginMethodsDefaults } from "./CollectionContracts.types-DdpHft0i.js";
1
+ import "./index-DilAYwnH.js";
2
+ import { at as RunStatus, b as TestCaseRunStatus, x as TestSuiteRunStatus, z as JsonValue } from "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import { a as UpdateCredentialInstanceRequest, c as WorkflowCredentialHealthSlotDto, i as CredentialOAuth2ConnectionDto, n as CredentialInstanceDto, o as UpsertCredentialBindingRequest, r as CredentialInstanceWithSecretsDto, s as WorkflowCredentialHealthDto, t as CreateCredentialInstanceRequest } from "./CredentialContractsRegistry-Bq2bq28t.js";
4
+ import { a as TelemetrySpanStatus } from "./TelemetryContracts-BtDx84Cp.js";
5
+ import { i as WorkflowSummary, n as WorkflowEdgeDto, r as WorkflowNodeDto, t as WorkflowDto } from "./WorkflowViewContracts-B7aFQcIw.js";
6
+ import { _ as withInviteUserResponseLoginMethodsDefaults, a as CollectionSummaryDto, c as AcceptUserInviteRequestDto, d as UpdateUserAccountStatusRequestDto, f as UpsertLocalBootstrapUserResultDto, g as VerifyUserInviteResponseDto, h as UserAccountStatus, i as CollectionRowDto, l as InviteUserRequestDto, m as UserAccountDtoInput, n as CollectionFieldDto, o as ListCollectionRowsResponseDto, p as UserAccountDto, r as CollectionIndexDto, s as SyncCollectionsResponseDto, t as CollectionDetailDto, u as InviteUserResponseDto, v as withUserAccountLoginMethodsDefaults } from "./CollectionContracts.types-DDyFYT_D.js";
7
7
 
8
8
  //#region src/application/contracts/TelemetryDashboardContracts.d.ts
9
9
  type TelemetryDashboardBucketIntervalDto = "minute_5" | "minute_15" | "hour" | "day" | "week";
@@ -1,4 +1,4 @@
1
- import { $ as RunCurrentState, D as WebhookTriggerMatcher, Dt as WorkflowId, E as WebhookInvocationMatch, Et as NodeId, H as ParentExecutionRef, J as WorkflowDefinition, K as RunnableNodeConfig, L as Items, O as WebhookTriggerResolution, Q as PersistedWorkflowTokenRegistryLike, T as HttpMethod, V as NodeOutputs, W as RunId, X as NodeInputsByPort, Y as CurrentStateExecutionRequest, a as ParamDeep, c as NodeActivationContinuation, ct as AnyCredentialType, d as NodeExecutionRequestHandler, et as RunExecutionOptions, g as TypeToken, ht as CredentialJsonRecord, it as RunStopCondition, m as WorkflowSnapshotResolver, nt as RunResult, ot as WebhookRunResult, p as WorkflowRepository, s as LiveWorkflowRepository, st as WorkflowExecutionRepository, u as NodeExecutionRequest, wt as CredentialTypeId, z as NodeActivationId } from "./ItemsInputNormalizer-C-KHg9Mo.js";
1
+ import { B as NodeActivationId, D as WebhookInvocationMatch, E as HttpMethod, Et as CredentialTypeId, J as RunnableNodeConfig, K as RunId, O as WebhookTriggerMatcher, Ot as NodeId, Q as NodeInputsByPort, R as Items, U as NodeOutputs, W as ParentExecutionRef, X as WorkflowDefinition, Z as CurrentStateExecutionRequest, _t as CredentialJsonRecord, a as ParamDeep, c as NodeActivationContinuation, ct as WebhookRunResult, d as NodeExecutionRequestHandler, et as PersistedWorkflowTokenRegistryLike, g as TypeToken, it as RunResult, k as WebhookTriggerResolution, kt as WorkflowId, lt as WorkflowExecutionRepository, m as WorkflowSnapshotResolver, nt as RunExecutionOptions, ot as RunStopCondition, p as WorkflowRepository, s as LiveWorkflowRepository, tt as RunCurrentState, u as NodeExecutionRequest, ut as AnyCredentialType } from "./ItemsInputNormalizer-_RwIfRIQ.js";
2
2
  import { ZodType, z } from "zod";
3
3
 
4
4
  //#region ../core/src/contracts/Clock.d.ts
@@ -247,5 +247,51 @@ declare class RunIntentService {
247
247
  private createWebhookExecutionOptions;
248
248
  }
249
249
  //#endregion
250
- export { DefinedNode as a, DefinedCollection as i, Engine as n, DefinedNodeConfigInput as o, CollectionDefinition as r, Clock as s, RunIntentService as t };
251
- //# sourceMappingURL=index-BbBk26m0.d.ts.map
250
+ //#region ../core/src/credentials/OAuthFlowExecutor.types.d.ts
251
+ /**
252
+ * Four-concept model for credentials (see docs/design/credentials-oauth-unification.md):
253
+ * 1. CredentialType — schema for stored material (e.g. "oauth.google.gmail").
254
+ * 2. Credential slot requirement — which types a node or MCP server accepts.
255
+ * 3. CredentialInstance — a stored, usable token row in the host's credential store.
256
+ * 4. OAuthFlowExecutor (this file) — the only concept that differs between deployment
257
+ * modes. DI selects one implementation at boot; the rest of the system programs
258
+ * against this interface alone.
259
+ */
260
+ interface OAuthFlowStartArgs {
261
+ readonly typeId: string;
262
+ readonly scopes: ReadonlyArray<string>;
263
+ readonly redirectUri: string;
264
+ readonly instanceId?: string;
265
+ }
266
+ interface OAuthFlowStartResult {
267
+ readonly consentUrl: string;
268
+ readonly stateToken: string;
269
+ }
270
+ interface OAuthFlowCallbackArgs {
271
+ readonly stateToken: string;
272
+ readonly code: string;
273
+ }
274
+ interface OAuthMaterial {
275
+ readonly accessToken: string;
276
+ readonly refreshToken?: string;
277
+ readonly expiresAt?: string;
278
+ readonly grantedScopes: ReadonlyArray<string>;
279
+ }
280
+ interface OAuthFlowExecutor {
281
+ start(args: OAuthFlowStartArgs): Promise<OAuthFlowStartResult>;
282
+ /**
283
+ * Returns the instanceId associated with a pending stateToken without consuming it.
284
+ * Used by callback routes to identify the target instance before calling completeCallback.
285
+ * Returns undefined when the stateToken is unknown or already consumed.
286
+ */
287
+ lookupInstanceId(stateToken: string): string | undefined;
288
+ completeCallback(args: OAuthFlowCallbackArgs): Promise<OAuthMaterial>;
289
+ refresh(args: {
290
+ typeId: string;
291
+ instanceId: string;
292
+ material: OAuthMaterial;
293
+ }): Promise<OAuthMaterial>;
294
+ }
295
+ //#endregion
296
+ export { DefinedCollection as a, Clock as c, CollectionDefinition as i, RunIntentService as n, DefinedNode as o, Engine as r, DefinedNodeConfigInput as s, OAuthFlowExecutor as t };
297
+ //# sourceMappingURL=index-DilAYwnH.d.ts.map
package/dist/index.d.ts CHANGED
@@ -1,23 +1,24 @@
1
- import "./index-BbBk26m0.js";
2
- import "./ItemsInputNormalizer-C-KHg9Mo.js";
3
- import { a as defineCodemationApp, i as FriendlyCodemationExecutionConfig, n as DefinePluginOptions, o as definePlugin, r as FriendlyCodemationDatabaseConfig, s as workflow, t as DefineCodemationAppOptions } from "./CodemationAuthoring.types-fBRppnmi.js";
4
- import { S as CodemationWorkflowDiscovery, _ as CodemationEngineExecutionLimitsConfig, a as AppPluginLoadSummary, b as CodemationSchedulerConfig, c as CodemationPluginContext, d as CodemationAppSchedulerConfig, f as CodemationAppSchedulerKind, g as CodemationDatabaseKind, h as CodemationDatabaseConfig, l as CodemationPluginPackageMetadata, m as CodemationConfig, n as CodemationRegistrationContextBase, o as CodemationPlugin, p as CodemationApplicationRuntimeConfig, r as AppConfig, s as CodemationPluginConfig, t as CodemationAppContext, u as CodemationAppDefinition, v as CodemationEventBusConfig, w as CodemationClassToken, x as CodemationSchedulerKind, y as CodemationEventBusKind } from "./CodemationAppContext-DRu1Dpri.js";
5
- import { a as CodemationAuthConfig, c as CodemationAuthOidcProviderConfig, i as CodemationLogRule, n as CodemationLogConfig, o as CodemationAuthKind, r as CodemationLogLevelName, s as CodemationAuthOAuthProviderConfig, t as CodemationWhitelabelConfig } from "./CodemationWhitelabelConfig-CWbcyQqn.js";
6
- import "./LogLevelPolicyFactory-CampWO0l.js";
7
- import { a as ApiPaths, i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-Cl_DLRh0.js";
8
- import { a as CodemationFrontendAuthSnapshot, i as CodemationFrontendAuthProviderSnapshot, n as InternalAuthBootstrap, r as FrontendAppConfig, t as PublicFrontendBootstrap } from "./PublicFrontendBootstrap-DzBgwOnG.js";
9
- import "./CodemationConfigNormalizer-DVko3cVN.js";
10
- import { t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-DJWr86f-.js";
11
- import "./CredentialServices-UfvHB-rN.js";
12
- import "./CredentialContractsRegistry-DrMIDSw8.js";
13
- import "./TelemetryContracts-DbaNomrH.js";
14
- import "./WorkflowViewContracts-CzK2KFuz.js";
15
- import { a as CollectionSummaryDto, f as UpsertLocalBootstrapUserResultDto, i as CollectionRowDto, o as ListCollectionRowsResponseDto, p as UserAccountDto, s as SyncCollectionsResponseDto, t as CollectionDetailDto } from "./CollectionContracts.types-DdpHft0i.js";
16
- import { b as CommandBus, c as FrontendRuntime, g as AppContainerFactory, h as AppContainerLifecycle, m as DatabaseMigrations, n as CodemationBootstrapRequest, p as CollectionSchemaSyncerHolder, r as ApplicationTokens, s as WorkerRuntime, t as CodemationPluginListMerger, v as QueryBus, x as Command, y as Query } from "./CodemationPluginListMerger-DGc-jfa2.js";
17
- import { r as PrismaDatabaseClient, t as AppConfigFactory } from "./AppConfigFactory-YnveXE9k.js";
18
- import { t as CodemationPostgresPrismaClientFactory } from "./persistenceServer-vtJAGDat.js";
19
- import { c as CodemationServerGateway } from "./server-MUNGsBYK.js";
20
- import { i as CodemationFrontendAuthSnapshotFactory, n as InternalAuthBootstrapFactory, r as FrontendAppConfigFactory, t as PublicFrontendBootstrapFactory } from "./PublicFrontendBootstrapFactory-Cb2pLmDd.js";
1
+ import "./index-DilAYwnH.js";
2
+ import { $ as PersistedRunState, R as Items, tt as RunCurrentState } from "./ItemsInputNormalizer-_RwIfRIQ.js";
3
+ import { a as defineCodemationApp, i as FriendlyCodemationExecutionConfig, n as DefinePluginOptions, o as definePlugin, r as FriendlyCodemationDatabaseConfig, s as workflow, t as DefineCodemationAppOptions } from "./CodemationAuthoring.types-DA3G3s6d.js";
4
+ import { S as CodemationWorkflowDiscovery, _ as CodemationEngineExecutionLimitsConfig, a as AppPluginLoadSummary, b as CodemationSchedulerConfig, c as CodemationPluginContext, d as CodemationAppSchedulerConfig, f as CodemationAppSchedulerKind, g as CodemationDatabaseKind, h as CodemationDatabaseConfig, l as CodemationPluginPackageMetadata, m as CodemationConfig, n as CodemationRegistrationContextBase, o as CodemationPlugin, p as CodemationApplicationRuntimeConfig, r as AppConfig, s as CodemationPluginConfig, t as CodemationAppContext, u as CodemationAppDefinition, v as CodemationEventBusConfig, w as CodemationClassToken, x as CodemationSchedulerKind, y as CodemationEventBusKind } from "./CodemationAppContext-CKVv9W9q.js";
5
+ import { a as CodemationAuthConfig, c as CodemationAuthOidcProviderConfig, i as CodemationLogRule, n as CodemationLogConfig, o as CodemationAuthKind, r as CodemationLogLevelName, s as CodemationAuthOAuthProviderConfig, t as CodemationWhitelabelConfig } from "./CodemationWhitelabelConfig-Ca2mCUeC.js";
6
+ import "./LogLevelPolicyFactory-ewCHLDLn.js";
7
+ import { a as ApiPaths, i as CodemationFrontendAuthSnapshotJsonCodec, n as InternalAuthBootstrapJsonCodec, r as FrontendAppConfigJsonCodec, t as PublicFrontendBootstrapJsonCodec } from "./PublicFrontendBootstrapJsonCodec-CXG9Dxft.js";
8
+ import { a as CodemationFrontendAuthSnapshot, i as CodemationFrontendAuthProviderSnapshot, n as InternalAuthBootstrap, r as FrontendAppConfig, t as PublicFrontendBootstrap } from "./PublicFrontendBootstrap-Cev3qK46.js";
9
+ import "./CodemationConfigNormalizer-BAKjetJ6.js";
10
+ import { t as CodemationConsumerConfigLoader } from "./CodemationConsumerConfigLoader-nxOqvv46.js";
11
+ import "./CredentialServices-Be2I60Th.js";
12
+ import "./CredentialContractsRegistry-Bq2bq28t.js";
13
+ import "./TelemetryContracts-BtDx84Cp.js";
14
+ import "./WorkflowViewContracts-B7aFQcIw.js";
15
+ import { a as CollectionSummaryDto, f as UpsertLocalBootstrapUserResultDto, i as CollectionRowDto, o as ListCollectionRowsResponseDto, p as UserAccountDto, s as SyncCollectionsResponseDto, t as CollectionDetailDto } from "./CollectionContracts.types-DDyFYT_D.js";
16
+ import { S as Command, _ as AppContainerFactory, b as Query, c as WorkerRuntime, g as AppContainerLifecycle, h as DatabaseMigrations, l as FrontendRuntime, m as CollectionSchemaSyncerHolder, n as CodemationBootstrapRequest, r as ApplicationTokens, t as CodemationPluginListMerger, x as CommandBus, y as QueryBus } from "./CodemationPluginListMerger-DKLAHT2b.js";
17
+ import { r as PrismaDatabaseClient, t as AppConfigFactory } from "./AppConfigFactory-DnLoQ9Li.js";
18
+ import { i as CodemationFrontendAuthSnapshotFactory, n as InternalAuthBootstrapFactory, r as FrontendAppConfigFactory, t as PublicFrontendBootstrapFactory } from "./PublicFrontendBootstrapFactory-CY2FS-5g.js";
19
+ import "./InternalHonoApiRouteRegistrar-Ce1yxpnO.js";
20
+ import { n as CodemationPostgresPrismaClientFactory } from "./persistenceServer-CeTHtC6E.js";
21
+ import { c as CodemationServerGateway } from "./server-C4bS62rg.js";
21
22
 
22
23
  //#region src/application/queries/ListUserAccountsQuery.d.ts
23
24
  declare class ListUserAccountsQuery extends Query<ReadonlyArray<UserAccountDto>> {}
@@ -29,6 +30,52 @@ declare class UpsertLocalBootstrapUserCommand extends Command<UpsertLocalBootstr
29
30
  constructor(email: string, password: string);
30
31
  }
31
32
  //#endregion
33
+ //#region src/bootstrap/perf/BootTimer.d.ts
34
+ /**
35
+ * Lightweight boot-phase timer. Designed for diagnosing slow `pnpm dev` cold starts.
36
+ *
37
+ * Usage: every meaningful boot phase wraps its async work in
38
+ * `await BootTimer.measureAsync("phase.name", async () => { ... })`
39
+ * (or the sync `measure` for non-async work). When `--trace-boot` is set on the CLI
40
+ * the timer records each phase in a tree, prints a pretty tree to stderr at the end
41
+ * of boot, and writes the same tree to `tmp/boot-trace.json` for diffing later.
42
+ *
43
+ * When disabled (default), every method is a near-zero-cost passthrough — no allocation,
44
+ * no Date.now() calls, no tree construction. Safe to leave instrumentation in production
45
+ * code paths.
46
+ */
47
+ type BootTracePhase = Readonly<{
48
+ name: string;
49
+ ms: number;
50
+ pct: number;
51
+ children: ReadonlyArray<BootTracePhase>;
52
+ }>;
53
+ declare class BootTimer {
54
+ private static enabled;
55
+ private static root;
56
+ private static current;
57
+ /** Enable boot tracing for the lifetime of the current process. Idempotent. */
58
+ static enable(): void;
59
+ static isEnabled(): boolean;
60
+ /** Wrap an async phase. Pass-through when disabled. */
61
+ static measureAsync<T>(name: string, fn: () => Promise<T>): Promise<T>;
62
+ /** Wrap a sync phase. Pass-through when disabled. */
63
+ static measure<T>(name: string, fn: () => T): T;
64
+ /**
65
+ * Manual start/stop for fire-and-forget phases (e.g. a spawned child process you only
66
+ * stop once a readiness probe succeeds). Returns the stop function.
67
+ */
68
+ static start(name: string): () => void;
69
+ /** Print the tree to stderr and write JSON to the given path. Finalizes the root span. */
70
+ static finish(outputJsonPath?: string): Promise<void>;
71
+ /** Return a plain-object snapshot of the current tree (for tests / diffing). */
72
+ static snapshot(): BootTracePhase;
73
+ /** Test helper: reset all state. Do not call in production code. */
74
+ static reset(): void;
75
+ private static pushPhase;
76
+ private static popPhase;
77
+ }
78
+ //#endregion
32
79
  //#region src/application/collections/ListCollectionsQuery.d.ts
33
80
  declare class ListCollectionsQuery extends Query<ReadonlyArray<CollectionSummaryDto>> {}
34
81
  //#endregion
@@ -84,10 +131,52 @@ declare class SyncCollectionsCommand extends Command<SyncCollectionsResponseDto>
84
131
  constructor(dryRun: boolean);
85
132
  }
86
133
  //#endregion
134
+ //#region src/application/contracts/RunContracts.d.ts
135
+ type CreateRunRequest = Readonly<{
136
+ workflowId?: string;
137
+ items?: Items;
138
+ synthesizeTriggerItems?: boolean;
139
+ currentState?: RunCurrentState;
140
+ startAt?: string;
141
+ stopAt?: string;
142
+ clearFromNodeId?: string;
143
+ mode?: "manual" | "debug";
144
+ sourceRunId?: string;
145
+ }>;
146
+ type RunCommandResult = Readonly<{
147
+ runId: string;
148
+ workflowId: string;
149
+ startedAt?: string;
150
+ status: string;
151
+ state: PersistedRunState | null;
152
+ }>;
153
+ //#endregion
154
+ //#region src/application/commands/StartWorkflowRunCommand.d.ts
155
+ declare class StartWorkflowRunCommand extends Command<RunCommandResult> {
156
+ readonly body: CreateRunRequest;
157
+ constructor(body: CreateRunRequest);
158
+ }
159
+ //#endregion
160
+ //#region src/application/ApplicationRequestError.d.ts
161
+ declare class ApplicationRequestError extends Error {
162
+ readonly status: number;
163
+ readonly payload: Readonly<{
164
+ error: string;
165
+ errors?: ReadonlyArray<string>;
166
+ }>;
167
+ constructor(status: number, message: string, errors?: ReadonlyArray<string>);
168
+ }
169
+ //#endregion
170
+ //#region src/application/queries/GetRunStateQuery.d.ts
171
+ declare class GetRunStateQuery extends Query<PersistedRunState | undefined> {
172
+ readonly runId: string;
173
+ constructor(runId: string);
174
+ }
175
+ //#endregion
87
176
  //#region src/presentation/config/CodemationPackageManifest.d.ts
88
177
  interface CodemationPackageManifest {
89
178
  readonly plugin?: string;
90
179
  }
91
180
  //#endregion
92
- export { ApiPaths, type AppConfig, AppConfigFactory, AppContainerFactory, AppContainerLifecycle, type AppPluginLoadSummary, ApplicationTokens, type CodemationAppContext, type CodemationAppDefinition, type CodemationAppSchedulerConfig, type CodemationAppSchedulerKind, type CodemationApplicationRuntimeConfig, type CodemationAuthConfig, type CodemationAuthKind, type CodemationAuthOAuthProviderConfig, type CodemationAuthOidcProviderConfig, CodemationBootstrapRequest, type CodemationClassToken, type CodemationConfig, CodemationConsumerConfigLoader, type CodemationDatabaseConfig, type CodemationDatabaseKind, type CodemationEngineExecutionLimitsConfig, type CodemationEventBusConfig, type CodemationEventBusKind, type CodemationFrontendAuthProviderSnapshot, type CodemationFrontendAuthSnapshot, CodemationFrontendAuthSnapshotFactory, CodemationFrontendAuthSnapshotJsonCodec, type CodemationLogConfig, type CodemationLogLevelName, type CodemationLogRule, type CodemationPackageManifest, type CodemationPlugin, type CodemationPluginConfig, type CodemationPluginContext, CodemationPluginListMerger, CodemationPluginPackageMetadata, CodemationPostgresPrismaClientFactory, type CodemationRegistrationContextBase, type CodemationSchedulerConfig, type CodemationSchedulerKind, CodemationServerGateway, type CodemationWhitelabelConfig, type CodemationWorkflowDiscovery, CollectionSchemaSyncerHolder, type CommandBus, DatabaseMigrations, type DefineCodemationAppOptions, type DefinePluginOptions, DeleteCollectionRowCommand, type FriendlyCodemationDatabaseConfig, type FriendlyCodemationExecutionConfig, type FrontendAppConfig, FrontendAppConfigFactory, FrontendAppConfigJsonCodec, FrontendRuntime, GetCollectionQuery, GetCollectionRowQuery, InsertCollectionRowCommand, type InternalAuthBootstrap, InternalAuthBootstrapFactory, InternalAuthBootstrapJsonCodec, ListCollectionRowsQuery, ListCollectionsQuery, ListUserAccountsQuery, type PrismaDatabaseClient as PrismaClient, type PublicFrontendBootstrap, PublicFrontendBootstrapFactory, PublicFrontendBootstrapJsonCodec, type QueryBus, SyncCollectionsCommand, UpdateCollectionRowCommand, UpsertLocalBootstrapUserCommand, type UpsertLocalBootstrapUserResultDto, WorkerRuntime, defineCodemationApp, definePlugin, workflow };
181
+ export { ApiPaths, type AppConfig, AppConfigFactory, AppContainerFactory, AppContainerLifecycle, type AppPluginLoadSummary, ApplicationRequestError, ApplicationTokens, BootTimer, type BootTracePhase, type CodemationAppContext, type CodemationAppDefinition, type CodemationAppSchedulerConfig, type CodemationAppSchedulerKind, type CodemationApplicationRuntimeConfig, type CodemationAuthConfig, type CodemationAuthKind, type CodemationAuthOAuthProviderConfig, type CodemationAuthOidcProviderConfig, CodemationBootstrapRequest, type CodemationClassToken, type CodemationConfig, CodemationConsumerConfigLoader, type CodemationDatabaseConfig, type CodemationDatabaseKind, type CodemationEngineExecutionLimitsConfig, type CodemationEventBusConfig, type CodemationEventBusKind, type CodemationFrontendAuthProviderSnapshot, type CodemationFrontendAuthSnapshot, CodemationFrontendAuthSnapshotFactory, CodemationFrontendAuthSnapshotJsonCodec, type CodemationLogConfig, type CodemationLogLevelName, type CodemationLogRule, type CodemationPackageManifest, type CodemationPlugin, type CodemationPluginConfig, type CodemationPluginContext, CodemationPluginListMerger, CodemationPluginPackageMetadata, CodemationPostgresPrismaClientFactory, type CodemationRegistrationContextBase, type CodemationSchedulerConfig, type CodemationSchedulerKind, CodemationServerGateway, type CodemationWhitelabelConfig, type CodemationWorkflowDiscovery, CollectionSchemaSyncerHolder, type CommandBus, DatabaseMigrations, type DefineCodemationAppOptions, type DefinePluginOptions, DeleteCollectionRowCommand, type FriendlyCodemationDatabaseConfig, type FriendlyCodemationExecutionConfig, type FrontendAppConfig, FrontendAppConfigFactory, FrontendAppConfigJsonCodec, FrontendRuntime, GetCollectionQuery, GetCollectionRowQuery, GetRunStateQuery, InsertCollectionRowCommand, type InternalAuthBootstrap, InternalAuthBootstrapFactory, InternalAuthBootstrapJsonCodec, ListCollectionRowsQuery, ListCollectionsQuery, ListUserAccountsQuery, type PrismaDatabaseClient as PrismaClient, type PublicFrontendBootstrap, PublicFrontendBootstrapFactory, PublicFrontendBootstrapJsonCodec, type QueryBus, type RunCommandResult, StartWorkflowRunCommand, SyncCollectionsCommand, UpdateCollectionRowCommand, UpsertLocalBootstrapUserCommand, type UpsertLocalBootstrapUserResultDto, WorkerRuntime, defineCodemationApp, definePlugin, workflow };
93
182
  //# sourceMappingURL=index.d.ts.map