@codemation/host 0.0.15 → 0.0.18
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.
- package/CHANGELOG.md +11 -0
- package/LICENSE +37 -0
- package/dist/{AppConfigFactory-DmHOpg8O.d.ts → AppConfigFactory-Co4STjwt.d.ts} +5 -3
- package/dist/{AppConfigFactory-DWIz2hy-.js → AppConfigFactory-DxoZ4v8r.js} +40 -3
- package/dist/AppConfigFactory-DxoZ4v8r.js.map +1 -0
- package/dist/{AppContainerFactory-B5eRpvAa.js → AppContainerFactory-z9aUDFiJ.js} +275 -105
- package/dist/AppContainerFactory-z9aUDFiJ.js.map +1 -0
- package/dist/{CodemationConfig-D2ULNkec.d.ts → CodemationConfig-COs4GcOE.d.ts} +18 -10
- package/dist/{CodemationConfigNormalizer-CBLxXaRV.d.ts → CodemationConfigNormalizer-B7w1JA_2.d.ts} +2 -2
- package/dist/{CodemationConsumerConfigLoader-BBzAr6L_.js → CodemationConsumerConfigLoader-C_ISRrpI.js} +28 -7
- package/dist/CodemationConsumerConfigLoader-C_ISRrpI.js.map +1 -0
- package/dist/{CodemationConsumerConfigLoader-BLvzcfb7.d.ts → CodemationConsumerConfigLoader-OlXKw-us.d.ts} +6 -2
- package/dist/CodemationPluginListMerger-CGwOTdZ7.js +57 -0
- package/dist/CodemationPluginListMerger-CGwOTdZ7.js.map +1 -0
- package/dist/{CodemationPluginListMerger-B0-e4CJ6.d.ts → CodemationPluginListMerger-_ZIiOQxB.d.ts} +79 -117
- package/dist/{CredentialServices-BeuMtqYA.d.ts → CredentialServices-D3VTczpC.d.ts} +3 -3
- package/dist/PublicFrontendBootstrap-p7mS8aWG.d.ts +50 -0
- package/dist/{FrontendAppConfigFactory-Bj-DZNlt.d.ts → PublicFrontendBootstrapFactory-CE4oGogq.d.ts} +19 -4
- package/dist/{FrontendAppConfigJsonCodec-nOCQI0ag.js → PublicFrontendBootstrapJsonCodec-BdiVGG5R.js} +76 -2
- package/dist/PublicFrontendBootstrapJsonCodec-BdiVGG5R.js.map +1 -0
- package/dist/PublicFrontendBootstrapJsonCodec-DjkkKXcq.d.ts +35 -0
- package/dist/client.d.ts +3 -3
- package/dist/client.js +2 -2
- package/dist/consumer.d.ts +4 -4
- package/dist/consumer.js +1 -1
- package/dist/credentials.d.ts +3 -3
- package/dist/devServerSidecar.d.ts +1 -1
- package/dist/{index-CkiptHb-.d.ts → index-DbYzycTC.d.ts} +215 -71
- package/dist/index.d.ts +150 -13
- package/dist/index.js +94 -8
- package/dist/index.js.map +1 -0
- package/dist/nextServer.d.ts +30 -9
- package/dist/nextServer.js +4 -4
- package/dist/{persistenceServer-DVeWUbc3.js → persistenceServer-C4L1uMKn.js} +2 -2
- package/dist/{persistenceServer-DVeWUbc3.js.map → persistenceServer-C4L1uMKn.js.map} +1 -1
- package/dist/{persistenceServer-CaehMh3M.d.ts → persistenceServer-Cr-zCuEr.d.ts} +2 -2
- package/dist/persistenceServer.d.ts +5 -5
- package/dist/persistenceServer.js +2 -2
- package/dist/{server-Dyo8qh4k.d.ts → server-B6k53aZj.d.ts} +14 -19
- package/dist/{server-C65z_kqm.js → server-DDVXr7BN.js} +42 -25
- package/dist/server-DDVXr7BN.js.map +1 -0
- package/dist/server.d.ts +11 -11
- package/dist/server.js +7 -7
- package/package.json +9 -6
- package/playwright.scaffolded-dev.config.ts +46 -0
- package/src/application/dev/BootRuntimeSummary.types.ts +2 -0
- package/src/application/dev/DevBootstrapSummaryAssembler.ts +1 -0
- package/src/application/dev/DevBootstrapSummaryJson.types.ts +6 -0
- package/src/bootstrap/AppContainerFactory.ts +101 -6
- package/src/bootstrap/runtime/AppConfigFactory.ts +22 -2
- package/src/client.ts +4 -0
- package/src/index.ts +21 -5
- package/src/infrastructure/config/CodemationPluginRegistrar.ts +6 -0
- package/src/infrastructure/di/HandlesCommandRegistry.ts +1 -10
- package/src/infrastructure/di/HandlesQueryRegistry.ts +1 -10
- package/src/nextServer.ts +4 -0
- package/src/presentation/config/AppConfig.ts +6 -0
- package/src/presentation/config/CodemationAuthoring.types.ts +169 -0
- package/src/presentation/config/CodemationPackageManifest.ts +1 -7
- package/src/presentation/config/CodemationPlugin.ts +45 -8
- package/src/presentation/config/CodemationPluginListMerger.ts +30 -26
- package/src/presentation/frontend/CodemationFrontendAuthSnapshotFactory.ts +7 -0
- package/src/presentation/frontend/InternalAuthBootstrap.ts +12 -0
- package/src/presentation/frontend/InternalAuthBootstrapFactory.ts +26 -0
- package/src/presentation/frontend/InternalAuthBootstrapJsonCodec.ts +49 -0
- package/src/presentation/frontend/PublicFrontendBootstrap.ts +12 -0
- package/src/presentation/frontend/PublicFrontendBootstrapFactory.ts +23 -0
- package/src/presentation/frontend/PublicFrontendBootstrapJsonCodec.ts +48 -0
- package/src/presentation/http/ApiPaths.ts +10 -0
- package/src/presentation/http/hono/HonoHttpAnonymousRoutePolicyRegistry.ts +3 -0
- package/src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts +32 -0
- package/src/presentation/http/routeHandlers/InternalAuthBootstrapHttpRouteHandler.ts +18 -0
- package/src/presentation/http/routeHandlers/PublicFrontendBootstrapHttpRouteHandler.ts +18 -0
- package/src/presentation/server/CodemationConsumerConfigLoader.ts +28 -6
- package/src/presentation/server/CodemationPluginDiscovery.ts +59 -28
- package/src/server.ts +6 -0
- package/dist/AppConfigFactory-DWIz2hy-.js.map +0 -1
- package/dist/AppContainerFactory-B5eRpvAa.js.map +0 -1
- package/dist/CodemationConsumerConfigLoader-BBzAr6L_.js.map +0 -1
- package/dist/CodemationPluginListMerger-DrVOw9KP.js +0 -57
- package/dist/CodemationPluginListMerger-DrVOw9KP.js.map +0 -1
- package/dist/FrontendAppConfig-D50wjj_n.d.ts +0 -27
- package/dist/FrontendAppConfigJsonCodec-1_L7H_Qo.d.ts +0 -20
- package/dist/FrontendAppConfigJsonCodec-nOCQI0ag.js.map +0 -1
- package/dist/server-C65z_kqm.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as CodemationWhitelabelConfig, o as CodemationLogConfig, t as CodemationAuthConfig, u as LoggerFactory } from "./CodemationAuthConfig-Bh2cCNCI.js";
|
|
2
|
-
import {
|
|
2
|
+
import { B as TypeToken, N as WorkflowDefinition, V as EngineExecutionLimitsPolicyConfig, s as AnyCredentialType, z as Container } from "./index-DbYzycTC.js";
|
|
3
3
|
|
|
4
4
|
//#region src/presentation/config/CodemationClassToken.d.ts
|
|
5
5
|
type CodemationClassToken<TValue> = TypeToken<TValue> & (new (...args: never[]) => TValue);
|
|
@@ -25,14 +25,17 @@ interface CodemationPluginContext extends CodemationRegistrationContextBase {
|
|
|
25
25
|
readonly appConfig: AppConfig;
|
|
26
26
|
readonly loggerFactory: LoggerFactory;
|
|
27
27
|
}
|
|
28
|
-
interface
|
|
29
|
-
/**
|
|
30
|
-
* Optional npm package name for this plugin (e.g. `"@codemation/core-nodes-gmail"`).
|
|
31
|
-
* When set, the host merges configured and discovered plugin lists by this id so the same package is not
|
|
32
|
-
* registered twice when separate module graphs load duplicate class instances (different `constructor` values).
|
|
33
|
-
*/
|
|
28
|
+
interface CodemationPluginConfig {
|
|
34
29
|
readonly pluginPackageId?: string;
|
|
35
|
-
|
|
30
|
+
readonly credentialTypes?: ReadonlyArray<AnyCredentialType>;
|
|
31
|
+
readonly register?: (context: CodemationPluginContext) => void | Promise<void>;
|
|
32
|
+
readonly sandbox?: CodemationConfig;
|
|
33
|
+
}
|
|
34
|
+
type CodemationPlugin = CodemationPluginConfig;
|
|
35
|
+
declare class CodemationPluginPackageMetadata {
|
|
36
|
+
private static readonly packageNameSymbol;
|
|
37
|
+
attachPackageName(plugin: CodemationPlugin, packageName: string): CodemationPlugin;
|
|
38
|
+
readPackageName(plugin: CodemationPlugin): string | undefined;
|
|
36
39
|
}
|
|
37
40
|
//#endregion
|
|
38
41
|
//#region src/presentation/config/AppConfig.d.ts
|
|
@@ -45,6 +48,10 @@ type AppPersistenceConfig = Readonly<{
|
|
|
45
48
|
kind: "pglite";
|
|
46
49
|
dataDir: string;
|
|
47
50
|
}>;
|
|
51
|
+
type AppPluginLoadSummary = Readonly<{
|
|
52
|
+
packageName: string;
|
|
53
|
+
source: "configured" | "discovered";
|
|
54
|
+
}>;
|
|
48
55
|
interface AppConfig {
|
|
49
56
|
readonly consumerRoot: string;
|
|
50
57
|
readonly repoRoot: string;
|
|
@@ -54,6 +61,7 @@ interface AppConfig {
|
|
|
54
61
|
readonly containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;
|
|
55
62
|
readonly credentialTypes: ReadonlyArray<AnyCredentialType>;
|
|
56
63
|
readonly plugins: ReadonlyArray<CodemationPlugin>;
|
|
64
|
+
readonly pluginLoadSummary?: ReadonlyArray<AppPluginLoadSummary>;
|
|
57
65
|
readonly hasConfiguredCredentialSessionServiceRegistration: boolean;
|
|
58
66
|
readonly log?: CodemationLogConfig;
|
|
59
67
|
readonly engineExecutionLimits?: CodemationEngineExecutionLimitsConfig;
|
|
@@ -168,5 +176,5 @@ interface CodemationConfig {
|
|
|
168
176
|
readonly log?: CodemationLogConfig;
|
|
169
177
|
}
|
|
170
178
|
//#endregion
|
|
171
|
-
export { AppPersistenceConfig as _, CodemationConfig as a,
|
|
172
|
-
//# sourceMappingURL=CodemationConfig-
|
|
179
|
+
export { CodemationContainerRegistration as C, CodemationPluginPackageMetadata as S, AppPersistenceConfig as _, CodemationConfig as a, CodemationPluginConfig as b, CodemationEngineExecutionLimitsConfig as c, CodemationSchedulerConfig as d, CodemationSchedulerKind as f, AppConfig as g, CodemationRegistrationContextBase as h, CodemationApplicationRuntimeConfig as i, CodemationEventBusConfig as l, CodemationAppContext as m, CodemationAppSchedulerConfig as n, CodemationDatabaseConfig as o, CodemationWorkflowDiscovery as p, CodemationAppSchedulerKind as r, CodemationDatabaseKind as s, CodemationAppDefinition as t, CodemationEventBusKind as u, AppPluginLoadSummary as v, CodemationClassToken as w, CodemationPluginContext as x, CodemationPlugin as y };
|
|
180
|
+
//# sourceMappingURL=CodemationConfig-COs4GcOE.d.ts.map
|
package/dist/{CodemationConfigNormalizer-CBLxXaRV.d.ts → CodemationConfigNormalizer-B7w1JA_2.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { C as CodemationContainerRegistration, a as CodemationConfig } from "./CodemationConfig-COs4GcOE.js";
|
|
2
2
|
|
|
3
3
|
//#region src/presentation/config/CodemationConfigNormalizer.d.ts
|
|
4
4
|
type NormalizedCodemationConfig = CodemationConfig & Readonly<{
|
|
@@ -6,4 +6,4 @@ type NormalizedCodemationConfig = CodemationConfig & Readonly<{
|
|
|
6
6
|
}>;
|
|
7
7
|
//#endregion
|
|
8
8
|
export { NormalizedCodemationConfig as t };
|
|
9
|
-
//# sourceMappingURL=CodemationConfigNormalizer-
|
|
9
|
+
//# sourceMappingURL=CodemationConfigNormalizer-B7w1JA_2.d.ts.map
|
|
@@ -2,7 +2,6 @@ import { s as logLevelPolicyFactory, t as ServerLoggerFactory } from "./ServerLo
|
|
|
2
2
|
import { access, readdir, stat } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { pathToFileURL } from "node:url";
|
|
5
|
-
import { register } from "tsx/esm/api";
|
|
6
5
|
|
|
7
6
|
//#region src/presentation/config/CodemationConfigNormalizer.ts
|
|
8
7
|
var CodemationConfigNormalizer = class {
|
|
@@ -289,6 +288,7 @@ var WorkflowDiscoveryPathSegmentsComputer = class {
|
|
|
289
288
|
//#region src/presentation/server/CodemationConsumerConfigLoader.ts
|
|
290
289
|
var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
291
290
|
static importerRegistrationsByTsconfig = /* @__PURE__ */ new Map();
|
|
291
|
+
static importerNamespaceVersionByTsconfig = /* @__PURE__ */ new Map();
|
|
292
292
|
configExportsResolver = new CodemationConsumerConfigExportsResolver();
|
|
293
293
|
configNormalizer = new CodemationConfigNormalizer();
|
|
294
294
|
workflowModulePathFinder = new WorkflowModulePathFinder();
|
|
@@ -384,9 +384,10 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
384
384
|
async importModule(modulePath) {
|
|
385
385
|
if (this.shouldUseNativeRuntimeImport()) return await this.importModuleWithNativeRuntime(modulePath);
|
|
386
386
|
const tsconfigPath = await this.resolveTsconfigPath(modulePath);
|
|
387
|
+
if (this.shouldResetImporterBeforeImport()) await this.resetImporter(tsconfigPath);
|
|
387
388
|
const importSpecifier = await this.createImportSpecifier(modulePath);
|
|
388
389
|
for (let attempt = 0; attempt < 3; attempt += 1) try {
|
|
389
|
-
return await this.getOrCreateImporter(tsconfigPath).import(importSpecifier, import.meta.url);
|
|
390
|
+
return await (await this.getOrCreateImporter(tsconfigPath)).import(importSpecifier, import.meta.url);
|
|
390
391
|
} catch (error) {
|
|
391
392
|
if (!this.isStoppedTransformServiceError(error) || attempt === 2) throw error;
|
|
392
393
|
await this.resetImporter(tsconfigPath);
|
|
@@ -401,12 +402,17 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
401
402
|
if (overridePath && await this.exists(overridePath)) return overridePath;
|
|
402
403
|
return await this.findNearestTsconfig(modulePath) ?? false;
|
|
403
404
|
}
|
|
404
|
-
getOrCreateImporter(tsconfigPath) {
|
|
405
|
+
async getOrCreateImporter(tsconfigPath) {
|
|
405
406
|
const cacheKey = tsconfigPath || "default";
|
|
406
407
|
const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);
|
|
407
408
|
if (existingImporter) return existingImporter;
|
|
409
|
+
const { register } = await import(
|
|
410
|
+
/* webpackIgnore: true */
|
|
411
|
+
this.resolveTsxImporterModuleSpecifier()
|
|
412
|
+
);
|
|
413
|
+
const namespaceVersion = this.nextNamespaceVersion(cacheKey);
|
|
408
414
|
const nextImporter = register({
|
|
409
|
-
namespace: this.toNamespace(cacheKey),
|
|
415
|
+
namespace: this.toNamespace(cacheKey, namespaceVersion),
|
|
410
416
|
tsconfig: tsconfigPath
|
|
411
417
|
});
|
|
412
418
|
CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.set(cacheKey, nextImporter);
|
|
@@ -419,8 +425,20 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
419
425
|
CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.delete(cacheKey);
|
|
420
426
|
await existingImporter.unregister().catch(() => null);
|
|
421
427
|
}
|
|
422
|
-
|
|
423
|
-
|
|
428
|
+
nextNamespaceVersion(cacheKey) {
|
|
429
|
+
const nextVersion = (CodemationConsumerConfigLoader.importerNamespaceVersionByTsconfig.get(cacheKey) ?? 0) + 1;
|
|
430
|
+
CodemationConsumerConfigLoader.importerNamespaceVersionByTsconfig.set(cacheKey, nextVersion);
|
|
431
|
+
return nextVersion;
|
|
432
|
+
}
|
|
433
|
+
toNamespace(cacheKey, namespaceVersion) {
|
|
434
|
+
return `codemation_consumer_${cacheKey.replace(/[^a-zA-Z0-9_-]+/g, "_")}_${namespaceVersion}`;
|
|
435
|
+
}
|
|
436
|
+
resolveTsxImporterModuleSpecifier() {
|
|
437
|
+
return [
|
|
438
|
+
"tsx",
|
|
439
|
+
"esm",
|
|
440
|
+
"api"
|
|
441
|
+
].join("/");
|
|
424
442
|
}
|
|
425
443
|
async findNearestTsconfig(modulePath) {
|
|
426
444
|
let currentDirectory = path.dirname(modulePath);
|
|
@@ -441,6 +459,9 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
441
459
|
shouldUseNativeRuntimeImport() {
|
|
442
460
|
return process.env.CODEMATION_TS_RUNTIME === "ts-node";
|
|
443
461
|
}
|
|
462
|
+
shouldResetImporterBeforeImport() {
|
|
463
|
+
return (process.env.CODEMATION_DEV_SERVER_TOKEN?.trim().length ?? 0) > 0;
|
|
464
|
+
}
|
|
444
465
|
isStoppedTransformServiceError(error) {
|
|
445
466
|
return error instanceof Error && error.message.includes("The service is no longer running");
|
|
446
467
|
}
|
|
@@ -456,4 +477,4 @@ var CodemationConsumerConfigLoader = class CodemationConsumerConfigLoader {
|
|
|
456
477
|
|
|
457
478
|
//#endregion
|
|
458
479
|
export { CodemationConfigNormalizer as a, CodemationConsumerAppResolver as i, WorkflowDiscoveryPathSegmentsComputer as n, WorkflowModulePathFinder as r, CodemationConsumerConfigLoader as t };
|
|
459
|
-
//# sourceMappingURL=CodemationConsumerConfigLoader-
|
|
480
|
+
//# sourceMappingURL=CodemationConsumerConfigLoader-C_ISRrpI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodemationConsumerConfigLoader-C_ISRrpI.js","names":["containerRegistrations: Array<CodemationContainerRegistration<unknown>>","credentialTypes: Array<AnyCredentialType>","workflows: Array<WorkflowDefinition>","workflowDirectories: Array<string>","workflows: WorkflowDefinition[]","workflowModulePaths: string[]","bestRoot: string | null","resolvedConfig: NormalizedCodemationConfig"],"sources":["../src/presentation/config/CodemationConfigNormalizer.ts","../src/presentation/server/CodemationConsumerConfigExportsResolver.ts","../src/presentation/server/DiscoveredWorkflowsEmptyMessageFactory.ts","../src/presentation/server/WorkflowDefinitionExportsResolver.ts","../src/presentation/server/CodemationConsumerAppResolver.ts","../src/presentation/server/WorkflowModulePathFinder.ts","../src/presentation/server/WorkflowDiscoveryPathSegmentsComputer.ts","../src/presentation/server/CodemationConsumerConfigLoader.ts"],"sourcesContent":["import type { AnyCredentialType, Container, TypeToken, WorkflowDefinition } from \"@codemation/core\";\nimport type { CodemationContainerRegistration } from \"../../bootstrap/CodemationContainerRegistration\";\nimport type { CodemationAppContext } from \"./CodemationAppContext\";\nimport type { CodemationClassToken } from \"./CodemationClassToken\";\nimport type {\n CodemationApplicationRuntimeConfig,\n CodemationConfig,\n CodemationDatabaseConfig,\n CodemationEventBusConfig,\n CodemationSchedulerConfig,\n} from \"./CodemationConfig\";\n\nexport type NormalizedCodemationConfig = CodemationConfig &\n Readonly<{\n containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;\n }>;\n\nexport class CodemationConfigNormalizer {\n normalize(config: CodemationConfig): NormalizedCodemationConfig {\n const collected = this.collectRegistration(config);\n const normalizedRuntime = this.normalizeRuntimeConfig(config);\n const normalizedWorkflowDiscoveryDirectories = [\n ...(config.workflowDiscovery?.directories ?? []),\n ...collected.workflowDirectories,\n ];\n\n return {\n ...config,\n auth: config.app?.auth ?? config.auth,\n containerRegistrations: collected.containerRegistrations,\n credentialTypes: [...(config.credentialTypes ?? []), ...collected.credentialTypes],\n log: config.app?.log ?? config.log,\n runtime: normalizedRuntime,\n whitelabel: config.app?.whitelabel ?? config.whitelabel,\n workflowDiscovery:\n normalizedWorkflowDiscoveryDirectories.length > 0\n ? { directories: normalizedWorkflowDiscoveryDirectories }\n : config.workflowDiscovery,\n workflows: this.mergeWorkflows(config.workflows ?? [], collected.workflows),\n };\n }\n\n private collectRegistration(config: CodemationConfig): Readonly<{\n containerRegistrations: ReadonlyArray<CodemationContainerRegistration<unknown>>;\n credentialTypes: ReadonlyArray<AnyCredentialType>;\n workflows: ReadonlyArray<WorkflowDefinition>;\n workflowDirectories: ReadonlyArray<string>;\n }> {\n if (!config.register) {\n return {\n containerRegistrations: [],\n credentialTypes: [],\n workflows: [],\n workflowDirectories: [],\n };\n }\n\n const containerRegistrations: Array<CodemationContainerRegistration<unknown>> = [];\n const credentialTypes: Array<AnyCredentialType> = [];\n const workflows: Array<WorkflowDefinition> = [];\n const workflowDirectories: Array<string> = [];\n\n const context: CodemationAppContext = {\n registerCredentialType(type) {\n credentialTypes.push(type);\n },\n registerNode<TValue>(token: TypeToken<TValue>, implementation?: CodemationClassToken<TValue>) {\n containerRegistrations.push({\n token,\n useClass: implementation ?? (token as CodemationClassToken<TValue>),\n });\n },\n registerValue<TValue>(token: TypeToken<TValue>, value: TValue) {\n containerRegistrations.push({ token, useValue: value });\n },\n registerClass<TValue>(token: TypeToken<TValue>, implementation: CodemationClassToken<TValue>) {\n containerRegistrations.push({ token, useClass: implementation });\n },\n registerFactory<TValue>(token: TypeToken<TValue>, factory: (container: Container) => TValue) {\n containerRegistrations.push({ token, useFactory: factory });\n },\n registerWorkflow(workflow: WorkflowDefinition) {\n workflows.push(workflow);\n },\n registerWorkflows(nextWorkflows: ReadonlyArray<WorkflowDefinition>) {\n workflows.push(...nextWorkflows);\n },\n discoverWorkflows(...directories: ReadonlyArray<string>) {\n workflowDirectories.push(...directories);\n },\n };\n\n config.register(context);\n\n return {\n containerRegistrations,\n credentialTypes,\n workflows,\n workflowDirectories,\n };\n }\n\n private normalizeRuntimeConfig(config: CodemationConfig): CodemationApplicationRuntimeConfig | undefined {\n if (!config.app) {\n return config.runtime;\n }\n const nextRuntime: CodemationApplicationRuntimeConfig = {\n ...(config.runtime ?? {}),\n frontendPort: config.app.frontendPort ?? config.runtime?.frontendPort,\n database: this.normalizeDatabaseConfig(config),\n eventBus: this.normalizeEventBusConfig(config),\n scheduler: this.normalizeSchedulerConfig(config),\n engineExecutionLimits: config.app.engineExecutionLimits ?? config.runtime?.engineExecutionLimits,\n };\n return nextRuntime;\n }\n\n private normalizeDatabaseConfig(config: CodemationConfig): CodemationDatabaseConfig | undefined {\n if (!config.app) {\n return config.runtime?.database;\n }\n if (config.app.database) {\n return config.app.database;\n }\n if (!config.app.databaseUrl) {\n return config.runtime?.database;\n }\n return {\n ...(config.runtime?.database ?? {}),\n url: config.app.databaseUrl,\n };\n }\n\n private normalizeSchedulerConfig(config: CodemationConfig): CodemationSchedulerConfig | undefined {\n if (!config.app?.scheduler) {\n return config.runtime?.scheduler;\n }\n const scheduler = config.app.scheduler;\n return {\n ...(config.runtime?.scheduler ?? {}),\n kind:\n scheduler.kind === \"queue\" ? \"bullmq\" : scheduler.kind === \"inline\" ? \"local\" : config.runtime?.scheduler?.kind,\n queuePrefix: scheduler.queuePrefix ?? config.runtime?.scheduler?.queuePrefix,\n workerQueues: scheduler.workerQueues ?? config.runtime?.scheduler?.workerQueues,\n };\n }\n\n private normalizeEventBusConfig(config: CodemationConfig): CodemationEventBusConfig | undefined {\n if (!config.app?.scheduler) {\n return config.runtime?.eventBus;\n }\n const scheduler = config.app.scheduler;\n const eventBusKind =\n scheduler.kind === \"queue\" ? \"redis\" : scheduler.kind === \"inline\" ? \"memory\" : config.runtime?.eventBus?.kind;\n return {\n ...(config.runtime?.eventBus ?? {}),\n kind: eventBusKind,\n queuePrefix: scheduler.queuePrefix ?? config.runtime?.eventBus?.queuePrefix,\n redisUrl: scheduler.redisUrl ?? config.runtime?.eventBus?.redisUrl,\n };\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n registeredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> | undefined {\n if (configuredWorkflows.length === 0 && registeredWorkflows.length === 0) {\n return undefined;\n }\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of registeredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n}\n","import type { CodemationConfig } from \"../config/CodemationConfig\";\n\nexport class CodemationConsumerConfigExportsResolver {\n resolveConfig(moduleExports: Readonly<Record<string, unknown>>): CodemationConfig | null {\n const defaultExport = moduleExports.default;\n if (this.isConfig(defaultExport)) {\n return defaultExport;\n }\n const namedConfig = moduleExports.codemationHost ?? moduleExports.config;\n if (this.isConfig(namedConfig)) {\n return namedConfig;\n }\n return null;\n }\n\n private isConfig(value: unknown): value is CodemationConfig {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return (\n \"app\" in value ||\n \"register\" in value ||\n \"credentials\" in value ||\n \"runtime\" in value ||\n \"workflows\" in value ||\n \"workflowDiscovery\" in value ||\n \"plugins\" in value ||\n \"whitelabel\" in value ||\n \"auth\" in value ||\n \"log\" in value\n );\n }\n}\n","export class DiscoveredWorkflowsEmptyMessageFactory {\n create(discoveredPaths: ReadonlyArray<string>): string {\n const lines = discoveredPaths.map((p) => ` - ${p}`).join(\"\\n\");\n return [\n `Discovered ${discoveredPaths.length} file(s) under workflow discovery, but none export a WorkflowDefinition.`,\n lines,\n \"\",\n \"Move shared helpers outside the discovery directories (for example src/lib), or export at least one object with id, name, nodes, and edges from a workflow module.\",\n ].join(\"\\n\");\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\n\n/**\n * Collects exported values that match the {@link WorkflowDefinition} shape.\n * Other exports (helpers, constants, type-only re-exports) are ignored.\n */\nexport class WorkflowDefinitionExportsResolver {\n resolve(moduleExports: Readonly<Record<string, unknown>>): ReadonlyArray<WorkflowDefinition> {\n const workflows: WorkflowDefinition[] = [];\n for (const exportedValue of Object.values(moduleExports)) {\n if (this.isWorkflowDefinition(exportedValue)) {\n workflows.push(exportedValue);\n }\n }\n return workflows;\n }\n\n private isWorkflowDefinition(value: unknown): value is WorkflowDefinition {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n return \"id\" in value && \"name\" in value && \"nodes\" in value && \"edges\" in value;\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\nimport { CodemationConfigNormalizer } from \"../config/CodemationConfigNormalizer\";\nimport type { NormalizedCodemationConfig } from \"../config/CodemationConfigNormalizer\";\nimport { CodemationConsumerConfigExportsResolver } from \"./CodemationConsumerConfigExportsResolver\";\nimport { DiscoveredWorkflowsEmptyMessageFactory } from \"./DiscoveredWorkflowsEmptyMessageFactory\";\nimport { WorkflowDefinitionExportsResolver } from \"./WorkflowDefinitionExportsResolver\";\n\nexport type CodemationConsumerApp = Readonly<{\n config: NormalizedCodemationConfig;\n workflowSources: ReadonlyArray<string>;\n}>;\n\nexport class CodemationConsumerAppResolver {\n private readonly configExportsResolver = new CodemationConsumerConfigExportsResolver();\n private readonly configNormalizer = new CodemationConfigNormalizer();\n private readonly workflowDefinitionExportsResolver = new WorkflowDefinitionExportsResolver();\n private readonly discoveredWorkflowsEmptyMessageFactory = new DiscoveredWorkflowsEmptyMessageFactory();\n\n resolve(\n args: Readonly<{\n configModule: Readonly<Record<string, unknown>>;\n workflowModules: ReadonlyArray<Readonly<Record<string, unknown>>>;\n workflowSourcePaths: ReadonlyArray<string>;\n workflowDiscoveryPathSegmentsList?: ReadonlyArray<readonly string[]>;\n }>,\n ): CodemationConsumerApp {\n const rawConfig = this.configExportsResolver.resolveConfig(args.configModule);\n if (!rawConfig) {\n throw new Error(\"Consumer app module does not export a Codemation config object.\");\n }\n const config = this.configNormalizer.normalize(rawConfig);\n const discoveredWorkflows = this.resolveDiscoveredWorkflows(\n args.workflowModules,\n args.workflowSourcePaths,\n args.workflowDiscoveryPathSegmentsList,\n );\n return {\n config: {\n ...config,\n workflows: this.mergeWorkflows(config.workflows ?? [], discoveredWorkflows),\n },\n workflowSources: args.workflowSourcePaths,\n };\n }\n\n private resolveDiscoveredWorkflows(\n workflowModules: ReadonlyArray<Readonly<Record<string, unknown>>>,\n workflowSourcePaths: ReadonlyArray<string>,\n workflowDiscoveryPathSegmentsList: ReadonlyArray<readonly string[]> | undefined,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n workflowModules.forEach((workflowModule: Readonly<Record<string, unknown>>, index: number) => {\n const pathSegments = workflowDiscoveryPathSegmentsList?.[index];\n const workflows = this.workflowDefinitionExportsResolver.resolve(workflowModule);\n workflows.forEach((workflow: WorkflowDefinition) => {\n const enriched =\n pathSegments && pathSegments.length > 0\n ? ({ ...workflow, discoveryPathSegments: pathSegments } satisfies WorkflowDefinition)\n : workflow;\n workflowsById.set(workflow.id, enriched);\n });\n });\n if (workflowsById.size === 0 && workflowSourcePaths.length > 0) {\n throw new Error(this.discoveredWorkflowsEmptyMessageFactory.create(workflowSourcePaths));\n }\n return [...workflowsById.values()];\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n discoveredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of discoveredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n}\n","import { readdir } from \"node:fs/promises\";\nimport path from \"node:path\";\n\nexport class WorkflowModulePathFinder {\n static readonly defaultWorkflowDirectories = [\"src/workflows\", \"workflows\"] as const;\n private readonly workflowExtensions = new Set([\".ts\", \".js\", \".mts\", \".mjs\"]);\n\n async discoverModulePaths(\n args: Readonly<{\n consumerRoot: string;\n workflowDirectories: ReadonlyArray<string> | undefined;\n exists: (absolutePath: string) => Promise<boolean>;\n }>,\n ): Promise<ReadonlyArray<string>> {\n const directories = args.workflowDirectories ?? WorkflowModulePathFinder.defaultWorkflowDirectories;\n const workflowModulePaths: string[] = [];\n for (const directory of directories) {\n const absoluteDirectory = path.resolve(args.consumerRoot, directory);\n if (!(await args.exists(absoluteDirectory))) {\n continue;\n }\n workflowModulePaths.push(...(await this.collectWorkflowModulePaths(absoluteDirectory)));\n }\n return workflowModulePaths;\n }\n\n private async collectWorkflowModulePaths(directoryPath: string): Promise<ReadonlyArray<string>> {\n const entries = await readdir(directoryPath, { withFileTypes: true });\n const workflowModulePaths: string[] = [];\n for (const entry of entries) {\n const entryPath = path.resolve(directoryPath, entry.name);\n if (entry.isDirectory()) {\n workflowModulePaths.push(...(await this.collectWorkflowModulePaths(entryPath)));\n continue;\n }\n if (this.isWorkflowModulePath(entryPath)) {\n workflowModulePaths.push(entryPath);\n }\n }\n return workflowModulePaths;\n }\n\n private isWorkflowModulePath(modulePath: string): boolean {\n const extension = path.extname(modulePath);\n return this.workflowExtensions.has(extension) && !modulePath.endsWith(\".d.ts\");\n }\n}\n","import path from \"node:path\";\n\nimport { WorkflowModulePathFinder } from \"./WorkflowModulePathFinder\";\n\nexport class WorkflowDiscoveryPathSegmentsComputer {\n compute(\n args: Readonly<{\n consumerRoot: string;\n workflowDiscoveryDirectories: ReadonlyArray<string>;\n absoluteWorkflowModulePath: string;\n }>,\n ): readonly string[] | undefined {\n const normalizedConsumer = path.resolve(args.consumerRoot);\n const normalizedWorkflowPath = path.resolve(args.absoluteWorkflowModulePath);\n const directories =\n args.workflowDiscoveryDirectories.length > 0\n ? args.workflowDiscoveryDirectories\n : [...WorkflowModulePathFinder.defaultWorkflowDirectories];\n\n let bestRoot: string | null = null;\n for (const directory of directories) {\n const absoluteDirectory = path.resolve(normalizedConsumer, directory);\n const isPrefix =\n normalizedWorkflowPath === absoluteDirectory ||\n normalizedWorkflowPath.startsWith(`${absoluteDirectory}${path.sep}`);\n if (!isPrefix) {\n continue;\n }\n if (!bestRoot || absoluteDirectory.length > bestRoot.length) {\n bestRoot = absoluteDirectory;\n }\n }\n if (!bestRoot) {\n return undefined;\n }\n const relative = path.relative(bestRoot, normalizedWorkflowPath);\n if (relative.startsWith(\"..\") || path.isAbsolute(relative)) {\n return undefined;\n }\n if (relative.length === 0) {\n return undefined;\n }\n const parts = relative.split(path.sep).filter((segment) => segment.length > 0);\n if (parts.length === 0) {\n return undefined;\n }\n const lastIndex = parts.length - 1;\n const last = parts[lastIndex] ?? \"\";\n const ext = path.extname(last);\n parts[lastIndex] = ext ? last.slice(0, -ext.length) : last;\n return parts;\n }\n}\n","import type { WorkflowDefinition } from \"@codemation/core\";\nimport { access, stat } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport type { NamespacedUnregister } from \"tsx/esm/api\";\nimport type { CodemationConfig } from \"../config/CodemationConfig\";\nimport { CodemationConfigNormalizer } from \"../config/CodemationConfigNormalizer\";\nimport type { NormalizedCodemationConfig } from \"../config/CodemationConfigNormalizer\";\nimport { logLevelPolicyFactory } from \"../../infrastructure/logging/LogLevelPolicyFactory\";\nimport { ServerLoggerFactory } from \"../../infrastructure/logging/ServerLoggerFactory\";\nimport { DiscoveredWorkflowsEmptyMessageFactory } from \"./DiscoveredWorkflowsEmptyMessageFactory\";\nimport { CodemationConsumerConfigExportsResolver } from \"./CodemationConsumerConfigExportsResolver\";\nimport { WorkflowDefinitionExportsResolver } from \"./WorkflowDefinitionExportsResolver\";\nimport { WorkflowDiscoveryPathSegmentsComputer } from \"./WorkflowDiscoveryPathSegmentsComputer\";\nimport { WorkflowModulePathFinder } from \"./WorkflowModulePathFinder\";\n\nexport type CodemationConsumerConfigResolution = Readonly<{\n config: NormalizedCodemationConfig;\n bootstrapSource: string | null;\n workflowSources: ReadonlyArray<string>;\n}>;\n\nexport class CodemationConsumerConfigLoader {\n private static readonly importerRegistrationsByTsconfig = new Map<string, NamespacedUnregister>();\n private static readonly importerNamespaceVersionByTsconfig = new Map<string, number>();\n private readonly configExportsResolver = new CodemationConsumerConfigExportsResolver();\n private readonly configNormalizer = new CodemationConfigNormalizer();\n private readonly workflowModulePathFinder = new WorkflowModulePathFinder();\n private readonly workflowDefinitionExportsResolver = new WorkflowDefinitionExportsResolver();\n private readonly discoveredWorkflowsEmptyMessageFactory = new DiscoveredWorkflowsEmptyMessageFactory();\n private readonly pathSegmentsComputer = new WorkflowDiscoveryPathSegmentsComputer();\n private readonly performanceDiagnosticsLogger = new ServerLoggerFactory(\n logLevelPolicyFactory,\n ).createPerformanceDiagnostics(\"codemation-config-loader.timing\");\n\n async load(\n args: Readonly<{ consumerRoot: string; configPathOverride?: string }>,\n ): Promise<CodemationConsumerConfigResolution> {\n const loadStarted = performance.now();\n let mark = loadStarted;\n const phaseMs = (label: string): void => {\n const now = performance.now();\n const delta = now - mark;\n mark = now;\n this.performanceDiagnosticsLogger.info(\n `load.${label} +${delta.toFixed(1)}ms (cumulative ${(now - loadStarted).toFixed(1)}ms)`,\n );\n };\n const bootstrapSource = await this.resolveConfigPath(args.consumerRoot, args.configPathOverride);\n phaseMs(\"resolveConfigPath\");\n if (!bootstrapSource) {\n throw new Error(\n 'Codemation config not found. Expected \"codemation.config.ts\" in the consumer project root or \"src/\".',\n );\n }\n const moduleExports = await this.importModule(bootstrapSource);\n phaseMs(\"importConfigModule\");\n const rawConfig = this.configExportsResolver.resolveConfig(moduleExports);\n if (!rawConfig) {\n throw new Error(`Config file does not export a Codemation config object: ${bootstrapSource}`);\n }\n const config = this.configNormalizer.normalize(rawConfig);\n const workflowSources = await this.resolveWorkflowSources(args.consumerRoot, config);\n phaseMs(\"resolveWorkflowSources\");\n const workflows = this.mergeWorkflows(\n config.workflows ?? [],\n await this.loadDiscoveredWorkflows(args.consumerRoot, config, workflowSources),\n );\n phaseMs(\"loadDiscoveredWorkflows\");\n const resolvedConfig: NormalizedCodemationConfig = {\n ...config,\n workflows,\n };\n logLevelPolicyFactory.create().applyCodemationLogConfig(resolvedConfig.log);\n return {\n config: resolvedConfig,\n bootstrapSource,\n workflowSources,\n };\n }\n\n private async resolveConfigPath(\n consumerRoot: string,\n configPathOverride: string | undefined,\n ): Promise<string | null> {\n if (configPathOverride) {\n const explicitPath = path.isAbsolute(configPathOverride)\n ? configPathOverride\n : path.resolve(consumerRoot, configPathOverride);\n if (!(await this.exists(explicitPath))) {\n throw new Error(`Config file not found: ${explicitPath}`);\n }\n return explicitPath;\n }\n for (const candidate of this.getConventionCandidates(consumerRoot)) {\n if (await this.exists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n private getConventionCandidates(consumerRoot: string): ReadonlyArray<string> {\n return [\n path.resolve(consumerRoot, \"codemation.config.ts\"),\n path.resolve(consumerRoot, \"codemation.config.js\"),\n path.resolve(consumerRoot, \"src\", \"codemation.config.ts\"),\n path.resolve(consumerRoot, \"src\", \"codemation.config.js\"),\n ];\n }\n\n private async resolveWorkflowSources(consumerRoot: string, config: CodemationConfig): Promise<ReadonlyArray<string>> {\n if ((config.workflowDiscovery?.directories?.length ?? 0) === 0) {\n return [];\n }\n const discoveredPaths = await this.workflowModulePathFinder.discoverModulePaths({\n consumerRoot,\n workflowDirectories: config.workflowDiscovery?.directories,\n exists: (absolutePath) => this.exists(absolutePath),\n });\n return [...discoveredPaths].sort((left: string, right: string) => left.localeCompare(right));\n }\n\n private async loadDiscoveredWorkflows(\n consumerRoot: string,\n config: CodemationConfig,\n workflowSources: ReadonlyArray<string>,\n ): Promise<ReadonlyArray<WorkflowDefinition>> {\n const workflowDiscoveryDirectories = config.workflowDiscovery?.directories ?? [];\n const workflowsById = new Map<string, WorkflowDefinition>();\n const loadedWorkflowModules = await Promise.all(\n workflowSources.map(async (workflowSource: string) => ({\n workflowSource,\n segments: this.pathSegmentsComputer.compute({\n consumerRoot,\n workflowDiscoveryDirectories,\n absoluteWorkflowModulePath: workflowSource,\n }),\n moduleExports: await this.importModule(workflowSource),\n })),\n );\n for (const loadedWorkflowModule of loadedWorkflowModules) {\n for (const workflow of this.workflowDefinitionExportsResolver.resolve(loadedWorkflowModule.moduleExports)) {\n const enriched =\n loadedWorkflowModule.segments && loadedWorkflowModule.segments.length > 0\n ? ({ ...workflow, discoveryPathSegments: loadedWorkflowModule.segments } satisfies WorkflowDefinition)\n : workflow;\n workflowsById.set(workflow.id, enriched);\n }\n }\n if (workflowsById.size === 0 && workflowSources.length > 0) {\n throw new Error(this.discoveredWorkflowsEmptyMessageFactory.create(workflowSources));\n }\n return [...workflowsById.values()];\n }\n\n private mergeWorkflows(\n configuredWorkflows: ReadonlyArray<WorkflowDefinition>,\n discoveredWorkflows: ReadonlyArray<WorkflowDefinition>,\n ): ReadonlyArray<WorkflowDefinition> {\n const workflowsById = new Map<string, WorkflowDefinition>();\n for (const workflow of discoveredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n for (const workflow of configuredWorkflows) {\n workflowsById.set(workflow.id, workflow);\n }\n return [...workflowsById.values()];\n }\n\n private async importModule(modulePath: string): Promise<Record<string, unknown>> {\n if (this.shouldUseNativeRuntimeImport()) {\n return await this.importModuleWithNativeRuntime(modulePath);\n }\n const tsconfigPath = await this.resolveTsconfigPath(modulePath);\n if (this.shouldResetImporterBeforeImport()) {\n await this.resetImporter(tsconfigPath);\n }\n const importSpecifier = await this.createImportSpecifier(modulePath);\n for (let attempt = 0; attempt < 3; attempt += 1) {\n try {\n const importedModule = await (\n await this.getOrCreateImporter(tsconfigPath)\n ).import(importSpecifier, import.meta.url);\n return importedModule as Record<string, unknown>;\n } catch (error) {\n if (!this.isStoppedTransformServiceError(error) || attempt === 2) {\n throw error;\n }\n await this.resetImporter(tsconfigPath);\n }\n }\n throw new Error(`Failed to import consumer module after retries: ${modulePath}`);\n }\n\n private async importModuleWithNativeRuntime(modulePath: string): Promise<Record<string, unknown>> {\n const importedModule = await import(await this.createImportSpecifier(modulePath));\n return importedModule as Record<string, unknown>;\n }\n\n private async resolveTsconfigPath(modulePath: string): Promise<string | false> {\n const overridePath = process.env.CODEMATION_TSCONFIG_PATH;\n if (overridePath && (await this.exists(overridePath))) {\n return overridePath;\n }\n const discoveredPath = await this.findNearestTsconfig(modulePath);\n return discoveredPath ?? false;\n }\n\n private async getOrCreateImporter(tsconfigPath: string | false): Promise<NamespacedUnregister> {\n const cacheKey = tsconfigPath || \"default\";\n const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);\n if (existingImporter) {\n return existingImporter;\n }\n const { register } = await import(/* webpackIgnore: true */ this.resolveTsxImporterModuleSpecifier());\n const namespaceVersion = this.nextNamespaceVersion(cacheKey);\n const nextImporter = register({\n // A fresh namespace prevents cache hits from prior scoped imports after a dev rebuild.\n namespace: this.toNamespace(cacheKey, namespaceVersion),\n tsconfig: tsconfigPath,\n });\n CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.set(cacheKey, nextImporter);\n return nextImporter;\n }\n\n private async resetImporter(tsconfigPath: string | false): Promise<void> {\n const cacheKey = tsconfigPath || \"default\";\n const existingImporter = CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.get(cacheKey);\n if (!existingImporter) {\n return;\n }\n CodemationConsumerConfigLoader.importerRegistrationsByTsconfig.delete(cacheKey);\n await existingImporter.unregister().catch(() => null);\n }\n\n private nextNamespaceVersion(cacheKey: string): number {\n const nextVersion = (CodemationConsumerConfigLoader.importerNamespaceVersionByTsconfig.get(cacheKey) ?? 0) + 1;\n CodemationConsumerConfigLoader.importerNamespaceVersionByTsconfig.set(cacheKey, nextVersion);\n return nextVersion;\n }\n\n private toNamespace(cacheKey: string, namespaceVersion: number): string {\n return `codemation_consumer_${cacheKey.replace(/[^a-zA-Z0-9_-]+/g, \"_\")}_${namespaceVersion}`;\n }\n\n private resolveTsxImporterModuleSpecifier(): string {\n return [\"tsx\", \"esm\", \"api\"].join(\"/\");\n }\n\n private async findNearestTsconfig(modulePath: string): Promise<string | null> {\n let currentDirectory = path.dirname(modulePath);\n while (true) {\n const candidate = path.resolve(currentDirectory, \"tsconfig.json\");\n if (await this.exists(candidate)) {\n return candidate;\n }\n const parentDirectory = path.dirname(currentDirectory);\n if (parentDirectory === currentDirectory) {\n return null;\n }\n currentDirectory = parentDirectory;\n }\n }\n\n private async createImportSpecifier(modulePath: string): Promise<string> {\n const moduleUrl = pathToFileURL(modulePath);\n const moduleStats = await stat(modulePath);\n moduleUrl.searchParams.set(\"t\", String(moduleStats.mtimeMs));\n return moduleUrl.href;\n }\n\n private shouldUseNativeRuntimeImport(): boolean {\n return process.env.CODEMATION_TS_RUNTIME === \"ts-node\";\n }\n\n private shouldResetImporterBeforeImport(): boolean {\n return (process.env.CODEMATION_DEV_SERVER_TOKEN?.trim().length ?? 0) > 0;\n }\n\n private isStoppedTransformServiceError(error: unknown): boolean {\n return error instanceof Error && error.message.includes(\"The service is no longer running\");\n }\n\n private async exists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-
|
|
1
|
+
import { t as NormalizedCodemationConfig } from "./CodemationConfigNormalizer-B7w1JA_2.js";
|
|
2
2
|
|
|
3
3
|
//#region src/presentation/server/CodemationConsumerAppResolver.d.ts
|
|
4
4
|
type CodemationConsumerApp = Readonly<{
|
|
@@ -28,6 +28,7 @@ type CodemationConsumerConfigResolution = Readonly<{
|
|
|
28
28
|
}>;
|
|
29
29
|
declare class CodemationConsumerConfigLoader {
|
|
30
30
|
private static readonly importerRegistrationsByTsconfig;
|
|
31
|
+
private static readonly importerNamespaceVersionByTsconfig;
|
|
31
32
|
private readonly configExportsResolver;
|
|
32
33
|
private readonly configNormalizer;
|
|
33
34
|
private readonly workflowModulePathFinder;
|
|
@@ -49,13 +50,16 @@ declare class CodemationConsumerConfigLoader {
|
|
|
49
50
|
private resolveTsconfigPath;
|
|
50
51
|
private getOrCreateImporter;
|
|
51
52
|
private resetImporter;
|
|
53
|
+
private nextNamespaceVersion;
|
|
52
54
|
private toNamespace;
|
|
55
|
+
private resolveTsxImporterModuleSpecifier;
|
|
53
56
|
private findNearestTsconfig;
|
|
54
57
|
private createImportSpecifier;
|
|
55
58
|
private shouldUseNativeRuntimeImport;
|
|
59
|
+
private shouldResetImporterBeforeImport;
|
|
56
60
|
private isStoppedTransformServiceError;
|
|
57
61
|
private exists;
|
|
58
62
|
}
|
|
59
63
|
//#endregion
|
|
60
64
|
export { CodemationConsumerAppResolver as i, CodemationConsumerConfigResolution as n, CodemationConsumerApp as r, CodemationConsumerConfigLoader as t };
|
|
61
|
-
//# sourceMappingURL=CodemationConsumerConfigLoader-
|
|
65
|
+
//# sourceMappingURL=CodemationConsumerConfigLoader-OlXKw-us.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
//#region src/bootstrap/CodemationBootstrapRequest.ts
|
|
2
|
+
var CodemationBootstrapRequest = class {
|
|
3
|
+
consumerRoot;
|
|
4
|
+
repoRoot;
|
|
5
|
+
workflowSources;
|
|
6
|
+
env;
|
|
7
|
+
constructor(args) {
|
|
8
|
+
this.consumerRoot = args.consumerRoot;
|
|
9
|
+
this.repoRoot = args.repoRoot;
|
|
10
|
+
this.workflowSources = [...args.workflowSources ?? []];
|
|
11
|
+
this.env = args.env;
|
|
12
|
+
}
|
|
13
|
+
resolveEnvironment() {
|
|
14
|
+
return {
|
|
15
|
+
...process.env,
|
|
16
|
+
...this.env ?? {}
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
//#endregion
|
|
22
|
+
//#region src/presentation/config/CodemationPluginListMerger.ts
|
|
23
|
+
/**
|
|
24
|
+
* Merges explicitly configured plugins with auto-discovered plugins.
|
|
25
|
+
* Configured plugins are applied first; discovered plugins fill in gaps.
|
|
26
|
+
* Plugins discovered from package.json manifests are deduped by npm package name so the same package is not
|
|
27
|
+
* registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.
|
|
28
|
+
*/
|
|
29
|
+
var CodemationPluginListMerger = class {
|
|
30
|
+
constructor(packageMetadata) {
|
|
31
|
+
this.packageMetadata = packageMetadata;
|
|
32
|
+
}
|
|
33
|
+
merge(configuredPlugins, discoveredPlugins) {
|
|
34
|
+
const pluginsByPackageId = /* @__PURE__ */ new Map();
|
|
35
|
+
const pluginsByReference = /* @__PURE__ */ new Set();
|
|
36
|
+
const result = [];
|
|
37
|
+
for (const plugin of configuredPlugins) this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);
|
|
38
|
+
for (const plugin of discoveredPlugins) this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
tryAdd(plugin, pluginsByPackageId, pluginsByReference, result) {
|
|
42
|
+
const packageId = this.packageMetadata.readPackageName(plugin);
|
|
43
|
+
if (packageId) {
|
|
44
|
+
if (pluginsByPackageId.has(packageId)) return;
|
|
45
|
+
pluginsByPackageId.set(packageId, plugin);
|
|
46
|
+
result.push(plugin);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (pluginsByReference.has(plugin)) return;
|
|
50
|
+
pluginsByReference.add(plugin);
|
|
51
|
+
result.push(plugin);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
56
|
+
export { CodemationBootstrapRequest as n, CodemationPluginListMerger as t };
|
|
57
|
+
//# sourceMappingURL=CodemationPluginListMerger-CGwOTdZ7.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodemationPluginListMerger-CGwOTdZ7.js","names":["packageMetadata: CodemationPluginPackageMetadata","result: CodemationPlugin[]"],"sources":["../src/bootstrap/CodemationBootstrapRequest.ts","../src/presentation/config/CodemationPluginListMerger.ts"],"sourcesContent":["export class CodemationBootstrapRequest {\n readonly consumerRoot: string;\n readonly repoRoot: string;\n readonly workflowSources: ReadonlyArray<string>;\n readonly env?: Readonly<NodeJS.ProcessEnv>;\n\n constructor(\n args: Readonly<{\n consumerRoot: string;\n repoRoot: string;\n workflowSources?: ReadonlyArray<string>;\n env?: Readonly<NodeJS.ProcessEnv>;\n }>,\n ) {\n this.consumerRoot = args.consumerRoot;\n this.repoRoot = args.repoRoot;\n this.workflowSources = [...(args.workflowSources ?? [])];\n this.env = args.env;\n }\n\n resolveEnvironment(): NodeJS.ProcessEnv {\n return {\n ...process.env,\n ...(this.env ?? {}),\n };\n }\n}\n","import { CodemationPluginPackageMetadata, type CodemationPlugin } from \"./CodemationPlugin\";\n\n/**\n * Merges explicitly configured plugins with auto-discovered plugins.\n * Configured plugins are applied first; discovered plugins fill in gaps.\n * Plugins discovered from package.json manifests are deduped by npm package name so the same package is not\n * registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.\n */\nexport class CodemationPluginListMerger {\n constructor(private readonly packageMetadata: CodemationPluginPackageMetadata) {}\n\n merge(\n configuredPlugins: ReadonlyArray<CodemationPlugin>,\n discoveredPlugins: ReadonlyArray<CodemationPlugin>,\n ): ReadonlyArray<CodemationPlugin> {\n const pluginsByPackageId = new Map<string, CodemationPlugin>();\n const pluginsByReference = new Set<CodemationPlugin>();\n const result: CodemationPlugin[] = [];\n\n for (const plugin of configuredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n for (const plugin of discoveredPlugins) {\n this.tryAdd(plugin, pluginsByPackageId, pluginsByReference, result);\n }\n return result;\n }\n\n private tryAdd(\n plugin: CodemationPlugin,\n pluginsByPackageId: Map<string, CodemationPlugin>,\n pluginsByReference: Set<CodemationPlugin>,\n result: CodemationPlugin[],\n ): void {\n const packageId = this.packageMetadata.readPackageName(plugin);\n if (packageId) {\n if (pluginsByPackageId.has(packageId)) {\n return;\n }\n pluginsByPackageId.set(packageId, plugin);\n result.push(plugin);\n return;\n }\n if (pluginsByReference.has(plugin)) {\n return;\n }\n pluginsByReference.add(plugin);\n result.push(plugin);\n }\n}\n"],"mappings":";AAAA,IAAa,6BAAb,MAAwC;CACtC,AAAS;CACT,AAAS;CACT,AAAS;CACT,AAAS;CAET,YACE,MAMA;AACA,OAAK,eAAe,KAAK;AACzB,OAAK,WAAW,KAAK;AACrB,OAAK,kBAAkB,CAAC,GAAI,KAAK,mBAAmB,EAAE,CAAE;AACxD,OAAK,MAAM,KAAK;;CAGlB,qBAAwC;AACtC,SAAO;GACL,GAAG,QAAQ;GACX,GAAI,KAAK,OAAO,EAAE;GACnB;;;;;;;;;;;;AChBL,IAAa,6BAAb,MAAwC;CACtC,YAAY,AAAiBA,iBAAkD;EAAlD;;CAE7B,MACE,mBACA,mBACiC;EACjC,MAAM,qCAAqB,IAAI,KAA+B;EAC9D,MAAM,qCAAqB,IAAI,KAAuB;EACtD,MAAMC,SAA6B,EAAE;AAErC,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,OAAK,MAAM,UAAU,kBACnB,MAAK,OAAO,QAAQ,oBAAoB,oBAAoB,OAAO;AAErE,SAAO;;CAGT,AAAQ,OACN,QACA,oBACA,oBACA,QACM;EACN,MAAM,YAAY,KAAK,gBAAgB,gBAAgB,OAAO;AAC9D,MAAI,WAAW;AACb,OAAI,mBAAmB,IAAI,UAAU,CACnC;AAEF,sBAAmB,IAAI,WAAW,OAAO;AACzC,UAAO,KAAK,OAAO;AACnB;;AAEF,MAAI,mBAAmB,IAAI,OAAO,CAChC;AAEF,qBAAmB,IAAI,OAAO;AAC9B,SAAO,KAAK,OAAO"}
|
package/dist/{CodemationPluginListMerger-B0-e4CJ6.d.ts → CodemationPluginListMerger-_ZIiOQxB.d.ts}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { a as CodemationWhitelabelConfig, l as Logger, t as CodemationAuthConfig, u as LoggerFactory } from "./CodemationAuthConfig-Bh2cCNCI.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { t as CredentialStore } from "./CredentialServices-
|
|
5
|
-
import { n as PrismaMigrationDeployer, r as PrismaClient } from "./AppConfigFactory-
|
|
2
|
+
import { B as TypeToken, H as RunEvent, I as NodeExecutionRequestHandler, J as PersistedRunState, K as WorkflowActivationPolicy, L as NodeExecutionScheduler, N as WorkflowDefinition, P as WorkflowId, R as WorkflowRepository, U as RunEventBus, X as RunSummary, Y as RunCurrentState, Z as Clock, k as RunId, n as Engine, s as AnyCredentialType, z as Container } from "./index-DbYzycTC.js";
|
|
3
|
+
import { C as CodemationContainerRegistration, S as CodemationPluginPackageMetadata, g as AppConfig, y as CodemationPlugin } from "./CodemationConfig-COs4GcOE.js";
|
|
4
|
+
import { t as CredentialStore } from "./CredentialServices-D3VTczpC.js";
|
|
5
|
+
import { n as PrismaMigrationDeployer, r as PrismaClient } from "./AppConfigFactory-Co4STjwt.js";
|
|
6
6
|
import "reflect-metadata";
|
|
7
7
|
import { Hono } from "hono";
|
|
8
8
|
import { PGlite } from "@electric-sql/pglite";
|
|
@@ -27,114 +27,6 @@ interface QueryBus {
|
|
|
27
27
|
execute<TResult>(query: Query<TResult>): Promise<TResult>;
|
|
28
28
|
}
|
|
29
29
|
//#endregion
|
|
30
|
-
//#region src/application/contracts/userDirectoryContracts.types.d.ts
|
|
31
|
-
type UserAccountStatus = "invited" | "active" | "inactive";
|
|
32
|
-
type UserAccountDto = Readonly<{
|
|
33
|
-
id: string;
|
|
34
|
-
email: string;
|
|
35
|
-
status: UserAccountStatus;
|
|
36
|
-
inviteExpiresAt: string | null;
|
|
37
|
-
/** Ways the user can sign in (password + linked OAuth / OIDC / email-link accounts). */
|
|
38
|
-
loginMethods: ReadonlyArray<string>;
|
|
39
|
-
}>;
|
|
40
|
-
/** Result of CLI/bootstrap `upsert` for a local password user (distinct from invite-based onboarding). */
|
|
41
|
-
type UpsertLocalBootstrapUserResultDto = Readonly<{
|
|
42
|
-
outcome: "created" | "updated";
|
|
43
|
-
}>;
|
|
44
|
-
//#endregion
|
|
45
|
-
//#region src/application/queries/ListUserAccountsQuery.d.ts
|
|
46
|
-
declare class ListUserAccountsQuery extends Query<ReadonlyArray<UserAccountDto>> {}
|
|
47
|
-
//#endregion
|
|
48
|
-
//#region src/application/commands/UpsertLocalBootstrapUserCommand.d.ts
|
|
49
|
-
declare class UpsertLocalBootstrapUserCommand extends Command<UpsertLocalBootstrapUserResultDto> {
|
|
50
|
-
readonly email: string;
|
|
51
|
-
readonly password: string;
|
|
52
|
-
constructor(email: string, password: string);
|
|
53
|
-
}
|
|
54
|
-
//#endregion
|
|
55
|
-
//#region src/application/bus/CommandHandler.d.ts
|
|
56
|
-
declare abstract class CommandHandler<TCommand extends Command<TResult>, TResult> {
|
|
57
|
-
abstract execute(command: TCommand): Promise<TResult>;
|
|
58
|
-
}
|
|
59
|
-
//#endregion
|
|
60
|
-
//#region src/domain/runs/WorkflowRunRepository.d.ts
|
|
61
|
-
interface WorkflowRunRepository {
|
|
62
|
-
load(runId: string): Promise<PersistedRunState | undefined>;
|
|
63
|
-
save(state: PersistedRunState): Promise<void>;
|
|
64
|
-
listRuns(args: Readonly<{
|
|
65
|
-
workflowId?: string;
|
|
66
|
-
limit?: number;
|
|
67
|
-
}>): Promise<ReadonlyArray<RunSummary>>;
|
|
68
|
-
deleteRun(runId: RunId): Promise<void>;
|
|
69
|
-
}
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
|
|
72
|
-
type WorkflowDebuggerOverlayState = Readonly<{
|
|
73
|
-
workflowId: string;
|
|
74
|
-
updatedAt: string;
|
|
75
|
-
copiedFromRunId?: string;
|
|
76
|
-
currentState: RunCurrentState;
|
|
77
|
-
}>;
|
|
78
|
-
//#endregion
|
|
79
|
-
//#region src/domain/workflows/WorkflowDebuggerOverlayRepository.d.ts
|
|
80
|
-
interface WorkflowDebuggerOverlayRepository {
|
|
81
|
-
load(workflowId: string): Promise<WorkflowDebuggerOverlayState | undefined>;
|
|
82
|
-
save(state: WorkflowDebuggerOverlayState): Promise<void>;
|
|
83
|
-
}
|
|
84
|
-
//#endregion
|
|
85
|
-
//#region src/domain/workflows/WorkflowDefinitionRepository.d.ts
|
|
86
|
-
interface WorkflowDefinitionRepository {
|
|
87
|
-
listDefinitions(): Promise<ReadonlyArray<WorkflowDefinition>>;
|
|
88
|
-
getDefinition(workflowId: string): Promise<WorkflowDefinition | undefined>;
|
|
89
|
-
resolveSnapshot(args: Readonly<{
|
|
90
|
-
workflowId: string;
|
|
91
|
-
workflowSnapshot?: unknown;
|
|
92
|
-
}>): Promise<WorkflowDefinition | undefined>;
|
|
93
|
-
}
|
|
94
|
-
//#endregion
|
|
95
|
-
//#region src/domain/workflows/WorkflowActivationRepository.d.ts
|
|
96
|
-
type WorkflowActivationRow = Readonly<{
|
|
97
|
-
workflowId: string;
|
|
98
|
-
isActive: boolean;
|
|
99
|
-
}>;
|
|
100
|
-
interface WorkflowActivationRepository {
|
|
101
|
-
loadAll(): Promise<ReadonlyArray<WorkflowActivationRow>>;
|
|
102
|
-
upsert(workflowId: string, active: boolean): Promise<void>;
|
|
103
|
-
}
|
|
104
|
-
//#endregion
|
|
105
|
-
//#region src/infrastructure/persistence/RuntimeWorkflowActivationPolicy.d.ts
|
|
106
|
-
/**
|
|
107
|
-
* In-memory activation map: missing workflow id ⇒ inactive. Hydrated from persistence at startup and updated on command.
|
|
108
|
-
*/
|
|
109
|
-
declare class RuntimeWorkflowActivationPolicy implements WorkflowActivationPolicy {
|
|
110
|
-
private readonly activeByWorkflowId;
|
|
111
|
-
hydrateFromRepository(repository: WorkflowActivationRepository): Promise<void>;
|
|
112
|
-
set(workflowId: string, active: boolean): void;
|
|
113
|
-
isActive(workflowId: WorkflowId): boolean;
|
|
114
|
-
}
|
|
115
|
-
//#endregion
|
|
116
|
-
//#region src/application/bus/QueryHandler.d.ts
|
|
117
|
-
declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
|
|
118
|
-
abstract execute(query: TQuery): Promise<TResult>;
|
|
119
|
-
}
|
|
120
|
-
//#endregion
|
|
121
|
-
//#region src/application/binary/RunBinaryAttachmentLookupService.d.ts
|
|
122
|
-
declare class RunBinaryAttachmentLookupService {
|
|
123
|
-
private readonly workflowRunRepository;
|
|
124
|
-
private readonly workflowDebuggerOverlayRepository;
|
|
125
|
-
constructor(workflowRunRepository: WorkflowRunRepository, workflowDebuggerOverlayRepository: WorkflowDebuggerOverlayRepository);
|
|
126
|
-
findForRun(runId: string, binaryId: string): Promise<BinaryAttachment | undefined>;
|
|
127
|
-
findForWorkflowOverlay(workflowId: string, binaryId: string): Promise<BinaryAttachment | undefined>;
|
|
128
|
-
private findInRunState;
|
|
129
|
-
private findInCurrentState;
|
|
130
|
-
private findInOutputsByNode;
|
|
131
|
-
private findInNodeSnapshots;
|
|
132
|
-
private findInCurrentStateSnapshots;
|
|
133
|
-
private findInMutableState;
|
|
134
|
-
private findInPortItemMap;
|
|
135
|
-
private findInItems;
|
|
136
|
-
}
|
|
137
|
-
//#endregion
|
|
138
30
|
//#region src/infrastructure/config/CodemationPluginRegistrar.d.ts
|
|
139
31
|
declare class CodemationPluginRegistrar {
|
|
140
32
|
apply(args: Readonly<{
|
|
@@ -208,6 +100,8 @@ type AppContainerInputs = Readonly<{
|
|
|
208
100
|
declare class AppContainerFactory {
|
|
209
101
|
private readonly containerRegistrationRegistrar;
|
|
210
102
|
private readonly pluginRegistrar;
|
|
103
|
+
private static readonly queryHandlers;
|
|
104
|
+
private static readonly commandHandlers;
|
|
211
105
|
private static readonly honoRouteRegistrars;
|
|
212
106
|
constructor(containerRegistrationRegistrar?: CodemationContainerRegistrationRegistrar, pluginRegistrar?: CodemationPluginRegistrar);
|
|
213
107
|
create(inputs: AppContainerInputs): Promise<Container>;
|
|
@@ -247,6 +141,27 @@ declare class DatabaseMigrations {
|
|
|
247
141
|
migrate(): Promise<void>;
|
|
248
142
|
}
|
|
249
143
|
//#endregion
|
|
144
|
+
//#region src/domain/workflows/WorkflowActivationRepository.d.ts
|
|
145
|
+
type WorkflowActivationRow = Readonly<{
|
|
146
|
+
workflowId: string;
|
|
147
|
+
isActive: boolean;
|
|
148
|
+
}>;
|
|
149
|
+
interface WorkflowActivationRepository {
|
|
150
|
+
loadAll(): Promise<ReadonlyArray<WorkflowActivationRow>>;
|
|
151
|
+
upsert(workflowId: string, active: boolean): Promise<void>;
|
|
152
|
+
}
|
|
153
|
+
//#endregion
|
|
154
|
+
//#region src/infrastructure/persistence/RuntimeWorkflowActivationPolicy.d.ts
|
|
155
|
+
/**
|
|
156
|
+
* In-memory activation map: missing workflow id ⇒ inactive. Hydrated from persistence at startup and updated on command.
|
|
157
|
+
*/
|
|
158
|
+
declare class RuntimeWorkflowActivationPolicy implements WorkflowActivationPolicy {
|
|
159
|
+
private readonly activeByWorkflowId;
|
|
160
|
+
hydrateFromRepository(repository: WorkflowActivationRepository): Promise<void>;
|
|
161
|
+
set(workflowId: string, active: boolean): void;
|
|
162
|
+
isActive(workflowId: WorkflowId): boolean;
|
|
163
|
+
}
|
|
164
|
+
//#endregion
|
|
250
165
|
//#region src/application/websocket/WorkflowRunEventWebsocketRelay.d.ts
|
|
251
166
|
declare class WorkflowRunEventWebsocketRelay {
|
|
252
167
|
private readonly workflowWebsocketPublisher;
|
|
@@ -311,6 +226,11 @@ interface SessionVerifier {
|
|
|
311
226
|
verify(request: Request): Promise<AuthenticatedPrincipal | null>;
|
|
312
227
|
}
|
|
313
228
|
//#endregion
|
|
229
|
+
//#region src/application/bus/CommandHandler.d.ts
|
|
230
|
+
declare abstract class CommandHandler<TCommand extends Command<TResult>, TResult> {
|
|
231
|
+
abstract execute(command: TCommand): Promise<TResult>;
|
|
232
|
+
}
|
|
233
|
+
//#endregion
|
|
314
234
|
//#region src/application/bus/DomainEvent.d.ts
|
|
315
235
|
declare abstract class DomainEvent {}
|
|
316
236
|
//#endregion
|
|
@@ -324,6 +244,46 @@ declare abstract class DomainEventHandler<TEvent extends DomainEvent> {
|
|
|
324
244
|
abstract handle(event: TEvent): Promise<void>;
|
|
325
245
|
}
|
|
326
246
|
//#endregion
|
|
247
|
+
//#region src/application/bus/QueryHandler.d.ts
|
|
248
|
+
declare abstract class QueryHandler<TQuery extends Query<TResult>, TResult> {
|
|
249
|
+
abstract execute(query: TQuery): Promise<TResult>;
|
|
250
|
+
}
|
|
251
|
+
//#endregion
|
|
252
|
+
//#region src/domain/runs/WorkflowRunRepository.d.ts
|
|
253
|
+
interface WorkflowRunRepository {
|
|
254
|
+
load(runId: string): Promise<PersistedRunState | undefined>;
|
|
255
|
+
save(state: PersistedRunState): Promise<void>;
|
|
256
|
+
listRuns(args: Readonly<{
|
|
257
|
+
workflowId?: string;
|
|
258
|
+
limit?: number;
|
|
259
|
+
}>): Promise<ReadonlyArray<RunSummary>>;
|
|
260
|
+
deleteRun(runId: RunId): Promise<void>;
|
|
261
|
+
}
|
|
262
|
+
//#endregion
|
|
263
|
+
//#region src/domain/workflows/WorkflowDebuggerOverlayState.d.ts
|
|
264
|
+
type WorkflowDebuggerOverlayState = Readonly<{
|
|
265
|
+
workflowId: string;
|
|
266
|
+
updatedAt: string;
|
|
267
|
+
copiedFromRunId?: string;
|
|
268
|
+
currentState: RunCurrentState;
|
|
269
|
+
}>;
|
|
270
|
+
//#endregion
|
|
271
|
+
//#region src/domain/workflows/WorkflowDebuggerOverlayRepository.d.ts
|
|
272
|
+
interface WorkflowDebuggerOverlayRepository {
|
|
273
|
+
load(workflowId: string): Promise<WorkflowDebuggerOverlayState | undefined>;
|
|
274
|
+
save(state: WorkflowDebuggerOverlayState): Promise<void>;
|
|
275
|
+
}
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/domain/workflows/WorkflowDefinitionRepository.d.ts
|
|
278
|
+
interface WorkflowDefinitionRepository {
|
|
279
|
+
listDefinitions(): Promise<ReadonlyArray<WorkflowDefinition>>;
|
|
280
|
+
getDefinition(workflowId: string): Promise<WorkflowDefinition | undefined>;
|
|
281
|
+
resolveSnapshot(args: Readonly<{
|
|
282
|
+
workflowId: string;
|
|
283
|
+
workflowSnapshot?: unknown;
|
|
284
|
+
}>): Promise<WorkflowDefinition | undefined>;
|
|
285
|
+
}
|
|
286
|
+
//#endregion
|
|
327
287
|
//#region src/presentation/http/hono/HonoApiRouteRegistrar.d.ts
|
|
328
288
|
interface HonoApiRouteRegistrar {
|
|
329
289
|
register(app: Hono): void;
|
|
@@ -379,13 +339,15 @@ declare class CodemationBootstrapRequest {
|
|
|
379
339
|
/**
|
|
380
340
|
* Merges explicitly configured plugins with auto-discovered plugins.
|
|
381
341
|
* Configured plugins are applied first; discovered plugins fill in gaps.
|
|
382
|
-
* Plugins
|
|
383
|
-
* registered twice when the consumer config lists a plugin and discovery also finds it
|
|
384
|
-
* module evaluations produce different `constructor` identities for the same logical plugin.
|
|
342
|
+
* Plugins discovered from package.json manifests are deduped by npm package name so the same package is not
|
|
343
|
+
* registered twice when the consumer config lists a discovered plugin explicitly and auto-discovery also finds it.
|
|
385
344
|
*/
|
|
386
345
|
declare class CodemationPluginListMerger {
|
|
346
|
+
private readonly packageMetadata;
|
|
347
|
+
constructor(packageMetadata: CodemationPluginPackageMetadata);
|
|
387
348
|
merge(configuredPlugins: ReadonlyArray<CodemationPlugin>, discoveredPlugins: ReadonlyArray<CodemationPlugin>): ReadonlyArray<CodemationPlugin>;
|
|
349
|
+
private tryAdd;
|
|
388
350
|
}
|
|
389
351
|
//#endregion
|
|
390
|
-
export {
|
|
391
|
-
//# sourceMappingURL=CodemationPluginListMerger-
|
|
352
|
+
export { Command as _, WorkflowDebuggerOverlayRepository as a, WorkerRuntime as c, AppContainerLifecycle as d, AppContainerFactory as f, CommandBus as g, Query as h, HonoApiRouteRegistrar as i, FrontendRuntime as l, QueryBus as m, CodemationBootstrapRequest as n, WorkflowRunRepository as o, WorkflowWebsocketServer as p, ApplicationTokens as r, SessionVerifier as s, CodemationPluginListMerger as t, DatabaseMigrations as u };
|
|
353
|
+
//# sourceMappingURL=CodemationPluginListMerger-_ZIiOQxB.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as
|
|
2
|
-
import { g as AppConfig } from "./CodemationConfig-
|
|
1
|
+
import { C as CredentialTypeId, N as WorkflowDefinition, R as WorkflowRepository, S as CredentialTypeDefinition, _ as CredentialRequirement, b as CredentialSetupStatus, c as CredentialBinding, d as CredentialHealth, f as CredentialInstanceId, h as CredentialMaterialSourceKind, l as CredentialBindingKey, m as CredentialJsonRecord, p as CredentialInstanceRecord, s as AnyCredentialType, u as CredentialFieldSchema, w as CredentialTypeRegistry, x as CredentialType, y as CredentialSessionService } from "./index-DbYzycTC.js";
|
|
2
|
+
import { g as AppConfig } from "./CodemationConfig-COs4GcOE.js";
|
|
3
3
|
|
|
4
4
|
//#region src/domain/credentials/CredentialTypeRegistryImpl.d.ts
|
|
5
5
|
declare class CredentialTypeRegistryImpl implements CredentialTypeRegistry {
|
|
@@ -288,4 +288,4 @@ type MutableCredentialSessionService = CredentialSessionService & Readonly<{
|
|
|
288
288
|
}>;
|
|
289
289
|
//#endregion
|
|
290
290
|
export { CredentialInstanceService as a, CredentialFieldEnvOverlayService as c, CredentialBindingService as i, CredentialTypeRegistryImpl as l, CredentialType$1 as n, CredentialMaterialResolver as o, CredentialRuntimeMaterialService as r, CredentialSecretCipher as s, CredentialStore as t };
|
|
291
|
-
//# sourceMappingURL=CredentialServices-
|
|
291
|
+
//# sourceMappingURL=CredentialServices-D3VTczpC.d.ts.map
|