@codemation/host 0.2.5 → 0.3.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 (109) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/{AppConfigFactory-CqKWXqOm.js → AppConfigFactory-BPp02HMv.js} +82 -5
  3. package/dist/{AppConfigFactory-CqKWXqOm.js.map → AppConfigFactory-BPp02HMv.js.map} +1 -1
  4. package/dist/{AppConfigFactory-CK28UPK0.d.ts → AppConfigFactory-Dq7ttwQ_.d.ts} +6001 -144
  5. package/dist/{AppContainerFactory-CcSGFNLW.js → AppContainerFactory-D9je1sSV.js} +2604 -155
  6. package/dist/AppContainerFactory-D9je1sSV.js.map +1 -0
  7. package/dist/{CodemationAppContext-KqDoeHqN.d.ts → CodemationAppContext-P7P-xZhQ.d.ts} +2 -2
  8. package/dist/{CodemationAuthoring.types-BP6Inucu.d.ts → CodemationAuthoring.types-OMYu7vKP.d.ts} +3 -3
  9. package/dist/{CodemationConfigNormalizer-DIAE0VHw.d.ts → CodemationConfigNormalizer-BCtBrJDe.d.ts} +2 -2
  10. package/dist/{CodemationConsumerConfigLoader-nj9kTmfJ.d.ts → CodemationConsumerConfigLoader-evvw4b_a.d.ts} +2 -2
  11. package/dist/CodemationPluginListMerger-PSTtEQjC.d.ts +674 -0
  12. package/dist/{CredentialServices-BFQD_VN1.d.ts → CredentialServices-0Hk8RFY1.d.ts} +3 -3
  13. package/dist/{CredentialServices-BPKUF8Xs.js → CredentialServices-BNBMFOPt.js} +6 -1
  14. package/dist/CredentialServices-BNBMFOPt.js.map +1 -0
  15. package/dist/{PublicFrontendBootstrapFactory-DTA1iDo0.d.ts → PublicFrontendBootstrapFactory-D0_ds7nS.d.ts} +2 -2
  16. package/dist/authoring.d.ts +3 -3
  17. package/dist/consumer.d.ts +4 -4
  18. package/dist/credentials.d.ts +3 -3
  19. package/dist/credentials.js +1 -1
  20. package/dist/devServerSidecar.d.ts +1 -1
  21. package/dist/{index-Dd6BrWyH.d.ts → index-CeS2saCe.d.ts} +105 -2
  22. package/dist/index.d.ts +12 -11
  23. package/dist/index.js +5 -5
  24. package/dist/nextServer.d.ts +8 -58
  25. package/dist/nextServer.js +6 -100
  26. package/dist/{persistenceServer-DKbFDxoS.js → persistenceServer-CA0_q0D7.js} +2 -2
  27. package/dist/{persistenceServer-DKbFDxoS.js.map → persistenceServer-CA0_q0D7.js.map} +1 -1
  28. package/dist/{persistenceServer-Y-u7lV7f.d.ts → persistenceServer-CJeu1STC.d.ts} +2 -2
  29. package/dist/persistenceServer.d.ts +5 -5
  30. package/dist/persistenceServer.js +2 -2
  31. package/dist/{server-CFpgKuVE.js → server-C_ZIEOTY.js} +4 -4
  32. package/dist/{server-CFpgKuVE.js.map → server-C_ZIEOTY.js.map} +1 -1
  33. package/dist/{server-axppTMgo.d.ts → server-Clvg5x1w.d.ts} +11 -5
  34. package/dist/server.d.ts +8 -8
  35. package/dist/server.js +5 -5
  36. package/package.json +6 -5
  37. package/prisma/migrations/20260414120000_telemetry_foundation/migration.sql +112 -0
  38. package/prisma/migrations/20260414153000_telemetry_retention_metrics_refactor/migration.sql +239 -0
  39. package/prisma/migrations.sqlite/20260414120000_telemetry_foundation/migration.sql +103 -0
  40. package/prisma/migrations.sqlite/20260414153000_telemetry_retention_metrics_refactor/migration.sql +540 -0
  41. package/prisma/schema.postgresql.prisma +100 -1
  42. package/prisma/schema.sqlite.prisma +100 -1
  43. package/scripts/generate-prisma-clients.mjs +89 -1
  44. package/src/application/contracts/TelemetryDashboardContracts.ts +113 -0
  45. package/src/application/contracts/TelemetryRunTraceContracts.ts +13 -0
  46. package/src/application/cost/FrameworkCostCatalogEntries.ts +126 -0
  47. package/src/application/queries/GetTelemetryDashboardDimensionsQuery.ts +11 -0
  48. package/src/application/queries/GetTelemetryDashboardDimensionsQueryHandler.ts +20 -0
  49. package/src/application/queries/GetTelemetryDashboardRunsQuery.ts +11 -0
  50. package/src/application/queries/GetTelemetryDashboardRunsQueryHandler.ts +20 -0
  51. package/src/application/queries/GetTelemetryDashboardSummaryQuery.ts +11 -0
  52. package/src/application/queries/GetTelemetryDashboardSummaryQueryHandler.ts +29 -0
  53. package/src/application/queries/GetTelemetryDashboardTimeseriesQuery.ts +11 -0
  54. package/src/application/queries/GetTelemetryDashboardTimeseriesQueryHandler.ts +36 -0
  55. package/src/application/queries/GetTelemetryRunTraceQuery.ts +8 -0
  56. package/src/application/queries/GetTelemetryRunTraceQueryHandler.ts +20 -0
  57. package/src/application/queries/WorkflowQueryHandlers.ts +5 -0
  58. package/src/application/runs/WorkflowRunRetentionPruneScheduler.ts +71 -26
  59. package/src/application/telemetry/CompositeTelemetryExporter.ts +13 -0
  60. package/src/application/telemetry/LazyExecutionTelemetryFactory.ts +21 -0
  61. package/src/application/telemetry/NoOpTelemetryExporter.ts +7 -0
  62. package/src/application/telemetry/OtelExecutionTelemetry.types.ts +41 -0
  63. package/src/application/telemetry/OtelExecutionTelemetryFactory.ts +56 -0
  64. package/src/application/telemetry/OtelIdentityFactory.ts +41 -0
  65. package/src/application/telemetry/RunEventBusTelemetryReporter.ts +188 -0
  66. package/src/application/telemetry/StoredExecutionTelemetry.ts +56 -0
  67. package/src/application/telemetry/StoredNodeExecutionTelemetry.ts +35 -0
  68. package/src/application/telemetry/StoredTelemetrySpanScope.ts +188 -0
  69. package/src/application/telemetry/TelemetryEnricherChain.ts +85 -0
  70. package/src/application/telemetry/TelemetryPrivacyPolicy.ts +19 -0
  71. package/src/application/telemetry/TelemetryQueryService.ts +815 -0
  72. package/src/application/telemetry/TelemetryRetentionTimestampFactory.ts +40 -0
  73. package/src/applicationTokens.ts +18 -0
  74. package/src/bootstrap/AppContainerFactory.ts +124 -1
  75. package/src/bootstrap/AppContainerLifecycle.ts +8 -0
  76. package/src/bootstrap/runtime/FrontendRuntime.ts +8 -0
  77. package/src/bootstrap/runtime/WorkerRuntime.ts +8 -0
  78. package/src/domain/runs/WorkflowRunRepository.ts +3 -1
  79. package/src/domain/telemetry/TelemetryContracts.ts +197 -0
  80. package/src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts +56 -0
  81. package/src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts +56 -0
  82. package/src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts +97 -0
  83. package/src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts +113 -0
  84. package/src/infrastructure/persistence/InMemoryWorkflowRunRepository.ts +4 -2
  85. package/src/infrastructure/persistence/PrismaRunTraceContextRepository.ts +92 -0
  86. package/src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts +125 -0
  87. package/src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts +134 -0
  88. package/src/infrastructure/persistence/PrismaTelemetrySpanStore.ts +166 -0
  89. package/src/infrastructure/persistence/PrismaWorkflowRunRepository.ts +20 -7
  90. package/src/infrastructure/persistence/generated/prisma-postgresql-client/edge.js +85 -4
  91. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index-browser.js +81 -0
  92. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.d.ts +6488 -102
  93. package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.js +85 -4
  94. package/src/infrastructure/persistence/generated/prisma-postgresql-client/package.json +1 -1
  95. package/src/infrastructure/persistence/generated/prisma-postgresql-client/schema.prisma +100 -0
  96. package/src/infrastructure/persistence/generated/prisma-sqlite-client/edge.js +85 -4
  97. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index-browser.js +81 -0
  98. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.d.ts +6476 -98
  99. package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.js +85 -4
  100. package/src/infrastructure/persistence/generated/prisma-sqlite-client/package.json +1 -1
  101. package/src/infrastructure/persistence/generated/prisma-sqlite-client/schema.prisma +100 -0
  102. package/src/presentation/http/ApiPaths.ts +22 -0
  103. package/src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts +19 -0
  104. package/src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts +1 -0
  105. package/src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts +181 -0
  106. package/dist/AppContainerFactory-CcSGFNLW.js.map +0 -1
  107. package/dist/CodemationPluginListMerger-QvUa2SIt.d.ts +0 -357
  108. package/dist/CredentialServices-BPKUF8Xs.js.map +0 -1
  109. package/dist/nextServer.js.map +0 -1
@@ -2,16 +2,16 @@ import { i as __toESM, r as __require, t as __commonJS } from "./chunk-7V6ThxGB.
2
2
  import { o as LogLevelPolicyFactory, s as logLevelPolicyFactory, t as ServerLoggerFactory } from "./ServerLoggerFactory-CsNW5qhz.js";
3
3
  import { n as __decorateMetadata, t as __decorateParam } from "./decorateParam-D7WPDFAf.js";
4
4
  import { t as __decorate } from "./decorate-Dq0XLibd.js";
5
- import { a as CredentialInstanceService, c as CredentialSecretCipher, d as ApplicationTokens, f as ApplicationRequestError, h as OpenAiApiKeyCredentialHealthTester, i as CredentialBindingService, l as CredentialFieldEnvOverlayService, m as OpenAiApiKeyCredentialTypeFactory, n as CredentialSessionServiceImpl, o as CredentialOAuth2ScopeResolver, p as CredentialTypeRegistryImpl, r as CredentialRuntimeMaterialService, s as CredentialMaterialResolver, t as CredentialTestService, u as WorkflowCredentialNodeResolver } from "./CredentialServices-BPKUF8Xs.js";
6
- import { i as require_client$2, r as PrismaMigrationDeployer } from "./AppConfigFactory-CqKWXqOm.js";
5
+ import { a as CredentialInstanceService, c as CredentialSecretCipher, d as ApplicationTokens, f as ApplicationRequestError, h as OpenAiApiKeyCredentialHealthTester, i as CredentialBindingService, l as CredentialFieldEnvOverlayService, m as OpenAiApiKeyCredentialTypeFactory, n as CredentialSessionServiceImpl, o as CredentialOAuth2ScopeResolver, p as CredentialTypeRegistryImpl, r as CredentialRuntimeMaterialService, s as CredentialMaterialResolver, t as CredentialTestService, u as WorkflowCredentialNodeResolver } from "./CredentialServices-BNBMFOPt.js";
6
+ import { i as require_client$2, r as PrismaMigrationDeployer } from "./AppConfigFactory-BPp02HMv.js";
7
7
  import { AIAgentConnectionWorkflowExpander, ConnectionCredentialNodeConfigFactory, ManualTriggerNode } from "@codemation/core-nodes";
8
8
  import { mkdir, rm, stat } from "node:fs/promises";
9
9
  import path from "node:path";
10
10
  import { pathToFileURL } from "node:url";
11
- import { AgentConfigInspector, AgentConnectionNodeCollector, CoreTokens, DefaultExecutionBinaryService, EventPublishingWorkflowExecutionRepository, InMemoryLiveWorkflowRepository, InMemoryRunEventBus, ItemsInputNormalizer, RunFinishedAtFactory, SystemClock, container, getPersistedRuntimeTypeMetadata, inject, injectAll, injectable, instanceCachingFactory, registry } from "@codemation/core";
11
+ import { AgentConfigInspector, AgentConnectionNodeCollector, CoreTokens, CostTrackingTelemetryAttributeNames, CostTrackingTelemetryMetricNames, DefaultExecutionBinaryService, EventPublishingWorkflowExecutionRepository, GenAiTelemetryAttributeNames, InMemoryLiveWorkflowRepository, InMemoryRunEventBus, ItemsInputNormalizer, NoOpTelemetryArtifactReference, RunFinishedAtFactory, SystemClock, container, getPersistedRuntimeTypeMetadata, inject, injectAll, injectable, instanceCachingFactory, registry } from "@codemation/core";
12
12
  import { createHash, randomBytes } from "node:crypto";
13
13
  import "reflect-metadata";
14
- import { ConfigDrivenOffloadPolicy, DefaultDrivingScheduler, DefaultExecutionContextFactory, Engine, EngineRuntimeRegistrar, InMemoryBinaryStorage, InMemoryRunDataFactory, InlineDrivingScheduler, MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry, RunIntentService, RunSummaryMapper, WorkflowRepositoryWebhookTriggerMatcher } from "@codemation/core/bootstrap";
14
+ import { CatalogBackedCostTrackingTelemetryFactory, ConfigDrivenOffloadPolicy, DefaultDrivingScheduler, DefaultExecutionContextFactory, Engine, EngineRuntimeRegistrar, InMemoryBinaryStorage, InMemoryRunDataFactory, InlineDrivingScheduler, MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry, RunIntentService, RunSummaryMapper, StaticCostCatalog, WorkflowRepositoryWebhookTriggerMatcher } from "@codemation/core/bootstrap";
15
15
  import { compare, hash } from "bcryptjs";
16
16
  import sanitizeFilename from "sanitize-filename";
17
17
  import { WebSocket, WebSocketServer } from "ws";
@@ -83,7 +83,7 @@ var HandlesCommand = class {
83
83
 
84
84
  //#endregion
85
85
  //#region src/application/commands/CreateCredentialInstanceCommandHandler.ts
86
- var _ref$60;
86
+ var _ref$77;
87
87
  let CreateCredentialInstanceCommandHandler = class CreateCredentialInstanceCommandHandler$1 extends CommandHandler {
88
88
  constructor(credentialInstanceService) {
89
89
  super();
@@ -96,7 +96,7 @@ let CreateCredentialInstanceCommandHandler = class CreateCredentialInstanceComma
96
96
  CreateCredentialInstanceCommandHandler = __decorate([
97
97
  HandlesCommand.forCommand(CreateCredentialInstanceCommand),
98
98
  __decorateParam(0, inject(CredentialInstanceService)),
99
- __decorateMetadata("design:paramtypes", [typeof (_ref$60 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$60 : Object])
99
+ __decorateMetadata("design:paramtypes", [typeof (_ref$77 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$77 : Object])
100
100
  ], CreateCredentialInstanceCommandHandler);
101
101
 
102
102
  //#endregion
@@ -110,7 +110,7 @@ var DeleteCredentialInstanceCommand = class extends Command {
110
110
 
111
111
  //#endregion
112
112
  //#region src/application/commands/DeleteCredentialInstanceCommandHandler.ts
113
- var _ref$59;
113
+ var _ref$76;
114
114
  let DeleteCredentialInstanceCommandHandler = class DeleteCredentialInstanceCommandHandler$1 extends CommandHandler {
115
115
  constructor(credentialInstanceService) {
116
116
  super();
@@ -124,7 +124,7 @@ let DeleteCredentialInstanceCommandHandler = class DeleteCredentialInstanceComma
124
124
  DeleteCredentialInstanceCommandHandler = __decorate([
125
125
  HandlesCommand.forCommand(DeleteCredentialInstanceCommand),
126
126
  __decorateParam(0, inject(CredentialInstanceService)),
127
- __decorateMetadata("design:paramtypes", [typeof (_ref$59 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$59 : Object])
127
+ __decorateMetadata("design:paramtypes", [typeof (_ref$76 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$76 : Object])
128
128
  ], DeleteCredentialInstanceCommandHandler);
129
129
 
130
130
  //#endregion
@@ -138,7 +138,7 @@ var TestCredentialInstanceCommand = class extends Command {
138
138
 
139
139
  //#endregion
140
140
  //#region src/application/commands/TestCredentialInstanceCommandHandler.ts
141
- var _ref$58;
141
+ var _ref$75;
142
142
  let TestCredentialInstanceCommandHandler = class TestCredentialInstanceCommandHandler$1 extends CommandHandler {
143
143
  constructor(credentialTestService) {
144
144
  super();
@@ -151,7 +151,7 @@ let TestCredentialInstanceCommandHandler = class TestCredentialInstanceCommandHa
151
151
  TestCredentialInstanceCommandHandler = __decorate([
152
152
  HandlesCommand.forCommand(TestCredentialInstanceCommand),
153
153
  __decorateParam(0, inject(CredentialTestService)),
154
- __decorateMetadata("design:paramtypes", [typeof (_ref$58 = typeof CredentialTestService !== "undefined" && CredentialTestService) === "function" ? _ref$58 : Object])
154
+ __decorateMetadata("design:paramtypes", [typeof (_ref$75 = typeof CredentialTestService !== "undefined" && CredentialTestService) === "function" ? _ref$75 : Object])
155
155
  ], TestCredentialInstanceCommandHandler);
156
156
 
157
157
  //#endregion
@@ -166,7 +166,7 @@ var UpdateCredentialInstanceCommand = class extends Command {
166
166
 
167
167
  //#endregion
168
168
  //#region src/application/commands/UpdateCredentialInstanceCommandHandler.ts
169
- var _ref$57;
169
+ var _ref$74;
170
170
  let UpdateCredentialInstanceCommandHandler = class UpdateCredentialInstanceCommandHandler$1 extends CommandHandler {
171
171
  constructor(credentialInstanceService) {
172
172
  super();
@@ -179,7 +179,7 @@ let UpdateCredentialInstanceCommandHandler = class UpdateCredentialInstanceComma
179
179
  UpdateCredentialInstanceCommandHandler = __decorate([
180
180
  HandlesCommand.forCommand(UpdateCredentialInstanceCommand),
181
181
  __decorateParam(0, inject(CredentialInstanceService)),
182
- __decorateMetadata("design:paramtypes", [typeof (_ref$57 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$57 : Object])
182
+ __decorateMetadata("design:paramtypes", [typeof (_ref$74 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$74 : Object])
183
183
  ], UpdateCredentialInstanceCommandHandler);
184
184
 
185
185
  //#endregion
@@ -193,7 +193,7 @@ var UpsertCredentialBindingCommand = class extends Command {
193
193
 
194
194
  //#endregion
195
195
  //#region src/application/commands/UpsertCredentialBindingCommandHandler.ts
196
- var _ref$56;
196
+ var _ref$73;
197
197
  let UpsertCredentialBindingCommandHandler = class UpsertCredentialBindingCommandHandler$1 extends CommandHandler {
198
198
  constructor(credentialBindingService) {
199
199
  super();
@@ -206,7 +206,7 @@ let UpsertCredentialBindingCommandHandler = class UpsertCredentialBindingCommand
206
206
  UpsertCredentialBindingCommandHandler = __decorate([
207
207
  HandlesCommand.forCommand(UpsertCredentialBindingCommand),
208
208
  __decorateParam(0, inject(CredentialBindingService)),
209
- __decorateMetadata("design:paramtypes", [typeof (_ref$56 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$56 : Object])
209
+ __decorateMetadata("design:paramtypes", [typeof (_ref$73 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$73 : Object])
210
210
  ], UpsertCredentialBindingCommandHandler);
211
211
 
212
212
  //#endregion
@@ -527,7 +527,7 @@ var UserAccountService = class UserAccountService {
527
527
 
528
528
  //#endregion
529
529
  //#region src/application/commands/AcceptUserInviteCommandHandler.ts
530
- var _ref$55;
530
+ var _ref$72;
531
531
  let AcceptUserInviteCommandHandler = class AcceptUserInviteCommandHandler$1 extends CommandHandler {
532
532
  constructor(userAccounts) {
533
533
  super();
@@ -540,7 +540,7 @@ let AcceptUserInviteCommandHandler = class AcceptUserInviteCommandHandler$1 exte
540
540
  AcceptUserInviteCommandHandler = __decorate([
541
541
  HandlesCommand.forCommand(AcceptUserInviteCommand),
542
542
  __decorateParam(0, inject(UserAccountService)),
543
- __decorateMetadata("design:paramtypes", [typeof (_ref$55 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$55 : Object])
543
+ __decorateMetadata("design:paramtypes", [typeof (_ref$72 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$72 : Object])
544
544
  ], AcceptUserInviteCommandHandler);
545
545
 
546
546
  //#endregion
@@ -555,7 +555,7 @@ var InviteUserCommand = class extends Command {
555
555
 
556
556
  //#endregion
557
557
  //#region src/application/commands/InviteUserCommandHandler.ts
558
- var _ref$54;
558
+ var _ref$71;
559
559
  let InviteUserCommandHandler = class InviteUserCommandHandler$1 extends CommandHandler {
560
560
  constructor(userAccounts) {
561
561
  super();
@@ -568,7 +568,7 @@ let InviteUserCommandHandler = class InviteUserCommandHandler$1 extends CommandH
568
568
  InviteUserCommandHandler = __decorate([
569
569
  HandlesCommand.forCommand(InviteUserCommand),
570
570
  __decorateParam(0, inject(UserAccountService)),
571
- __decorateMetadata("design:paramtypes", [typeof (_ref$54 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$54 : Object])
571
+ __decorateMetadata("design:paramtypes", [typeof (_ref$71 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$71 : Object])
572
572
  ], InviteUserCommandHandler);
573
573
 
574
574
  //#endregion
@@ -583,7 +583,7 @@ var RegenerateUserInviteCommand = class extends Command {
583
583
 
584
584
  //#endregion
585
585
  //#region src/application/commands/RegenerateUserInviteCommandHandler.ts
586
- var _ref$53;
586
+ var _ref$70;
587
587
  let RegenerateUserInviteCommandHandler = class RegenerateUserInviteCommandHandler$1 extends CommandHandler {
588
588
  constructor(userAccounts) {
589
589
  super();
@@ -596,7 +596,7 @@ let RegenerateUserInviteCommandHandler = class RegenerateUserInviteCommandHandle
596
596
  RegenerateUserInviteCommandHandler = __decorate([
597
597
  HandlesCommand.forCommand(RegenerateUserInviteCommand),
598
598
  __decorateParam(0, inject(UserAccountService)),
599
- __decorateMetadata("design:paramtypes", [typeof (_ref$53 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$53 : Object])
599
+ __decorateMetadata("design:paramtypes", [typeof (_ref$70 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$70 : Object])
600
600
  ], RegenerateUserInviteCommandHandler);
601
601
 
602
602
  //#endregion
@@ -611,7 +611,7 @@ var UpdateUserAccountStatusCommand = class extends Command {
611
611
 
612
612
  //#endregion
613
613
  //#region src/application/commands/UpdateUserAccountStatusCommandHandler.ts
614
- var _ref$52;
614
+ var _ref$69;
615
615
  let UpdateUserAccountStatusCommandHandler = class UpdateUserAccountStatusCommandHandler$1 extends CommandHandler {
616
616
  constructor(userAccounts) {
617
617
  super();
@@ -624,12 +624,12 @@ let UpdateUserAccountStatusCommandHandler = class UpdateUserAccountStatusCommand
624
624
  UpdateUserAccountStatusCommandHandler = __decorate([
625
625
  HandlesCommand.forCommand(UpdateUserAccountStatusCommand),
626
626
  __decorateParam(0, inject(UserAccountService)),
627
- __decorateMetadata("design:paramtypes", [typeof (_ref$52 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$52 : Object])
627
+ __decorateMetadata("design:paramtypes", [typeof (_ref$69 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$69 : Object])
628
628
  ], UpdateUserAccountStatusCommandHandler);
629
629
 
630
630
  //#endregion
631
631
  //#region src/application/commands/UpsertLocalBootstrapUserCommandHandler.ts
632
- var _ref$51;
632
+ var _ref$68;
633
633
  let UpsertLocalBootstrapUserCommandHandler = class UpsertLocalBootstrapUserCommandHandler$1 extends CommandHandler {
634
634
  constructor(userAccounts) {
635
635
  super();
@@ -642,7 +642,7 @@ let UpsertLocalBootstrapUserCommandHandler = class UpsertLocalBootstrapUserComma
642
642
  UpsertLocalBootstrapUserCommandHandler = __decorate([
643
643
  HandlesCommand.forCommand(UpsertLocalBootstrapUserCommand),
644
644
  __decorateParam(0, inject(UserAccountService)),
645
- __decorateMetadata("design:paramtypes", [typeof (_ref$51 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$51 : Object])
645
+ __decorateMetadata("design:paramtypes", [typeof (_ref$68 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$68 : Object])
646
646
  ], UpsertLocalBootstrapUserCommandHandler);
647
647
 
648
648
  //#endregion
@@ -777,7 +777,7 @@ var HandleWebhookInvocationCommand = class extends Command {
777
777
 
778
778
  //#endregion
779
779
  //#region src/application/commands/HandleWebhookInvocationCommandHandler.ts
780
- var _ref$50;
780
+ var _ref$67;
781
781
  let HandleWebhookInvocationCommandHandler = class HandleWebhookInvocationCommandHandler$1 extends CommandHandler {
782
782
  constructor(runIntentService) {
783
783
  super();
@@ -806,7 +806,7 @@ let HandleWebhookInvocationCommandHandler = class HandleWebhookInvocationCommand
806
806
  HandleWebhookInvocationCommandHandler = __decorate([
807
807
  HandlesCommand.forCommand(HandleWebhookInvocationCommand),
808
808
  __decorateParam(0, inject(RunIntentService)),
809
- __decorateMetadata("design:paramtypes", [typeof (_ref$50 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$50 : Object])
809
+ __decorateMetadata("design:paramtypes", [typeof (_ref$67 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$67 : Object])
810
810
  ], HandleWebhookInvocationCommandHandler);
811
811
 
812
812
  //#endregion
@@ -897,7 +897,7 @@ var ReplayWorkflowNodeCommand = class extends Command {
897
897
 
898
898
  //#endregion
899
899
  //#region src/application/commands/ReplayWorkflowNodeCommandHandler.ts
900
- var _ref$49, _ref2$13, _ref3$7;
900
+ var _ref$66, _ref2$15, _ref3$9;
901
901
  let ReplayWorkflowNodeCommandHandler = class ReplayWorkflowNodeCommandHandler$1 extends CommandHandler {
902
902
  constructor(engine, itemsInputNormalizer, runIntentService, workflowRunRepository) {
903
903
  super();
@@ -984,9 +984,9 @@ ReplayWorkflowNodeCommandHandler = __decorate([
984
984
  __decorateParam(2, inject(RunIntentService)),
985
985
  __decorateParam(3, inject(ApplicationTokens.WorkflowRunRepository)),
986
986
  __decorateMetadata("design:paramtypes", [
987
- typeof (_ref$49 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$49 : Object,
988
- typeof (_ref2$13 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref2$13 : Object,
989
- typeof (_ref3$7 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref3$7 : Object,
987
+ typeof (_ref$66 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$66 : Object,
988
+ typeof (_ref2$15 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref2$15 : Object,
989
+ typeof (_ref3$9 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref3$9 : Object,
990
990
  Object
991
991
  ])
992
992
  ], ReplayWorkflowNodeCommandHandler);
@@ -1004,7 +1004,7 @@ var SetPinnedNodeInputCommand = class extends Command {
1004
1004
 
1005
1005
  //#endregion
1006
1006
  //#region src/application/commands/SetPinnedNodeInputCommandHandler.ts
1007
- var _ref$48;
1007
+ var _ref$65;
1008
1008
  let SetPinnedNodeInputCommandHandler = class SetPinnedNodeInputCommandHandler$1 extends CommandHandler {
1009
1009
  constructor(workflowRunRepository, itemsInputNormalizer) {
1010
1010
  super();
@@ -1037,7 +1037,7 @@ SetPinnedNodeInputCommandHandler = __decorate([
1037
1037
  HandlesCommand.forCommand(SetPinnedNodeInputCommand),
1038
1038
  __decorateParam(0, inject(ApplicationTokens.WorkflowRunRepository)),
1039
1039
  __decorateParam(1, inject(ItemsInputNormalizer)),
1040
- __decorateMetadata("design:paramtypes", [Object, typeof (_ref$48 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref$48 : Object])
1040
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$65 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref$65 : Object])
1041
1041
  ], SetPinnedNodeInputCommandHandler);
1042
1042
 
1043
1043
  //#endregion
@@ -1089,7 +1089,7 @@ WorkflowActivationPreflightRules = __decorate([injectable(), __decorateMetadata(
1089
1089
 
1090
1090
  //#endregion
1091
1091
  //#region src/domain/workflows/WorkflowActivationPreflight.ts
1092
- var _ref$47, _ref2$12;
1092
+ var _ref$64, _ref2$14;
1093
1093
  let WorkflowActivationPreflight = class WorkflowActivationPreflight$1 {
1094
1094
  constructor(workflowRepository, credentialBindingService, rules) {
1095
1095
  this.workflowRepository = workflowRepository;
@@ -1112,8 +1112,8 @@ WorkflowActivationPreflight = __decorate([
1112
1112
  __decorateParam(2, inject(WorkflowActivationPreflightRules)),
1113
1113
  __decorateMetadata("design:paramtypes", [
1114
1114
  Object,
1115
- typeof (_ref$47 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$47 : Object,
1116
- typeof (_ref2$12 = typeof WorkflowActivationPreflightRules !== "undefined" && WorkflowActivationPreflightRules) === "function" ? _ref2$12 : Object
1115
+ typeof (_ref$64 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$64 : Object,
1116
+ typeof (_ref2$14 = typeof WorkflowActivationPreflightRules !== "undefined" && WorkflowActivationPreflightRules) === "function" ? _ref2$14 : Object
1117
1117
  ])
1118
1118
  ], WorkflowActivationPreflight);
1119
1119
 
@@ -1147,7 +1147,7 @@ var SetWorkflowActivationCommand = class extends Command {
1147
1147
 
1148
1148
  //#endregion
1149
1149
  //#region src/application/commands/SetWorkflowActivationCommandHandler.ts
1150
- var _ref$46, _ref2$11, _ref3$6;
1150
+ var _ref$63, _ref2$13, _ref3$8;
1151
1151
  let SetWorkflowActivationCommandHandler = class SetWorkflowActivationCommandHandler$1 extends CommandHandler {
1152
1152
  constructor(workflowActivationRepository, workflowActivationPolicy, engine, workflowActivationPreflight) {
1153
1153
  super();
@@ -1173,9 +1173,9 @@ SetWorkflowActivationCommandHandler = __decorate([
1173
1173
  __decorateParam(3, inject(WorkflowActivationPreflight)),
1174
1174
  __decorateMetadata("design:paramtypes", [
1175
1175
  Object,
1176
- typeof (_ref$46 = typeof RuntimeWorkflowActivationPolicy !== "undefined" && RuntimeWorkflowActivationPolicy) === "function" ? _ref$46 : Object,
1177
- typeof (_ref2$11 = typeof Engine !== "undefined" && Engine) === "function" ? _ref2$11 : Object,
1178
- typeof (_ref3$6 = typeof WorkflowActivationPreflight !== "undefined" && WorkflowActivationPreflight) === "function" ? _ref3$6 : Object
1176
+ typeof (_ref$63 = typeof RuntimeWorkflowActivationPolicy !== "undefined" && RuntimeWorkflowActivationPolicy) === "function" ? _ref$63 : Object,
1177
+ typeof (_ref2$13 = typeof Engine !== "undefined" && Engine) === "function" ? _ref2$13 : Object,
1178
+ typeof (_ref3$8 = typeof WorkflowActivationPreflight !== "undefined" && WorkflowActivationPreflight) === "function" ? _ref3$8 : Object
1179
1179
  ])
1180
1180
  ], SetWorkflowActivationCommandHandler);
1181
1181
 
@@ -1190,7 +1190,7 @@ var StartWorkflowRunCommand = class extends Command {
1190
1190
 
1191
1191
  //#endregion
1192
1192
  //#region src/application/commands/StartWorkflowRunCommandHandler.ts
1193
- var _ref$45, _ref2$10, _ref3$5;
1193
+ var _ref$62, _ref2$12, _ref3$7;
1194
1194
  let StartWorkflowRunCommandHandler = class StartWorkflowRunCommandHandler$1 extends CommandHandler {
1195
1195
  routesLog;
1196
1196
  constructor(engine, itemsInputNormalizer, runIntentService, workflowDefinitionRepository, workflowRunRepository, workflowDebuggerOverlayRepository, loggerFactory) {
@@ -1363,9 +1363,9 @@ StartWorkflowRunCommandHandler = __decorate([
1363
1363
  __decorateParam(5, inject(ApplicationTokens.WorkflowDebuggerOverlayRepository)),
1364
1364
  __decorateParam(6, inject(ApplicationTokens.LoggerFactory)),
1365
1365
  __decorateMetadata("design:paramtypes", [
1366
- typeof (_ref$45 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$45 : Object,
1367
- typeof (_ref2$10 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref2$10 : Object,
1368
- typeof (_ref3$5 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref3$5 : Object,
1366
+ typeof (_ref$62 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$62 : Object,
1367
+ typeof (_ref2$12 = typeof ItemsInputNormalizer !== "undefined" && ItemsInputNormalizer) === "function" ? _ref2$12 : Object,
1368
+ typeof (_ref3$7 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref3$7 : Object,
1369
1369
  Object,
1370
1370
  Object,
1371
1371
  Object,
@@ -1469,7 +1469,7 @@ var UploadOverlayPinnedBinaryCommand = class extends Command {
1469
1469
 
1470
1470
  //#endregion
1471
1471
  //#region src/application/commands/UploadOverlayPinnedBinaryCommandHandler.ts
1472
- var _ref$44;
1472
+ var _ref$61;
1473
1473
  let UploadOverlayPinnedBinaryCommandHandler = class UploadOverlayPinnedBinaryCommandHandler$1 extends CommandHandler {
1474
1474
  constructor(overlayPinnedBinaryUpload) {
1475
1475
  super();
@@ -1490,7 +1490,7 @@ let UploadOverlayPinnedBinaryCommandHandler = class UploadOverlayPinnedBinaryCom
1490
1490
  UploadOverlayPinnedBinaryCommandHandler = __decorate([
1491
1491
  HandlesCommand.forCommand(UploadOverlayPinnedBinaryCommand),
1492
1492
  __decorateParam(0, inject(OverlayPinnedBinaryUploadService)),
1493
- __decorateMetadata("design:paramtypes", [typeof (_ref$44 = typeof OverlayPinnedBinaryUploadService !== "undefined" && OverlayPinnedBinaryUploadService) === "function" ? _ref$44 : Object])
1493
+ __decorateMetadata("design:paramtypes", [typeof (_ref$61 = typeof OverlayPinnedBinaryUploadService !== "undefined" && OverlayPinnedBinaryUploadService) === "function" ? _ref$61 : Object])
1494
1494
  ], UploadOverlayPinnedBinaryCommandHandler);
1495
1495
 
1496
1496
  //#endregion
@@ -1520,7 +1520,7 @@ var HandlesQuery = class {
1520
1520
 
1521
1521
  //#endregion
1522
1522
  //#region src/application/queries/GetCredentialInstanceQueryHandler.ts
1523
- var _ref$43;
1523
+ var _ref$60;
1524
1524
  let GetCredentialInstanceQueryHandler = class GetCredentialInstanceQueryHandler$1 extends QueryHandler {
1525
1525
  constructor(credentialInstanceService) {
1526
1526
  super();
@@ -1533,7 +1533,7 @@ let GetCredentialInstanceQueryHandler = class GetCredentialInstanceQueryHandler$
1533
1533
  GetCredentialInstanceQueryHandler = __decorate([
1534
1534
  HandlesQuery.for(GetCredentialInstanceQuery),
1535
1535
  __decorateParam(0, inject(CredentialInstanceService)),
1536
- __decorateMetadata("design:paramtypes", [typeof (_ref$43 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$43 : Object])
1536
+ __decorateMetadata("design:paramtypes", [typeof (_ref$60 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$60 : Object])
1537
1537
  ], GetCredentialInstanceQueryHandler);
1538
1538
 
1539
1539
  //#endregion
@@ -1547,7 +1547,7 @@ var GetCredentialInstanceWithSecretsQuery = class extends Query {
1547
1547
 
1548
1548
  //#endregion
1549
1549
  //#region src/application/queries/GetCredentialInstanceWithSecretsQueryHandler.ts
1550
- var _ref$42;
1550
+ var _ref$59;
1551
1551
  let GetCredentialInstanceWithSecretsQueryHandler = class GetCredentialInstanceWithSecretsQueryHandler$1 extends QueryHandler {
1552
1552
  constructor(credentialInstanceService) {
1553
1553
  super();
@@ -1560,7 +1560,7 @@ let GetCredentialInstanceWithSecretsQueryHandler = class GetCredentialInstanceWi
1560
1560
  GetCredentialInstanceWithSecretsQueryHandler = __decorate([
1561
1561
  HandlesQuery.for(GetCredentialInstanceWithSecretsQuery),
1562
1562
  __decorateParam(0, inject(CredentialInstanceService)),
1563
- __decorateMetadata("design:paramtypes", [typeof (_ref$42 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$42 : Object])
1563
+ __decorateMetadata("design:paramtypes", [typeof (_ref$59 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$59 : Object])
1564
1564
  ], GetCredentialInstanceWithSecretsQueryHandler);
1565
1565
 
1566
1566
  //#endregion
@@ -1574,7 +1574,7 @@ var GetWorkflowCredentialHealthQuery = class extends Query {
1574
1574
 
1575
1575
  //#endregion
1576
1576
  //#region src/application/queries/GetWorkflowCredentialHealthQueryHandler.ts
1577
- var _ref$41;
1577
+ var _ref$58;
1578
1578
  let GetWorkflowCredentialHealthQueryHandler = class GetWorkflowCredentialHealthQueryHandler$1 extends QueryHandler {
1579
1579
  constructor(credentialBindingService) {
1580
1580
  super();
@@ -1587,7 +1587,7 @@ let GetWorkflowCredentialHealthQueryHandler = class GetWorkflowCredentialHealthQ
1587
1587
  GetWorkflowCredentialHealthQueryHandler = __decorate([
1588
1588
  HandlesQuery.for(GetWorkflowCredentialHealthQuery),
1589
1589
  __decorateParam(0, inject(CredentialBindingService)),
1590
- __decorateMetadata("design:paramtypes", [typeof (_ref$41 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$41 : Object])
1590
+ __decorateMetadata("design:paramtypes", [typeof (_ref$58 = typeof CredentialBindingService !== "undefined" && CredentialBindingService) === "function" ? _ref$58 : Object])
1591
1591
  ], GetWorkflowCredentialHealthQueryHandler);
1592
1592
 
1593
1593
  //#endregion
@@ -1596,7 +1596,7 @@ var ListCredentialInstancesQuery = class extends Query {};
1596
1596
 
1597
1597
  //#endregion
1598
1598
  //#region src/application/queries/ListCredentialInstancesQueryHandler.ts
1599
- var _ref$40;
1599
+ var _ref$57;
1600
1600
  let ListCredentialInstancesQueryHandler = class ListCredentialInstancesQueryHandler$1 extends QueryHandler {
1601
1601
  constructor(credentialInstanceService) {
1602
1602
  super();
@@ -1609,7 +1609,7 @@ let ListCredentialInstancesQueryHandler = class ListCredentialInstancesQueryHand
1609
1609
  ListCredentialInstancesQueryHandler = __decorate([
1610
1610
  HandlesQuery.for(ListCredentialInstancesQuery),
1611
1611
  __decorateParam(0, inject(CredentialInstanceService)),
1612
- __decorateMetadata("design:paramtypes", [typeof (_ref$40 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$40 : Object])
1612
+ __decorateMetadata("design:paramtypes", [typeof (_ref$57 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$57 : Object])
1613
1613
  ], ListCredentialInstancesQueryHandler);
1614
1614
 
1615
1615
  //#endregion
@@ -1618,7 +1618,7 @@ var ListCredentialTypesQuery = class extends Query {};
1618
1618
 
1619
1619
  //#endregion
1620
1620
  //#region src/application/queries/ListCredentialTypesQueryHandler.ts
1621
- var _ref$39;
1621
+ var _ref$56;
1622
1622
  let ListCredentialTypesQueryHandler = class ListCredentialTypesQueryHandler$1 extends QueryHandler {
1623
1623
  constructor(credentialTypeRegistry) {
1624
1624
  super();
@@ -1631,7 +1631,7 @@ let ListCredentialTypesQueryHandler = class ListCredentialTypesQueryHandler$1 ex
1631
1631
  ListCredentialTypesQueryHandler = __decorate([
1632
1632
  HandlesQuery.for(ListCredentialTypesQuery),
1633
1633
  __decorateParam(0, inject(CredentialTypeRegistryImpl)),
1634
- __decorateMetadata("design:paramtypes", [typeof (_ref$39 = typeof CredentialTypeRegistryImpl !== "undefined" && CredentialTypeRegistryImpl) === "function" ? _ref$39 : Object])
1634
+ __decorateMetadata("design:paramtypes", [typeof (_ref$56 = typeof CredentialTypeRegistryImpl !== "undefined" && CredentialTypeRegistryImpl) === "function" ? _ref$56 : Object])
1635
1635
  ], ListCredentialTypesQueryHandler);
1636
1636
 
1637
1637
  //#endregion
@@ -1640,7 +1640,7 @@ var GetCredentialFieldEnvStatusQuery = class extends Query {};
1640
1640
 
1641
1641
  //#endregion
1642
1642
  //#region src/application/queries/GetCredentialFieldEnvStatusQueryHandler.ts
1643
- var _ref$38;
1643
+ var _ref$55;
1644
1644
  let GetCredentialFieldEnvStatusQueryHandler = class GetCredentialFieldEnvStatusQueryHandler$1 extends QueryHandler {
1645
1645
  constructor(credentialTypeRegistry, appConfig) {
1646
1646
  super();
@@ -1669,12 +1669,12 @@ GetCredentialFieldEnvStatusQueryHandler = __decorate([
1669
1669
  HandlesQuery.for(GetCredentialFieldEnvStatusQuery),
1670
1670
  __decorateParam(0, inject(CredentialTypeRegistryImpl)),
1671
1671
  __decorateParam(1, inject(ApplicationTokens.AppConfig)),
1672
- __decorateMetadata("design:paramtypes", [typeof (_ref$38 = typeof CredentialTypeRegistryImpl !== "undefined" && CredentialTypeRegistryImpl) === "function" ? _ref$38 : Object, Object])
1672
+ __decorateMetadata("design:paramtypes", [typeof (_ref$55 = typeof CredentialTypeRegistryImpl !== "undefined" && CredentialTypeRegistryImpl) === "function" ? _ref$55 : Object, Object])
1673
1673
  ], GetCredentialFieldEnvStatusQueryHandler);
1674
1674
 
1675
1675
  //#endregion
1676
1676
  //#region src/application/queries/ListUserAccountsQueryHandler.ts
1677
- var _ref$37;
1677
+ var _ref$54;
1678
1678
  let ListUserAccountsQueryHandler = class ListUserAccountsQueryHandler$1 extends QueryHandler {
1679
1679
  constructor(userAccounts) {
1680
1680
  super();
@@ -1687,7 +1687,7 @@ let ListUserAccountsQueryHandler = class ListUserAccountsQueryHandler$1 extends
1687
1687
  ListUserAccountsQueryHandler = __decorate([
1688
1688
  HandlesQuery.for(ListUserAccountsQuery),
1689
1689
  __decorateParam(0, inject(UserAccountService)),
1690
- __decorateMetadata("design:paramtypes", [typeof (_ref$37 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$37 : Object])
1690
+ __decorateMetadata("design:paramtypes", [typeof (_ref$54 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$54 : Object])
1691
1691
  ], ListUserAccountsQueryHandler);
1692
1692
 
1693
1693
  //#endregion
@@ -1701,7 +1701,7 @@ var VerifyUserInviteQuery = class extends Query {
1701
1701
 
1702
1702
  //#endregion
1703
1703
  //#region src/application/queries/VerifyUserInviteQueryHandler.ts
1704
- var _ref$36;
1704
+ var _ref$53;
1705
1705
  let VerifyUserInviteQueryHandler = class VerifyUserInviteQueryHandler$1 extends QueryHandler {
1706
1706
  constructor(userAccounts) {
1707
1707
  super();
@@ -1714,7 +1714,7 @@ let VerifyUserInviteQueryHandler = class VerifyUserInviteQueryHandler$1 extends
1714
1714
  VerifyUserInviteQueryHandler = __decorate([
1715
1715
  HandlesQuery.for(VerifyUserInviteQuery),
1716
1716
  __decorateParam(0, inject(UserAccountService)),
1717
- __decorateMetadata("design:paramtypes", [typeof (_ref$36 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$36 : Object])
1717
+ __decorateMetadata("design:paramtypes", [typeof (_ref$53 = typeof UserAccountService !== "undefined" && UserAccountService) === "function" ? _ref$53 : Object])
1718
1718
  ], VerifyUserInviteQueryHandler);
1719
1719
 
1720
1720
  //#endregion
@@ -1807,7 +1807,7 @@ var GetRunBinaryAttachmentQuery = class extends Query {
1807
1807
 
1808
1808
  //#endregion
1809
1809
  //#region src/application/queries/GetRunBinaryAttachmentQueryHandler.ts
1810
- var _ref$35;
1810
+ var _ref$52;
1811
1811
  let GetRunBinaryAttachmentQueryHandler = class GetRunBinaryAttachmentQueryHandler$1 extends QueryHandler {
1812
1812
  constructor(lookupService) {
1813
1813
  super();
@@ -1820,7 +1820,7 @@ let GetRunBinaryAttachmentQueryHandler = class GetRunBinaryAttachmentQueryHandle
1820
1820
  GetRunBinaryAttachmentQueryHandler = __decorate([
1821
1821
  HandlesQuery.for(GetRunBinaryAttachmentQuery),
1822
1822
  __decorateParam(0, inject(RunBinaryAttachmentLookupService)),
1823
- __decorateMetadata("design:paramtypes", [typeof (_ref$35 = typeof RunBinaryAttachmentLookupService !== "undefined" && RunBinaryAttachmentLookupService) === "function" ? _ref$35 : Object])
1823
+ __decorateMetadata("design:paramtypes", [typeof (_ref$52 = typeof RunBinaryAttachmentLookupService !== "undefined" && RunBinaryAttachmentLookupService) === "function" ? _ref$52 : Object])
1824
1824
  ], GetRunBinaryAttachmentQueryHandler);
1825
1825
 
1826
1826
  //#endregion
@@ -1849,6 +1849,696 @@ GetRunStateQueryHandler = __decorate([
1849
1849
  __decorateMetadata("design:paramtypes", [Object])
1850
1850
  ], GetRunStateQueryHandler);
1851
1851
 
1852
+ //#endregion
1853
+ //#region src/application/telemetry/OtelIdentityFactory.ts
1854
+ let OtelIdentityFactory = class OtelIdentityFactory$1 {
1855
+ createTraceId(runId) {
1856
+ return this.hashToHex(runId, 32);
1857
+ }
1858
+ createRootSpanId(runId) {
1859
+ return this.hashToHex(`run:${runId}`, 16);
1860
+ }
1861
+ createNodeSpanId(activationId) {
1862
+ return this.hashToHex(`activation:${activationId}`, 16);
1863
+ }
1864
+ createConnectionInvocationSpanId(invocationId) {
1865
+ return this.hashToHex(`invocation:${invocationId}`, 16);
1866
+ }
1867
+ createArtifactId() {
1868
+ return randomBytes(16).toString("hex");
1869
+ }
1870
+ createEphemeralSpanId() {
1871
+ return randomBytes(8).toString("hex");
1872
+ }
1873
+ hashToHex(value, length) {
1874
+ const hex = createHash("sha256").update(value).digest("hex").slice(0, length);
1875
+ return this.ensureNonZeroHex(hex, length);
1876
+ }
1877
+ ensureNonZeroHex(hex, length) {
1878
+ if (!/^0+$/.test(hex)) return hex;
1879
+ return `${"0".repeat(Math.max(0, length - 1))}1`;
1880
+ }
1881
+ };
1882
+ OtelIdentityFactory = __decorate([injectable()], OtelIdentityFactory);
1883
+
1884
+ //#endregion
1885
+ //#region src/application/telemetry/TelemetryQueryService.ts
1886
+ var _ref$51, _TelemetryQueryService;
1887
+ let TelemetryQueryService = class TelemetryQueryService$1 {
1888
+ static {
1889
+ _TelemetryQueryService = this;
1890
+ }
1891
+ static workflowRunSpanName = "workflow.run";
1892
+ static queryScanLimit = 5e4;
1893
+ static maxBucketCount = 180;
1894
+ constructor(telemetrySpanStore, telemetryArtifactStore, telemetryMetricPointStore, workflowRunRepository, runTraceContextRepository, otelIdentityFactory) {
1895
+ this.telemetrySpanStore = telemetrySpanStore;
1896
+ this.telemetryArtifactStore = telemetryArtifactStore;
1897
+ this.telemetryMetricPointStore = telemetryMetricPointStore;
1898
+ this.workflowRunRepository = workflowRunRepository;
1899
+ this.runTraceContextRepository = runTraceContextRepository;
1900
+ this.otelIdentityFactory = otelIdentityFactory;
1901
+ }
1902
+ async summarizeRuns(filters = {}) {
1903
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1904
+ const totalDurationMs = spans.reduce((sum, span) => sum + this.durationMs(span), 0);
1905
+ const totalRuns = spans.length;
1906
+ return {
1907
+ totalRuns,
1908
+ completedRuns: spans.filter((span) => span.status === "completed").length,
1909
+ failedRuns: spans.filter((span) => span.status === "failed").length,
1910
+ runningRuns: spans.filter((span) => span.status === "running").length,
1911
+ averageDurationMs: totalRuns === 0 ? 0 : Math.round(totalDurationMs / totalRuns)
1912
+ };
1913
+ }
1914
+ async summarizeAiUsage(filters = {}) {
1915
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1916
+ if (spans.length === 0) return {
1917
+ inputTokens: 0,
1918
+ outputTokens: 0,
1919
+ totalTokens: 0,
1920
+ cachedInputTokens: 0,
1921
+ reasoningTokens: 0
1922
+ };
1923
+ const points = await this.listAiMetricPoints(filters, spans.map((span) => span.runId));
1924
+ return {
1925
+ inputTokens: this.sumMetric(points, GenAiTelemetryAttributeNames.usageInputTokens),
1926
+ outputTokens: this.sumMetric(points, GenAiTelemetryAttributeNames.usageOutputTokens),
1927
+ totalTokens: this.sumMetric(points, GenAiTelemetryAttributeNames.usageTotalTokens),
1928
+ cachedInputTokens: this.sumMetric(points, GenAiTelemetryAttributeNames.usageCacheReadInputTokens),
1929
+ reasoningTokens: this.sumMetric(points, GenAiTelemetryAttributeNames.usageReasoningTokens)
1930
+ };
1931
+ }
1932
+ async summarizeCosts(filters = {}) {
1933
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1934
+ if (spans.length === 0) return { currencies: [] };
1935
+ const costModelNamesBySpanId = await this.loadCostModelNamesBySpanId(filters, spans.map((span) => span.runId));
1936
+ const points = await this.listCostMetricPoints(filters, spans.map((span) => span.runId));
1937
+ return { currencies: this.buildCostCurrencyTotals(points, spans.length, costModelNamesBySpanId) };
1938
+ }
1939
+ async summarizeRunsTimeseries(filters, interval) {
1940
+ const buckets = this.createBuckets(filters, interval);
1941
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1942
+ for (const span of spans) {
1943
+ const bucket = this.findBucket(buckets, span.endTime ?? span.startTime);
1944
+ if (!bucket) continue;
1945
+ bucket.totalRuns += 1;
1946
+ if (span.status === "completed") bucket.completedRuns += 1;
1947
+ else if (span.status === "failed") bucket.failedRuns += 1;
1948
+ else if (span.status === "running") bucket.runningRuns += 1;
1949
+ bucket.averageDurationMs += this.durationMs(span);
1950
+ bucket.durationSamples += 1;
1951
+ }
1952
+ return {
1953
+ interval,
1954
+ buckets: buckets.map((bucket) => this.toTimeseriesBucketDto(bucket))
1955
+ };
1956
+ }
1957
+ async summarizeAiUsageTimeseries(filters, interval) {
1958
+ const buckets = this.createBuckets(filters, interval);
1959
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1960
+ if (spans.length === 0) return {
1961
+ interval,
1962
+ buckets: buckets.map((bucket) => this.toTimeseriesBucketDto(bucket))
1963
+ };
1964
+ const points = await this.listAiMetricPoints(filters, spans.map((span) => span.runId));
1965
+ for (const point of points) {
1966
+ const bucket = this.findBucket(buckets, point.observedAt);
1967
+ if (!bucket) continue;
1968
+ if (point.metricName === GenAiTelemetryAttributeNames.usageInputTokens) bucket.inputTokens += point.value;
1969
+ else if (point.metricName === GenAiTelemetryAttributeNames.usageOutputTokens) bucket.outputTokens += point.value;
1970
+ else if (point.metricName === GenAiTelemetryAttributeNames.usageTotalTokens) bucket.totalTokens += point.value;
1971
+ else if (point.metricName === GenAiTelemetryAttributeNames.usageCacheReadInputTokens) bucket.cachedInputTokens += point.value;
1972
+ else if (point.metricName === GenAiTelemetryAttributeNames.usageReasoningTokens) bucket.reasoningTokens += point.value;
1973
+ }
1974
+ return {
1975
+ interval,
1976
+ buckets: buckets.map((bucket) => this.toTimeseriesBucketDto(bucket))
1977
+ };
1978
+ }
1979
+ async summarizeCostsTimeseries(filters, interval) {
1980
+ const buckets = this.createBuckets(filters, interval);
1981
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
1982
+ if (spans.length === 0) return {
1983
+ interval,
1984
+ buckets: buckets.map((bucket) => this.toTimeseriesBucketDto(bucket))
1985
+ };
1986
+ const costModelNamesBySpanId = await this.loadCostModelNamesBySpanId(filters, spans.map((span) => span.runId));
1987
+ const points = await this.listCostMetricPoints(filters, spans.map((span) => span.runId));
1988
+ for (const point of points) {
1989
+ const bucket = this.findBucket(buckets, point.observedAt);
1990
+ if (!bucket) continue;
1991
+ this.addCostPointToBucket(bucket, point, costModelNamesBySpanId);
1992
+ }
1993
+ return {
1994
+ interval,
1995
+ buckets: buckets.map((bucket) => this.toTimeseriesBucketDto(bucket))
1996
+ };
1997
+ }
1998
+ async listModelNames(filters = {}) {
1999
+ const spans = await this.resolveFilteredWorkflowRunSpans(filters);
2000
+ if (spans.length === 0) return { modelNames: [] };
2001
+ const modelSpans = await this.telemetrySpanStore.list({
2002
+ workflowId: filters.workflowId,
2003
+ workflowIds: filters.workflowIds,
2004
+ runIds: [...new Set(spans.map((span) => span.runId))],
2005
+ startTimeGte: filters.startTimeGte,
2006
+ endTimeLte: filters.endTimeLte,
2007
+ limit: _TelemetryQueryService.queryScanLimit + 1
2008
+ });
2009
+ this.throwWhenQueryLimitExceeded(modelSpans.length);
2010
+ return { modelNames: [...new Set(modelSpans.flatMap((span) => span.modelName ? [span.modelName] : []))].sort((a$1, b$2) => a$1.localeCompare(b$2)) };
2011
+ }
2012
+ async listRuns(request) {
2013
+ const spans = await this.resolveFilteredWorkflowRunSpans(request.filters);
2014
+ const originByRunId = await this.loadRunOrigins(spans.map((span) => span.runId));
2015
+ const costsByRunId = await this.loadCostsByRunId(request.filters, spans.map((span) => span.runId));
2016
+ const items = spans.slice().sort((left, right) => right.startTime.localeCompare(left.startTime)).map((span) => ({
2017
+ runId: span.runId,
2018
+ workflowId: span.workflowId,
2019
+ status: span.status ?? "running",
2020
+ origin: originByRunId.get(span.runId) ?? "triggered",
2021
+ startedAt: span.startTime ?? span.endTime ?? (/* @__PURE__ */ new Date(0)).toISOString(),
2022
+ finishedAt: span.endTime,
2023
+ costs: costsByRunId.get(span.runId) ?? []
2024
+ }));
2025
+ const offset = (request.page - 1) * request.pageSize;
2026
+ return {
2027
+ items: items.slice(offset, offset + request.pageSize),
2028
+ totalCount: items.length,
2029
+ page: request.page,
2030
+ pageSize: request.pageSize
2031
+ };
2032
+ }
2033
+ async loadRunTrace(runId) {
2034
+ const traceId = (await this.runTraceContextRepository.load(runId))?.traceId ?? this.otelIdentityFactory.createTraceId(runId);
2035
+ const [spans, artifacts, metricPoints] = await Promise.all([
2036
+ this.telemetrySpanStore.listByTraceId(traceId),
2037
+ this.telemetryArtifactStore.listByTraceId(traceId),
2038
+ this.telemetryMetricPointStore.list({
2039
+ runId,
2040
+ traceId,
2041
+ limit: _TelemetryQueryService.queryScanLimit + 1
2042
+ })
2043
+ ]);
2044
+ this.throwWhenQueryLimitExceeded(metricPoints.length);
2045
+ return {
2046
+ traceId,
2047
+ runId,
2048
+ spans,
2049
+ artifacts,
2050
+ metricPoints
2051
+ };
2052
+ }
2053
+ durationMs(span) {
2054
+ if (!span.startTime || !span.endTime) return 0;
2055
+ return Math.max(0, new Date(span.endTime).getTime() - new Date(span.startTime).getTime());
2056
+ }
2057
+ async listWorkflowRunSpans(filters) {
2058
+ const spans = await this.telemetrySpanStore.list({
2059
+ workflowId: filters.workflowId,
2060
+ workflowIds: filters.workflowIds,
2061
+ statuses: filters.statuses,
2062
+ names: [_TelemetryQueryService.workflowRunSpanName],
2063
+ startTimeGte: filters.startTimeGte,
2064
+ endTimeLte: filters.endTimeLte,
2065
+ limit: _TelemetryQueryService.queryScanLimit + 1
2066
+ });
2067
+ this.throwWhenQueryLimitExceeded(spans.length);
2068
+ return spans.filter((span) => Boolean(span.startTime));
2069
+ }
2070
+ sumMetric(points, metricName) {
2071
+ return points.filter((point) => point.metricName === metricName).reduce((sum, point) => sum + point.value, 0);
2072
+ }
2073
+ async resolveFilteredWorkflowRunSpans(filters) {
2074
+ const spans = await this.listWorkflowRunSpans(filters);
2075
+ if (spans.length === 0) return [];
2076
+ const eligibleRunIds = await this.resolveEligibleRunIds(filters, spans);
2077
+ if (eligibleRunIds === null) return spans;
2078
+ return spans.filter((span) => eligibleRunIds.has(span.runId));
2079
+ }
2080
+ async resolveEligibleRunIds(filters, spans) {
2081
+ let eligibleRunIds = null;
2082
+ if (filters.modelNames && filters.modelNames.length > 0) eligibleRunIds = await this.listModelMatchedRunIds(filters);
2083
+ if (this.shouldApplyRunOriginFilter(filters.runOrigins)) {
2084
+ const originMatchedRunIds = await this.listOriginMatchedRunIds(spans, filters.runOrigins);
2085
+ eligibleRunIds = eligibleRunIds ? this.intersectRunIds(eligibleRunIds, originMatchedRunIds) : originMatchedRunIds;
2086
+ }
2087
+ return eligibleRunIds;
2088
+ }
2089
+ async listModelMatchedRunIds(filters) {
2090
+ const spans = await this.telemetrySpanStore.list({
2091
+ workflowId: filters.workflowId,
2092
+ workflowIds: filters.workflowIds,
2093
+ modelNames: filters.modelNames,
2094
+ startTimeGte: filters.startTimeGte,
2095
+ endTimeLte: filters.endTimeLte,
2096
+ limit: _TelemetryQueryService.queryScanLimit + 1
2097
+ });
2098
+ this.throwWhenQueryLimitExceeded(spans.length);
2099
+ return new Set(spans.map((span) => span.runId));
2100
+ }
2101
+ async listOriginMatchedRunIds(spans, runOrigins) {
2102
+ const originByRunId = await this.loadRunOrigins(spans.map((span) => span.runId));
2103
+ const matchedRunIds = /* @__PURE__ */ new Set();
2104
+ for (const span of spans) {
2105
+ const origin = originByRunId.get(span.runId) ?? "triggered";
2106
+ if (runOrigins.includes(origin)) matchedRunIds.add(span.runId);
2107
+ }
2108
+ return matchedRunIds;
2109
+ }
2110
+ async loadRunOrigins(runIds) {
2111
+ const uniqueRunIds = [...new Set(runIds)];
2112
+ const states = await Promise.all(uniqueRunIds.map(async (runId) => await this.workflowRunRepository.load(runId)));
2113
+ const originByRunId = /* @__PURE__ */ new Map();
2114
+ for (const state of states) {
2115
+ if (!state) continue;
2116
+ const mode = state.executionOptions?.mode;
2117
+ originByRunId.set(state.runId, mode === "manual" || mode === "debug" ? "manual" : "triggered");
2118
+ }
2119
+ return originByRunId;
2120
+ }
2121
+ intersectRunIds(left, right) {
2122
+ const intersection = /* @__PURE__ */ new Set();
2123
+ for (const value of left) if (right.has(value)) intersection.add(value);
2124
+ return intersection;
2125
+ }
2126
+ shouldApplyRunOriginFilter(runOrigins) {
2127
+ return Boolean(runOrigins && runOrigins.length > 0 && runOrigins.length < 2);
2128
+ }
2129
+ async listAiMetricPoints(filters, runIds) {
2130
+ const points = await this.telemetryMetricPointStore.list({
2131
+ workflowId: filters.workflowId,
2132
+ workflowIds: filters.workflowIds,
2133
+ runIds: runIds.length > 0 ? runIds : void 0,
2134
+ modelNames: filters.modelNames,
2135
+ metricNames: [
2136
+ GenAiTelemetryAttributeNames.usageInputTokens,
2137
+ GenAiTelemetryAttributeNames.usageOutputTokens,
2138
+ GenAiTelemetryAttributeNames.usageTotalTokens,
2139
+ GenAiTelemetryAttributeNames.usageCacheReadInputTokens,
2140
+ GenAiTelemetryAttributeNames.usageReasoningTokens
2141
+ ],
2142
+ observedAtGte: filters.startTimeGte,
2143
+ observedAtLte: filters.endTimeLte,
2144
+ limit: _TelemetryQueryService.queryScanLimit + 1
2145
+ });
2146
+ this.throwWhenQueryLimitExceeded(points.length);
2147
+ return points;
2148
+ }
2149
+ async listCostMetricPoints(filters, runIds) {
2150
+ const points = await this.telemetryMetricPointStore.list({
2151
+ workflowId: filters.workflowId,
2152
+ workflowIds: filters.workflowIds,
2153
+ runIds: runIds.length > 0 ? runIds : void 0,
2154
+ modelNames: filters.modelNames,
2155
+ metricNames: [CostTrackingTelemetryMetricNames.estimatedCost],
2156
+ observedAtGte: filters.startTimeGte,
2157
+ observedAtLte: filters.endTimeLte,
2158
+ limit: _TelemetryQueryService.queryScanLimit + 1
2159
+ });
2160
+ this.throwWhenQueryLimitExceeded(points.length);
2161
+ return points;
2162
+ }
2163
+ async loadCostsByRunId(filters, runIds) {
2164
+ if (runIds.length === 0) return /* @__PURE__ */ new Map();
2165
+ const points = await this.listCostMetricPoints(filters, runIds);
2166
+ const totalsByRunId = /* @__PURE__ */ new Map();
2167
+ for (const point of points) {
2168
+ if (!point.runId) continue;
2169
+ const currency = this.readCostCurrency(point);
2170
+ const currencyScale$1 = this.readCostCurrencyScale(point);
2171
+ if (!currency || currencyScale$1 === void 0) continue;
2172
+ const totals = this.getOrCreateRunCostTotals(totalsByRunId, point.runId);
2173
+ this.accumulateCostTotal(totals, currency, currencyScale$1, point.value);
2174
+ }
2175
+ return new Map([...totalsByRunId.entries()].map(([runId, totals]) => [runId, this.toCostDtos(totals)]));
2176
+ }
2177
+ buildCostCurrencyTotals(points, runCount, costModelNamesBySpanId) {
2178
+ const totals = /* @__PURE__ */ new Map();
2179
+ for (const point of points) {
2180
+ const currency = this.readCostCurrency(point);
2181
+ const currencyScale$1 = this.readCostCurrencyScale(point);
2182
+ if (!currency || currencyScale$1 === void 0) continue;
2183
+ const costKey = this.readCostKey(point, costModelNamesBySpanId);
2184
+ const aggregate = this.getOrCreateCostAggregate(totals, currency, currencyScale$1);
2185
+ aggregate.estimatedCostMinor += point.value;
2186
+ if (costKey) aggregate.costKeyTotals.set(costKey, (aggregate.costKeyTotals.get(costKey) ?? 0) + point.value);
2187
+ }
2188
+ return [...totals.values()].map((aggregate) => ({
2189
+ currency: aggregate.currency,
2190
+ currencyScale: aggregate.currencyScale,
2191
+ estimatedCostMinor: aggregate.estimatedCostMinor,
2192
+ averageCostPerRunMinor: runCount === 0 ? 0 : Math.round(aggregate.estimatedCostMinor / runCount),
2193
+ costKeys: [...aggregate.costKeyTotals.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([costKey, estimatedCostMinor]) => ({
2194
+ costKey,
2195
+ estimatedCostMinor
2196
+ }))
2197
+ })).sort((left, right) => left.currency.localeCompare(right.currency));
2198
+ }
2199
+ createBuckets(filters, interval) {
2200
+ if (!filters.startTimeGte || !filters.endTimeLte) throw new Error("Dashboard timeseries requires startTimeGte and endTimeLte.");
2201
+ const buckets = [];
2202
+ const cursor = new Date(filters.startTimeGte);
2203
+ const end = new Date(filters.endTimeLte);
2204
+ if (Number.isNaN(cursor.getTime()) || Number.isNaN(end.getTime()) || cursor > end) throw new Error("Dashboard timeseries requires a valid date range.");
2205
+ while (cursor <= end) {
2206
+ const bucketStart = new Date(cursor);
2207
+ const bucketEnd = this.advanceBucket(cursor, interval);
2208
+ buckets.push({
2209
+ bucketStartIso: bucketStart.toISOString(),
2210
+ bucketEndIso: bucketEnd.toISOString(),
2211
+ totalRuns: 0,
2212
+ completedRuns: 0,
2213
+ failedRuns: 0,
2214
+ runningRuns: 0,
2215
+ averageDurationMs: 0,
2216
+ durationSamples: 0,
2217
+ inputTokens: 0,
2218
+ outputTokens: 0,
2219
+ totalTokens: 0,
2220
+ cachedInputTokens: 0,
2221
+ reasoningTokens: 0,
2222
+ costs: /* @__PURE__ */ new Map()
2223
+ });
2224
+ cursor.setTime(bucketEnd.getTime());
2225
+ if (buckets.length > _TelemetryQueryService.maxBucketCount) throw new Error(`Dashboard timeseries exceeded ${String(_TelemetryQueryService.maxBucketCount)} buckets.`);
2226
+ }
2227
+ return buckets;
2228
+ }
2229
+ advanceBucket(cursor, interval) {
2230
+ const next = new Date(cursor);
2231
+ if (interval === "minute_5") {
2232
+ next.setUTCMinutes(next.getUTCMinutes() + 5, 0, 0);
2233
+ return next;
2234
+ }
2235
+ if (interval === "minute_15") {
2236
+ next.setUTCMinutes(next.getUTCMinutes() + 15, 0, 0);
2237
+ return next;
2238
+ }
2239
+ if (interval === "hour") {
2240
+ next.setUTCHours(next.getUTCHours() + 1, 0, 0, 0);
2241
+ return next;
2242
+ }
2243
+ if (interval === "day") {
2244
+ next.setUTCDate(next.getUTCDate() + 1);
2245
+ return next;
2246
+ }
2247
+ next.setUTCDate(next.getUTCDate() + 7);
2248
+ return next;
2249
+ }
2250
+ findBucket(buckets, observedAtIso) {
2251
+ if (!observedAtIso) return;
2252
+ const observedAt = new Date(observedAtIso).getTime();
2253
+ if (Number.isNaN(observedAt)) return;
2254
+ return buckets.find((bucket) => {
2255
+ const start = new Date(bucket.bucketStartIso).getTime();
2256
+ const end = new Date(bucket.bucketEndIso).getTime();
2257
+ return observedAt >= start && observedAt < end;
2258
+ });
2259
+ }
2260
+ toTimeseriesBucketDto(bucket) {
2261
+ return {
2262
+ bucketStartIso: bucket.bucketStartIso,
2263
+ bucketEndIso: bucket.bucketEndIso,
2264
+ totalRuns: bucket.totalRuns,
2265
+ completedRuns: bucket.completedRuns,
2266
+ failedRuns: bucket.failedRuns,
2267
+ runningRuns: bucket.runningRuns,
2268
+ averageDurationMs: bucket.durationSamples === 0 ? 0 : Math.round(bucket.averageDurationMs / bucket.durationSamples),
2269
+ inputTokens: bucket.inputTokens,
2270
+ outputTokens: bucket.outputTokens,
2271
+ totalTokens: bucket.totalTokens,
2272
+ cachedInputTokens: bucket.cachedInputTokens,
2273
+ reasoningTokens: bucket.reasoningTokens,
2274
+ costs: this.toCostDtos(bucket.costs)
2275
+ };
2276
+ }
2277
+ addCostPointToBucket(bucket, point, costModelNamesBySpanId) {
2278
+ const currency = this.readCostCurrency(point);
2279
+ const currencyScale$1 = this.readCostCurrencyScale(point);
2280
+ if (!currency || currencyScale$1 === void 0) return;
2281
+ this.accumulateCostTotal(bucket.costs, currency, currencyScale$1, point.value, this.readCostComponent(point), this.readCostKey(point, costModelNamesBySpanId));
2282
+ }
2283
+ toCostDtos(totals) {
2284
+ return [...totals.values()].map((entry) => ({
2285
+ currency: entry.currency,
2286
+ currencyScale: entry.currencyScale,
2287
+ estimatedCostMinor: entry.estimatedCostMinor,
2288
+ component: entry.component,
2289
+ costKey: entry.costKey
2290
+ })).sort((left, right) => left.currency.localeCompare(right.currency));
2291
+ }
2292
+ accumulateCostTotal(totals, currency, currencyScale$1, value, component, costKey) {
2293
+ const key = this.createCostCurrencyKey(currency, currencyScale$1, component, costKey);
2294
+ const existing = totals.get(key);
2295
+ if (existing) {
2296
+ existing.estimatedCostMinor += value;
2297
+ return;
2298
+ }
2299
+ totals.set(key, {
2300
+ currency,
2301
+ currencyScale: currencyScale$1,
2302
+ estimatedCostMinor: value,
2303
+ component,
2304
+ costKey
2305
+ });
2306
+ }
2307
+ getOrCreateRunCostTotals(totalsByRunId, runId) {
2308
+ const existing = totalsByRunId.get(runId);
2309
+ if (existing) return existing;
2310
+ const totals = /* @__PURE__ */ new Map();
2311
+ totalsByRunId.set(runId, totals);
2312
+ return totals;
2313
+ }
2314
+ getOrCreateCostAggregate(totals, currency, currencyScale$1) {
2315
+ const key = this.createCostCurrencyKey(currency, currencyScale$1);
2316
+ const existing = totals.get(key);
2317
+ if (existing) return existing;
2318
+ const aggregate = {
2319
+ currency,
2320
+ currencyScale: currencyScale$1,
2321
+ estimatedCostMinor: 0,
2322
+ costKeyTotals: /* @__PURE__ */ new Map()
2323
+ };
2324
+ totals.set(key, aggregate);
2325
+ return aggregate;
2326
+ }
2327
+ createCostCurrencyKey(currency, currencyScale$1, component, costKey) {
2328
+ return `${currency}::${String(currencyScale$1)}::${component ?? ""}::${costKey ?? ""}`;
2329
+ }
2330
+ readCostComponent(point) {
2331
+ return this.readStringDimension(point, CostTrackingTelemetryAttributeNames.component);
2332
+ }
2333
+ readCostKey(point, costModelNamesBySpanId) {
2334
+ return point.modelName ?? (point.spanId ? costModelNamesBySpanId.get(point.spanId) : void 0) ?? this.readStringDimension(point, CostTrackingTelemetryAttributeNames.pricingKey) ?? this.readStringDimension(point, CostTrackingTelemetryAttributeNames.provider) ?? this.readStringDimension(point, CostTrackingTelemetryAttributeNames.component);
2335
+ }
2336
+ async loadCostModelNamesBySpanId(filters, runIds) {
2337
+ if (runIds.length === 0) return /* @__PURE__ */ new Map();
2338
+ const spans = await this.telemetrySpanStore.list({
2339
+ workflowId: filters.workflowId,
2340
+ workflowIds: filters.workflowIds,
2341
+ runIds: [...new Set(runIds)],
2342
+ startTimeGte: filters.startTimeGte,
2343
+ endTimeLte: filters.endTimeLte,
2344
+ limit: _TelemetryQueryService.queryScanLimit + 1
2345
+ });
2346
+ this.throwWhenQueryLimitExceeded(spans.length);
2347
+ return new Map(spans.filter((span) => typeof span.modelName === "string").map((span) => [span.spanId, span.modelName]));
2348
+ }
2349
+ readCostCurrency(point) {
2350
+ return this.readStringDimension(point, CostTrackingTelemetryAttributeNames.currency) ?? point.unit;
2351
+ }
2352
+ readCostCurrencyScale(point) {
2353
+ const value = point.dimensions?.[CostTrackingTelemetryAttributeNames.currencyScale];
2354
+ return typeof value === "number" && Number.isFinite(value) ? value : void 0;
2355
+ }
2356
+ readStringDimension(point, key) {
2357
+ const value = point.dimensions?.[key];
2358
+ return typeof value === "string" && value.length > 0 ? value : void 0;
2359
+ }
2360
+ throwWhenQueryLimitExceeded(rowCount) {
2361
+ if (rowCount > _TelemetryQueryService.queryScanLimit) throw new Error(`Telemetry dashboard query exceeded ${String(_TelemetryQueryService.queryScanLimit)} rows.`);
2362
+ }
2363
+ };
2364
+ TelemetryQueryService = _TelemetryQueryService = __decorate([
2365
+ injectable(),
2366
+ __decorateParam(0, inject(ApplicationTokens.TelemetrySpanStore)),
2367
+ __decorateParam(1, inject(ApplicationTokens.TelemetryArtifactStore)),
2368
+ __decorateParam(2, inject(ApplicationTokens.TelemetryMetricPointStore)),
2369
+ __decorateParam(3, inject(ApplicationTokens.WorkflowRunRepository)),
2370
+ __decorateParam(4, inject(ApplicationTokens.RunTraceContextRepository)),
2371
+ __decorateParam(5, inject(OtelIdentityFactory)),
2372
+ __decorateMetadata("design:paramtypes", [
2373
+ Object,
2374
+ Object,
2375
+ Object,
2376
+ Object,
2377
+ Object,
2378
+ typeof (_ref$51 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$51 : Object
2379
+ ])
2380
+ ], TelemetryQueryService);
2381
+
2382
+ //#endregion
2383
+ //#region src/application/queries/GetTelemetryDashboardDimensionsQuery.ts
2384
+ var GetTelemetryDashboardDimensionsQuery = class extends Query {
2385
+ constructor(filters) {
2386
+ super();
2387
+ this.filters = filters;
2388
+ }
2389
+ };
2390
+
2391
+ //#endregion
2392
+ //#region src/application/queries/GetTelemetryDashboardDimensionsQueryHandler.ts
2393
+ var _ref$50;
2394
+ let GetTelemetryDashboardDimensionsQueryHandler = class GetTelemetryDashboardDimensionsQueryHandler$1 extends QueryHandler {
2395
+ constructor(telemetryQueryService) {
2396
+ super();
2397
+ this.telemetryQueryService = telemetryQueryService;
2398
+ }
2399
+ async execute(query) {
2400
+ return await this.telemetryQueryService.listModelNames(query.filters);
2401
+ }
2402
+ };
2403
+ GetTelemetryDashboardDimensionsQueryHandler = __decorate([
2404
+ HandlesQuery.for(GetTelemetryDashboardDimensionsQuery),
2405
+ __decorateParam(0, inject(TelemetryQueryService)),
2406
+ __decorateMetadata("design:paramtypes", [typeof (_ref$50 = typeof TelemetryQueryService !== "undefined" && TelemetryQueryService) === "function" ? _ref$50 : Object])
2407
+ ], GetTelemetryDashboardDimensionsQueryHandler);
2408
+
2409
+ //#endregion
2410
+ //#region src/application/queries/GetTelemetryDashboardRunsQuery.ts
2411
+ var GetTelemetryDashboardRunsQuery = class extends Query {
2412
+ constructor(request) {
2413
+ super();
2414
+ this.request = request;
2415
+ }
2416
+ };
2417
+
2418
+ //#endregion
2419
+ //#region src/application/queries/GetTelemetryDashboardRunsQueryHandler.ts
2420
+ var _ref$49;
2421
+ let GetTelemetryDashboardRunsQueryHandler = class GetTelemetryDashboardRunsQueryHandler$1 extends QueryHandler {
2422
+ constructor(telemetryQueryService) {
2423
+ super();
2424
+ this.telemetryQueryService = telemetryQueryService;
2425
+ }
2426
+ async execute(query) {
2427
+ return await this.telemetryQueryService.listRuns(query.request);
2428
+ }
2429
+ };
2430
+ GetTelemetryDashboardRunsQueryHandler = __decorate([
2431
+ HandlesQuery.for(GetTelemetryDashboardRunsQuery),
2432
+ __decorateParam(0, inject(TelemetryQueryService)),
2433
+ __decorateMetadata("design:paramtypes", [typeof (_ref$49 = typeof TelemetryQueryService !== "undefined" && TelemetryQueryService) === "function" ? _ref$49 : Object])
2434
+ ], GetTelemetryDashboardRunsQueryHandler);
2435
+
2436
+ //#endregion
2437
+ //#region src/application/queries/GetTelemetryRunTraceQuery.ts
2438
+ var GetTelemetryRunTraceQuery = class extends Query {
2439
+ constructor(runId) {
2440
+ super();
2441
+ this.runId = runId;
2442
+ }
2443
+ };
2444
+
2445
+ //#endregion
2446
+ //#region src/application/queries/GetTelemetryRunTraceQueryHandler.ts
2447
+ var _ref$48;
2448
+ let GetTelemetryRunTraceQueryHandler = class GetTelemetryRunTraceQueryHandler$1 extends QueryHandler {
2449
+ constructor(telemetryQueryService) {
2450
+ super();
2451
+ this.telemetryQueryService = telemetryQueryService;
2452
+ }
2453
+ async execute(query) {
2454
+ return await this.telemetryQueryService.loadRunTrace(query.runId);
2455
+ }
2456
+ };
2457
+ GetTelemetryRunTraceQueryHandler = __decorate([
2458
+ HandlesQuery.for(GetTelemetryRunTraceQuery),
2459
+ __decorateParam(0, inject(TelemetryQueryService)),
2460
+ __decorateMetadata("design:paramtypes", [typeof (_ref$48 = typeof TelemetryQueryService !== "undefined" && TelemetryQueryService) === "function" ? _ref$48 : Object])
2461
+ ], GetTelemetryRunTraceQueryHandler);
2462
+
2463
+ //#endregion
2464
+ //#region src/application/queries/GetTelemetryDashboardSummaryQuery.ts
2465
+ var GetTelemetryDashboardSummaryQuery = class extends Query {
2466
+ constructor(filters) {
2467
+ super();
2468
+ this.filters = filters;
2469
+ }
2470
+ };
2471
+
2472
+ //#endregion
2473
+ //#region src/application/queries/GetTelemetryDashboardSummaryQueryHandler.ts
2474
+ var _ref$47;
2475
+ let GetTelemetryDashboardSummaryQueryHandler = class GetTelemetryDashboardSummaryQueryHandler$1 extends QueryHandler {
2476
+ constructor(telemetryQueryService) {
2477
+ super();
2478
+ this.telemetryQueryService = telemetryQueryService;
2479
+ }
2480
+ async execute(query) {
2481
+ const [runs, ai$1, costs] = await Promise.all([
2482
+ this.telemetryQueryService.summarizeRuns(query.filters),
2483
+ this.telemetryQueryService.summarizeAiUsage(query.filters),
2484
+ this.telemetryQueryService.summarizeCosts(query.filters)
2485
+ ]);
2486
+ return {
2487
+ runs,
2488
+ ai: ai$1,
2489
+ costs
2490
+ };
2491
+ }
2492
+ };
2493
+ GetTelemetryDashboardSummaryQueryHandler = __decorate([
2494
+ HandlesQuery.for(GetTelemetryDashboardSummaryQuery),
2495
+ __decorateParam(0, inject(TelemetryQueryService)),
2496
+ __decorateMetadata("design:paramtypes", [typeof (_ref$47 = typeof TelemetryQueryService !== "undefined" && TelemetryQueryService) === "function" ? _ref$47 : Object])
2497
+ ], GetTelemetryDashboardSummaryQueryHandler);
2498
+
2499
+ //#endregion
2500
+ //#region src/application/queries/GetTelemetryDashboardTimeseriesQuery.ts
2501
+ var GetTelemetryDashboardTimeseriesQuery = class extends Query {
2502
+ constructor(request) {
2503
+ super();
2504
+ this.request = request;
2505
+ }
2506
+ };
2507
+
2508
+ //#endregion
2509
+ //#region src/application/queries/GetTelemetryDashboardTimeseriesQueryHandler.ts
2510
+ var _ref$46;
2511
+ let GetTelemetryDashboardTimeseriesQueryHandler = class GetTelemetryDashboardTimeseriesQueryHandler$1 extends QueryHandler {
2512
+ constructor(telemetryQueryService) {
2513
+ super();
2514
+ this.telemetryQueryService = telemetryQueryService;
2515
+ }
2516
+ async execute(query) {
2517
+ const [runSeries, aiSeries, costSeries] = await Promise.all([
2518
+ this.telemetryQueryService.summarizeRunsTimeseries(query.request.filters, query.request.interval),
2519
+ this.telemetryQueryService.summarizeAiUsageTimeseries(query.request.filters, query.request.interval),
2520
+ this.telemetryQueryService.summarizeCostsTimeseries(query.request.filters, query.request.interval)
2521
+ ]);
2522
+ return {
2523
+ interval: query.request.interval,
2524
+ buckets: runSeries.buckets.map((runBucket, index) => ({
2525
+ ...runBucket,
2526
+ inputTokens: aiSeries.buckets[index]?.inputTokens ?? 0,
2527
+ outputTokens: aiSeries.buckets[index]?.outputTokens ?? 0,
2528
+ totalTokens: aiSeries.buckets[index]?.totalTokens ?? 0,
2529
+ cachedInputTokens: aiSeries.buckets[index]?.cachedInputTokens ?? 0,
2530
+ reasoningTokens: aiSeries.buckets[index]?.reasoningTokens ?? 0,
2531
+ costs: costSeries.buckets[index]?.costs ?? []
2532
+ }))
2533
+ };
2534
+ }
2535
+ };
2536
+ GetTelemetryDashboardTimeseriesQueryHandler = __decorate([
2537
+ HandlesQuery.for(GetTelemetryDashboardTimeseriesQuery),
2538
+ __decorateParam(0, inject(TelemetryQueryService)),
2539
+ __decorateMetadata("design:paramtypes", [typeof (_ref$46 = typeof TelemetryQueryService !== "undefined" && TelemetryQueryService) === "function" ? _ref$46 : Object])
2540
+ ], GetTelemetryDashboardTimeseriesQueryHandler);
2541
+
1852
2542
  //#endregion
1853
2543
  //#region src/application/queries/GetWorkflowRunDetailQuery.ts
1854
2544
  var GetWorkflowRunDetailQuery = class extends Query {
@@ -1939,7 +2629,7 @@ var GetWorkflowOverlayBinaryAttachmentQuery = class extends Query {
1939
2629
 
1940
2630
  //#endregion
1941
2631
  //#region src/application/queries/GetWorkflowOverlayBinaryAttachmentQueryHandler.ts
1942
- var _ref$34;
2632
+ var _ref$45;
1943
2633
  let GetWorkflowOverlayBinaryAttachmentQueryHandler = class GetWorkflowOverlayBinaryAttachmentQueryHandler$1 extends QueryHandler {
1944
2634
  constructor(lookupService) {
1945
2635
  super();
@@ -1952,7 +2642,7 @@ let GetWorkflowOverlayBinaryAttachmentQueryHandler = class GetWorkflowOverlayBin
1952
2642
  GetWorkflowOverlayBinaryAttachmentQueryHandler = __decorate([
1953
2643
  HandlesQuery.for(GetWorkflowOverlayBinaryAttachmentQuery),
1954
2644
  __decorateParam(0, inject(RunBinaryAttachmentLookupService)),
1955
- __decorateMetadata("design:paramtypes", [typeof (_ref$34 = typeof RunBinaryAttachmentLookupService !== "undefined" && RunBinaryAttachmentLookupService) === "function" ? _ref$34 : Object])
2645
+ __decorateMetadata("design:paramtypes", [typeof (_ref$45 = typeof RunBinaryAttachmentLookupService !== "undefined" && RunBinaryAttachmentLookupService) === "function" ? _ref$45 : Object])
1956
2646
  ], GetWorkflowOverlayBinaryAttachmentQueryHandler);
1957
2647
 
1958
2648
  //#endregion
@@ -2064,6 +2754,687 @@ WorkflowRunEventWebsocketRelay = __decorate([
2064
2754
  __decorateMetadata("design:paramtypes", [Object, Object])
2065
2755
  ], WorkflowRunEventWebsocketRelay);
2066
2756
 
2757
+ //#endregion
2758
+ //#region src/application/cost/FrameworkCostCatalogEntries.ts
2759
+ const currencyScale = 1e9;
2760
+ const FrameworkCostCatalogEntries = [
2761
+ {
2762
+ component: "chat",
2763
+ provider: "openai",
2764
+ operation: "completion.input",
2765
+ pricingKey: "demo-gpt",
2766
+ usageUnit: "input_tokens",
2767
+ currency: "USD",
2768
+ currencyScale,
2769
+ pricePerUnitMinor: 1e3
2770
+ },
2771
+ {
2772
+ component: "chat",
2773
+ provider: "openai",
2774
+ operation: "completion.output",
2775
+ pricingKey: "demo-gpt",
2776
+ usageUnit: "output_tokens",
2777
+ currency: "USD",
2778
+ currencyScale,
2779
+ pricePerUnitMinor: 2e3
2780
+ },
2781
+ {
2782
+ component: "chat",
2783
+ provider: "openai",
2784
+ operation: "completion.input",
2785
+ pricingKey: "gpt-4o-mini",
2786
+ usageUnit: "input_tokens",
2787
+ currency: "USD",
2788
+ currencyScale,
2789
+ pricePerUnitMinor: 150
2790
+ },
2791
+ {
2792
+ component: "chat",
2793
+ provider: "openai",
2794
+ operation: "completion.output",
2795
+ pricingKey: "gpt-4o-mini",
2796
+ usageUnit: "output_tokens",
2797
+ currency: "USD",
2798
+ currencyScale,
2799
+ pricePerUnitMinor: 600
2800
+ },
2801
+ {
2802
+ component: "chat",
2803
+ provider: "openai",
2804
+ operation: "completion.input",
2805
+ pricingKey: "gpt-4.1-nano",
2806
+ usageUnit: "input_tokens",
2807
+ currency: "USD",
2808
+ currencyScale,
2809
+ pricePerUnitMinor: 100
2810
+ },
2811
+ {
2812
+ component: "chat",
2813
+ provider: "openai",
2814
+ operation: "completion.output",
2815
+ pricingKey: "gpt-4.1-nano",
2816
+ usageUnit: "output_tokens",
2817
+ currency: "USD",
2818
+ currencyScale,
2819
+ pricePerUnitMinor: 400
2820
+ },
2821
+ {
2822
+ component: "chat",
2823
+ provider: "openai",
2824
+ operation: "completion.input",
2825
+ pricingKey: "gpt-4.1-mini",
2826
+ usageUnit: "input_tokens",
2827
+ currency: "USD",
2828
+ currencyScale,
2829
+ pricePerUnitMinor: 400
2830
+ },
2831
+ {
2832
+ component: "chat",
2833
+ provider: "openai",
2834
+ operation: "completion.output",
2835
+ pricingKey: "gpt-4.1-mini",
2836
+ usageUnit: "output_tokens",
2837
+ currency: "USD",
2838
+ currencyScale,
2839
+ pricePerUnitMinor: 1600
2840
+ },
2841
+ {
2842
+ component: "chat",
2843
+ provider: "openai",
2844
+ operation: "completion.input",
2845
+ pricingKey: "gpt-4.1",
2846
+ usageUnit: "input_tokens",
2847
+ currency: "USD",
2848
+ currencyScale,
2849
+ pricePerUnitMinor: 2e3
2850
+ },
2851
+ {
2852
+ component: "chat",
2853
+ provider: "openai",
2854
+ operation: "completion.output",
2855
+ pricingKey: "gpt-4.1",
2856
+ usageUnit: "output_tokens",
2857
+ currency: "USD",
2858
+ currencyScale,
2859
+ pricePerUnitMinor: 8e3
2860
+ },
2861
+ {
2862
+ component: "rag",
2863
+ provider: "openai",
2864
+ operation: "embed_documents",
2865
+ pricingKey: "text-embedding-3-small",
2866
+ usageUnit: "input_tokens",
2867
+ currency: "USD",
2868
+ currencyScale,
2869
+ pricePerUnitMinor: 20
2870
+ },
2871
+ {
2872
+ component: "ocr",
2873
+ provider: "azure_document_intelligence",
2874
+ operation: "analyze_document",
2875
+ pricingKey: "prebuilt_read",
2876
+ usageUnit: "pages",
2877
+ currency: "EUR",
2878
+ currencyScale,
2879
+ pricePerUnitMinor: 15e6
2880
+ }
2881
+ ];
2882
+
2883
+ //#endregion
2884
+ //#region src/application/telemetry/CompositeTelemetryExporter.ts
2885
+ var _ref$44;
2886
+ let CompositeTelemetryExporter = class CompositeTelemetryExporter$1 {
2887
+ constructor(exporters) {
2888
+ this.exporters = exporters;
2889
+ }
2890
+ async exportSpans(spans) {
2891
+ for (const exporter of this.exporters) await exporter.exportSpans(spans);
2892
+ }
2893
+ };
2894
+ CompositeTelemetryExporter = __decorate([injectable(), __decorateMetadata("design:paramtypes", [typeof (_ref$44 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$44 : Object])], CompositeTelemetryExporter);
2895
+
2896
+ //#endregion
2897
+ //#region src/application/telemetry/LazyExecutionTelemetryFactory.ts
2898
+ var LazyExecutionTelemetryFactory = class {
2899
+ constructor(resolveFactory) {
2900
+ this.resolveFactory = resolveFactory;
2901
+ }
2902
+ create(args) {
2903
+ return this.resolveFactory().create(args);
2904
+ }
2905
+ };
2906
+
2907
+ //#endregion
2908
+ //#region src/application/telemetry/NoOpTelemetryExporter.ts
2909
+ let NoOpTelemetryExporter = class NoOpTelemetryExporter$1 {
2910
+ async exportSpans(_$1) {}
2911
+ };
2912
+ NoOpTelemetryExporter = __decorate([injectable()], NoOpTelemetryExporter);
2913
+
2914
+ //#endregion
2915
+ //#region src/application/telemetry/StoredTelemetrySpanScope.ts
2916
+ var StoredTelemetrySpanScope = class {
2917
+ traceId;
2918
+ spanId;
2919
+ deps;
2920
+ nodeId;
2921
+ activationId;
2922
+ parentSpanId;
2923
+ spanName;
2924
+ spanKind;
2925
+ initialAttributes;
2926
+ initialStartTime;
2927
+ connectionInvocationId;
2928
+ modelName;
2929
+ constructor(args) {
2930
+ this.deps = args;
2931
+ this.traceId = args.traceId;
2932
+ this.spanId = args.spanId;
2933
+ this.parentSpanId = args.parentSpanId;
2934
+ this.nodeId = args.nodeId;
2935
+ this.activationId = args.activationId;
2936
+ this.spanName = args.spanName;
2937
+ this.spanKind = args.spanKind;
2938
+ this.initialAttributes = args.initialAttributes;
2939
+ this.initialStartTime = args.initialStartTime;
2940
+ this.connectionInvocationId = args.connectionInvocationId;
2941
+ this.modelName = args.modelName;
2942
+ }
2943
+ async addSpanEvent(args) {
2944
+ await this.upsert({ events: [args] });
2945
+ }
2946
+ async recordMetric(args) {
2947
+ const enrichment = await this.resolveEnrichment();
2948
+ const observedAt = /* @__PURE__ */ new Date();
2949
+ await this.deps.telemetryMetricPointStore.save({
2950
+ traceId: this.traceId,
2951
+ spanId: this.spanId,
2952
+ runId: this.deps.runId,
2953
+ workflowId: this.deps.workflowId,
2954
+ nodeId: this.nodeId,
2955
+ activationId: this.activationId,
2956
+ name: args.name,
2957
+ value: args.value,
2958
+ unit: args.unit,
2959
+ attributes: args.attributes,
2960
+ observedAt: observedAt.toISOString(),
2961
+ workflowFolder: enrichment.workflowFolder,
2962
+ nodeType: enrichment.nodeType,
2963
+ nodeRole: enrichment.nodeRole,
2964
+ modelName: this.modelName,
2965
+ retentionExpiresAt: this.deps.telemetryRetentionTimestampFactory.createMetricExpiry(this.deps.policySnapshot, observedAt)
2966
+ });
2967
+ await this.touchTraceContextExpiry(this.deps.telemetryRetentionTimestampFactory.createTraceContextExpiry(this.deps.policySnapshot, observedAt));
2968
+ }
2969
+ async attachArtifact(args) {
2970
+ if (!this.deps.telemetryPrivacyPolicy.shouldCaptureArtifact(args)) return NoOpTelemetryArtifactReference.value;
2971
+ const observedAt = /* @__PURE__ */ new Date();
2972
+ const artifact = await this.deps.telemetryArtifactStore.save({
2973
+ traceId: this.traceId,
2974
+ spanId: this.spanId,
2975
+ runId: this.deps.runId,
2976
+ workflowId: this.deps.workflowId,
2977
+ nodeId: this.nodeId,
2978
+ activationId: this.activationId,
2979
+ kind: args.kind,
2980
+ contentType: args.contentType,
2981
+ previewText: this.deps.telemetryPrivacyPolicy.trimPreviewText(args.previewText),
2982
+ previewJson: args.previewJson,
2983
+ payloadText: args.payloadText,
2984
+ payloadJson: args.payloadJson,
2985
+ bytes: args.bytes,
2986
+ truncated: args.truncated,
2987
+ expiresAt: args.expiresAt,
2988
+ retentionExpiresAt: this.deps.telemetryRetentionTimestampFactory.createArtifactExpiry(this.deps.policySnapshot, observedAt)
2989
+ });
2990
+ await this.touchTraceContextExpiry(this.deps.telemetryRetentionTimestampFactory.createTraceContextExpiry(this.deps.policySnapshot, observedAt));
2991
+ return {
2992
+ artifactId: artifact.artifactId,
2993
+ traceId: artifact.traceId,
2994
+ spanId: artifact.spanId
2995
+ };
2996
+ }
2997
+ async end(args = {}) {
2998
+ await this.upsert({
2999
+ status: args.status === "error" ? "failed" : "completed",
3000
+ statusMessage: args.statusMessage,
3001
+ endTime: (args.endedAt ?? /* @__PURE__ */ new Date()).toISOString(),
3002
+ attributes: args.attributes
3003
+ });
3004
+ }
3005
+ async markStarted() {
3006
+ await this.upsert({
3007
+ status: "running",
3008
+ startTime: (this.initialStartTime ?? /* @__PURE__ */ new Date()).toISOString(),
3009
+ attributes: this.initialAttributes,
3010
+ modelName: this.modelName,
3011
+ connectionInvocationId: this.connectionInvocationId
3012
+ });
3013
+ }
3014
+ async upsert(update) {
3015
+ const enrichment = await this.resolveEnrichment();
3016
+ const observedAt = this.resolveObservedAt(update);
3017
+ const retentionExpiresAt = update.retentionExpiresAt ?? this.deps.telemetryRetentionTimestampFactory.createSpanExpiry(this.deps.policySnapshot, observedAt);
3018
+ await this.deps.telemetrySpanStore.upsert({
3019
+ traceId: this.traceId,
3020
+ spanId: this.spanId,
3021
+ parentSpanId: this.parentSpanId,
3022
+ runId: this.deps.runId,
3023
+ workflowId: this.deps.workflowId,
3024
+ nodeId: this.nodeId,
3025
+ activationId: this.activationId,
3026
+ name: this.spanName,
3027
+ kind: this.spanKind,
3028
+ workflowFolder: enrichment.workflowFolder,
3029
+ nodeType: enrichment.nodeType,
3030
+ nodeRole: enrichment.nodeRole,
3031
+ retentionExpiresAt,
3032
+ ...update
3033
+ });
3034
+ await this.touchTraceContextExpiry(this.deps.telemetryRetentionTimestampFactory.createTraceContextExpiry(this.deps.policySnapshot, observedAt));
3035
+ }
3036
+ async resolveEnrichment() {
3037
+ if (this.nodeId) return await this.deps.telemetryEnricherChain.enrichNode({
3038
+ workflowId: this.deps.workflowId,
3039
+ nodeId: this.nodeId
3040
+ });
3041
+ return await this.deps.telemetryEnricherChain.enrichRun(this.deps.workflowId);
3042
+ }
3043
+ resolveObservedAt(update) {
3044
+ const iso = update.endTime ?? update.startTime;
3045
+ return iso ? new Date(iso) : /* @__PURE__ */ new Date();
3046
+ }
3047
+ async touchTraceContextExpiry(expiresAt) {
3048
+ await this.deps.runTraceContextRepository.upsertExpiry({
3049
+ runId: this.deps.runId,
3050
+ expiresAt
3051
+ });
3052
+ }
3053
+ toStringAttribute(value) {
3054
+ return typeof value === "string" ? value : void 0;
3055
+ }
3056
+ };
3057
+
3058
+ //#endregion
3059
+ //#region src/application/telemetry/StoredNodeExecutionTelemetry.ts
3060
+ var StoredNodeExecutionTelemetry = class extends StoredTelemetrySpanScope {
3061
+ constructor(args) {
3062
+ super(args);
3063
+ }
3064
+ forNode(_$1) {
3065
+ return this;
3066
+ }
3067
+ startChildSpan(args) {
3068
+ const span = new StoredTelemetrySpanScope({
3069
+ ...this.deps,
3070
+ spanId: this.deps.otelIdentityFactory.createEphemeralSpanId(),
3071
+ parentSpanId: this.spanId,
3072
+ nodeId: this.nodeId,
3073
+ activationId: this.activationId,
3074
+ spanName: args.name,
3075
+ spanKind: args.kind ?? "internal",
3076
+ initialAttributes: args.attributes,
3077
+ initialStartTime: args.startedAt,
3078
+ connectionInvocationId: this.toStringAttribute(args.attributes?.["codemation.connection.invocation_id"] ?? args.attributes?.["connection.invocation_id"]),
3079
+ modelName: this.toStringAttribute(args.attributes?.[GenAiTelemetryAttributeNames.requestModel])
3080
+ });
3081
+ span.markStarted();
3082
+ return span;
3083
+ }
3084
+ };
3085
+
3086
+ //#endregion
3087
+ //#region src/application/telemetry/StoredExecutionTelemetry.ts
3088
+ var StoredExecutionTelemetry = class {
3089
+ traceId;
3090
+ spanId;
3091
+ constructor(deps) {
3092
+ this.deps = deps;
3093
+ this.traceId = deps.traceId;
3094
+ this.spanId = deps.rootSpanId;
3095
+ }
3096
+ async addSpanEvent(args) {
3097
+ await this.createRunScope().addSpanEvent(args);
3098
+ }
3099
+ async recordMetric(args) {
3100
+ await this.createRunScope().recordMetric(args);
3101
+ }
3102
+ async attachArtifact(args) {
3103
+ return await this.createRunScope().attachArtifact(args);
3104
+ }
3105
+ forNode(args) {
3106
+ return new StoredNodeExecutionTelemetry({
3107
+ ...this.deps,
3108
+ spanId: this.deps.otelIdentityFactory.createNodeSpanId(args.activationId),
3109
+ parentSpanId: this.deps.rootSpanId,
3110
+ nodeId: args.nodeId,
3111
+ activationId: args.activationId,
3112
+ spanName: "workflow.node",
3113
+ spanKind: "internal"
3114
+ });
3115
+ }
3116
+ createRunScope() {
3117
+ return new StoredTelemetrySpanScope({
3118
+ ...this.deps,
3119
+ spanId: this.deps.rootSpanId,
3120
+ spanName: "workflow.run",
3121
+ spanKind: "internal"
3122
+ });
3123
+ }
3124
+ };
3125
+
3126
+ //#endregion
3127
+ //#region src/application/telemetry/TelemetryEnricherChain.ts
3128
+ let TelemetryEnricherChain = class TelemetryEnricherChain$1 {
3129
+ definitionsByWorkflowId = /* @__PURE__ */ new Map();
3130
+ constructor(workflowDefinitionRepository) {
3131
+ this.workflowDefinitionRepository = workflowDefinitionRepository;
3132
+ }
3133
+ async enrichNode(args) {
3134
+ const workflow = await this.loadDefinition(args.workflowId);
3135
+ if (!workflow) return {};
3136
+ const node = workflow.nodes.find((entry) => entry.id === args.nodeId);
3137
+ if (!node) return { workflowFolder: this.toWorkflowFolder(workflow) };
3138
+ return {
3139
+ workflowFolder: this.toWorkflowFolder(workflow),
3140
+ nodeType: this.toNodeType(node),
3141
+ nodeRole: this.toNodeRole(workflow, args.nodeId)
3142
+ };
3143
+ }
3144
+ async enrichRun(workflowId) {
3145
+ const workflow = await this.loadDefinition(workflowId);
3146
+ return { workflowFolder: workflow ? this.toWorkflowFolder(workflow) : void 0 };
3147
+ }
3148
+ async loadDefinition(workflowId) {
3149
+ const key = decodeURIComponent(workflowId);
3150
+ if (this.definitionsByWorkflowId.has(key)) return this.definitionsByWorkflowId.get(key) ?? void 0;
3151
+ const loaded = await this.workflowDefinitionRepository.getDefinition(key) ?? null;
3152
+ this.definitionsByWorkflowId.set(key, loaded);
3153
+ return loaded ?? void 0;
3154
+ }
3155
+ toWorkflowFolder(workflow) {
3156
+ const segments = workflow.discoveryPathSegments ?? [];
3157
+ if (segments.length === 0) return;
3158
+ return segments.slice(0, -1).join("/");
3159
+ }
3160
+ toNodeType(node) {
3161
+ const token = node.type;
3162
+ if (typeof token === "function" && token.name) return token.name;
3163
+ if (typeof token === "symbol") return token.description ?? token.toString();
3164
+ }
3165
+ toNodeRole(workflow, nodeId) {
3166
+ const connection = workflow.connections?.find((entry) => entry.childNodeIds.includes(nodeId));
3167
+ if (!connection) return "workflowNode";
3168
+ if (connection.connectionName === "llm") return "languageModel";
3169
+ return "tool";
3170
+ }
3171
+ };
3172
+ TelemetryEnricherChain = __decorate([
3173
+ injectable(),
3174
+ __decorateParam(0, inject(ApplicationTokens.WorkflowDefinitionRepository)),
3175
+ __decorateMetadata("design:paramtypes", [Object])
3176
+ ], TelemetryEnricherChain);
3177
+
3178
+ //#endregion
3179
+ //#region src/application/telemetry/TelemetryPrivacyPolicy.ts
3180
+ let TelemetryPrivacyPolicy = class TelemetryPrivacyPolicy$1 {
3181
+ captureArtifacts = false;
3182
+ maxPreviewLength = 1e3;
3183
+ shouldCaptureArtifact(_$1) {
3184
+ return this.captureArtifacts;
3185
+ }
3186
+ trimPreviewText(value) {
3187
+ if (!value) return;
3188
+ return value.length > this.maxPreviewLength ? value.slice(0, this.maxPreviewLength) : value;
3189
+ }
3190
+ };
3191
+ TelemetryPrivacyPolicy = __decorate([injectable()], TelemetryPrivacyPolicy);
3192
+
3193
+ //#endregion
3194
+ //#region src/application/telemetry/TelemetryRetentionTimestampFactory.ts
3195
+ let TelemetryRetentionTimestampFactory = class TelemetryRetentionTimestampFactory$1 {
3196
+ createSpanExpiry(policySnapshot, observedAt) {
3197
+ return this.createExpiry(policySnapshot?.telemetrySpanRetentionSeconds, observedAt);
3198
+ }
3199
+ createArtifactExpiry(policySnapshot, observedAt) {
3200
+ return this.createExpiry(policySnapshot?.telemetryArtifactRetentionSeconds, observedAt);
3201
+ }
3202
+ createMetricExpiry(policySnapshot, observedAt) {
3203
+ return this.createExpiry(policySnapshot?.telemetryMetricRetentionSeconds, observedAt);
3204
+ }
3205
+ createTraceContextExpiry(policySnapshot, observedAt) {
3206
+ const candidates = [
3207
+ policySnapshot?.telemetrySpanRetentionSeconds,
3208
+ policySnapshot?.telemetryArtifactRetentionSeconds,
3209
+ policySnapshot?.telemetryMetricRetentionSeconds
3210
+ ].filter((value) => typeof value === "number" && value > 0);
3211
+ if (candidates.length === 0) return;
3212
+ const maxSeconds = Math.max(...candidates);
3213
+ return this.createExpiry(maxSeconds, observedAt);
3214
+ }
3215
+ createExpiry(retentionSeconds, observedAt) {
3216
+ if (!retentionSeconds || retentionSeconds <= 0) return;
3217
+ return new Date(observedAt.getTime() + retentionSeconds * 1e3).toISOString();
3218
+ }
3219
+ };
3220
+ TelemetryRetentionTimestampFactory = __decorate([injectable()], TelemetryRetentionTimestampFactory);
3221
+
3222
+ //#endregion
3223
+ //#region src/application/telemetry/OtelExecutionTelemetryFactory.ts
3224
+ var _ref$43, _ref2$11, _ref3$6, _ref4$3;
3225
+ let OtelExecutionTelemetryFactory = class OtelExecutionTelemetryFactory$1 {
3226
+ constructor(runTraceContextRepository, telemetrySpanStore, telemetryArtifactStore, telemetryMetricPointStore, telemetryEnricherChain, telemetryPrivacyPolicy, telemetryRetentionTimestampFactory, otelIdentityFactory) {
3227
+ this.runTraceContextRepository = runTraceContextRepository;
3228
+ this.telemetrySpanStore = telemetrySpanStore;
3229
+ this.telemetryArtifactStore = telemetryArtifactStore;
3230
+ this.telemetryMetricPointStore = telemetryMetricPointStore;
3231
+ this.telemetryEnricherChain = telemetryEnricherChain;
3232
+ this.telemetryPrivacyPolicy = telemetryPrivacyPolicy;
3233
+ this.telemetryRetentionTimestampFactory = telemetryRetentionTimestampFactory;
3234
+ this.otelIdentityFactory = otelIdentityFactory;
3235
+ }
3236
+ create(args) {
3237
+ return new StoredExecutionTelemetry({
3238
+ traceId: this.otelIdentityFactory.createTraceId(args.runId),
3239
+ rootSpanId: this.otelIdentityFactory.createRootSpanId(args.runId),
3240
+ runId: args.runId,
3241
+ workflowId: args.workflowId,
3242
+ policySnapshot: args.policySnapshot,
3243
+ runTraceContextRepository: this.runTraceContextRepository,
3244
+ telemetrySpanStore: this.telemetrySpanStore,
3245
+ telemetryArtifactStore: this.telemetryArtifactStore,
3246
+ telemetryMetricPointStore: this.telemetryMetricPointStore,
3247
+ telemetryEnricherChain: this.telemetryEnricherChain,
3248
+ telemetryPrivacyPolicy: this.telemetryPrivacyPolicy,
3249
+ telemetryRetentionTimestampFactory: this.telemetryRetentionTimestampFactory,
3250
+ otelIdentityFactory: this.otelIdentityFactory
3251
+ });
3252
+ }
3253
+ };
3254
+ OtelExecutionTelemetryFactory = __decorate([
3255
+ injectable(),
3256
+ __decorateParam(0, inject(ApplicationTokens.RunTraceContextRepository)),
3257
+ __decorateParam(1, inject(ApplicationTokens.TelemetrySpanStore)),
3258
+ __decorateParam(2, inject(ApplicationTokens.TelemetryArtifactStore)),
3259
+ __decorateParam(3, inject(ApplicationTokens.TelemetryMetricPointStore)),
3260
+ __decorateParam(4, inject(TelemetryEnricherChain)),
3261
+ __decorateParam(5, inject(TelemetryPrivacyPolicy)),
3262
+ __decorateParam(6, inject(TelemetryRetentionTimestampFactory)),
3263
+ __decorateParam(7, inject(OtelIdentityFactory)),
3264
+ __decorateMetadata("design:paramtypes", [
3265
+ Object,
3266
+ Object,
3267
+ Object,
3268
+ Object,
3269
+ typeof (_ref$43 = typeof TelemetryEnricherChain !== "undefined" && TelemetryEnricherChain) === "function" ? _ref$43 : Object,
3270
+ typeof (_ref2$11 = typeof TelemetryPrivacyPolicy !== "undefined" && TelemetryPrivacyPolicy) === "function" ? _ref2$11 : Object,
3271
+ typeof (_ref3$6 = typeof TelemetryRetentionTimestampFactory !== "undefined" && TelemetryRetentionTimestampFactory) === "function" ? _ref3$6 : Object,
3272
+ typeof (_ref4$3 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref4$3 : Object
3273
+ ])
3274
+ ], OtelExecutionTelemetryFactory);
3275
+
3276
+ //#endregion
3277
+ //#region src/application/telemetry/RunEventBusTelemetryReporter.ts
3278
+ var _ref$42, _ref2$10, _ref3$5;
3279
+ let RunEventBusTelemetryReporter = class RunEventBusTelemetryReporter$1 {
3280
+ subscription = null;
3281
+ constructor(runEventBus, runTraceContextRepository, workflowRunRepository, telemetrySpanStore, telemetryEnricherChain, telemetryRetentionTimestampFactory, otelIdentityFactory) {
3282
+ this.runEventBus = runEventBus;
3283
+ this.runTraceContextRepository = runTraceContextRepository;
3284
+ this.workflowRunRepository = workflowRunRepository;
3285
+ this.telemetrySpanStore = telemetrySpanStore;
3286
+ this.telemetryEnricherChain = telemetryEnricherChain;
3287
+ this.telemetryRetentionTimestampFactory = telemetryRetentionTimestampFactory;
3288
+ this.otelIdentityFactory = otelIdentityFactory;
3289
+ }
3290
+ async start() {
3291
+ if (this.subscription) return;
3292
+ this.subscription = await this.runEventBus.subscribe(async (event) => {
3293
+ try {
3294
+ await this.handleEvent(event);
3295
+ } catch {}
3296
+ });
3297
+ }
3298
+ async stop() {
3299
+ if (!this.subscription) return;
3300
+ await this.subscription.close();
3301
+ this.subscription = null;
3302
+ }
3303
+ async handleEvent(event) {
3304
+ switch (event.kind) {
3305
+ case "runCreated":
3306
+ await this.handleRunCreated(event);
3307
+ return;
3308
+ case "runSaved":
3309
+ await this.handleRunSaved(event);
3310
+ return;
3311
+ case "nodeQueued":
3312
+ case "nodeStarted":
3313
+ case "nodeCompleted":
3314
+ case "nodeFailed":
3315
+ await this.handleNodeSnapshot(event);
3316
+ return;
3317
+ }
3318
+ }
3319
+ async handleRunCreated(event) {
3320
+ const trace = await this.runTraceContextRepository.getOrCreate({
3321
+ runId: event.runId,
3322
+ workflowId: event.workflowId,
3323
+ serviceName: "codemation.workflow"
3324
+ });
3325
+ const policySnapshot = await this.loadPolicySnapshot(event.runId);
3326
+ await this.runTraceContextRepository.upsertExpiry({
3327
+ runId: event.runId,
3328
+ expiresAt: this.telemetryRetentionTimestampFactory.createTraceContextExpiry(policySnapshot, new Date(event.at))
3329
+ });
3330
+ const enrichment = await this.telemetryEnricherChain.enrichRun(event.workflowId);
3331
+ await this.telemetrySpanStore.upsert({
3332
+ traceId: trace.traceId,
3333
+ spanId: trace.rootSpanId,
3334
+ runId: event.runId,
3335
+ workflowId: event.workflowId,
3336
+ name: "workflow.run",
3337
+ kind: "internal",
3338
+ status: "running",
3339
+ startTime: event.at,
3340
+ workflowFolder: enrichment.workflowFolder,
3341
+ retentionExpiresAt: this.telemetryRetentionTimestampFactory.createSpanExpiry(policySnapshot, new Date(event.at))
3342
+ });
3343
+ }
3344
+ async handleRunSaved(event) {
3345
+ const trace = await this.runTraceContextRepository.getOrCreate({
3346
+ runId: event.runId,
3347
+ workflowId: event.workflowId,
3348
+ serviceName: "codemation.workflow"
3349
+ });
3350
+ const policySnapshot = await this.loadPolicySnapshot(event.runId);
3351
+ const observedAt = new Date(event.state.finishedAt ?? event.at);
3352
+ await this.runTraceContextRepository.upsertExpiry({
3353
+ runId: event.runId,
3354
+ expiresAt: this.telemetryRetentionTimestampFactory.createTraceContextExpiry(policySnapshot, observedAt)
3355
+ });
3356
+ const enrichment = await this.telemetryEnricherChain.enrichRun(event.workflowId);
3357
+ const isTerminal = event.state.status === "completed" || event.state.status === "failed";
3358
+ await this.telemetrySpanStore.upsert({
3359
+ traceId: trace.traceId,
3360
+ spanId: trace.rootSpanId,
3361
+ runId: event.runId,
3362
+ workflowId: event.workflowId,
3363
+ name: "workflow.run",
3364
+ kind: "internal",
3365
+ status: event.state.status === "failed" ? "failed" : isTerminal ? "completed" : "running",
3366
+ startTime: event.state.startedAt,
3367
+ endTime: isTerminal ? event.state.finishedAt ?? event.at : void 0,
3368
+ workflowFolder: enrichment.workflowFolder,
3369
+ retentionExpiresAt: this.telemetryRetentionTimestampFactory.createSpanExpiry(policySnapshot, observedAt)
3370
+ });
3371
+ }
3372
+ async handleNodeSnapshot(event) {
3373
+ const trace = await this.runTraceContextRepository.getOrCreate({
3374
+ runId: event.runId,
3375
+ workflowId: event.workflowId,
3376
+ serviceName: "codemation.workflow"
3377
+ });
3378
+ const policySnapshot = await this.loadPolicySnapshot(event.runId);
3379
+ await this.runTraceContextRepository.upsertExpiry({
3380
+ runId: event.runId,
3381
+ expiresAt: this.telemetryRetentionTimestampFactory.createTraceContextExpiry(policySnapshot, new Date(event.at))
3382
+ });
3383
+ const enrichment = await this.telemetryEnricherChain.enrichNode({
3384
+ workflowId: event.workflowId,
3385
+ nodeId: event.snapshot.nodeId
3386
+ });
3387
+ await this.telemetrySpanStore.upsert(this.createNodeSpanUpsert(event, trace.traceId, trace.rootSpanId, enrichment, policySnapshot));
3388
+ }
3389
+ createNodeSpanUpsert(event, traceId, rootSpanId, enrichment, policySnapshot) {
3390
+ const snapshot = event.snapshot;
3391
+ const status = event.kind === "nodeFailed" ? "failed" : snapshot.finishedAt ? "completed" : "running";
3392
+ const observedAt = new Date(snapshot.finishedAt ?? snapshot.startedAt ?? snapshot.queuedAt ?? event.at);
3393
+ return {
3394
+ traceId,
3395
+ spanId: this.otelIdentityFactory.createNodeSpanId(snapshot.activationId ?? snapshot.nodeId),
3396
+ parentSpanId: rootSpanId,
3397
+ runId: event.runId,
3398
+ workflowId: event.workflowId,
3399
+ nodeId: snapshot.nodeId,
3400
+ activationId: snapshot.activationId,
3401
+ name: "workflow.node",
3402
+ kind: "internal",
3403
+ status,
3404
+ statusMessage: snapshot.error?.message,
3405
+ startTime: snapshot.startedAt ?? snapshot.queuedAt ?? event.at,
3406
+ endTime: snapshot.finishedAt,
3407
+ workflowFolder: enrichment.workflowFolder,
3408
+ nodeType: enrichment.nodeType,
3409
+ nodeRole: enrichment.nodeRole,
3410
+ retentionExpiresAt: this.telemetryRetentionTimestampFactory.createSpanExpiry(policySnapshot, observedAt),
3411
+ attributes: { usedPinnedOutput: snapshot.usedPinnedOutput ?? void 0 }
3412
+ };
3413
+ }
3414
+ async loadPolicySnapshot(runId) {
3415
+ return (await this.workflowRunRepository.load(runId))?.policySnapshot;
3416
+ }
3417
+ };
3418
+ RunEventBusTelemetryReporter = __decorate([
3419
+ injectable(),
3420
+ __decorateParam(0, inject(CoreTokens.RunEventBus)),
3421
+ __decorateParam(1, inject(ApplicationTokens.RunTraceContextRepository)),
3422
+ __decorateParam(2, inject(ApplicationTokens.WorkflowRunRepository)),
3423
+ __decorateParam(3, inject(ApplicationTokens.TelemetrySpanStore)),
3424
+ __decorateParam(4, inject(TelemetryEnricherChain)),
3425
+ __decorateParam(5, inject(TelemetryRetentionTimestampFactory)),
3426
+ __decorateParam(6, inject(OtelIdentityFactory)),
3427
+ __decorateMetadata("design:paramtypes", [
3428
+ Object,
3429
+ Object,
3430
+ Object,
3431
+ Object,
3432
+ typeof (_ref$42 = typeof TelemetryEnricherChain !== "undefined" && TelemetryEnricherChain) === "function" ? _ref$42 : Object,
3433
+ typeof (_ref2$10 = typeof TelemetryRetentionTimestampFactory !== "undefined" && TelemetryRetentionTimestampFactory) === "function" ? _ref2$10 : Object,
3434
+ typeof (_ref3$5 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref3$5 : Object
3435
+ ])
3436
+ ], RunEventBusTelemetryReporter);
3437
+
2067
3438
  //#endregion
2068
3439
  //#region src/domain/credentials/OAuth2ProviderRegistry.ts
2069
3440
  var _OAuth2ProviderRegistry;
@@ -2113,7 +3484,7 @@ OAuth2ProviderRegistry = _OAuth2ProviderRegistry = __decorate([injectable()], OA
2113
3484
 
2114
3485
  //#endregion
2115
3486
  //#region src/domain/credentials/OAuth2ConnectServiceFactory.ts
2116
- var _ref$33, _ref2$9, _ref3$4, _ref4$2, _ref5$1, _ref6, _ref7, _ref8, _OAuth2ConnectService;
3487
+ var _ref$41, _ref2$9, _ref3$4, _ref4$2, _ref5$2, _ref6$2, _ref7$1, _ref8, _OAuth2ConnectService;
2117
3488
  let OAuth2ConnectService = class OAuth2ConnectService$1 {
2118
3489
  static {
2119
3490
  _OAuth2ConnectService = this;
@@ -2364,13 +3735,13 @@ OAuth2ConnectService = _OAuth2ConnectService = __decorate([
2364
3735
  __decorateParam(9, inject(ApplicationTokens.AppConfig)),
2365
3736
  __decorateMetadata("design:paramtypes", [
2366
3737
  Object,
2367
- typeof (_ref$33 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$33 : Object,
3738
+ typeof (_ref$41 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref$41 : Object,
2368
3739
  typeof (_ref2$9 = typeof CredentialTypeRegistryImpl !== "undefined" && CredentialTypeRegistryImpl) === "function" ? _ref2$9 : Object,
2369
3740
  typeof (_ref3$4 = typeof CredentialRuntimeMaterialService !== "undefined" && CredentialRuntimeMaterialService) === "function" ? _ref3$4 : Object,
2370
3741
  typeof (_ref4$2 = typeof CredentialFieldEnvOverlayService !== "undefined" && CredentialFieldEnvOverlayService) === "function" ? _ref4$2 : Object,
2371
- typeof (_ref5$1 = typeof CredentialMaterialResolver !== "undefined" && CredentialMaterialResolver) === "function" ? _ref5$1 : Object,
2372
- typeof (_ref6 = typeof CredentialSecretCipher !== "undefined" && CredentialSecretCipher) === "function" ? _ref6 : Object,
2373
- typeof (_ref7 = typeof CredentialOAuth2ScopeResolver !== "undefined" && CredentialOAuth2ScopeResolver) === "function" ? _ref7 : Object,
3742
+ typeof (_ref5$2 = typeof CredentialMaterialResolver !== "undefined" && CredentialMaterialResolver) === "function" ? _ref5$2 : Object,
3743
+ typeof (_ref6$2 = typeof CredentialSecretCipher !== "undefined" && CredentialSecretCipher) === "function" ? _ref6$2 : Object,
3744
+ typeof (_ref7$1 = typeof CredentialOAuth2ScopeResolver !== "undefined" && CredentialOAuth2ScopeResolver) === "function" ? _ref7$1 : Object,
2374
3745
  typeof (_ref8 = typeof OAuth2ProviderRegistry !== "undefined" && OAuth2ProviderRegistry) === "function" ? _ref8 : Object,
2375
3746
  Object
2376
3747
  ])
@@ -2415,7 +3786,7 @@ BootRuntimeSnapshotHolder = __decorate([injectable()], BootRuntimeSnapshotHolder
2415
3786
 
2416
3787
  //#endregion
2417
3788
  //#region src/application/dev/DevBootstrapSummaryAssembler.ts
2418
- var _ref$32, _ref2$8, _ref3$3;
3789
+ var _ref$40, _ref2$8, _ref3$3;
2419
3790
  let DevBootstrapSummaryAssembler = class DevBootstrapSummaryAssembler$1 {
2420
3791
  constructor(bootRuntimeSnapshot, logLevelPolicyFactory$1, workflowActivationPolicy, workflowRepository) {
2421
3792
  this.bootRuntimeSnapshot = bootRuntimeSnapshot;
@@ -2479,7 +3850,7 @@ DevBootstrapSummaryAssembler = __decorate([
2479
3850
  __decorateParam(2, inject(RuntimeWorkflowActivationPolicy)),
2480
3851
  __decorateParam(3, inject(CoreTokens.WorkflowRepository)),
2481
3852
  __decorateMetadata("design:paramtypes", [
2482
- typeof (_ref$32 = typeof BootRuntimeSnapshotHolder !== "undefined" && BootRuntimeSnapshotHolder) === "function" ? _ref$32 : Object,
3853
+ typeof (_ref$40 = typeof BootRuntimeSnapshotHolder !== "undefined" && BootRuntimeSnapshotHolder) === "function" ? _ref$40 : Object,
2483
3854
  typeof (_ref2$8 = typeof LogLevelPolicyFactory !== "undefined" && LogLevelPolicyFactory) === "function" ? _ref2$8 : Object,
2484
3855
  typeof (_ref3$3 = typeof RuntimeWorkflowActivationPolicy !== "undefined" && RuntimeWorkflowActivationPolicy) === "function" ? _ref3$3 : Object,
2485
3856
  Object
@@ -2521,7 +3892,7 @@ var WorkflowPolicyUiPresentationFactory = class {
2521
3892
 
2522
3893
  //#endregion
2523
3894
  //#region src/application/mapping/WorkflowDefinitionMapper.ts
2524
- var _ref$31;
3895
+ var _ref$39;
2525
3896
  let WorkflowDefinitionMapper = class WorkflowDefinitionMapper$1 {
2526
3897
  constructor(policyUi, workflowActivationPolicy) {
2527
3898
  this.policyUi = policyUi;
@@ -2731,7 +4102,7 @@ WorkflowDefinitionMapper = __decorate([
2731
4102
  injectable(),
2732
4103
  __decorateParam(0, inject(WorkflowPolicyUiPresentationFactory)),
2733
4104
  __decorateParam(1, inject(CoreTokens.WorkflowActivationPolicy)),
2734
- __decorateMetadata("design:paramtypes", [typeof (_ref$31 = typeof WorkflowPolicyUiPresentationFactory !== "undefined" && WorkflowPolicyUiPresentationFactory) === "function" ? _ref$31 : Object, Object])
4105
+ __decorateMetadata("design:paramtypes", [typeof (_ref$39 = typeof WorkflowPolicyUiPresentationFactory !== "undefined" && WorkflowPolicyUiPresentationFactory) === "function" ? _ref$39 : Object, Object])
2735
4106
  ], WorkflowDefinitionMapper);
2736
4107
 
2737
4108
  //#endregion
@@ -2744,6 +4115,7 @@ var ApiPaths = class {
2744
4115
  static oauth2BasePath = `${this.apiBasePath}/oauth2`;
2745
4116
  static webhooksBasePath = `${this.apiBasePath}/webhooks`;
2746
4117
  static usersBasePath = `${this.apiBasePath}/users`;
4118
+ static telemetryBasePath = `${this.apiBasePath}/telemetry`;
2747
4119
  static whitelabelBasePath = `${this.apiBasePath}/whitelabel`;
2748
4120
  static bootstrapBasePath = `${this.apiBasePath}/bootstrap`;
2749
4121
  static authBasePath = `${this.apiBasePath}/auth`;
@@ -2825,6 +4197,21 @@ var ApiPaths = class {
2825
4197
  static users() {
2826
4198
  return this.usersBasePath;
2827
4199
  }
4200
+ static telemetryDashboardSummary() {
4201
+ return `${this.telemetryBasePath}/dashboard/summary`;
4202
+ }
4203
+ static telemetryDashboardTimeseries() {
4204
+ return `${this.telemetryBasePath}/dashboard/timeseries`;
4205
+ }
4206
+ static telemetryDashboardDimensions() {
4207
+ return `${this.telemetryBasePath}/dashboard/dimensions`;
4208
+ }
4209
+ static telemetryDashboardRuns() {
4210
+ return `${this.telemetryBasePath}/dashboard/runs`;
4211
+ }
4212
+ static telemetryRunTrace(runId) {
4213
+ return `${this.telemetryBasePath}/runs/${runId}/trace`;
4214
+ }
2828
4215
  static authSession() {
2829
4216
  return `${this.authBasePath}/session`;
2830
4217
  }
@@ -3086,7 +4473,7 @@ CodemationFrontendAuthSnapshotFactory = __decorate([injectable()], CodemationFro
3086
4473
 
3087
4474
  //#endregion
3088
4475
  //#region src/presentation/frontend/FrontendAppConfigFactory.ts
3089
- var _ref$30;
4476
+ var _ref$38;
3090
4477
  let FrontendAppConfigFactory = class FrontendAppConfigFactory$1 {
3091
4478
  constructor(appConfig, authSnapshotFactory) {
3092
4479
  this.appConfig = appConfig;
@@ -3106,12 +4493,12 @@ FrontendAppConfigFactory = __decorate([
3106
4493
  injectable(),
3107
4494
  __decorateParam(0, inject(ApplicationTokens.AppConfig)),
3108
4495
  __decorateParam(1, inject(CodemationFrontendAuthSnapshotFactory)),
3109
- __decorateMetadata("design:paramtypes", [Object, typeof (_ref$30 = typeof CodemationFrontendAuthSnapshotFactory !== "undefined" && CodemationFrontendAuthSnapshotFactory) === "function" ? _ref$30 : Object])
4496
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$38 = typeof CodemationFrontendAuthSnapshotFactory !== "undefined" && CodemationFrontendAuthSnapshotFactory) === "function" ? _ref$38 : Object])
3110
4497
  ], FrontendAppConfigFactory);
3111
4498
 
3112
4499
  //#endregion
3113
4500
  //#region src/presentation/frontend/InternalAuthBootstrapFactory.ts
3114
- var _ref$29;
4501
+ var _ref$37;
3115
4502
  let InternalAuthBootstrapFactory = class InternalAuthBootstrapFactory$1 {
3116
4503
  constructor(appConfig, authSnapshotFactory) {
3117
4504
  this.appConfig = appConfig;
@@ -3131,12 +4518,12 @@ InternalAuthBootstrapFactory = __decorate([
3131
4518
  injectable(),
3132
4519
  __decorateParam(0, inject(ApplicationTokens.AppConfig)),
3133
4520
  __decorateParam(1, inject(CodemationFrontendAuthSnapshotFactory)),
3134
- __decorateMetadata("design:paramtypes", [Object, typeof (_ref$29 = typeof CodemationFrontendAuthSnapshotFactory !== "undefined" && CodemationFrontendAuthSnapshotFactory) === "function" ? _ref$29 : Object])
4521
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$37 = typeof CodemationFrontendAuthSnapshotFactory !== "undefined" && CodemationFrontendAuthSnapshotFactory) === "function" ? _ref$37 : Object])
3135
4522
  ], InternalAuthBootstrapFactory);
3136
4523
 
3137
4524
  //#endregion
3138
4525
  //#region src/presentation/frontend/PublicFrontendBootstrapFactory.ts
3139
- var _ref$28;
4526
+ var _ref$36;
3140
4527
  let PublicFrontendBootstrapFactory = class PublicFrontendBootstrapFactory$1 {
3141
4528
  constructor(frontendAppConfigFactory) {
3142
4529
  this.frontendAppConfigFactory = frontendAppConfigFactory;
@@ -3155,7 +4542,7 @@ let PublicFrontendBootstrapFactory = class PublicFrontendBootstrapFactory$1 {
3155
4542
  PublicFrontendBootstrapFactory = __decorate([
3156
4543
  injectable(),
3157
4544
  __decorateParam(0, inject(FrontendAppConfigFactory)),
3158
- __decorateMetadata("design:paramtypes", [typeof (_ref$28 = typeof FrontendAppConfigFactory !== "undefined" && FrontendAppConfigFactory) === "function" ? _ref$28 : Object])
4545
+ __decorateMetadata("design:paramtypes", [typeof (_ref$36 = typeof FrontendAppConfigFactory !== "undefined" && FrontendAppConfigFactory) === "function" ? _ref$36 : Object])
3159
4546
  ], PublicFrontendBootstrapFactory);
3160
4547
 
3161
4548
  //#endregion
@@ -3170,7 +4557,7 @@ SecureRequestDetector = __decorate([injectable()], SecureRequestDetector);
3170
4557
 
3171
4558
  //#endregion
3172
4559
  //#region src/infrastructure/auth/AuthSessionCookieFactory.ts
3173
- var _ref$27, _AuthSessionCookieFactory;
4560
+ var _ref$35, _AuthSessionCookieFactory;
3174
4561
  let AuthSessionCookieFactory = class AuthSessionCookieFactory$1 {
3175
4562
  static {
3176
4563
  _AuthSessionCookieFactory = this;
@@ -3272,7 +4659,7 @@ AuthSessionCookieFactory = _AuthSessionCookieFactory = __decorate([
3272
4659
  injectable(),
3273
4660
  __decorateParam(0, inject(ApplicationTokens.AppConfig)),
3274
4661
  __decorateParam(1, inject(SecureRequestDetector)),
3275
- __decorateMetadata("design:paramtypes", [Object, typeof (_ref$27 = typeof SecureRequestDetector !== "undefined" && SecureRequestDetector) === "function" ? _ref$27 : Object])
4662
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$35 = typeof SecureRequestDetector !== "undefined" && SecureRequestDetector) === "function" ? _ref$35 : Object])
3276
4663
  ], AuthSessionCookieFactory);
3277
4664
 
3278
4665
  //#endregion
@@ -3481,7 +4868,7 @@ var ServerHttpErrorResponseFactory = class {
3481
4868
 
3482
4869
  //#endregion
3483
4870
  //#region src/presentation/http/routeHandlers/AuthHttpRouteHandlerFactory.ts
3484
- var _ref$26, _ref2$7, _ref3$2;
4871
+ var _ref$34, _ref2$7, _ref3$2;
3485
4872
  let AuthHttpRouteHandler = class AuthHttpRouteHandler$1 {
3486
4873
  constructor(sessionVerifier, appConfig, authSessionCookieFactory, betterAuthRuntime, inAppCallbackUrlPolicy) {
3487
4874
  this.sessionVerifier = sessionVerifier;
@@ -3655,7 +5042,7 @@ AuthHttpRouteHandler = __decorate([
3655
5042
  __decorateMetadata("design:paramtypes", [
3656
5043
  Object,
3657
5044
  Object,
3658
- typeof (_ref$26 = typeof AuthSessionCookieFactory !== "undefined" && AuthSessionCookieFactory) === "function" ? _ref$26 : Object,
5045
+ typeof (_ref$34 = typeof AuthSessionCookieFactory !== "undefined" && AuthSessionCookieFactory) === "function" ? _ref$34 : Object,
3659
5046
  typeof (_ref2$7 = typeof CodemationBetterAuthRuntime !== "undefined" && CodemationBetterAuthRuntime) === "function" ? _ref2$7 : Object,
3660
5047
  typeof (_ref3$2 = typeof InAppCallbackUrlPolicy !== "undefined" && InAppCallbackUrlPolicy) === "function" ? _ref3$2 : Object
3661
5048
  ])
@@ -3663,7 +5050,7 @@ AuthHttpRouteHandler = __decorate([
3663
5050
 
3664
5051
  //#endregion
3665
5052
  //#region src/presentation/http/routeHandlers/DevBootstrapSummaryHttpRouteHandler.ts
3666
- var _ref$25;
5053
+ var _ref$33;
3667
5054
  let DevBootstrapSummaryHttpRouteHandler = class DevBootstrapSummaryHttpRouteHandler$1 {
3668
5055
  constructor(assembler) {
3669
5056
  this.assembler = assembler;
@@ -3683,12 +5070,12 @@ let DevBootstrapSummaryHttpRouteHandler = class DevBootstrapSummaryHttpRouteHand
3683
5070
  DevBootstrapSummaryHttpRouteHandler = __decorate([
3684
5071
  injectable(),
3685
5072
  __decorateParam(0, inject(DevBootstrapSummaryAssembler)),
3686
- __decorateMetadata("design:paramtypes", [typeof (_ref$25 = typeof DevBootstrapSummaryAssembler !== "undefined" && DevBootstrapSummaryAssembler) === "function" ? _ref$25 : Object])
5073
+ __decorateMetadata("design:paramtypes", [typeof (_ref$33 = typeof DevBootstrapSummaryAssembler !== "undefined" && DevBootstrapSummaryAssembler) === "function" ? _ref$33 : Object])
3687
5074
  ], DevBootstrapSummaryHttpRouteHandler);
3688
5075
 
3689
5076
  //#endregion
3690
5077
  //#region src/presentation/http/routeHandlers/InternalAuthBootstrapHttpRouteHandler.ts
3691
- var _ref$24;
5078
+ var _ref$32;
3692
5079
  let InternalAuthBootstrapHttpRouteHandler = class InternalAuthBootstrapHttpRouteHandler$1 {
3693
5080
  constructor(bootstrapFactory) {
3694
5081
  this.bootstrapFactory = bootstrapFactory;
@@ -3703,12 +5090,12 @@ let InternalAuthBootstrapHttpRouteHandler = class InternalAuthBootstrapHttpRoute
3703
5090
  InternalAuthBootstrapHttpRouteHandler = __decorate([
3704
5091
  injectable(),
3705
5092
  __decorateParam(0, inject(InternalAuthBootstrapFactory)),
3706
- __decorateMetadata("design:paramtypes", [typeof (_ref$24 = typeof InternalAuthBootstrapFactory !== "undefined" && InternalAuthBootstrapFactory) === "function" ? _ref$24 : Object])
5093
+ __decorateMetadata("design:paramtypes", [typeof (_ref$32 = typeof InternalAuthBootstrapFactory !== "undefined" && InternalAuthBootstrapFactory) === "function" ? _ref$32 : Object])
3707
5094
  ], InternalAuthBootstrapHttpRouteHandler);
3708
5095
 
3709
5096
  //#endregion
3710
5097
  //#region src/presentation/http/routeHandlers/PublicFrontendBootstrapHttpRouteHandler.ts
3711
- var _ref$23;
5098
+ var _ref$31;
3712
5099
  let PublicFrontendBootstrapHttpRouteHandler = class PublicFrontendBootstrapHttpRouteHandler$1 {
3713
5100
  constructor(bootstrapFactory) {
3714
5101
  this.bootstrapFactory = bootstrapFactory;
@@ -3723,7 +5110,7 @@ let PublicFrontendBootstrapHttpRouteHandler = class PublicFrontendBootstrapHttpR
3723
5110
  PublicFrontendBootstrapHttpRouteHandler = __decorate([
3724
5111
  injectable(),
3725
5112
  __decorateParam(0, inject(PublicFrontendBootstrapFactory)),
3726
- __decorateMetadata("design:paramtypes", [typeof (_ref$23 = typeof PublicFrontendBootstrapFactory !== "undefined" && PublicFrontendBootstrapFactory) === "function" ? _ref$23 : Object])
5113
+ __decorateMetadata("design:paramtypes", [typeof (_ref$31 = typeof PublicFrontendBootstrapFactory !== "undefined" && PublicFrontendBootstrapFactory) === "function" ? _ref$31 : Object])
3727
5114
  ], PublicFrontendBootstrapHttpRouteHandler);
3728
5115
 
3729
5116
  //#endregion
@@ -3901,7 +5288,7 @@ var HonoHttpAnonymousRoutePolicy = class {
3901
5288
 
3902
5289
  //#endregion
3903
5290
  //#region src/presentation/http/hono/CodemationHonoApiAppFactory.ts
3904
- var _ref$22, _ref2$6;
5291
+ var _ref$30, _ref2$6;
3905
5292
  let CodemationHonoApiApp = class CodemationHonoApiApp$1 {
3906
5293
  app;
3907
5294
  constructor(sessionVerifier, registrars, binaryHttpRouteHandler) {
@@ -3942,14 +5329,14 @@ CodemationHonoApiApp = __decorate([
3942
5329
  __decorateParam(2, inject(BinaryHttpRouteHandler)),
3943
5330
  __decorateMetadata("design:paramtypes", [
3944
5331
  Object,
3945
- typeof (_ref$22 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$22 : Object,
5332
+ typeof (_ref$30 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$30 : Object,
3946
5333
  typeof (_ref2$6 = typeof BinaryHttpRouteHandler !== "undefined" && BinaryHttpRouteHandler) === "function" ? _ref2$6 : Object
3947
5334
  ])
3948
5335
  ], CodemationHonoApiApp);
3949
5336
 
3950
5337
  //#endregion
3951
5338
  //#region src/presentation/http/hono/registrars/AuthHonoApiRouteRegistrar.ts
3952
- var _ref$21, _ref2$5;
5339
+ var _ref$29, _ref2$5;
3953
5340
  let AuthHonoApiRouteRegistrar = class AuthHonoApiRouteRegistrar$1 {
3954
5341
  constructor(handler, betterAuthRuntime) {
3955
5342
  this.handler = handler;
@@ -3975,12 +5362,12 @@ AuthHonoApiRouteRegistrar = __decorate([
3975
5362
  }]),
3976
5363
  __decorateParam(0, inject(AuthHttpRouteHandler)),
3977
5364
  __decorateParam(1, inject(CodemationBetterAuthRuntime)),
3978
- __decorateMetadata("design:paramtypes", [typeof (_ref$21 = typeof AuthHttpRouteHandler !== "undefined" && AuthHttpRouteHandler) === "function" ? _ref$21 : Object, typeof (_ref2$5 = typeof CodemationBetterAuthRuntime !== "undefined" && CodemationBetterAuthRuntime) === "function" ? _ref2$5 : Object])
5365
+ __decorateMetadata("design:paramtypes", [typeof (_ref$29 = typeof AuthHttpRouteHandler !== "undefined" && AuthHttpRouteHandler) === "function" ? _ref$29 : Object, typeof (_ref2$5 = typeof CodemationBetterAuthRuntime !== "undefined" && CodemationBetterAuthRuntime) === "function" ? _ref2$5 : Object])
3979
5366
  ], AuthHonoApiRouteRegistrar);
3980
5367
 
3981
5368
  //#endregion
3982
5369
  //#region src/presentation/http/hono/registrars/BinaryHonoApiRouteRegistrar.ts
3983
- var _ref$20;
5370
+ var _ref$28;
3984
5371
  let BinaryHonoApiRouteRegistrar = class BinaryHonoApiRouteRegistrar$1 {
3985
5372
  constructor(handler) {
3986
5373
  this.handler = handler;
@@ -3999,12 +5386,12 @@ BinaryHonoApiRouteRegistrar = __decorate([
3999
5386
  useClass: BinaryHonoApiRouteRegistrar
4000
5387
  }]),
4001
5388
  __decorateParam(0, inject(BinaryHttpRouteHandler)),
4002
- __decorateMetadata("design:paramtypes", [typeof (_ref$20 = typeof BinaryHttpRouteHandler !== "undefined" && BinaryHttpRouteHandler) === "function" ? _ref$20 : Object])
5389
+ __decorateMetadata("design:paramtypes", [typeof (_ref$28 = typeof BinaryHttpRouteHandler !== "undefined" && BinaryHttpRouteHandler) === "function" ? _ref$28 : Object])
4003
5390
  ], BinaryHonoApiRouteRegistrar);
4004
5391
 
4005
5392
  //#endregion
4006
5393
  //#region src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts
4007
- var _ref$19, _ref2$4;
5394
+ var _ref$27, _ref2$4;
4008
5395
  let BootstrapHonoApiRouteRegistrar = class BootstrapHonoApiRouteRegistrar$1 {
4009
5396
  constructor(publicFrontendBootstrapHttpRouteHandler, internalAuthBootstrapHttpRouteHandler) {
4010
5397
  this.publicFrontendBootstrapHttpRouteHandler = publicFrontendBootstrapHttpRouteHandler;
@@ -4026,7 +5413,7 @@ BootstrapHonoApiRouteRegistrar = __decorate([
4026
5413
  }]),
4027
5414
  __decorateParam(0, inject(PublicFrontendBootstrapHttpRouteHandler)),
4028
5415
  __decorateParam(1, inject(InternalAuthBootstrapHttpRouteHandler)),
4029
- __decorateMetadata("design:paramtypes", [typeof (_ref$19 = typeof PublicFrontendBootstrapHttpRouteHandler !== "undefined" && PublicFrontendBootstrapHttpRouteHandler) === "function" ? _ref$19 : Object, typeof (_ref2$4 = typeof InternalAuthBootstrapHttpRouteHandler !== "undefined" && InternalAuthBootstrapHttpRouteHandler) === "function" ? _ref2$4 : Object])
5416
+ __decorateMetadata("design:paramtypes", [typeof (_ref$27 = typeof PublicFrontendBootstrapHttpRouteHandler !== "undefined" && PublicFrontendBootstrapHttpRouteHandler) === "function" ? _ref$27 : Object, typeof (_ref2$4 = typeof InternalAuthBootstrapHttpRouteHandler !== "undefined" && InternalAuthBootstrapHttpRouteHandler) === "function" ? _ref2$4 : Object])
4030
5417
  ], BootstrapHonoApiRouteRegistrar);
4031
5418
 
4032
5419
  //#endregion
@@ -4134,7 +5521,7 @@ CredentialHttpRouteHandler = __decorate([
4134
5521
 
4135
5522
  //#endregion
4136
5523
  //#region src/presentation/http/hono/registrars/CredentialHonoApiRouteRegistrar.ts
4137
- var _ref$18;
5524
+ var _ref$26;
4138
5525
  let CredentialHonoApiRouteRegistrar = class CredentialHonoApiRouteRegistrar$1 {
4139
5526
  constructor(handler) {
4140
5527
  this.handler = handler;
@@ -4159,12 +5546,12 @@ CredentialHonoApiRouteRegistrar = __decorate([
4159
5546
  useClass: CredentialHonoApiRouteRegistrar
4160
5547
  }]),
4161
5548
  __decorateParam(0, inject(CredentialHttpRouteHandler)),
4162
- __decorateMetadata("design:paramtypes", [typeof (_ref$18 = typeof CredentialHttpRouteHandler !== "undefined" && CredentialHttpRouteHandler) === "function" ? _ref$18 : Object])
5549
+ __decorateMetadata("design:paramtypes", [typeof (_ref$26 = typeof CredentialHttpRouteHandler !== "undefined" && CredentialHttpRouteHandler) === "function" ? _ref$26 : Object])
4163
5550
  ], CredentialHonoApiRouteRegistrar);
4164
5551
 
4165
5552
  //#endregion
4166
5553
  //#region src/presentation/http/hono/registrars/DevHonoApiRouteRegistrar.ts
4167
- var _ref$17;
5554
+ var _ref$25;
4168
5555
  let DevHonoApiRouteRegistrar = class DevHonoApiRouteRegistrar$1 {
4169
5556
  constructor(handler) {
4170
5557
  this.handler = handler;
@@ -4180,12 +5567,12 @@ DevHonoApiRouteRegistrar = __decorate([
4180
5567
  useClass: DevHonoApiRouteRegistrar
4181
5568
  }]),
4182
5569
  __decorateParam(0, inject(DevBootstrapSummaryHttpRouteHandler)),
4183
- __decorateMetadata("design:paramtypes", [typeof (_ref$17 = typeof DevBootstrapSummaryHttpRouteHandler !== "undefined" && DevBootstrapSummaryHttpRouteHandler) === "function" ? _ref$17 : Object])
5570
+ __decorateMetadata("design:paramtypes", [typeof (_ref$25 = typeof DevBootstrapSummaryHttpRouteHandler !== "undefined" && DevBootstrapSummaryHttpRouteHandler) === "function" ? _ref$25 : Object])
4184
5571
  ], DevHonoApiRouteRegistrar);
4185
5572
 
4186
5573
  //#endregion
4187
5574
  //#region src/presentation/http/routeHandlers/OAuth2HttpRouteHandlerFactory.ts
4188
- var _ref$16, _ref2$3, _OAuth2HttpRouteHandler;
5575
+ var _ref$24, _ref2$3, _OAuth2HttpRouteHandler;
4189
5576
  let OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = class OAuth2HttpRouteHandler$1 {
4190
5577
  constructor(oauth2ConnectService, credentialInstanceService) {
4191
5578
  this.oauth2ConnectService = oauth2ConnectService;
@@ -4285,12 +5672,12 @@ OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = __decorate([
4285
5672
  injectable(),
4286
5673
  __decorateParam(0, inject(OAuth2ConnectService)),
4287
5674
  __decorateParam(1, inject(CredentialInstanceService)),
4288
- __decorateMetadata("design:paramtypes", [typeof (_ref$16 = typeof OAuth2ConnectService !== "undefined" && OAuth2ConnectService) === "function" ? _ref$16 : Object, typeof (_ref2$3 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref2$3 : Object])
5675
+ __decorateMetadata("design:paramtypes", [typeof (_ref$24 = typeof OAuth2ConnectService !== "undefined" && OAuth2ConnectService) === "function" ? _ref$24 : Object, typeof (_ref2$3 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref2$3 : Object])
4289
5676
  ], OAuth2HttpRouteHandler);
4290
5677
 
4291
5678
  //#endregion
4292
5679
  //#region src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts
4293
- var _ref$15;
5680
+ var _ref$23;
4294
5681
  let OAuth2HonoApiRouteRegistrar = class OAuth2HonoApiRouteRegistrar$1 {
4295
5682
  constructor(handler) {
4296
5683
  this.handler = handler;
@@ -4309,7 +5696,7 @@ OAuth2HonoApiRouteRegistrar = __decorate([
4309
5696
  useClass: OAuth2HonoApiRouteRegistrar
4310
5697
  }]),
4311
5698
  __decorateParam(0, inject(OAuth2HttpRouteHandler)),
4312
- __decorateMetadata("design:paramtypes", [typeof (_ref$15 = typeof OAuth2HttpRouteHandler !== "undefined" && OAuth2HttpRouteHandler) === "function" ? _ref$15 : Object])
5699
+ __decorateMetadata("design:paramtypes", [typeof (_ref$23 = typeof OAuth2HttpRouteHandler !== "undefined" && OAuth2HttpRouteHandler) === "function" ? _ref$23 : Object])
4313
5700
  ], OAuth2HonoApiRouteRegistrar);
4314
5701
 
4315
5702
  //#endregion
@@ -4379,7 +5766,7 @@ RunHttpRouteHandler = __decorate([
4379
5766
 
4380
5767
  //#endregion
4381
5768
  //#region src/presentation/http/hono/registrars/RunHonoApiRouteRegistrar.ts
4382
- var _ref$14;
5769
+ var _ref$22;
4383
5770
  let RunHonoApiRouteRegistrar = class RunHonoApiRouteRegistrar$1 {
4384
5771
  constructor(handler) {
4385
5772
  this.handler = handler;
@@ -4403,11 +5790,154 @@ RunHonoApiRouteRegistrar = __decorate([
4403
5790
  injectable(),
4404
5791
  registry([{
4405
5792
  token: ApplicationTokens.HonoApiRouteRegistrar,
4406
- useClass: RunHonoApiRouteRegistrar
5793
+ useClass: RunHonoApiRouteRegistrar
5794
+ }]),
5795
+ __decorateParam(0, inject(RunHttpRouteHandler)),
5796
+ __decorateMetadata("design:paramtypes", [typeof (_ref$22 = typeof RunHttpRouteHandler !== "undefined" && RunHttpRouteHandler) === "function" ? _ref$22 : Object])
5797
+ ], RunHonoApiRouteRegistrar);
5798
+
5799
+ //#endregion
5800
+ //#region src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts
5801
+ var TelemetryDashboardRequestError = class extends Error {};
5802
+
5803
+ //#endregion
5804
+ //#region src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts
5805
+ let TelemetryHttpRouteHandler = class TelemetryHttpRouteHandler$1 {
5806
+ constructor(queryBus) {
5807
+ this.queryBus = queryBus;
5808
+ }
5809
+ async getDashboardSummary(request) {
5810
+ try {
5811
+ const filters = this.parseFilters(request);
5812
+ return Response.json(await this.queryBus.execute(new GetTelemetryDashboardSummaryQuery(filters)));
5813
+ } catch (error) {
5814
+ if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
5815
+ return ServerHttpErrorResponseFactory.fromUnknown(error);
5816
+ }
5817
+ }
5818
+ async getDashboardTimeseries(request) {
5819
+ try {
5820
+ const parsed = this.parseTimeseriesRequest(request);
5821
+ return Response.json(await this.queryBus.execute(new GetTelemetryDashboardTimeseriesQuery(parsed)));
5822
+ } catch (error) {
5823
+ if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
5824
+ return ServerHttpErrorResponseFactory.fromUnknown(error);
5825
+ }
5826
+ }
5827
+ async getDashboardDimensions(request) {
5828
+ try {
5829
+ const filters = this.parseFilters(request);
5830
+ return Response.json(await this.queryBus.execute(new GetTelemetryDashboardDimensionsQuery(filters)));
5831
+ } catch (error) {
5832
+ if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
5833
+ return ServerHttpErrorResponseFactory.fromUnknown(error);
5834
+ }
5835
+ }
5836
+ async getDashboardRuns(request) {
5837
+ try {
5838
+ const parsed = this.parseRunsRequest(request);
5839
+ return Response.json(await this.queryBus.execute(new GetTelemetryDashboardRunsQuery(parsed)));
5840
+ } catch (error) {
5841
+ if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
5842
+ return ServerHttpErrorResponseFactory.fromUnknown(error);
5843
+ }
5844
+ }
5845
+ async getRunTrace(runId) {
5846
+ try {
5847
+ if (!runId.trim()) throw new TelemetryDashboardRequestError("Run trace request requires a run id.");
5848
+ return Response.json(await this.queryBus.execute(new GetTelemetryRunTraceQuery(runId)));
5849
+ } catch (error) {
5850
+ if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
5851
+ return ServerHttpErrorResponseFactory.fromUnknown(error);
5852
+ }
5853
+ }
5854
+ parseTimeseriesRequest(request) {
5855
+ const interval = new URL(request.url).searchParams.get("interval");
5856
+ if (interval !== "minute_5" && interval !== "minute_15" && interval !== "hour" && interval !== "day" && interval !== "week") throw new TelemetryDashboardRequestError("Query string must include interval=minute_5|minute_15|hour|day|week.");
5857
+ return {
5858
+ interval,
5859
+ filters: this.parseFilters(request)
5860
+ };
5861
+ }
5862
+ parseRunsRequest(request) {
5863
+ const url = new URL(request.url);
5864
+ return {
5865
+ filters: this.parseFilters(request),
5866
+ page: this.readPositiveInt(url, "page", 1),
5867
+ pageSize: this.readPositiveInt(url, "pageSize", 10)
5868
+ };
5869
+ }
5870
+ parseFilters(request) {
5871
+ const url = new URL(request.url);
5872
+ return {
5873
+ workflowIds: this.readMany(url, "workflowId"),
5874
+ statuses: this.readStatuses(url),
5875
+ runOrigins: this.readRunOrigins(url),
5876
+ modelNames: this.readMany(url, "modelName"),
5877
+ startTimeGte: this.readIso(url, "startTimeGte"),
5878
+ endTimeLte: this.readIso(url, "endTimeLte")
5879
+ };
5880
+ }
5881
+ readMany(url, key) {
5882
+ const values = url.searchParams.getAll(key).map((value) => value.trim()).filter((value) => value.length > 0);
5883
+ return values.length > 0 ? values : void 0;
5884
+ }
5885
+ readStatuses(url) {
5886
+ const values = this.readMany(url, "status");
5887
+ if (!values) return;
5888
+ for (const value of values) if (value !== "running" && value !== "completed" && value !== "failed") throw new TelemetryDashboardRequestError(`Unsupported telemetry status filter: ${value}`);
5889
+ return values;
5890
+ }
5891
+ readRunOrigins(url) {
5892
+ const values = this.readMany(url, "runOrigin");
5893
+ if (!values) return;
5894
+ for (const value of values) if (value !== "triggered" && value !== "manual") throw new TelemetryDashboardRequestError(`Unsupported telemetry run origin filter: ${value}`);
5895
+ return values;
5896
+ }
5897
+ readIso(url, key) {
5898
+ const value = url.searchParams.get(key)?.trim();
5899
+ if (!value) return;
5900
+ if (Number.isNaN(new Date(value).getTime())) throw new TelemetryDashboardRequestError(`Invalid ISO timestamp for ${key}.`);
5901
+ return value;
5902
+ }
5903
+ readPositiveInt(url, key, fallback) {
5904
+ const raw$1 = url.searchParams.get(key)?.trim();
5905
+ if (!raw$1) return fallback;
5906
+ const value = Number(raw$1);
5907
+ if (!Number.isInteger(value) || value <= 0) throw new TelemetryDashboardRequestError(`${key} must be a positive integer.`);
5908
+ return value;
5909
+ }
5910
+ };
5911
+ TelemetryHttpRouteHandler = __decorate([
5912
+ injectable(),
5913
+ __decorateParam(0, inject(ApplicationTokens.QueryBus)),
5914
+ __decorateMetadata("design:paramtypes", [Object])
5915
+ ], TelemetryHttpRouteHandler);
5916
+
5917
+ //#endregion
5918
+ //#region src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts
5919
+ var _ref$21;
5920
+ let TelemetryHonoApiRouteRegistrar = class TelemetryHonoApiRouteRegistrar$1 {
5921
+ constructor(handler) {
5922
+ this.handler = handler;
5923
+ }
5924
+ register(app) {
5925
+ app.get("/telemetry/dashboard/summary", (c) => this.handler.getDashboardSummary(c.req.raw));
5926
+ app.get("/telemetry/dashboard/timeseries", (c) => this.handler.getDashboardTimeseries(c.req.raw));
5927
+ app.get("/telemetry/dashboard/dimensions", (c) => this.handler.getDashboardDimensions(c.req.raw));
5928
+ app.get("/telemetry/dashboard/runs", (c) => this.handler.getDashboardRuns(c.req.raw));
5929
+ app.get("/telemetry/runs/:runId/trace", (c) => this.handler.getRunTrace(c.req.param("runId")));
5930
+ }
5931
+ };
5932
+ TelemetryHonoApiRouteRegistrar = __decorate([
5933
+ injectable(),
5934
+ registry([{
5935
+ token: ApplicationTokens.HonoApiRouteRegistrar,
5936
+ useClass: TelemetryHonoApiRouteRegistrar
4407
5937
  }]),
4408
- __decorateParam(0, inject(RunHttpRouteHandler)),
4409
- __decorateMetadata("design:paramtypes", [typeof (_ref$14 = typeof RunHttpRouteHandler !== "undefined" && RunHttpRouteHandler) === "function" ? _ref$14 : Object])
4410
- ], RunHonoApiRouteRegistrar);
5938
+ __decorateParam(0, inject(TelemetryHttpRouteHandler)),
5939
+ __decorateMetadata("design:paramtypes", [typeof (_ref$21 = typeof TelemetryHttpRouteHandler !== "undefined" && TelemetryHttpRouteHandler) === "function" ? _ref$21 : Object])
5940
+ ], TelemetryHonoApiRouteRegistrar);
4411
5941
 
4412
5942
  //#endregion
4413
5943
  //#region src/presentation/http/routeHandlers/UserHttpRouteHandlerFactory.ts
@@ -4490,7 +6020,7 @@ UserHttpRouteHandler = __decorate([
4490
6020
 
4491
6021
  //#endregion
4492
6022
  //#region src/presentation/http/hono/registrars/UserHonoApiRouteRegistrar.ts
4493
- var _ref$13;
6023
+ var _ref$20;
4494
6024
  let UserHonoApiRouteRegistrar = class UserHonoApiRouteRegistrar$1 {
4495
6025
  constructor(handler) {
4496
6026
  this.handler = handler;
@@ -4511,7 +6041,7 @@ UserHonoApiRouteRegistrar = __decorate([
4511
6041
  useClass: UserHonoApiRouteRegistrar
4512
6042
  }]),
4513
6043
  __decorateParam(0, inject(UserHttpRouteHandler)),
4514
- __decorateMetadata("design:paramtypes", [typeof (_ref$13 = typeof UserHttpRouteHandler !== "undefined" && UserHttpRouteHandler) === "function" ? _ref$13 : Object])
6044
+ __decorateMetadata("design:paramtypes", [typeof (_ref$20 = typeof UserHttpRouteHandler !== "undefined" && UserHttpRouteHandler) === "function" ? _ref$20 : Object])
4515
6045
  ], UserHonoApiRouteRegistrar);
4516
6046
 
4517
6047
  //#endregion
@@ -4612,7 +6142,7 @@ RequestToWebhookItemMapper = __decorate([
4612
6142
 
4613
6143
  //#endregion
4614
6144
  //#region src/presentation/http/routeHandlers/WebhookHttpRouteHandler.ts
4615
- var _ref$12, _ref2$2;
6145
+ var _ref$19, _ref2$2;
4616
6146
  let WebhookHttpRouteHandler = class WebhookHttpRouteHandler$1 {
4617
6147
  constructor(commandBus, runIntentService, requestToWebhookItemMapper) {
4618
6148
  this.commandBus = commandBus;
@@ -4643,14 +6173,14 @@ WebhookHttpRouteHandler = __decorate([
4643
6173
  __decorateParam(2, inject(RequestToWebhookItemMapper)),
4644
6174
  __decorateMetadata("design:paramtypes", [
4645
6175
  Object,
4646
- typeof (_ref$12 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$12 : Object,
6176
+ typeof (_ref$19 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$19 : Object,
4647
6177
  typeof (_ref2$2 = typeof RequestToWebhookItemMapper !== "undefined" && RequestToWebhookItemMapper) === "function" ? _ref2$2 : Object
4648
6178
  ])
4649
6179
  ], WebhookHttpRouteHandler);
4650
6180
 
4651
6181
  //#endregion
4652
6182
  //#region src/presentation/http/hono/registrars/WebhookHonoApiRouteRegistrar.ts
4653
- var _ref$11;
6183
+ var _ref$18;
4654
6184
  let WebhookHonoApiRouteRegistrar = class WebhookHonoApiRouteRegistrar$1 {
4655
6185
  constructor(handler) {
4656
6186
  this.handler = handler;
@@ -4672,12 +6202,12 @@ WebhookHonoApiRouteRegistrar = __decorate([
4672
6202
  useClass: WebhookHonoApiRouteRegistrar
4673
6203
  }]),
4674
6204
  __decorateParam(0, inject(WebhookHttpRouteHandler)),
4675
- __decorateMetadata("design:paramtypes", [typeof (_ref$11 = typeof WebhookHttpRouteHandler !== "undefined" && WebhookHttpRouteHandler) === "function" ? _ref$11 : Object])
6205
+ __decorateMetadata("design:paramtypes", [typeof (_ref$18 = typeof WebhookHttpRouteHandler !== "undefined" && WebhookHttpRouteHandler) === "function" ? _ref$18 : Object])
4676
6206
  ], WebhookHonoApiRouteRegistrar);
4677
6207
 
4678
6208
  //#endregion
4679
6209
  //#region src/presentation/http/hono/registrars/WhitelabelHonoApiRouteRegistrar.ts
4680
- var _ref$10;
6210
+ var _ref$17;
4681
6211
  let WhitelabelHonoApiRouteRegistrar = class WhitelabelHonoApiRouteRegistrar$1 {
4682
6212
  constructor(whitelabelLogoHttpRouteHandler) {
4683
6213
  this.whitelabelLogoHttpRouteHandler = whitelabelLogoHttpRouteHandler;
@@ -4693,12 +6223,12 @@ WhitelabelHonoApiRouteRegistrar = __decorate([
4693
6223
  useClass: WhitelabelHonoApiRouteRegistrar
4694
6224
  }]),
4695
6225
  __decorateParam(0, inject(WhitelabelLogoHttpRouteHandler)),
4696
- __decorateMetadata("design:paramtypes", [typeof (_ref$10 = typeof WhitelabelLogoHttpRouteHandler !== "undefined" && WhitelabelLogoHttpRouteHandler) === "function" ? _ref$10 : Object])
6226
+ __decorateMetadata("design:paramtypes", [typeof (_ref$17 = typeof WhitelabelLogoHttpRouteHandler !== "undefined" && WhitelabelLogoHttpRouteHandler) === "function" ? _ref$17 : Object])
4697
6227
  ], WhitelabelHonoApiRouteRegistrar);
4698
6228
 
4699
6229
  //#endregion
4700
6230
  //#region src/presentation/http/routeHandlers/WorkflowHttpRouteHandler.ts
4701
- var _ref$9;
6231
+ var _ref$16;
4702
6232
  let WorkflowHttpRouteHandler = class WorkflowHttpRouteHandler$1 {
4703
6233
  constructor(queryBus, commandBus, workflowDefinitionMapper) {
4704
6234
  this.queryBus = queryBus;
@@ -4772,13 +6302,13 @@ WorkflowHttpRouteHandler = __decorate([
4772
6302
  __decorateMetadata("design:paramtypes", [
4773
6303
  Object,
4774
6304
  Object,
4775
- typeof (_ref$9 = typeof WorkflowDefinitionMapper !== "undefined" && WorkflowDefinitionMapper) === "function" ? _ref$9 : Object
6305
+ typeof (_ref$16 = typeof WorkflowDefinitionMapper !== "undefined" && WorkflowDefinitionMapper) === "function" ? _ref$16 : Object
4776
6306
  ])
4777
6307
  ], WorkflowHttpRouteHandler);
4778
6308
 
4779
6309
  //#endregion
4780
6310
  //#region src/presentation/http/hono/registrars/WorkflowHonoApiRouteRegistrar.ts
4781
- var _ref$8;
6311
+ var _ref$15;
4782
6312
  let WorkflowHonoApiRouteRegistrar = class WorkflowHonoApiRouteRegistrar$1 {
4783
6313
  constructor(handler) {
4784
6314
  this.handler = handler;
@@ -4800,7 +6330,7 @@ WorkflowHonoApiRouteRegistrar = __decorate([
4800
6330
  useClass: WorkflowHonoApiRouteRegistrar
4801
6331
  }]),
4802
6332
  __decorateParam(0, inject(WorkflowHttpRouteHandler)),
4803
- __decorateMetadata("design:paramtypes", [typeof (_ref$8 = typeof WorkflowHttpRouteHandler !== "undefined" && WorkflowHttpRouteHandler) === "function" ? _ref$8 : Object])
6333
+ __decorateMetadata("design:paramtypes", [typeof (_ref$15 = typeof WorkflowHttpRouteHandler !== "undefined" && WorkflowHttpRouteHandler) === "function" ? _ref$15 : Object])
4804
6334
  ], WorkflowHonoApiRouteRegistrar);
4805
6335
 
4806
6336
  //#endregion
@@ -4841,7 +6371,7 @@ CodemationIdFactory = __decorate([injectable()], CodemationIdFactory);
4841
6371
 
4842
6372
  //#endregion
4843
6373
  //#region src/infrastructure/di/InMemoryCommandBus.ts
4844
- var _ref$7;
6374
+ var _ref$14;
4845
6375
  let InMemoryCommandBus = class InMemoryCommandBus$1 {
4846
6376
  handlersByCommandType;
4847
6377
  constructor(handlers) {
@@ -4866,7 +6396,7 @@ let InMemoryCommandBus = class InMemoryCommandBus$1 {
4866
6396
  InMemoryCommandBus = __decorate([
4867
6397
  injectable(),
4868
6398
  __decorateParam(0, injectAll(ApplicationTokens.CommandHandler)),
4869
- __decorateMetadata("design:paramtypes", [typeof (_ref$7 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$7 : Object])
6399
+ __decorateMetadata("design:paramtypes", [typeof (_ref$14 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$14 : Object])
4870
6400
  ], InMemoryCommandBus);
4871
6401
 
4872
6402
  //#endregion
@@ -4875,7 +6405,7 @@ const domainEventHandlerMetadataKey = Symbol.for("codemation.infrastructure.di.D
4875
6405
 
4876
6406
  //#endregion
4877
6407
  //#region src/infrastructure/di/InMemoryDomainEventBus.ts
4878
- var _ref$6;
6408
+ var _ref$13;
4879
6409
  let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
4880
6410
  handlersByEventType;
4881
6411
  constructor(handlers) {
@@ -4900,12 +6430,12 @@ let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
4900
6430
  InMemoryDomainEventBus = __decorate([
4901
6431
  injectable(),
4902
6432
  __decorateParam(0, injectAll(ApplicationTokens.DomainEventHandler)),
4903
- __decorateMetadata("design:paramtypes", [typeof (_ref$6 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$6 : Object])
6433
+ __decorateMetadata("design:paramtypes", [typeof (_ref$13 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$13 : Object])
4904
6434
  ], InMemoryDomainEventBus);
4905
6435
 
4906
6436
  //#endregion
4907
6437
  //#region src/infrastructure/di/InMemoryQueryBus.ts
4908
- var _ref$5;
6438
+ var _ref$12;
4909
6439
  let InMemoryQueryBus = class InMemoryQueryBus$1 {
4910
6440
  handlersByQueryType;
4911
6441
  constructor(handlers) {
@@ -4930,7 +6460,7 @@ let InMemoryQueryBus = class InMemoryQueryBus$1 {
4930
6460
  InMemoryQueryBus = __decorate([
4931
6461
  injectable(),
4932
6462
  __decorateParam(0, injectAll(ApplicationTokens.QueryHandler)),
4933
- __decorateMetadata("design:paramtypes", [typeof (_ref$5 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$5 : Object])
6463
+ __decorateMetadata("design:paramtypes", [typeof (_ref$12 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$12 : Object])
4934
6464
  ], InMemoryQueryBus);
4935
6465
 
4936
6466
  //#endregion
@@ -5141,7 +6671,7 @@ var CodemationBetterAuthBaseUrlPolicy = class {
5141
6671
 
5142
6672
  //#endregion
5143
6673
  //#region src/infrastructure/auth/CodemationSessionVerifier.ts
5144
- var _ref$4;
6674
+ var _ref$11;
5145
6675
  let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
5146
6676
  constructor(betterAuthApiSessionVerifier) {
5147
6677
  this.betterAuthApiSessionVerifier = betterAuthApiSessionVerifier;
@@ -5153,7 +6683,7 @@ let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
5153
6683
  CodemationSessionVerifier = __decorate([
5154
6684
  injectable(),
5155
6685
  __decorateParam(0, inject(BetterAuthApiSessionVerifier)),
5156
- __decorateMetadata("design:paramtypes", [typeof (_ref$4 = typeof BetterAuthApiSessionVerifier !== "undefined" && BetterAuthApiSessionVerifier) === "function" ? _ref$4 : Object])
6686
+ __decorateMetadata("design:paramtypes", [typeof (_ref$11 = typeof BetterAuthApiSessionVerifier !== "undefined" && BetterAuthApiSessionVerifier) === "function" ? _ref$11 : Object])
5157
6687
  ], CodemationSessionVerifier);
5158
6688
 
5159
6689
  //#endregion
@@ -5536,6 +7066,234 @@ let InMemoryTriggerSetupStateRepository = class InMemoryTriggerSetupStateReposit
5536
7066
  };
5537
7067
  InMemoryTriggerSetupStateRepository = __decorate([injectable()], InMemoryTriggerSetupStateRepository);
5538
7068
 
7069
+ //#endregion
7070
+ //#region src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts
7071
+ var _ref$10;
7072
+ let InMemoryRunTraceContextRepository = class InMemoryRunTraceContextRepository$1 {
7073
+ rows = /* @__PURE__ */ new Map();
7074
+ constructor(otelIdentityFactory) {
7075
+ this.otelIdentityFactory = otelIdentityFactory;
7076
+ }
7077
+ async load(runId) {
7078
+ return this.rows.get(decodeURIComponent(runId));
7079
+ }
7080
+ async getOrCreate(args) {
7081
+ const key = decodeURIComponent(args.runId);
7082
+ const existing = this.rows.get(key);
7083
+ if (existing) return existing;
7084
+ const created = {
7085
+ runId: key,
7086
+ workflowId: decodeURIComponent(args.workflowId),
7087
+ traceId: this.otelIdentityFactory.createTraceId(key),
7088
+ rootSpanId: this.otelIdentityFactory.createRootSpanId(key),
7089
+ serviceName: args.serviceName,
7090
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
7091
+ };
7092
+ this.rows.set(key, created);
7093
+ return created;
7094
+ }
7095
+ async upsertExpiry(args) {
7096
+ const key = decodeURIComponent(args.runId);
7097
+ const existing = this.rows.get(key);
7098
+ if (!existing) return;
7099
+ this.rows.set(key, {
7100
+ ...existing,
7101
+ expiresAt: this.resolveLaterExpiry(existing.expiresAt, args.expiresAt)
7102
+ });
7103
+ }
7104
+ resolveLaterExpiry(current, candidate) {
7105
+ if (!current) return candidate;
7106
+ if (!candidate) return current;
7107
+ return current >= candidate ? current : candidate;
7108
+ }
7109
+ };
7110
+ InMemoryRunTraceContextRepository = __decorate([
7111
+ injectable(),
7112
+ __decorateParam(0, inject(OtelIdentityFactory)),
7113
+ __decorateMetadata("design:paramtypes", [typeof (_ref$10 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$10 : Object])
7114
+ ], InMemoryRunTraceContextRepository);
7115
+
7116
+ //#endregion
7117
+ //#region src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts
7118
+ var _ref$9;
7119
+ let InMemoryTelemetryArtifactStore = class InMemoryTelemetryArtifactStore$1 {
7120
+ rows = /* @__PURE__ */ new Map();
7121
+ constructor(otelIdentityFactory) {
7122
+ this.otelIdentityFactory = otelIdentityFactory;
7123
+ }
7124
+ async save(record) {
7125
+ const created = {
7126
+ artifactId: this.otelIdentityFactory.createArtifactId(),
7127
+ traceId: record.traceId,
7128
+ spanId: record.spanId,
7129
+ runId: record.runId,
7130
+ workflowId: record.workflowId,
7131
+ nodeId: record.nodeId,
7132
+ activationId: record.activationId,
7133
+ kind: record.kind,
7134
+ contentType: record.contentType,
7135
+ previewText: record.previewText,
7136
+ previewJson: record.previewJson,
7137
+ payloadText: record.payloadText,
7138
+ payloadJson: record.payloadJson,
7139
+ bytes: record.bytes,
7140
+ truncated: record.truncated,
7141
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
7142
+ expiresAt: record.expiresAt?.toISOString(),
7143
+ retentionExpiresAt: record.retentionExpiresAt
7144
+ };
7145
+ this.rows.set(created.artifactId, created);
7146
+ return created;
7147
+ }
7148
+ async listByTraceId(traceId) {
7149
+ return [...this.rows.values()].filter((row) => row.traceId === traceId).sort((left, right) => left.createdAt.localeCompare(right.createdAt));
7150
+ }
7151
+ async pruneExpired(args) {
7152
+ const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
7153
+ for (const [key] of candidates) this.rows.delete(key);
7154
+ return candidates.length;
7155
+ }
7156
+ };
7157
+ InMemoryTelemetryArtifactStore = __decorate([
7158
+ injectable(),
7159
+ __decorateParam(0, inject(OtelIdentityFactory)),
7160
+ __decorateMetadata("design:paramtypes", [typeof (_ref$9 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$9 : Object])
7161
+ ], InMemoryTelemetryArtifactStore);
7162
+
7163
+ //#endregion
7164
+ //#region src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts
7165
+ var _ref$8;
7166
+ let InMemoryTelemetryMetricPointStore = class InMemoryTelemetryMetricPointStore$1 {
7167
+ rows = /* @__PURE__ */ new Map();
7168
+ constructor(otelIdentityFactory) {
7169
+ this.otelIdentityFactory = otelIdentityFactory;
7170
+ }
7171
+ async save(record) {
7172
+ const created = {
7173
+ metricPointId: this.otelIdentityFactory.createArtifactId(),
7174
+ traceId: record.traceId,
7175
+ spanId: record.spanId,
7176
+ runId: record.runId,
7177
+ workflowId: record.workflowId,
7178
+ nodeId: record.nodeId,
7179
+ activationId: record.activationId,
7180
+ metricName: record.name,
7181
+ value: record.value,
7182
+ unit: record.unit,
7183
+ observedAt: record.observedAt,
7184
+ workflowFolder: record.workflowFolder,
7185
+ nodeType: record.nodeType,
7186
+ nodeRole: record.nodeRole,
7187
+ modelName: record.modelName,
7188
+ dimensions: record.attributes,
7189
+ retentionExpiresAt: record.retentionExpiresAt
7190
+ };
7191
+ this.rows.set(created.metricPointId, created);
7192
+ return created;
7193
+ }
7194
+ async list(args = {}) {
7195
+ return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
7196
+ const observedCompare = left.observedAt.localeCompare(right.observedAt);
7197
+ if (observedCompare !== 0) return observedCompare;
7198
+ return left.metricPointId.localeCompare(right.metricPointId);
7199
+ }).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
7200
+ }
7201
+ async pruneExpired(args) {
7202
+ const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
7203
+ for (const [key] of candidates) this.rows.delete(key);
7204
+ return candidates.length;
7205
+ }
7206
+ matches(row, args) {
7207
+ if (args.traceId && row.traceId !== args.traceId) return false;
7208
+ if (args.runId && row.runId !== args.runId) return false;
7209
+ if (args.runIds && args.runIds.length > 0 && (!row.runId || !args.runIds.includes(row.runId))) return false;
7210
+ if (args.workflowId && row.workflowId !== args.workflowId) return false;
7211
+ if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
7212
+ if (args.nodeId && row.nodeId !== args.nodeId) return false;
7213
+ if (args.metricNames && args.metricNames.length > 0 && !args.metricNames.includes(row.metricName)) return false;
7214
+ if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
7215
+ if (args.observedAtGte && row.observedAt < args.observedAtGte) return false;
7216
+ if (args.observedAtLte && row.observedAt > args.observedAtLte) return false;
7217
+ return true;
7218
+ }
7219
+ };
7220
+ InMemoryTelemetryMetricPointStore = __decorate([
7221
+ injectable(),
7222
+ __decorateParam(0, inject(OtelIdentityFactory)),
7223
+ __decorateMetadata("design:paramtypes", [typeof (_ref$8 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$8 : Object])
7224
+ ], InMemoryTelemetryMetricPointStore);
7225
+
7226
+ //#endregion
7227
+ //#region src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts
7228
+ let InMemoryTelemetrySpanStore = class InMemoryTelemetrySpanStore$1 {
7229
+ rows = /* @__PURE__ */ new Map();
7230
+ async upsert(record) {
7231
+ const key = this.createKey(record.traceId, record.spanId);
7232
+ const existing = this.rows.get(key);
7233
+ this.rows.set(key, this.merge(existing, record));
7234
+ }
7235
+ async list(args = {}) {
7236
+ return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
7237
+ const startCompare = (left.startTime ?? "").localeCompare(right.startTime ?? "");
7238
+ if (startCompare !== 0) return startCompare;
7239
+ return left.spanId.localeCompare(right.spanId);
7240
+ }).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
7241
+ }
7242
+ async listByTraceId(traceId) {
7243
+ return await this.list({ traceId });
7244
+ }
7245
+ createKey(traceId, spanId) {
7246
+ return `${traceId}:${spanId}`;
7247
+ }
7248
+ merge(existing, update) {
7249
+ return {
7250
+ traceId: update.traceId,
7251
+ spanId: update.spanId,
7252
+ parentSpanId: update.parentSpanId ?? existing?.parentSpanId,
7253
+ runId: update.runId,
7254
+ workflowId: update.workflowId,
7255
+ nodeId: update.nodeId ?? existing?.nodeId,
7256
+ activationId: update.activationId ?? existing?.activationId,
7257
+ connectionInvocationId: update.connectionInvocationId ?? existing?.connectionInvocationId,
7258
+ name: update.name ?? existing?.name ?? "codemation.span",
7259
+ kind: update.kind ?? existing?.kind ?? "internal",
7260
+ status: update.status ?? existing?.status,
7261
+ statusMessage: update.statusMessage ?? existing?.statusMessage,
7262
+ startTime: update.startTime ?? existing?.startTime,
7263
+ endTime: update.endTime ?? existing?.endTime,
7264
+ workflowFolder: update.workflowFolder ?? existing?.workflowFolder,
7265
+ nodeType: update.nodeType ?? existing?.nodeType,
7266
+ nodeRole: update.nodeRole ?? existing?.nodeRole,
7267
+ modelName: update.modelName ?? existing?.modelName,
7268
+ attributes: {
7269
+ ...existing?.attributes ?? {},
7270
+ ...update.attributes ?? {}
7271
+ },
7272
+ events: [...existing?.events ?? [], ...update.events ?? []],
7273
+ retentionExpiresAt: update.retentionExpiresAt ?? existing?.retentionExpiresAt
7274
+ };
7275
+ }
7276
+ matches(row, args) {
7277
+ if (args.traceId && row.traceId !== args.traceId) return false;
7278
+ if (args.runId && row.runId !== args.runId) return false;
7279
+ if (args.runIds && args.runIds.length > 0 && !args.runIds.includes(row.runId)) return false;
7280
+ if (args.workflowId && row.workflowId !== args.workflowId) return false;
7281
+ if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
7282
+ if (args.statuses && args.statuses.length > 0 && (!row.status || !args.statuses.includes(row.status))) return false;
7283
+ if (args.names && args.names.length > 0 && !args.names.includes(row.name)) return false;
7284
+ if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
7285
+ if (args.startTimeGte && row.startTime && row.startTime < args.startTimeGte) return false;
7286
+ if (args.endTimeLte && row.endTime && row.endTime > args.endTimeLte) return false;
7287
+ return true;
7288
+ }
7289
+ async pruneExpired(args) {
7290
+ const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
7291
+ for (const [key] of candidates) this.rows.delete(key);
7292
+ return candidates.length;
7293
+ }
7294
+ };
7295
+ InMemoryTelemetrySpanStore = __decorate([injectable()], InMemoryTelemetrySpanStore);
7296
+
5539
7297
  //#endregion
5540
7298
  //#region src/infrastructure/persistence/InMemoryWorkflowActivationRepository.ts
5541
7299
  let InMemoryWorkflowActivationRepository = class InMemoryWorkflowActivationRepository$1 {
@@ -5668,7 +7426,9 @@ let InMemoryWorkflowRunRepository = class InMemoryWorkflowRunRepository$1 {
5668
7426
  for (const s of this.runs.values()) {
5669
7427
  if (s.status !== "completed" && s.status !== "failed") continue;
5670
7428
  const finishedAt = RunFinishedAtFactory.resolveIso(s);
5671
- if (!finishedAt || finishedAt >= args.beforeIso) continue;
7429
+ const retentionSeconds = s.policySnapshot?.retentionSeconds ?? args.defaultRetentionSeconds;
7430
+ const cutoffIso = (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
7431
+ if (!finishedAt || finishedAt >= cutoffIso) continue;
5672
7432
  out.push({
5673
7433
  runId: s.runId,
5674
7434
  workflowId: s.workflowId,
@@ -13607,6 +15367,79 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
13607
15367
  updatedAt: "updatedAt",
13608
15368
  stateJson: "stateJson"
13609
15369
  };
15370
+ exports.Prisma.RunTraceContextScalarFieldEnum = {
15371
+ runId: "runId",
15372
+ workflowId: "workflowId",
15373
+ traceId: "traceId",
15374
+ rootSpanId: "rootSpanId",
15375
+ serviceName: "serviceName",
15376
+ createdAt: "createdAt",
15377
+ expiresAt: "expiresAt"
15378
+ };
15379
+ exports.Prisma.TelemetrySpanScalarFieldEnum = {
15380
+ telemetrySpanId: "telemetrySpanId",
15381
+ traceId: "traceId",
15382
+ spanId: "spanId",
15383
+ parentSpanId: "parentSpanId",
15384
+ runId: "runId",
15385
+ workflowId: "workflowId",
15386
+ nodeId: "nodeId",
15387
+ activationId: "activationId",
15388
+ connectionInvocationId: "connectionInvocationId",
15389
+ name: "name",
15390
+ kind: "kind",
15391
+ status: "status",
15392
+ statusMessage: "statusMessage",
15393
+ startTime: "startTime",
15394
+ endTime: "endTime",
15395
+ workflowFolder: "workflowFolder",
15396
+ nodeType: "nodeType",
15397
+ nodeRole: "nodeRole",
15398
+ modelName: "modelName",
15399
+ attributesJson: "attributesJson",
15400
+ eventsJson: "eventsJson",
15401
+ retentionExpiresAt: "retentionExpiresAt",
15402
+ updatedAt: "updatedAt"
15403
+ };
15404
+ exports.Prisma.TelemetryArtifactScalarFieldEnum = {
15405
+ artifactId: "artifactId",
15406
+ traceId: "traceId",
15407
+ spanId: "spanId",
15408
+ runId: "runId",
15409
+ workflowId: "workflowId",
15410
+ nodeId: "nodeId",
15411
+ activationId: "activationId",
15412
+ kind: "kind",
15413
+ contentType: "contentType",
15414
+ previewText: "previewText",
15415
+ previewJson: "previewJson",
15416
+ payloadText: "payloadText",
15417
+ payloadJson: "payloadJson",
15418
+ bytes: "bytes",
15419
+ truncated: "truncated",
15420
+ createdAt: "createdAt",
15421
+ expiresAt: "expiresAt",
15422
+ retentionExpiresAt: "retentionExpiresAt"
15423
+ };
15424
+ exports.Prisma.TelemetryMetricPointScalarFieldEnum = {
15425
+ metricPointId: "metricPointId",
15426
+ traceId: "traceId",
15427
+ spanId: "spanId",
15428
+ runId: "runId",
15429
+ workflowId: "workflowId",
15430
+ nodeId: "nodeId",
15431
+ activationId: "activationId",
15432
+ metricName: "metricName",
15433
+ value: "value",
15434
+ unit: "unit",
15435
+ observedAt: "observedAt",
15436
+ workflowFolder: "workflowFolder",
15437
+ nodeType: "nodeType",
15438
+ nodeRole: "nodeRole",
15439
+ modelName: "modelName",
15440
+ dimensionsJson: "dimensionsJson",
15441
+ retentionExpiresAt: "retentionExpiresAt"
15442
+ };
13610
15443
  exports.Prisma.CredentialInstanceScalarFieldEnum = {
13611
15444
  instanceId: "instanceId",
13612
15445
  typeId: "typeId",
@@ -13734,6 +15567,10 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
13734
15567
  WorkflowDebuggerOverlay: "WorkflowDebuggerOverlay",
13735
15568
  WorkflowActivation: "WorkflowActivation",
13736
15569
  TriggerSetupState: "TriggerSetupState",
15570
+ RunTraceContext: "RunTraceContext",
15571
+ TelemetrySpan: "TelemetrySpan",
15572
+ TelemetryArtifact: "TelemetryArtifact",
15573
+ TelemetryMetricPoint: "TelemetryMetricPoint",
13737
15574
  CredentialInstance: "CredentialInstance",
13738
15575
  CredentialSecretMaterial: "CredentialSecretMaterial",
13739
15576
  CredentialOAuth2Material: "CredentialOAuth2Material",
@@ -13754,13 +15591,13 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
13754
15591
  "clientVersion": "7.5.0",
13755
15592
  "engineVersion": "280c870be64f457428992c43c1f6d557fab6e29e",
13756
15593
  "activeProvider": "sqlite",
13757
- "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/infrastructure/persistence/generated/prisma-sqlite-client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel Run {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n startedAt String @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n status String\n revision Int @default(0)\n parentJson String? @map(\"parent_json\")\n executionOptionsJson String? @map(\"execution_options_json\")\n controlJson String? @map(\"control_json\")\n workflowSnapshotJson String? @map(\"workflow_snapshot_json\")\n policySnapshotJson String? @map(\"policy_snapshot_json\")\n engineCountersJson String? @map(\"engine_counters_json\")\n mutableStateJson String? @map(\"mutable_state_json\")\n outputsByNodeJson String @map(\"outputs_by_node_json\")\n updatedAt String @map(\"updated_at\")\n\n workItems RunWorkItem[]\n executionInstances ExecutionInstance[]\n slotProjection RunSlotProjection?\n\n @@index([workflowId, startedAt])\n @@index([workflowId, status, finishedAt])\n}\n\nmodel RunWorkItem {\n workItemId String @id @map(\"work_item_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n status String\n targetNodeId String @map(\"target_node_id\")\n batchId String @map(\"batch_id\")\n queueName String? @map(\"queue_name\")\n claimToken String? @map(\"claim_token\")\n claimedBy String? @map(\"claimed_by\")\n claimedAt String? @map(\"claimed_at\")\n availableAt String @map(\"available_at\")\n enqueuedAt String @map(\"enqueued_at\")\n completedAt String? @map(\"completed_at\")\n failedAt String? @map(\"failed_at\")\n sourceInstanceId String? @map(\"source_instance_id\")\n parentInstanceId String? @map(\"parent_instance_id\")\n itemsIn Int @map(\"items_in\")\n inputsByPortJson String @map(\"inputs_by_port_json\")\n errorJson String? @map(\"error_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([runId, status, availableAt])\n @@index([runId, targetNodeId, batchId])\n}\n\nmodel ExecutionInstance {\n instanceId String @id @map(\"instance_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n slotNodeId String @map(\"slot_node_id\")\n workflowNodeId String @map(\"workflow_node_id\")\n kind String\n connectionKind String? @map(\"connection_kind\")\n activationId String? @map(\"activation_id\")\n batchId String @map(\"batch_id\")\n runIndex Int @map(\"run_index\")\n parentInstanceId String? @map(\"parent_instance_id\")\n parentRunId String? @map(\"parent_run_id\")\n workerClaimToken String? @map(\"worker_claim_token\")\n status String\n queuedAt String? @map(\"queued_at\")\n startedAt String? @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n updatedAt String @map(\"updated_at\")\n itemCount Int @map(\"item_count\")\n inputJson String? @map(\"input_json\")\n outputJson String? @map(\"output_json\")\n errorJson String? @map(\"error_json\")\n inputItemIndicesJson String? @map(\"input_item_indices_json\")\n outputItemCount Int? @map(\"output_item_count\")\n successfulItemCount Int? @map(\"successful_item_count\")\n failedItemCount Int? @map(\"failed_item_count\")\n inputStorageKind String? @map(\"input_storage_kind\")\n outputStorageKind String? @map(\"output_storage_kind\")\n inputBytes Int? @map(\"input_bytes\")\n outputBytes Int? @map(\"output_bytes\")\n inputPreviewJson String? @map(\"input_preview_json\")\n outputPreviewJson String? @map(\"output_preview_json\")\n inputPayloadRef String? @map(\"input_payload_ref\")\n outputPayloadRef String? @map(\"output_payload_ref\")\n inputTruncated Boolean? @map(\"input_truncated\")\n outputTruncated Boolean? @map(\"output_truncated\")\n usedPinnedOutput Boolean? @map(\"used_pinned_output\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@unique([runId, slotNodeId, runIndex])\n @@index([runId, slotNodeId, updatedAt])\n @@index([runId, parentInstanceId, updatedAt])\n @@index([runId, kind, updatedAt])\n}\n\nmodel RunSlotProjection {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n revision Int\n updatedAt String @map(\"updated_at\")\n slotStatesJson String @map(\"slot_states_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([workflowId, updatedAt])\n}\n\nmodel WorkflowDebuggerOverlay {\n workflowId String @id @map(\"workflow_id\")\n updatedAt String @map(\"updated_at\")\n copiedFromRunId String? @map(\"copied_from_run_id\")\n stateJson String @map(\"state_json\")\n}\n\nmodel WorkflowActivation {\n workflowId String @id @map(\"workflow_id\")\n isActive Boolean @default(false) @map(\"is_active\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel TriggerSetupState {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n updatedAt String @map(\"updated_at\")\n stateJson String @map(\"state_json\")\n\n @@id([workflowId, nodeId])\n}\n\nmodel CredentialInstance {\n instanceId String @id @map(\"instance_id\")\n typeId String @map(\"type_id\")\n displayName String @map(\"display_name\")\n sourceKind String @map(\"source_kind\")\n publicConfigJson String @map(\"public_config_json\")\n secretRefJson String @map(\"secret_ref_json\")\n tagsJson String @map(\"tags_json\")\n setupStatus String @map(\"setup_status\")\n createdAt String @map(\"created_at\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialSecretMaterial {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2Material {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n providerId String @map(\"provider_id\")\n connectedEmail String? @map(\"connected_email\")\n connectedAt String? @map(\"connected_at\")\n scopesJson String @map(\"scopes_json\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2State {\n state String @id\n instanceId String @map(\"instance_id\")\n codeVerifier String? @map(\"code_verifier\")\n providerId String? @map(\"provider_id\")\n requestedScopesJson String @map(\"requested_scopes_json\")\n createdAt String @map(\"created_at\")\n expiresAt String @map(\"expires_at\")\n\n @@index([instanceId])\n @@index([expiresAt])\n}\n\nmodel CredentialBinding {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n slotKey String @map(\"slot_key\")\n instanceId String @map(\"instance_id\")\n updatedAt String @map(\"updated_at\")\n\n @@id([workflowId, nodeId, slotKey])\n @@index([instanceId])\n}\n\nmodel CredentialTestResult {\n testId String @id @map(\"test_id\")\n instanceId String @map(\"instance_id\")\n status String\n message String?\n detailsJson String @map(\"details_json\")\n testedAt String @map(\"tested_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([instanceId, testedAt])\n}\n\n/// Better Auth user directory (DB sessions + optional OAuth linking)\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false) @map(\"email_verified\")\n image String?\n passwordHash String? @map(\"password_hash\")\n /// invited | active | inactive (local directory / invite flow)\n accountStatus String @default(\"active\") @map(\"account_status\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n accounts Account[]\n sessions Session[]\n invites UserInvite[]\n\n @@map(\"codemation_auth_user\")\n}\n\nmodel UserInvite {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @map(\"created_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"codemation_auth_user_invite\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n /// Legacy Auth.js discriminator; Better Auth omits it on create — default keeps OAuth/credential rows valid.\n type String @default(\"oauth\")\n provider String\n providerAccountId String @map(\"provider_account_id\")\n /// Better Auth email/password (credential provider) hash; kept in sync with `User.passwordHash` for local flows.\n password String? @map(\"password\")\n refresh_token String?\n access_token String?\n expires_at Int?\n accessTokenExpiresAt DateTime? @map(\"access_token_expires_at\")\n refreshTokenExpiresAt DateTime? @map(\"refresh_token_expires_at\")\n token_type String?\n scope String?\n id_token String?\n session_state String?\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n @@map(\"codemation_auth_account\")\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique @map(\"session_token\")\n userId String @map(\"user_id\")\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n ipAddress String? @map(\"ip_address\")\n userAgent String? @map(\"user_agent\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"codemation_auth_session\")\n}\n\nmodel VerificationToken {\n id String @id @default(cuid())\n identifier String\n token String\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@unique([identifier, token])\n @@map(\"codemation_auth_verification_token\")\n}\n"
15594
+ "inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/infrastructure/persistence/generated/prisma-sqlite-client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel Run {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n startedAt String @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n status String\n revision Int @default(0)\n parentJson String? @map(\"parent_json\")\n executionOptionsJson String? @map(\"execution_options_json\")\n controlJson String? @map(\"control_json\")\n workflowSnapshotJson String? @map(\"workflow_snapshot_json\")\n policySnapshotJson String? @map(\"policy_snapshot_json\")\n engineCountersJson String? @map(\"engine_counters_json\")\n mutableStateJson String? @map(\"mutable_state_json\")\n outputsByNodeJson String @map(\"outputs_by_node_json\")\n updatedAt String @map(\"updated_at\")\n\n workItems RunWorkItem[]\n executionInstances ExecutionInstance[]\n slotProjection RunSlotProjection?\n\n @@index([workflowId, startedAt])\n @@index([workflowId, status, finishedAt])\n}\n\nmodel RunWorkItem {\n workItemId String @id @map(\"work_item_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n status String\n targetNodeId String @map(\"target_node_id\")\n batchId String @map(\"batch_id\")\n queueName String? @map(\"queue_name\")\n claimToken String? @map(\"claim_token\")\n claimedBy String? @map(\"claimed_by\")\n claimedAt String? @map(\"claimed_at\")\n availableAt String @map(\"available_at\")\n enqueuedAt String @map(\"enqueued_at\")\n completedAt String? @map(\"completed_at\")\n failedAt String? @map(\"failed_at\")\n sourceInstanceId String? @map(\"source_instance_id\")\n parentInstanceId String? @map(\"parent_instance_id\")\n itemsIn Int @map(\"items_in\")\n inputsByPortJson String @map(\"inputs_by_port_json\")\n errorJson String? @map(\"error_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([runId, status, availableAt])\n @@index([runId, targetNodeId, batchId])\n}\n\nmodel ExecutionInstance {\n instanceId String @id @map(\"instance_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n slotNodeId String @map(\"slot_node_id\")\n workflowNodeId String @map(\"workflow_node_id\")\n kind String\n connectionKind String? @map(\"connection_kind\")\n activationId String? @map(\"activation_id\")\n batchId String @map(\"batch_id\")\n runIndex Int @map(\"run_index\")\n parentInstanceId String? @map(\"parent_instance_id\")\n parentRunId String? @map(\"parent_run_id\")\n workerClaimToken String? @map(\"worker_claim_token\")\n status String\n queuedAt String? @map(\"queued_at\")\n startedAt String? @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n updatedAt String @map(\"updated_at\")\n itemCount Int @map(\"item_count\")\n inputJson String? @map(\"input_json\")\n outputJson String? @map(\"output_json\")\n errorJson String? @map(\"error_json\")\n inputItemIndicesJson String? @map(\"input_item_indices_json\")\n outputItemCount Int? @map(\"output_item_count\")\n successfulItemCount Int? @map(\"successful_item_count\")\n failedItemCount Int? @map(\"failed_item_count\")\n inputStorageKind String? @map(\"input_storage_kind\")\n outputStorageKind String? @map(\"output_storage_kind\")\n inputBytes Int? @map(\"input_bytes\")\n outputBytes Int? @map(\"output_bytes\")\n inputPreviewJson String? @map(\"input_preview_json\")\n outputPreviewJson String? @map(\"output_preview_json\")\n inputPayloadRef String? @map(\"input_payload_ref\")\n outputPayloadRef String? @map(\"output_payload_ref\")\n inputTruncated Boolean? @map(\"input_truncated\")\n outputTruncated Boolean? @map(\"output_truncated\")\n usedPinnedOutput Boolean? @map(\"used_pinned_output\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@unique([runId, slotNodeId, runIndex])\n @@index([runId, slotNodeId, updatedAt])\n @@index([runId, parentInstanceId, updatedAt])\n @@index([runId, kind, updatedAt])\n}\n\nmodel RunSlotProjection {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n revision Int\n updatedAt String @map(\"updated_at\")\n slotStatesJson String @map(\"slot_states_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([workflowId, updatedAt])\n}\n\nmodel WorkflowDebuggerOverlay {\n workflowId String @id @map(\"workflow_id\")\n updatedAt String @map(\"updated_at\")\n copiedFromRunId String? @map(\"copied_from_run_id\")\n stateJson String @map(\"state_json\")\n}\n\nmodel WorkflowActivation {\n workflowId String @id @map(\"workflow_id\")\n isActive Boolean @default(false) @map(\"is_active\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel TriggerSetupState {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n updatedAt String @map(\"updated_at\")\n stateJson String @map(\"state_json\")\n\n @@id([workflowId, nodeId])\n}\n\nmodel RunTraceContext {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n traceId String @unique @map(\"trace_id\")\n rootSpanId String @map(\"root_span_id\")\n serviceName String? @map(\"service_name\")\n createdAt String @map(\"created_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([workflowId, createdAt])\n}\n\nmodel TelemetrySpan {\n telemetrySpanId String @id @map(\"telemetry_span_id\")\n traceId String @map(\"trace_id\")\n spanId String @map(\"span_id\")\n parentSpanId String? @map(\"parent_span_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n connectionInvocationId String? @map(\"connection_invocation_id\")\n name String\n kind String\n status String?\n statusMessage String? @map(\"status_message\")\n startTime String? @map(\"start_time\")\n endTime String? @map(\"end_time\")\n workflowFolder String? @map(\"workflow_folder\")\n nodeType String? @map(\"node_type\")\n nodeRole String? @map(\"node_role\")\n modelName String? @map(\"model_name\")\n attributesJson String? @map(\"attributes_json\")\n eventsJson String? @map(\"events_json\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n updatedAt String @map(\"updated_at\")\n\n @@unique([traceId, spanId])\n @@index([traceId, startTime])\n @@index([workflowId, endTime])\n @@index([workflowId, status, endTime])\n @@index([runId, endTime])\n @@index([modelName, endTime])\n @@index([connectionInvocationId])\n @@index([retentionExpiresAt])\n}\n\nmodel TelemetryArtifact {\n artifactId String @id @map(\"artifact_id\")\n traceId String @map(\"trace_id\")\n spanId String @map(\"span_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n kind String\n contentType String @map(\"content_type\")\n previewText String? @map(\"preview_text\")\n previewJson String? @map(\"preview_json\")\n payloadText String? @map(\"payload_text\")\n payloadJson String? @map(\"payload_json\")\n bytes Int?\n truncated Boolean?\n createdAt String @map(\"created_at\")\n expiresAt String? @map(\"expires_at\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n\n @@index([traceId, createdAt])\n @@index([spanId, createdAt])\n @@index([runId, createdAt])\n @@index([retentionExpiresAt])\n}\n\nmodel TelemetryMetricPoint {\n metricPointId String @id @map(\"metric_point_id\")\n traceId String? @map(\"trace_id\")\n spanId String? @map(\"span_id\")\n runId String? @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n metricName String @map(\"metric_name\")\n value Float\n unit String?\n observedAt String @map(\"observed_at\")\n workflowFolder String? @map(\"workflow_folder\")\n nodeType String? @map(\"node_type\")\n nodeRole String? @map(\"node_role\")\n modelName String? @map(\"model_name\")\n dimensionsJson String? @map(\"dimensions_json\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n\n @@index([workflowId, observedAt])\n @@index([workflowId, metricName, observedAt])\n @@index([runId, observedAt])\n @@index([traceId, observedAt])\n @@index([modelName, observedAt])\n @@index([retentionExpiresAt])\n}\n\nmodel CredentialInstance {\n instanceId String @id @map(\"instance_id\")\n typeId String @map(\"type_id\")\n displayName String @map(\"display_name\")\n sourceKind String @map(\"source_kind\")\n publicConfigJson String @map(\"public_config_json\")\n secretRefJson String @map(\"secret_ref_json\")\n tagsJson String @map(\"tags_json\")\n setupStatus String @map(\"setup_status\")\n createdAt String @map(\"created_at\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialSecretMaterial {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2Material {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n providerId String @map(\"provider_id\")\n connectedEmail String? @map(\"connected_email\")\n connectedAt String? @map(\"connected_at\")\n scopesJson String @map(\"scopes_json\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2State {\n state String @id\n instanceId String @map(\"instance_id\")\n codeVerifier String? @map(\"code_verifier\")\n providerId String? @map(\"provider_id\")\n requestedScopesJson String @map(\"requested_scopes_json\")\n createdAt String @map(\"created_at\")\n expiresAt String @map(\"expires_at\")\n\n @@index([instanceId])\n @@index([expiresAt])\n}\n\nmodel CredentialBinding {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n slotKey String @map(\"slot_key\")\n instanceId String @map(\"instance_id\")\n updatedAt String @map(\"updated_at\")\n\n @@id([workflowId, nodeId, slotKey])\n @@index([instanceId])\n}\n\nmodel CredentialTestResult {\n testId String @id @map(\"test_id\")\n instanceId String @map(\"instance_id\")\n status String\n message String?\n detailsJson String @map(\"details_json\")\n testedAt String @map(\"tested_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([instanceId, testedAt])\n}\n\n/// Better Auth user directory (DB sessions + optional OAuth linking)\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false) @map(\"email_verified\")\n image String?\n passwordHash String? @map(\"password_hash\")\n /// invited | active | inactive (local directory / invite flow)\n accountStatus String @default(\"active\") @map(\"account_status\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n accounts Account[]\n sessions Session[]\n invites UserInvite[]\n\n @@map(\"codemation_auth_user\")\n}\n\nmodel UserInvite {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @map(\"created_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"codemation_auth_user_invite\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n /// Legacy Auth.js discriminator; Better Auth omits it on create — default keeps OAuth/credential rows valid.\n type String @default(\"oauth\")\n provider String\n providerAccountId String @map(\"provider_account_id\")\n /// Better Auth email/password (credential provider) hash; kept in sync with `User.passwordHash` for local flows.\n password String? @map(\"password\")\n refresh_token String?\n access_token String?\n expires_at Int?\n accessTokenExpiresAt DateTime? @map(\"access_token_expires_at\")\n refreshTokenExpiresAt DateTime? @map(\"refresh_token_expires_at\")\n token_type String?\n scope String?\n id_token String?\n session_state String?\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n @@map(\"codemation_auth_account\")\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique @map(\"session_token\")\n userId String @map(\"user_id\")\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n ipAddress String? @map(\"ip_address\")\n userAgent String? @map(\"user_agent\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"codemation_auth_session\")\n}\n\nmodel VerificationToken {\n id String @id @default(cuid())\n identifier String\n token String\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@unique([identifier, token])\n @@map(\"codemation_auth_verification_token\")\n}\n"
13758
15595
  };
13759
- config.runtimeDataModel = JSON.parse("{\"models\":{\"Run\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_json\"},{\"name\":\"executionOptionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"execution_options_json\"},{\"name\":\"controlJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"control_json\"},{\"name\":\"workflowSnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_snapshot_json\"},{\"name\":\"policySnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"policy_snapshot_json\"},{\"name\":\"engineCountersJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"engine_counters_json\"},{\"name\":\"mutableStateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mutable_state_json\"},{\"name\":\"outputsByNodeJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"outputs_by_node_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"workItems\",\"kind\":\"object\",\"type\":\"RunWorkItem\",\"relationName\":\"RunToRunWorkItem\"},{\"name\":\"executionInstances\",\"kind\":\"object\",\"type\":\"ExecutionInstance\",\"relationName\":\"ExecutionInstanceToRun\"},{\"name\":\"slotProjection\",\"kind\":\"object\",\"type\":\"RunSlotProjection\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"RunWorkItem\":{\"fields\":[{\"name\":\"workItemId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"work_item_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_node_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"queueName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queue_name\"},{\"name\":\"claimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claim_token\"},{\"name\":\"claimedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_by\"},{\"name\":\"claimedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_at\"},{\"name\":\"availableAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"available_at\"},{\"name\":\"enqueuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"enqueued_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"completed_at\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"failed_at\"},{\"name\":\"sourceInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_instance_id\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"itemsIn\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"items_in\"},{\"name\":\"inputsByPortJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"inputs_by_port_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunWorkItem\"}],\"dbName\":null},\"ExecutionInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"slotNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_node_id\"},{\"name\":\"workflowNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_node_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"connectionKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_kind\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"runIndex\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"run_index\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"parentRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_run_id\"},{\"name\":\"workerClaimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"worker_claim_token\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"queuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queued_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"itemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"item_count\"},{\"name\":\"inputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_json\"},{\"name\":\"outputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"inputItemIndicesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_item_indices_json\"},{\"name\":\"outputItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_item_count\"},{\"name\":\"successfulItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"successful_item_count\"},{\"name\":\"failedItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"failed_item_count\"},{\"name\":\"inputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_storage_kind\"},{\"name\":\"outputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_storage_kind\"},{\"name\":\"inputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"input_bytes\"},{\"name\":\"outputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_bytes\"},{\"name\":\"inputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_preview_json\"},{\"name\":\"outputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_preview_json\"},{\"name\":\"inputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_payload_ref\"},{\"name\":\"outputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_payload_ref\"},{\"name\":\"inputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"input_truncated\"},{\"name\":\"outputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"output_truncated\"},{\"name\":\"usedPinnedOutput\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"used_pinned_output\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"ExecutionInstanceToRun\"}],\"dbName\":null},\"RunSlotProjection\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"slotStatesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_states_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"WorkflowDebuggerOverlay\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"copiedFromRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"copied_from_run_id\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"WorkflowActivation\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TriggerSetupState\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"CredentialInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"type_id\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"display_name\"},{\"name\":\"sourceKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_kind\"},{\"name\":\"publicConfigJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"public_config_json\"},{\"name\":\"secretRefJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"secret_ref_json\"},{\"name\":\"tagsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tags_json\"},{\"name\":\"setupStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"setup_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialSecretMaterial\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2Material\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"connectedEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_email\"},{\"name\":\"connectedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_at\"},{\"name\":\"scopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"scopes_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2State\":{\"fields\":[{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"codeVerifier\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"code_verifier\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"requestedScopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"requested_scopes_json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"CredentialBinding\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialTestResult\":{\"fields\":[{\"name\":\"testId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"test_id\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"detailsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"details_json\"},{\"name\":\"testedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tested_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"email_verified\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"accountStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"account_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"invites\",\"kind\":\"object\",\"type\":\"UserInvite\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user\"},\"UserInvite\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user_invite\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_account_id\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"access_token_expires_at\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"refresh_token_expires_at\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":\"codemation_auth_account\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_token\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"codemation_auth_session\"},\"VerificationToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"codemation_auth_verification_token\"}},\"enums\":{},\"types\":{}}");
15596
+ config.runtimeDataModel = JSON.parse("{\"models\":{\"Run\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_json\"},{\"name\":\"executionOptionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"execution_options_json\"},{\"name\":\"controlJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"control_json\"},{\"name\":\"workflowSnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_snapshot_json\"},{\"name\":\"policySnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"policy_snapshot_json\"},{\"name\":\"engineCountersJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"engine_counters_json\"},{\"name\":\"mutableStateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mutable_state_json\"},{\"name\":\"outputsByNodeJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"outputs_by_node_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"workItems\",\"kind\":\"object\",\"type\":\"RunWorkItem\",\"relationName\":\"RunToRunWorkItem\"},{\"name\":\"executionInstances\",\"kind\":\"object\",\"type\":\"ExecutionInstance\",\"relationName\":\"ExecutionInstanceToRun\"},{\"name\":\"slotProjection\",\"kind\":\"object\",\"type\":\"RunSlotProjection\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"RunWorkItem\":{\"fields\":[{\"name\":\"workItemId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"work_item_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_node_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"queueName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queue_name\"},{\"name\":\"claimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claim_token\"},{\"name\":\"claimedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_by\"},{\"name\":\"claimedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_at\"},{\"name\":\"availableAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"available_at\"},{\"name\":\"enqueuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"enqueued_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"completed_at\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"failed_at\"},{\"name\":\"sourceInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_instance_id\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"itemsIn\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"items_in\"},{\"name\":\"inputsByPortJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"inputs_by_port_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunWorkItem\"}],\"dbName\":null},\"ExecutionInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"slotNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_node_id\"},{\"name\":\"workflowNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_node_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"connectionKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_kind\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"runIndex\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"run_index\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"parentRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_run_id\"},{\"name\":\"workerClaimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"worker_claim_token\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"queuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queued_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"itemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"item_count\"},{\"name\":\"inputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_json\"},{\"name\":\"outputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"inputItemIndicesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_item_indices_json\"},{\"name\":\"outputItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_item_count\"},{\"name\":\"successfulItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"successful_item_count\"},{\"name\":\"failedItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"failed_item_count\"},{\"name\":\"inputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_storage_kind\"},{\"name\":\"outputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_storage_kind\"},{\"name\":\"inputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"input_bytes\"},{\"name\":\"outputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_bytes\"},{\"name\":\"inputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_preview_json\"},{\"name\":\"outputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_preview_json\"},{\"name\":\"inputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_payload_ref\"},{\"name\":\"outputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_payload_ref\"},{\"name\":\"inputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"input_truncated\"},{\"name\":\"outputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"output_truncated\"},{\"name\":\"usedPinnedOutput\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"used_pinned_output\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"ExecutionInstanceToRun\"}],\"dbName\":null},\"RunSlotProjection\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"slotStatesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_states_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"WorkflowDebuggerOverlay\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"copiedFromRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"copied_from_run_id\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"WorkflowActivation\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TriggerSetupState\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"RunTraceContext\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"rootSpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"root_span_id\"},{\"name\":\"serviceName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"service_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"TelemetrySpan\":{\"fields\":[{\"name\":\"telemetrySpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"telemetry_span_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"parentSpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"connectionInvocationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_invocation_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"statusMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"status_message\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"workflowFolder\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_folder\"},{\"name\":\"nodeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_type\"},{\"name\":\"nodeRole\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_role\"},{\"name\":\"modelName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"model_name\"},{\"name\":\"attributesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"attributes_json\"},{\"name\":\"eventsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"events_json\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TelemetryArtifact\":{\"fields\":[{\"name\":\"artifactId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"artifact_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contentType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"content_type\"},{\"name\":\"previewText\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"preview_text\"},{\"name\":\"previewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"preview_json\"},{\"name\":\"payloadText\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"payload_text\"},{\"name\":\"payloadJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"payload_json\"},{\"name\":\"bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"truncated\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"}],\"dbName\":null},\"TelemetryMetricPoint\":{\"fields\":[{\"name\":\"metricPointId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"metric_point_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"metricName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"metric_name\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"unit\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"observed_at\"},{\"name\":\"workflowFolder\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_folder\"},{\"name\":\"nodeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_type\"},{\"name\":\"nodeRole\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_role\"},{\"name\":\"modelName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"model_name\"},{\"name\":\"dimensionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"dimensions_json\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"}],\"dbName\":null},\"CredentialInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"type_id\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"display_name\"},{\"name\":\"sourceKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_kind\"},{\"name\":\"publicConfigJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"public_config_json\"},{\"name\":\"secretRefJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"secret_ref_json\"},{\"name\":\"tagsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tags_json\"},{\"name\":\"setupStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"setup_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialSecretMaterial\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2Material\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"connectedEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_email\"},{\"name\":\"connectedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_at\"},{\"name\":\"scopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"scopes_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2State\":{\"fields\":[{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"codeVerifier\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"code_verifier\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"requestedScopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"requested_scopes_json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"CredentialBinding\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialTestResult\":{\"fields\":[{\"name\":\"testId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"test_id\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"detailsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"details_json\"},{\"name\":\"testedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tested_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"email_verified\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"accountStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"account_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"invites\",\"kind\":\"object\",\"type\":\"UserInvite\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user\"},\"UserInvite\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user_invite\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_account_id\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"access_token_expires_at\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"refresh_token_expires_at\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":\"codemation_auth_account\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_token\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"codemation_auth_session\"},\"VerificationToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"codemation_auth_verification_token\"}},\"enums\":{},\"types\":{}}");
13760
15597
  defineDmmfProperty(exports.Prisma, config.runtimeDataModel);
13761
15598
  config.parameterizationSchema = {
13762
- strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"run\",\"workItems\",\"executionInstances\",\"slotProjection\",\"_count\",\"Run.findUnique\",\"Run.findUniqueOrThrow\",\"Run.findFirst\",\"Run.findFirstOrThrow\",\"Run.findMany\",\"data\",\"Run.createOne\",\"Run.createMany\",\"Run.createManyAndReturn\",\"Run.updateOne\",\"Run.updateMany\",\"Run.updateManyAndReturn\",\"create\",\"update\",\"Run.upsertOne\",\"Run.deleteOne\",\"Run.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Run.groupBy\",\"Run.aggregate\",\"RunWorkItem.findUnique\",\"RunWorkItem.findUniqueOrThrow\",\"RunWorkItem.findFirst\",\"RunWorkItem.findFirstOrThrow\",\"RunWorkItem.findMany\",\"RunWorkItem.createOne\",\"RunWorkItem.createMany\",\"RunWorkItem.createManyAndReturn\",\"RunWorkItem.updateOne\",\"RunWorkItem.updateMany\",\"RunWorkItem.updateManyAndReturn\",\"RunWorkItem.upsertOne\",\"RunWorkItem.deleteOne\",\"RunWorkItem.deleteMany\",\"RunWorkItem.groupBy\",\"RunWorkItem.aggregate\",\"ExecutionInstance.findUnique\",\"ExecutionInstance.findUniqueOrThrow\",\"ExecutionInstance.findFirst\",\"ExecutionInstance.findFirstOrThrow\",\"ExecutionInstance.findMany\",\"ExecutionInstance.createOne\",\"ExecutionInstance.createMany\",\"ExecutionInstance.createManyAndReturn\",\"ExecutionInstance.updateOne\",\"ExecutionInstance.updateMany\",\"ExecutionInstance.updateManyAndReturn\",\"ExecutionInstance.upsertOne\",\"ExecutionInstance.deleteOne\",\"ExecutionInstance.deleteMany\",\"ExecutionInstance.groupBy\",\"ExecutionInstance.aggregate\",\"RunSlotProjection.findUnique\",\"RunSlotProjection.findUniqueOrThrow\",\"RunSlotProjection.findFirst\",\"RunSlotProjection.findFirstOrThrow\",\"RunSlotProjection.findMany\",\"RunSlotProjection.createOne\",\"RunSlotProjection.createMany\",\"RunSlotProjection.createManyAndReturn\",\"RunSlotProjection.updateOne\",\"RunSlotProjection.updateMany\",\"RunSlotProjection.updateManyAndReturn\",\"RunSlotProjection.upsertOne\",\"RunSlotProjection.deleteOne\",\"RunSlotProjection.deleteMany\",\"RunSlotProjection.groupBy\",\"RunSlotProjection.aggregate\",\"WorkflowDebuggerOverlay.findUnique\",\"WorkflowDebuggerOverlay.findUniqueOrThrow\",\"WorkflowDebuggerOverlay.findFirst\",\"WorkflowDebuggerOverlay.findFirstOrThrow\",\"WorkflowDebuggerOverlay.findMany\",\"WorkflowDebuggerOverlay.createOne\",\"WorkflowDebuggerOverlay.createMany\",\"WorkflowDebuggerOverlay.createManyAndReturn\",\"WorkflowDebuggerOverlay.updateOne\",\"WorkflowDebuggerOverlay.updateMany\",\"WorkflowDebuggerOverlay.updateManyAndReturn\",\"WorkflowDebuggerOverlay.upsertOne\",\"WorkflowDebuggerOverlay.deleteOne\",\"WorkflowDebuggerOverlay.deleteMany\",\"WorkflowDebuggerOverlay.groupBy\",\"WorkflowDebuggerOverlay.aggregate\",\"WorkflowActivation.findUnique\",\"WorkflowActivation.findUniqueOrThrow\",\"WorkflowActivation.findFirst\",\"WorkflowActivation.findFirstOrThrow\",\"WorkflowActivation.findMany\",\"WorkflowActivation.createOne\",\"WorkflowActivation.createMany\",\"WorkflowActivation.createManyAndReturn\",\"WorkflowActivation.updateOne\",\"WorkflowActivation.updateMany\",\"WorkflowActivation.updateManyAndReturn\",\"WorkflowActivation.upsertOne\",\"WorkflowActivation.deleteOne\",\"WorkflowActivation.deleteMany\",\"WorkflowActivation.groupBy\",\"WorkflowActivation.aggregate\",\"TriggerSetupState.findUnique\",\"TriggerSetupState.findUniqueOrThrow\",\"TriggerSetupState.findFirst\",\"TriggerSetupState.findFirstOrThrow\",\"TriggerSetupState.findMany\",\"TriggerSetupState.createOne\",\"TriggerSetupState.createMany\",\"TriggerSetupState.createManyAndReturn\",\"TriggerSetupState.updateOne\",\"TriggerSetupState.updateMany\",\"TriggerSetupState.updateManyAndReturn\",\"TriggerSetupState.upsertOne\",\"TriggerSetupState.deleteOne\",\"TriggerSetupState.deleteMany\",\"TriggerSetupState.groupBy\",\"TriggerSetupState.aggregate\",\"CredentialInstance.findUnique\",\"CredentialInstance.findUniqueOrThrow\",\"CredentialInstance.findFirst\",\"CredentialInstance.findFirstOrThrow\",\"CredentialInstance.findMany\",\"CredentialInstance.createOne\",\"CredentialInstance.createMany\",\"CredentialInstance.createManyAndReturn\",\"CredentialInstance.updateOne\",\"CredentialInstance.updateMany\",\"CredentialInstance.updateManyAndReturn\",\"CredentialInstance.upsertOne\",\"CredentialInstance.deleteOne\",\"CredentialInstance.deleteMany\",\"CredentialInstance.groupBy\",\"CredentialInstance.aggregate\",\"CredentialSecretMaterial.findUnique\",\"CredentialSecretMaterial.findUniqueOrThrow\",\"CredentialSecretMaterial.findFirst\",\"CredentialSecretMaterial.findFirstOrThrow\",\"CredentialSecretMaterial.findMany\",\"CredentialSecretMaterial.createOne\",\"CredentialSecretMaterial.createMany\",\"CredentialSecretMaterial.createManyAndReturn\",\"CredentialSecretMaterial.updateOne\",\"CredentialSecretMaterial.updateMany\",\"CredentialSecretMaterial.updateManyAndReturn\",\"CredentialSecretMaterial.upsertOne\",\"CredentialSecretMaterial.deleteOne\",\"CredentialSecretMaterial.deleteMany\",\"CredentialSecretMaterial.groupBy\",\"CredentialSecretMaterial.aggregate\",\"CredentialOAuth2Material.findUnique\",\"CredentialOAuth2Material.findUniqueOrThrow\",\"CredentialOAuth2Material.findFirst\",\"CredentialOAuth2Material.findFirstOrThrow\",\"CredentialOAuth2Material.findMany\",\"CredentialOAuth2Material.createOne\",\"CredentialOAuth2Material.createMany\",\"CredentialOAuth2Material.createManyAndReturn\",\"CredentialOAuth2Material.updateOne\",\"CredentialOAuth2Material.updateMany\",\"CredentialOAuth2Material.updateManyAndReturn\",\"CredentialOAuth2Material.upsertOne\",\"CredentialOAuth2Material.deleteOne\",\"CredentialOAuth2Material.deleteMany\",\"CredentialOAuth2Material.groupBy\",\"CredentialOAuth2Material.aggregate\",\"CredentialOAuth2State.findUnique\",\"CredentialOAuth2State.findUniqueOrThrow\",\"CredentialOAuth2State.findFirst\",\"CredentialOAuth2State.findFirstOrThrow\",\"CredentialOAuth2State.findMany\",\"CredentialOAuth2State.createOne\",\"CredentialOAuth2State.createMany\",\"CredentialOAuth2State.createManyAndReturn\",\"CredentialOAuth2State.updateOne\",\"CredentialOAuth2State.updateMany\",\"CredentialOAuth2State.updateManyAndReturn\",\"CredentialOAuth2State.upsertOne\",\"CredentialOAuth2State.deleteOne\",\"CredentialOAuth2State.deleteMany\",\"CredentialOAuth2State.groupBy\",\"CredentialOAuth2State.aggregate\",\"CredentialBinding.findUnique\",\"CredentialBinding.findUniqueOrThrow\",\"CredentialBinding.findFirst\",\"CredentialBinding.findFirstOrThrow\",\"CredentialBinding.findMany\",\"CredentialBinding.createOne\",\"CredentialBinding.createMany\",\"CredentialBinding.createManyAndReturn\",\"CredentialBinding.updateOne\",\"CredentialBinding.updateMany\",\"CredentialBinding.updateManyAndReturn\",\"CredentialBinding.upsertOne\",\"CredentialBinding.deleteOne\",\"CredentialBinding.deleteMany\",\"CredentialBinding.groupBy\",\"CredentialBinding.aggregate\",\"CredentialTestResult.findUnique\",\"CredentialTestResult.findUniqueOrThrow\",\"CredentialTestResult.findFirst\",\"CredentialTestResult.findFirstOrThrow\",\"CredentialTestResult.findMany\",\"CredentialTestResult.createOne\",\"CredentialTestResult.createMany\",\"CredentialTestResult.createManyAndReturn\",\"CredentialTestResult.updateOne\",\"CredentialTestResult.updateMany\",\"CredentialTestResult.updateManyAndReturn\",\"CredentialTestResult.upsertOne\",\"CredentialTestResult.deleteOne\",\"CredentialTestResult.deleteMany\",\"CredentialTestResult.groupBy\",\"CredentialTestResult.aggregate\",\"user\",\"accounts\",\"sessions\",\"invites\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserInvite.findUnique\",\"UserInvite.findUniqueOrThrow\",\"UserInvite.findFirst\",\"UserInvite.findFirstOrThrow\",\"UserInvite.findMany\",\"UserInvite.createOne\",\"UserInvite.createMany\",\"UserInvite.createManyAndReturn\",\"UserInvite.updateOne\",\"UserInvite.updateMany\",\"UserInvite.updateManyAndReturn\",\"UserInvite.upsertOne\",\"UserInvite.deleteOne\",\"UserInvite.deleteMany\",\"UserInvite.groupBy\",\"UserInvite.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"VerificationToken.findUnique\",\"VerificationToken.findUniqueOrThrow\",\"VerificationToken.findFirst\",\"VerificationToken.findFirstOrThrow\",\"VerificationToken.findMany\",\"VerificationToken.createOne\",\"VerificationToken.createMany\",\"VerificationToken.createManyAndReturn\",\"VerificationToken.updateOne\",\"VerificationToken.updateMany\",\"VerificationToken.updateManyAndReturn\",\"VerificationToken.upsertOne\",\"VerificationToken.deleteOne\",\"VerificationToken.deleteMany\",\"VerificationToken.groupBy\",\"VerificationToken.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"identifier\",\"token\",\"expires\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"identifier_token\",\"sessionToken\",\"userId\",\"ipAddress\",\"userAgent\",\"type\",\"provider\",\"providerAccountId\",\"password\",\"refresh_token\",\"access_token\",\"expires_at\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"tokenHash\",\"expiresAt\",\"revokedAt\",\"name\",\"email\",\"emailVerified\",\"image\",\"passwordHash\",\"accountStatus\",\"every\",\"some\",\"none\",\"provider_providerAccountId\",\"testId\",\"instanceId\",\"status\",\"message\",\"detailsJson\",\"testedAt\",\"workflowId\",\"nodeId\",\"slotKey\",\"workflowId_nodeId_slotKey\",\"state\",\"codeVerifier\",\"providerId\",\"requestedScopesJson\",\"encryptedJson\",\"encryptionKeyId\",\"schemaVersion\",\"connectedEmail\",\"connectedAt\",\"scopesJson\",\"typeId\",\"displayName\",\"sourceKind\",\"publicConfigJson\",\"secretRefJson\",\"tagsJson\",\"setupStatus\",\"stateJson\",\"workflowId_nodeId\",\"isActive\",\"copiedFromRunId\",\"runId\",\"revision\",\"slotStatesJson\",\"slotNodeId\",\"workflowNodeId\",\"kind\",\"connectionKind\",\"activationId\",\"batchId\",\"runIndex\",\"parentInstanceId\",\"parentRunId\",\"workerClaimToken\",\"queuedAt\",\"startedAt\",\"finishedAt\",\"itemCount\",\"inputJson\",\"outputJson\",\"errorJson\",\"inputItemIndicesJson\",\"outputItemCount\",\"successfulItemCount\",\"failedItemCount\",\"inputStorageKind\",\"outputStorageKind\",\"inputBytes\",\"outputBytes\",\"inputPreviewJson\",\"outputPreviewJson\",\"inputPayloadRef\",\"outputPayloadRef\",\"inputTruncated\",\"outputTruncated\",\"usedPinnedOutput\",\"workItemId\",\"targetNodeId\",\"queueName\",\"claimToken\",\"claimedBy\",\"claimedAt\",\"availableAt\",\"enqueuedAt\",\"completedAt\",\"failedAt\",\"sourceInstanceId\",\"itemsIn\",\"inputsByPortJson\",\"parentJson\",\"executionOptionsJson\",\"controlJson\",\"workflowSnapshotJson\",\"policySnapshotJson\",\"engineCountersJson\",\"mutableStateJson\",\"outputsByNodeJson\",\"runId_slotNodeId_runIndex\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
13763
- graph: "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_ADAZAACAAQAgAwAAAG0AIAEAAG4AMAIAAGoAIAa0AgAAjQQAMLUCAACGAQAQtgIAAI0EADC8AgEA1wMAIe0CAQAAAAGEAyAA7QMAIQEAAACDAQAgAQAAAIMBACAGtAIAAI0EADC1AgAAhgEAELYCAACNBAAwvAIBANcDACHtAgEA1wMAIYQDIADtAwAhAAMAAACGAQAgAQAAhwEAMAIAAIMBACADAAAAhgEAIAEAAIcBADACAACDAQAgAwAAAIYBACABAACHAQAwAgAAgwEAIAO8AgEAAAAB7QIBAAAAAYQDIAAAAAEBDQAAiwEAIAO8AgEAAAAB7QIBAAAAAYQDIAAAAAEBDQAAjQEAMAENAACNAQAwA7wCAQCkBAAh7QIBAKQEACGEAyAAvgQAIQIAAACDAQAgDQAAkAEAIAO8AgEApAQAIe0CAQCkBAAhhAMgAL4EACECAAAAhgEAIA0AAJIBACACAAAAhgEAIA0AAJIBACADAAAAgwEAIBQAAIsBACAVAACQAQAgAQAAAIMBACABAAAAhgEAIAMHAACHBQAgHAAAiQUAIB0AAIgFACAGtAIAAIwEADC1AgAAmQEAELYCAACMBAAwvAIBAM8DACHtAgEAzwMAIYQDIADoAwAhAwAAAIYBACABAACYAQAwGQAAmQEAIAMAAACGAQAgAQAAhwEAMAIAAIMBACAItAIAAIoEADC1AgAAnwEAELYCAACKBAAwvAIBANcDACHtAgEA1wMAIe4CAQDXAwAhggMBANcDACGDAwAAiwQAIAEAAACcAQAgAQAAAJwBACAHtAIAAIoEADC1AgAAnwEAELYCAACKBAAwvAIBANcDACHtAgEA1wMAIe4CAQDXAwAhggMBANcDACEAAwAAAJ8BACABAACgAQAwAgAAnAEAIAMAAACfAQAgAQAAoAEAMAIAAJwBACADAAAAnwEAIAEAAKABADACAACcAQAgBLwCAQAAAAHtAgEAAAAB7gIBAAAAAYIDAQAAAAEBDQAApAEAIAS8AgEAAAAB7QIBAAAAAe4CAQAAAAGCAwEAAAABAQ0AAKYBADABDQAApgEAMAS8AgEApAQAIe0CAQCkBAAh7gIBAKQEACGCAwEApAQAIQIAAACcAQAgDQAAqQEAIAS8AgEApAQAIe0CAQCkBAAh7gIBAKQEACGCAwEApAQAIQIAAACfAQAgDQAAqwEAIAIAAACfAQAgDQAAqwEAIAMAAACcAQAgFAAApAEAIBUAAKkBACABAAAAnAEAIAEAAACfAQAgAwcAAIQFACAcAACGBQAgHQAAhQUAIAe0AgAAiQQAMLUCAACyAQAQtgIAAIkEADC8AgEAzwMAIe0CAQDPAwAh7gIBAM8DACGCAwEAzwMAIQMAAACfAQAgAQAAsQEAMBkAALIBACADAAAAnwEAIAEAAKABADACAACcAQAgDbQCAACIBAAwtQIAALgBABC2AgAAiAQAMLsCAQDXAwAhvAIBANcDACHoAgEAAAAB-wIBANcDACH8AgEA1wMAIf0CAQDXAwAh_gIBANcDACH_AgEA1wMAIYADAQDXAwAhgQMBANcDACEBAAAAtQEAIAEAAAC1AQAgDbQCAACIBAAwtQIAALgBABC2AgAAiAQAMLsCAQDXAwAhvAIBANcDACHoAgEA1wMAIfsCAQDXAwAh_AIBANcDACH9AgEA1wMAIf4CAQDXAwAh_wIBANcDACGAAwEA1wMAIYEDAQDXAwAhAAMAAAC4AQAgAQAAuQEAMAIAALUBACADAAAAuAEAIAEAALkBADACAAC1AQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAq7AgEAAAABvAIBAAAAAegCAQAAAAH7AgEAAAAB_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADAQAAAAGBAwEAAAABAQ0AAL0BACAKuwIBAAAAAbwCAQAAAAHoAgEAAAAB-wIBAAAAAfwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAAwEAAAABgQMBAAAAAQENAAC_AQAwAQ0AAL8BADAKuwIBAKQEACG8AgEApAQAIegCAQCkBAAh-wIBAKQEACH8AgEApAQAIf0CAQCkBAAh_gIBAKQEACH_AgEApAQAIYADAQCkBAAhgQMBAKQEACECAAAAtQEAIA0AAMIBACAKuwIBAKQEACG8AgEApAQAIegCAQCkBAAh-wIBAKQEACH8AgEApAQAIf0CAQCkBAAh_gIBAKQEACH_AgEApAQAIYADAQCkBAAhgQMBAKQEACECAAAAuAEAIA0AAMQBACACAAAAuAEAIA0AAMQBACADAAAAtQEAIBQAAL0BACAVAADCAQAgAQAAALUBACABAAAAuAEAIAMHAACBBQAgHAAAgwUAIB0AAIIFACANtAIAAIcEADC1AgAAywEAELYCAACHBAAwuwIBAM8DACG8AgEAzwMAIegCAQDPAwAh-wIBAM8DACH8AgEAzwMAIf0CAQDPAwAh_gIBAM8DACH_AgEAzwMAIYADAQDPAwAhgQMBAM8DACEDAAAAuAEAIAEAAMoBADAZAADLAQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAi0AgAAhgQAMLUCAADRAQAQtgIAAIYEADC8AgEA1wMAIegCAQAAAAH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACEBAAAAzgEAIAEAAADOAQAgCLQCAACGBAAwtQIAANEBABC2AgAAhgQAMLwCAQDXAwAh6AIBANcDACH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACEAAwAAANEBACABAADSAQAwAgAAzgEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACADAAAA0QEAIAEAANIBADACAADOAQAgBbwCAQAAAAHoAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAABAQ0AANYBACAFvAIBAAAAAegCAQAAAAH1AgEAAAAB9gIBAAAAAfcCAgAAAAEBDQAA2AEAMAENAADYAQAwBbwCAQCkBAAh6AIBAKQEACH1AgEApAQAIfYCAQCkBAAh9wICAPsEACECAAAAzgEAIA0AANsBACAFvAIBAKQEACHoAgEApAQAIfUCAQCkBAAh9gIBAKQEACH3AgIA-wQAIQIAAADRAQAgDQAA3QEAIAIAAADRAQAgDQAA3QEAIAMAAADOAQAgFAAA1gEAIBUAANsBACABAAAAzgEAIAEAAADRAQAgBQcAAPwEACAaAAD9BAAgGwAAgAUAIBwAAP8EACAdAAD-BAAgCLQCAACFBAAwtQIAAOQBABC2AgAAhQQAMLwCAQDPAwAh6AIBAM8DACH1AgEAzwMAIfYCAQDPAwAh9wICAIAEACEDAAAA0QEAIAEAAOMBADAZAADkAQAgAwAAANEBACABAADSAQAwAgAAzgEAIAy0AgAAgwQAMLUCAADqAQAQtgIAAIMEADC8AgEA1wMAIegCAQAAAAHzAgEA1wMAIfUCAQDXAwAh9gIBANcDACH3AgIAhAQAIfgCAQDsAwAh-QIBAOwDACH6AgEA1wMAIQEAAADnAQAgAQAAAOcBACAMtAIAAIMEADC1AgAA6gEAELYCAACDBAAwvAIBANcDACHoAgEA1wMAIfMCAQDXAwAh9QIBANcDACH2AgEA1wMAIfcCAgCEBAAh-AIBAOwDACH5AgEA7AMAIfoCAQDXAwAhAvgCAACmBAAg-QIAAKYEACADAAAA6gEAIAEAAOsBADACAADnAQAgAwAAAOoBACABAADrAQAwAgAA5wEAIAMAAADqAQAgAQAA6wEAMAIAAOcBACAJvAIBAAAAAegCAQAAAAHzAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAAB-AIBAAAAAfkCAQAAAAH6AgEAAAABAQ0AAO8BACAJvAIBAAAAAegCAQAAAAHzAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAAB-AIBAAAAAfkCAQAAAAH6AgEAAAABAQ0AAPEBADABDQAA8QEAMAm8AgEApAQAIegCAQCkBAAh8wIBAKQEACH1AgEApAQAIfYCAQCkBAAh9wICAPsEACH4AgEAqgQAIfkCAQCqBAAh-gIBAKQEACECAAAA5wEAIA0AAPQBACAJvAIBAKQEACHoAgEApAQAIfMCAQCkBAAh9QIBAKQEACH2AgEApAQAIfcCAgD7BAAh-AIBAKoEACH5AgEAqgQAIfoCAQCkBAAhAgAAAOoBACANAAD2AQAgAgAAAOoBACANAAD2AQAgAwAAAOcBACAUAADvAQAgFQAA9AEAIAEAAADnAQAgAQAAAOoBACAHBwAA9gQAIBoAAPcEACAbAAD6BAAgHAAA-QQAIB0AAPgEACD4AgAApgQAIPkCAACmBAAgDLQCAAD_AwAwtQIAAP0BABC2AgAA_wMAMLwCAQDPAwAh6AIBAM8DACHzAgEAzwMAIfUCAQDPAwAh9gIBAM8DACH3AgIAgAQAIfgCAQDbAwAh-QIBANsDACH6AgEAzwMAIQMAAADqAQAgAQAA_AEAMBkAAP0BACADAAAA6gEAIAEAAOsBADACAADnAQAgCrQCAAD-AwAwtQIAAIMCABC2AgAA_gMAMLsCAQDXAwAh2wIBANcDACHoAgEA1wMAIfECAQAAAAHyAgEA7AMAIfMCAQDsAwAh9AIBANcDACEBAAAAgAIAIAEAAACAAgAgCrQCAAD-AwAwtQIAAIMCABC2AgAA_gMAMLsCAQDXAwAh2wIBANcDACHoAgEA1wMAIfECAQDXAwAh8gIBAOwDACHzAgEA7AMAIfQCAQDXAwAhAvICAACmBAAg8wIAAKYEACADAAAAgwIAIAEAAIQCADACAACAAgAgAwAAAIMCACABAACEAgAwAgAAgAIAIAMAAACDAgAgAQAAhAIAMAIAAIACACAHuwIBAAAAAdsCAQAAAAHoAgEAAAAB8QIBAAAAAfICAQAAAAHzAgEAAAAB9AIBAAAAAQENAACIAgAgB7sCAQAAAAHbAgEAAAAB6AIBAAAAAfECAQAAAAHyAgEAAAAB8wIBAAAAAfQCAQAAAAEBDQAAigIAMAENAACKAgAwB7sCAQCkBAAh2wIBAKQEACHoAgEApAQAIfECAQCkBAAh8gIBAKoEACHzAgEAqgQAIfQCAQCkBAAhAgAAAIACACANAACNAgAgB7sCAQCkBAAh2wIBAKQEACHoAgEApAQAIfECAQCkBAAh8gIBAKoEACHzAgEAqgQAIfQCAQCkBAAhAgAAAIMCACANAACPAgAgAgAAAIMCACANAACPAgAgAwAAAIACACAUAACIAgAgFQAAjQIAIAEAAACAAgAgAQAAAIMCACAFBwAA8wQAIBwAAPUEACAdAAD0BAAg8gIAAKYEACDzAgAApgQAIAq0AgAA_QMAMLUCAACWAgAQtgIAAP0DADC7AgEAzwMAIdsCAQDPAwAh6AIBAM8DACHxAgEAzwMAIfICAQDbAwAh8wIBANsDACH0AgEAzwMAIQMAAACDAgAgAQAAlQIAMBkAAJYCACADAAAAgwIAIAEAAIQCADACAACAAgAgCbQCAAD7AwAwtQIAAJwCABC2AgAA-wMAMLwCAQDXAwAh6AIBANcDACHtAgEA1wMAIe4CAQDXAwAh7wIBANcDACHwAgAA_AMAIAEAAACZAgAgAQAAAJkCACAItAIAAPsDADC1AgAAnAIAELYCAAD7AwAwvAIBANcDACHoAgEA1wMAIe0CAQDXAwAh7gIBANcDACHvAgEA1wMAIQADAAAAnAIAIAEAAJ0CADACAACZAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAMAAACcAgAgAQAAnQIAMAIAAJkCACAFvAIBAAAAAegCAQAAAAHtAgEAAAAB7gIBAAAAAe8CAQAAAAEBDQAAoQIAIAW8AgEAAAAB6AIBAAAAAe0CAQAAAAHuAgEAAAAB7wIBAAAAAQENAACjAgAwAQ0AAKMCADAFvAIBAKQEACHoAgEApAQAIe0CAQCkBAAh7gIBAKQEACHvAgEApAQAIQIAAACZAgAgDQAApgIAIAW8AgEApAQAIegCAQCkBAAh7QIBAKQEACHuAgEApAQAIe8CAQCkBAAhAgAAAJwCACANAACoAgAgAgAAAJwCACANAACoAgAgAwAAAJkCACAUAAChAgAgFQAApgIAIAEAAACZAgAgAQAAAJwCACADBwAA8AQAIBwAAPIEACAdAADxBAAgCLQCAAD6AwAwtQIAAK8CABC2AgAA-gMAMLwCAQDPAwAh6AIBAM8DACHtAgEAzwMAIe4CAQDPAwAh7wIBAM8DACEDAAAAnAIAIAEAAK4CADAZAACvAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAq0AgAA-QMAMLUCAAC1AgAQtgIAAPkDADDbAgEA7AMAIecCAQAAAAHoAgEA1wMAIekCAQDXAwAh6gIBAOwDACHrAgEA1wMAIewCAQDXAwAhAQAAALICACABAAAAsgIAIAq0AgAA-QMAMLUCAAC1AgAQtgIAAPkDADDbAgEA7AMAIecCAQDXAwAh6AIBANcDACHpAgEA1wMAIeoCAQDsAwAh6wIBANcDACHsAgEA1wMAIQLbAgAApgQAIOoCAACmBAAgAwAAALUCACABAAC2AgAwAgAAsgIAIAMAAAC1AgAgAQAAtgIAMAIAALICACADAAAAtQIAIAEAALYCADACAACyAgAgB9sCAQAAAAHnAgEAAAAB6AIBAAAAAekCAQAAAAHqAgEAAAAB6wIBAAAAAewCAQAAAAEBDQAAugIAIAfbAgEAAAAB5wIBAAAAAegCAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAgEAAAABAQ0AALwCADABDQAAvAIAMAfbAgEAqgQAIecCAQCkBAAh6AIBAKQEACHpAgEApAQAIeoCAQCqBAAh6wIBAKQEACHsAgEApAQAIQIAAACyAgAgDQAAvwIAIAfbAgEAqgQAIecCAQCkBAAh6AIBAKQEACHpAgEApAQAIeoCAQCqBAAh6wIBAKQEACHsAgEApAQAIQIAAAC1AgAgDQAAwQIAIAIAAAC1AgAgDQAAwQIAIAMAAACyAgAgFAAAugIAIBUAAL8CACABAAAAsgIAIAEAAAC1AgAgBQcAAO0EACAcAADvBAAgHQAA7gQAINsCAACmBAAg6gIAAKYEACAKtAIAAPgDADC1AgAAyAIAELYCAAD4AwAw2wIBANsDACHnAgEAzwMAIegCAQDPAwAh6QIBAM8DACHqAgEA2wMAIesCAQDPAwAh7AIBAM8DACEDAAAAtQIAIAEAAMcCADAZAADIAgAgAwAAALUCACABAAC2AgAwAgAAsgIAIA_hAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEAAAABuwJAANgDACG8AkAA2AMAId0CAQDsAwAh3gIBAAAAAd8CIADtAwAh4AIBAOwDACHhAgEA7AMAIeICAQDXAwAhAQAAAMsCACAV4AEAAPMDACC0AgAA9gMAMLUCAADNAgAQtgIAAPYDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHKAgEA1wMAIc0CAQDXAwAhzgIBANcDACHPAgEA1wMAIdACAQDsAwAh0QIBAOwDACHSAgEA7AMAIdMCAgD3AwAh1AJAAPIDACHVAkAA8gMAIdYCAQDsAwAh1wIBAOwDACHYAgEA7AMAIdkCAQDsAwAhC-ABAADsBAAg0AIAAKYEACDRAgAApgQAINICAACmBAAg0wIAAKYEACDUAgAApgQAINUCAACmBAAg1gIAAKYEACDXAgAApgQAINgCAACmBAAg2QIAAKYEACAW4AEAAPMDACC0AgAA9gMAMLUCAADNAgAQtgIAAPYDADC3AgEAAAABuwJAANgDACG8AkAA2AMAIcoCAQDXAwAhzQIBANcDACHOAgEA1wMAIc8CAQDXAwAh0AIBAOwDACHRAgEA7AMAIdICAQDsAwAh0wICAPcDACHUAkAA8gMAIdUCQADyAwAh1gIBAOwDACHXAgEA7AMAIdgCAQDsAwAh2QIBAOwDACHmAgAA9QMAIAMAAADNAgAgAQAAzgIAMAIAAM8CACAM4AEAAPMDACC0AgAA9AMAMLUCAADRAgAQtgIAAPQDADC3AgEA1wMAIboCQADYAwAhuwJAANgDACG8AkAA2AMAIckCAQDXAwAhygIBANcDACHLAgEA7AMAIcwCAQDsAwAhA-ABAADsBAAgywIAAKYEACDMAgAApgQAIAzgAQAA8wMAILQCAAD0AwAwtQIAANECABC2AgAA9AMAMLcCAQAAAAG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHJAgEAAAABygIBANcDACHLAgEA7AMAIcwCAQDsAwAhAwAAANECACABAADSAgAwAgAA0wIAIArgAQAA8wMAILQCAADxAwAwtQIAANUCABC2AgAA8QMAMLcCAQDXAwAhuwJAANgDACHKAgEA1wMAIdoCAQDXAwAh2wJAANgDACHcAkAA8gMAIQLgAQAA7AQAINwCAACmBAAgCuABAADzAwAgtAIAAPEDADC1AgAA1QIAELYCAADxAwAwtwIBAAAAAbsCQADYAwAhygIBANcDACHaAgEAAAAB2wJAANgDACHcAkAA8gMAIQMAAADVAgAgAQAA1gIAMAIAANcCACABAAAAzQIAIAEAAADRAgAgAQAAANUCACABAAAAywIAIA_hAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHdAgEA7AMAId4CAQDsAwAh3wIgAO0DACHgAgEA7AMAIeECAQDsAwAh4gIBANcDACEH4QEAAOkEACDiAQAA6gQAIOMBAADrBAAg3QIAAKYEACDeAgAApgQAIOACAACmBAAg4QIAAKYEACADAAAA3QIAIAEAAN4CADACAADLAgAgAwAAAN0CACABAADeAgAwAgAAywIAIAMAAADdAgAgAQAA3gIAMAIAAMsCACAM4QEAAOYEACDiAQAA5wQAIOMBAADoBAAgtwIBAAAAAbsCQAAAAAG8AkAAAAAB3QIBAAAAAd4CAQAAAAHfAiAAAAAB4AIBAAAAAeECAQAAAAHiAgEAAAABAQ0AAOICACAJtwIBAAAAAbsCQAAAAAG8AkAAAAAB3QIBAAAAAd4CAQAAAAHfAiAAAAAB4AIBAAAAAeECAQAAAAHiAgEAAAABAQ0AAOQCADABDQAA5AIAMAzhAQAAvwQAIOIBAADABAAg4wEAAMEEACC3AgEApAQAIbsCQAClBAAhvAJAAKUEACHdAgEAqgQAId4CAQCqBAAh3wIgAL4EACHgAgEAqgQAIeECAQCqBAAh4gIBAKQEACECAAAAywIAIA0AAOcCACAJtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhAgAAAN0CACANAADpAgAgAgAAAN0CACANAADpAgAgAwAAAMsCACAUAADiAgAgFQAA5wIAIAEAAADLAgAgAQAAAN0CACAHBwAAuwQAIBwAAL0EACAdAAC8BAAg3QIAAKYEACDeAgAApgQAIOACAACmBAAg4QIAAKYEACAMtAIAAOcDADC1AgAA8AIAELYCAADnAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAh3QIBANsDACHeAgEA2wMAId8CIADoAwAh4AIBANsDACHhAgEA2wMAIeICAQDPAwAhAwAAAN0CACABAADvAgAwGQAA8AIAIAMAAADdAgAgAQAA3gIAMAIAAMsCACABAAAA1wIAIAEAAADXAgAgAwAAANUCACABAADWAgAwAgAA1wIAIAMAAADVAgAgAQAA1gIAMAIAANcCACADAAAA1QIAIAEAANYCADACAADXAgAgB-ABAAC6BAAgtwIBAAAAAbsCQAAAAAHKAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABAQ0AAPgCACAGtwIBAAAAAbsCQAAAAAHKAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABAQ0AAPoCADABDQAA-gIAMAfgAQAAuQQAILcCAQCkBAAhuwJAAKUEACHKAgEApAQAIdoCAQCkBAAh2wJAAKUEACHcAkAAswQAIQIAAADXAgAgDQAA_QIAIAa3AgEApAQAIbsCQAClBAAhygIBAKQEACHaAgEApAQAIdsCQAClBAAh3AJAALMEACECAAAA1QIAIA0AAP8CACACAAAA1QIAIA0AAP8CACADAAAA1wIAIBQAAPgCACAVAAD9AgAgAQAAANcCACABAAAA1QIAIAQHAAC2BAAgHAAAuAQAIB0AALcEACDcAgAApgQAIAm0AgAA5gMAMLUCAACGAwAQtgIAAOYDADC3AgEAzwMAIbsCQADQAwAhygIBAM8DACHaAgEAzwMAIdsCQADQAwAh3AJAAOEDACEDAAAA1QIAIAEAAIUDADAZAACGAwAgAwAAANUCACABAADWAgAwAgAA1wIAIAEAAADPAgAgAQAAAM8CACADAAAAzQIAIAEAAM4CADACAADPAgAgAwAAAM0CACABAADOAgAwAgAAzwIAIAMAAADNAgAgAQAAzgIAMAIAAM8CACAS4AEAALUEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHKAgEAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wICAAAAAdQCQAAAAAHVAkAAAAAB1gIBAAAAAdcCAQAAAAHYAgEAAAAB2QIBAAAAAQENAACOAwAgEbcCAQAAAAG7AkAAAAABvAJAAAAAAcoCAQAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgIAAAAB1AJAAAAAAdUCQAAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAABAQ0AAJADADABDQAAkAMAMBLgAQAAtAQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAIcoCAQCkBAAhzQIBAKQEACHOAgEApAQAIc8CAQCkBAAh0AIBAKoEACHRAgEAqgQAIdICAQCqBAAh0wICALIEACHUAkAAswQAIdUCQACzBAAh1gIBAKoEACHXAgEAqgQAIdgCAQCqBAAh2QIBAKoEACECAAAAzwIAIA0AAJMDACARtwIBAKQEACG7AkAApQQAIbwCQAClBAAhygIBAKQEACHNAgEApAQAIc4CAQCkBAAhzwIBAKQEACHQAgEAqgQAIdECAQCqBAAh0gIBAKoEACHTAgIAsgQAIdQCQACzBAAh1QJAALMEACHWAgEAqgQAIdcCAQCqBAAh2AIBAKoEACHZAgEAqgQAIQIAAADNAgAgDQAAlQMAIAIAAADNAgAgDQAAlQMAIAMAAADPAgAgFAAAjgMAIBUAAJMDACABAAAAzwIAIAEAAADNAgAgDwcAAK0EACAaAACuBAAgGwAAsQQAIBwAALAEACAdAACvBAAg0AIAAKYEACDRAgAApgQAINICAACmBAAg0wIAAKYEACDUAgAApgQAINUCAACmBAAg1gIAAKYEACDXAgAApgQAINgCAACmBAAg2QIAAKYEACAUtAIAAN8DADC1AgAAnAMAELYCAADfAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAhygIBAM8DACHNAgEAzwMAIc4CAQDPAwAhzwIBAM8DACHQAgEA2wMAIdECAQDbAwAh0gIBANsDACHTAgIA4AMAIdQCQADhAwAh1QJAAOEDACHWAgEA2wMAIdcCAQDbAwAh2AIBANsDACHZAgEA2wMAIQMAAADNAgAgAQAAmwMAMBkAAJwDACADAAAAzQIAIAEAAM4CADACAADPAgAgAQAAANMCACABAAAA0wIAIAMAAADRAgAgAQAA0gIAMAIAANMCACADAAAA0QIAIAEAANICADACAADTAgAgAwAAANECACABAADSAgAwAgAA0wIAIAngAQAArAQAILcCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAHJAgEAAAABygIBAAAAAcsCAQAAAAHMAgEAAAABAQ0AAKQDACAItwIBAAAAAboCQAAAAAG7AkAAAAABvAJAAAAAAckCAQAAAAHKAgEAAAABywIBAAAAAcwCAQAAAAEBDQAApgMAMAENAACmAwAwCeABAACrBAAgtwIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACHJAgEApAQAIcoCAQCkBAAhywIBAKoEACHMAgEAqgQAIQIAAADTAgAgDQAAqQMAIAi3AgEApAQAIboCQAClBAAhuwJAAKUEACG8AkAApQQAIckCAQCkBAAhygIBAKQEACHLAgEAqgQAIcwCAQCqBAAhAgAAANECACANAACrAwAgAgAAANECACANAACrAwAgAwAAANMCACAUAACkAwAgFQAAqQMAIAEAAADTAgAgAQAAANECACAFBwAApwQAIBwAAKkEACAdAACoBAAgywIAAKYEACDMAgAApgQAIAu0AgAA2gMAMLUCAACyAwAQtgIAANoDADC3AgEAzwMAIboCQADQAwAhuwJAANADACG8AkAA0AMAIckCAQDPAwAhygIBAM8DACHLAgEA2wMAIcwCAQDbAwAhAwAAANECACABAACxAwAwGQAAsgMAIAMAAADRAgAgAQAA0gIAMAIAANMCACAKtAIAANYDADC1AgAAuAMAELYCAADWAwAwtwIBAAAAAbgCAQDXAwAhuQIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHIAgAA2QMAIAEAAAC1AwAgAQAAALUDACAJtAIAANYDADC1AgAAuAMAELYCAADWAwAwtwIBANcDACG4AgEA1wMAIbkCAQDXAwAhugJAANgDACG7AkAA2AMAIbwCQADYAwAhAAMAAAC4AwAgAQAAuQMAMAIAALUDACADAAAAuAMAIAEAALkDADACAAC1AwAgAwAAALgDACABAAC5AwAwAgAAtQMAIAa3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAEBDQAAvQMAIAa3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAEBDQAAvwMAMAENAAC_AwAwBrcCAQCkBAAhuAIBAKQEACG5AgEApAQAIboCQAClBAAhuwJAAKUEACG8AkAApQQAIQIAAAC1AwAgDQAAwgMAIAa3AgEApAQAIbgCAQCkBAAhuQIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACECAAAAuAMAIA0AAMQDACACAAAAuAMAIA0AAMQDACADAAAAtQMAIBQAAL0DACAVAADCAwAgAQAAALUDACABAAAAuAMAIAMHAAChBAAgHAAAowQAIB0AAKIEACAJtAIAAM4DADC1AgAAywMAELYCAADOAwAwtwIBAM8DACG4AgEAzwMAIbkCAQDPAwAhugJAANADACG7AkAA0AMAIbwCQADQAwAhAwAAALgDACABAADKAwAwGQAAywMAIAMAAAC4AwAgAQAAuQMAMAIAALUDACAJtAIAAM4DADC1AgAAywMAELYCAADOAwAwtwIBAM8DACG4AgEAzwMAIbkCAQDPAwAhugJAANADACG7AkAA0AMAIbwCQADQAwAhDgcAANIDACAcAADVAwAgHQAA1QMAIL0CAQAAAAG-AgEAAAAEvwIBAAAABMACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA1AMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQsHAADSAwAgHAAA0wMAIB0AANMDACC9AkAAAAABvgJAAAAABL8CQAAAAATAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAANEDACELBwAA0gMAIBwAANMDACAdAADTAwAgvQJAAAAAAb4CQAAAAAS_AkAAAAAEwAJAAAAAAcECQAAAAAHCAkAAAAABwwJAAAAAAcQCQADRAwAhCL0CAgAAAAG-AgIAAAAEvwICAAAABMACAgAAAAHBAgIAAAABwgICAAAAAcMCAgAAAAHEAgIA0gMAIQi9AkAAAAABvgJAAAAABL8CQAAAAATAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAANMDACEOBwAA0gMAIBwAANUDACAdAADVAwAgvQIBAAAAAb4CAQAAAAS_AgEAAAAEwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQDUAwAhxQIBAAAAAcYCAQAAAAHHAgEAAAABC70CAQAAAAG-AgEAAAAEvwIBAAAABMACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA1QMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQm0AgAA1gMAMLUCAAC4AwAQtgIAANYDADC3AgEA1wMAIbgCAQDXAwAhuQIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACELvQIBAAAAAb4CAQAAAAS_AgEAAAAEwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQDVAwAhxQIBAAAAAcYCAQAAAAHHAgEAAAABCL0CQAAAAAG-AkAAAAAEvwJAAAAABMACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA0wMAIQK4AgEAAAABuQIBAAAAAQu0AgAA2gMAMLUCAACyAwAQtgIAANoDADC3AgEAzwMAIboCQADQAwAhuwJAANADACG8AkAA0AMAIckCAQDPAwAhygIBAM8DACHLAgEA2wMAIcwCAQDbAwAhDgcAAN0DACAcAADeAwAgHQAA3gMAIL0CAQAAAAG-AgEAAAAFvwIBAAAABcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA3AMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQ4HAADdAwAgHAAA3gMAIB0AAN4DACC9AgEAAAABvgIBAAAABb8CAQAAAAXAAgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBANwDACHFAgEAAAABxgIBAAAAAccCAQAAAAEIvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDdAwAhC70CAQAAAAG-AgEAAAAFvwIBAAAABcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA3gMAIcUCAQAAAAHGAgEAAAABxwIBAAAAARS0AgAA3wMAMLUCAACcAwAQtgIAAN8DADC3AgEAzwMAIbsCQADQAwAhvAJAANADACHKAgEAzwMAIc0CAQDPAwAhzgIBAM8DACHPAgEAzwMAIdACAQDbAwAh0QIBANsDACHSAgEA2wMAIdMCAgDgAwAh1AJAAOEDACHVAkAA4QMAIdYCAQDbAwAh1wIBANsDACHYAgEA2wMAIdkCAQDbAwAhDQcAAN0DACAaAADlAwAgGwAA3QMAIBwAAN0DACAdAADdAwAgvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDkAwAhCwcAAN0DACAcAADjAwAgHQAA4wMAIL0CQAAAAAG-AkAAAAAFvwJAAAAABcACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA4gMAIQsHAADdAwAgHAAA4wMAIB0AAOMDACC9AkAAAAABvgJAAAAABb8CQAAAAAXAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAAOIDACEIvQJAAAAAAb4CQAAAAAW_AkAAAAAFwAJAAAAAAcECQAAAAAHCAkAAAAABwwJAAAAAAcQCQADjAwAhDQcAAN0DACAaAADlAwAgGwAA3QMAIBwAAN0DACAdAADdAwAgvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDkAwAhCL0CCAAAAAG-AggAAAAFvwIIAAAABcACCAAAAAHBAggAAAABwgIIAAAAAcMCCAAAAAHEAggA5QMAIQm0AgAA5gMAMLUCAACGAwAQtgIAAOYDADC3AgEAzwMAIbsCQADQAwAhygIBAM8DACHaAgEAzwMAIdsCQADQAwAh3AJAAOEDACEMtAIAAOcDADC1AgAA8AIAELYCAADnAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAh3QIBANsDACHeAgEA2wMAId8CIADoAwAh4AIBANsDACHhAgEA2wMAIeICAQDPAwAhBQcAANIDACAcAADqAwAgHQAA6gMAIL0CIAAAAAHEAiAA6QMAIQUHAADSAwAgHAAA6gMAIB0AAOoDACC9AiAAAAABxAIgAOkDACECvQIgAAAAAcQCIADqAwAhD-EBAADuAwAg4gEAAO8DACDjAQAA8AMAILQCAADrAwAwtQIAAN0CABC2AgAA6wMAMLcCAQDXAwAhuwJAANgDACG8AkAA2AMAId0CAQDsAwAh3gIBAOwDACHfAiAA7QMAIeACAQDsAwAh4QIBAOwDACHiAgEA1wMAIQu9AgEAAAABvgIBAAAABb8CAQAAAAXAAgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAN4DACHFAgEAAAABxgIBAAAAAccCAQAAAAECvQIgAAAAAcQCIADqAwAhA-MCAADNAgAg5AIAAM0CACDlAgAAzQIAIAPjAgAA0QIAIOQCAADRAgAg5QIAANECACAD4wIAANUCACDkAgAA1QIAIOUCAADVAgAgCuABAADzAwAgtAIAAPEDADC1AgAA1QIAELYCAADxAwAwtwIBANcDACG7AkAA2AMAIcoCAQDXAwAh2gIBANcDACHbAkAA2AMAIdwCQADyAwAhCL0CQAAAAAG-AkAAAAAFvwJAAAAABcACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA4wMAIRHhAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHdAgEA7AMAId4CAQDsAwAh3wIgAO0DACHgAgEA7AMAIeECAQDsAwAh4gIBANcDACG_AwAA3QIAIMADAADdAgAgDOABAADzAwAgtAIAAPQDADC1AgAA0QIAELYCAAD0AwAwtwIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHJAgEA1wMAIcoCAQDXAwAhywIBAOwDACHMAgEA7AMAIQLOAgEAAAABzwIBAAAAARXgAQAA8wMAILQCAAD2AwAwtQIAAM0CABC2AgAA9gMAMLcCAQDXAwAhuwJAANgDACG8AkAA2AMAIcoCAQDXAwAhzQIBANcDACHOAgEA1wMAIc8CAQDXAwAh0AIBAOwDACHRAgEA7AMAIdICAQDsAwAh0wICAPcDACHUAkAA8gMAIdUCQADyAwAh1gIBAOwDACHXAgEA7AMAIdgCAQDsAwAh2QIBAOwDACEIvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDdAwAhCrQCAAD4AwAwtQIAAMgCABC2AgAA-AMAMNsCAQDbAwAh5wIBAM8DACHoAgEAzwMAIekCAQDPAwAh6gIBANsDACHrAgEAzwMAIewCAQDPAwAhCrQCAAD5AwAwtQIAALUCABC2AgAA-QMAMNsCAQDsAwAh5wIBANcDACHoAgEA1wMAIekCAQDXAwAh6gIBAOwDACHrAgEA1wMAIewCAQDXAwAhCLQCAAD6AwAwtQIAAK8CABC2AgAA-gMAMLwCAQDPAwAh6AIBAM8DACHtAgEAzwMAIe4CAQDPAwAh7wIBAM8DACEItAIAAPsDADC1AgAAnAIAELYCAAD7AwAwvAIBANcDACHoAgEA1wMAIe0CAQDXAwAh7gIBANcDACHvAgEA1wMAIQPtAgEAAAAB7gIBAAAAAe8CAQAAAAEKtAIAAP0DADC1AgAAlgIAELYCAAD9AwAwuwIBAM8DACHbAgEAzwMAIegCAQDPAwAh8QIBAM8DACHyAgEA2wMAIfMCAQDbAwAh9AIBAM8DACEKtAIAAP4DADC1AgAAgwIAELYCAAD-AwAwuwIBANcDACHbAgEA1wMAIegCAQDXAwAh8QIBANcDACHyAgEA7AMAIfMCAQDsAwAh9AIBANcDACEMtAIAAP8DADC1AgAA_QEAELYCAAD_AwAwvAIBAM8DACHoAgEAzwMAIfMCAQDPAwAh9QIBAM8DACH2AgEAzwMAIfcCAgCABAAh-AIBANsDACH5AgEA2wMAIfoCAQDPAwAhDQcAANIDACAaAACCBAAgGwAA0gMAIBwAANIDACAdAADSAwAgvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgCBBAAhDQcAANIDACAaAACCBAAgGwAA0gMAIBwAANIDACAdAADSAwAgvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgCBBAAhCL0CCAAAAAG-AggAAAAEvwIIAAAABMACCAAAAAHBAggAAAABwgIIAAAAAcMCCAAAAAHEAggAggQAIQy0AgAAgwQAMLUCAADqAQAQtgIAAIMEADC8AgEA1wMAIegCAQDXAwAh8wIBANcDACH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACH4AgEA7AMAIfkCAQDsAwAh-gIBANcDACEIvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDSAwAhCLQCAACFBAAwtQIAAOQBABC2AgAAhQQAMLwCAQDPAwAh6AIBAM8DACH1AgEAzwMAIfYCAQDPAwAh9wICAIAEACEItAIAAIYEADC1AgAA0QEAELYCAACGBAAwvAIBANcDACHoAgEA1wMAIfUCAQDXAwAh9gIBANcDACH3AgIAhAQAIQ20AgAAhwQAMLUCAADLAQAQtgIAAIcEADC7AgEAzwMAIbwCAQDPAwAh6AIBAM8DACH7AgEAzwMAIfwCAQDPAwAh_QIBAM8DACH-AgEAzwMAIf8CAQDPAwAhgAMBAM8DACGBAwEAzwMAIQ20AgAAiAQAMLUCAAC4AQAQtgIAAIgEADC7AgEA1wMAIbwCAQDXAwAh6AIBANcDACH7AgEA1wMAIfwCAQDXAwAh_QIBANcDACH-AgEA1wMAIf8CAQDXAwAhgAMBANcDACGBAwEA1wMAIQe0AgAAiQQAMLUCAACyAQAQtgIAAIkEADC8AgEAzwMAIe0CAQDPAwAh7gIBAM8DACGCAwEAzwMAIQe0AgAAigQAMLUCAACfAQAQtgIAAIoEADC8AgEA1wMAIe0CAQDXAwAh7gIBANcDACGCAwEA1wMAIQLtAgEAAAAB7gIBAAAAAQa0AgAAjAQAMLUCAACZAQAQtgIAAIwEADC8AgEAzwMAIe0CAQDPAwAhhAMgAOgDACEGtAIAAI0EADC1AgAAhgEAELYCAACNBAAwvAIBANcDACHtAgEA1wMAIYQDIADtAwAhB7QCAACOBAAwtQIAAIABABC2AgAAjgQAMLwCAQDPAwAh7QIBAM8DACGCAwEAzwMAIYUDAQDbAwAhB7QCAACPBAAwtQIAAG0AELYCAACPBAAwvAIBANcDACHtAgEA1wMAIYIDAQDXAwAhhQMBAOwDACEItAIAAJAEADC1AgAAZwAQtgIAAJAEADC8AgEAzwMAIe0CAQDPAwAhhgMBAM8DACGHAwIAgAQAIYgDAQDPAwAhCQMAAJIEACC0AgAAkQQAMLUCAAALABC2AgAAkQQAMLwCAQDXAwAh7QIBANcDACGGAwEA1wMAIYcDAgCEBAAhiAMBANcDACEXBAAAmgQAIAUAAJsEACAGAACcBAAgtAIAAJkEADC1AgAAEAAQtgIAAJkEADC8AgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYcDAgCEBAAhlAMBANcDACGVAwEA7AMAIbYDAQDsAwAhtwMBAOwDACG4AwEA7AMAIbkDAQDsAwAhugMBAOwDACG7AwEA7AMAIbwDAQDsAwAhvQMBANcDACG_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-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhC-IBAADnBAAg4wEAAOgEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHdAgEAAAAB3gIBAAAAAd8CIAAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAECAAAAywIAIBQAAOgFACADAAAA3QIAIBQAAOgFACAVAADsBQAgDQAAAN0CACANAADsBQAg4gEAAMAEACDjAQAAwQQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAId0CAQCqBAAh3gIBAKoEACHfAiAAvgQAIeACAQCqBAAh4QIBAKoEACHiAgEApAQAIQviAQAAwAQAIOMBAADBBAAgtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhC-EBAADmBAAg4wEAAOgEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHdAgEAAAAB3gIBAAAAAd8CIAAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAECAAAAywIAIBQAAO0FACADAAAA3QIAIBQAAO0FACAVAADxBQAgDQAAAN0CACANAADxBQAg4QEAAL8EACDjAQAAwQQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAId0CAQCqBAAh3gIBAKoEACHfAiAAvgQAIeACAQCqBAAh4QIBAKoEACHiAgEApAQAIQvhAQAAvwQAIOMBAADBBAAgtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhBAQGAgUKAwYMBAcABQEDAAEBAwABAQMAAQIEDQAFDgAAAAAFBwAKGgALGwAMHAANHQAOAAAAAAAFBwAKGgALGwAMHAANHQAOAQMAAQEDAAEFBwATGgAUGwAVHAAWHQAXAAAAAAAFBwATGgAUGwAVHAAWHQAXAQMAAQEDAAEFBwAcGgAdGwAeHAAfHQAgAAAAAAAFBwAcGgAdGwAeHAAfHQAgAQMAAQEDAAEFBwAlGgAmGwAnHAAoHQApAAAAAAAFBwAlGgAmGwAnHAAoHQApAAAAAwcALxwAMB0AMQAAAAMHAC8cADAdADEAAAADBwA3HAA4HQA5AAAAAwcANxwAOB0AOQAAAAMHAD8cAEAdAEEAAAADBwA_HABAHQBBAAAAAwcARxwASB0ASQAAAAMHAEccAEgdAEkAAAAFBwBPGgBQGwBRHABSHQBTAAAAAAAFBwBPGgBQGwBRHABSHQBTAAAABQcAWRoAWhsAWxwAXB0AXQAAAAAABQcAWRoAWhsAWxwAXB0AXQAAAAMHAGMcAGQdAGUAAAADBwBjHABkHQBlAAAAAwcAaxwAbB0AbQAAAAMHAGscAGwdAG0AAAADBwBzHAB0HQB1AAAAAwcAcxwAdB0AdQQHAHvhAdACeOIB1AJ54wHYAnoB4AEAdwHgAQB3AeABAHcD4QHZAgDiAdoCAOMB2wIAAAADBwB_HACAAR0AgQEAAAADBwB_HACAAR0AgQEB4AEAdwHgAQB3AwcAhgEcAIcBHQCIAQAAAAMHAIYBHACHAR0AiAEB4AEAdwHgAQB3BQcAjQEaAI4BGwCPARwAkAEdAJEBAAAAAAAFBwCNARoAjgEbAI8BHACQAR0AkQEB4AEAdwHgAQB3AwcAlgEcAJcBHQCYAQAAAAMHAJYBHACXAR0AmAEAAAADBwCeARwAnwEdAKABAAAAAwcAngEcAJ8BHQCgAQgCAQkPAQoSAQsTAQwUAQ4WAQ8YBhAZBxEbARIdBhMeCBYfARcgARghBh4kCR8lDyAmAiEnAiIoAiMpAiQqAiUsAiYuBicvECgxAikzBio0ESs1Aiw2Ai03Bi46Ei87GDA8AzE9AzI-AzM_AzRAAzVCAzZEBjdFGThHAzlJBjpKGjtLAzxMAz1NBj5QGz9RIUBTBEFUBEJWBENXBERYBEVaBEZcBkddIkhfBElhBkpiI0tjBExkBE1lBk5oJE9pKlBrK1FsK1JvK1NwK1RxK1VzK1Z1Bld2LFh4K1l6Blp7LVt8K1x9K11-Bl6BAS5fggEyYIQBM2GFATNiiAEzY4kBM2SKATNljAEzZo4BBmePATRokQEzaZMBBmqUATVrlQEzbJYBM22XAQZumgE2b5sBOnCdATtxngE7cqEBO3OiATt0owE7daUBO3anAQZ3qAE8eKoBO3msAQZ6rQE9e64BO3yvATt9sAEGfrMBPn-0AUKAAbYBQ4EBtwFDggG6AUODAbsBQ4QBvAFDhQG-AUOGAcABBocBwQFEiAHDAUOJAcUBBooBxgFFiwHHAUOMAcgBQ40ByQEGjgHMAUaPAc0BSpABzwFLkQHQAUuSAdMBS5MB1AFLlAHVAUuVAdcBS5YB2QEGlwHaAUyYAdwBS5kB3gEGmgHfAU2bAeABS5wB4QFLnQHiAQaeAeUBTp8B5gFUoAHoAVWhAekBVaIB7AFVowHtAVWkAe4BVaUB8AFVpgHyAQanAfMBVqgB9QFVqQH3AQaqAfgBV6sB-QFVrAH6AVWtAfsBBq4B_gFYrwH_AV6wAYECX7EBggJfsgGFAl-zAYYCX7QBhwJftQGJAl-2AYsCBrcBjAJguAGOAl-5AZACBroBkQJhuwGSAl-8AZMCX70BlAIGvgGXAmK_AZgCZsABmgJnwQGbAmfCAZ4CZ8MBnwJnxAGgAmfFAaICZ8YBpAIGxwGlAmjIAacCZ8kBqQIGygGqAmnLAasCZ8wBrAJnzQGtAgbOAbACas8BsQJu0AGzAm_RAbQCb9IBtwJv0wG4Am_UAbkCb9UBuwJv1gG9AgbXAb4CcNgBwAJv2QHCAgbaAcMCcdsBxAJv3AHFAm_dAcYCBt4ByQJy3wHKAnbkAcwCd-UB3AJ35gHfAnfnAeACd-gB4QJ36QHjAnfqAeUCBusB5gJ87AHoAnftAeoCBu4B6wJ97wHsAnfwAe0Cd_EB7gIG8gHxAn7zAfICggH0AfMCevUB9AJ69gH1Anr3AfYCevgB9wJ6-QH5Anr6AfsCBvsB_AKDAfwB_gJ6_QGAAwb-AYEDhAH_AYIDeoACgwN6gQKEAwaCAocDhQGDAogDiQGEAokDeIUCigN4hgKLA3iHAowDeIgCjQN4iQKPA3iKApEDBosCkgOKAYwClAN4jQKWAwaOApcDiwGPApgDeJACmQN4kQKaAwaSAp0DjAGTAp4DkgGUAp8DeZUCoAN5lgKhA3mXAqIDeZgCowN5mQKlA3maAqcDBpsCqAOTAZwCqgN5nQKsAwaeAq0DlAGfAq4DeaACrwN5oQKwAwaiArMDlQGjArQDmQGkArYDmgGlArcDmgGmAroDmgGnArsDmgGoArwDmgGpAr4DmgGqAsADBqsCwQObAawCwwOaAa0CxQMGrgLGA5wBrwLHA5oBsALIA5oBsQLJAwayAswDnQGzAs0DoQE"
15599
+ strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"run\",\"workItems\",\"executionInstances\",\"slotProjection\",\"_count\",\"Run.findUnique\",\"Run.findUniqueOrThrow\",\"Run.findFirst\",\"Run.findFirstOrThrow\",\"Run.findMany\",\"data\",\"Run.createOne\",\"Run.createMany\",\"Run.createManyAndReturn\",\"Run.updateOne\",\"Run.updateMany\",\"Run.updateManyAndReturn\",\"create\",\"update\",\"Run.upsertOne\",\"Run.deleteOne\",\"Run.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Run.groupBy\",\"Run.aggregate\",\"RunWorkItem.findUnique\",\"RunWorkItem.findUniqueOrThrow\",\"RunWorkItem.findFirst\",\"RunWorkItem.findFirstOrThrow\",\"RunWorkItem.findMany\",\"RunWorkItem.createOne\",\"RunWorkItem.createMany\",\"RunWorkItem.createManyAndReturn\",\"RunWorkItem.updateOne\",\"RunWorkItem.updateMany\",\"RunWorkItem.updateManyAndReturn\",\"RunWorkItem.upsertOne\",\"RunWorkItem.deleteOne\",\"RunWorkItem.deleteMany\",\"RunWorkItem.groupBy\",\"RunWorkItem.aggregate\",\"ExecutionInstance.findUnique\",\"ExecutionInstance.findUniqueOrThrow\",\"ExecutionInstance.findFirst\",\"ExecutionInstance.findFirstOrThrow\",\"ExecutionInstance.findMany\",\"ExecutionInstance.createOne\",\"ExecutionInstance.createMany\",\"ExecutionInstance.createManyAndReturn\",\"ExecutionInstance.updateOne\",\"ExecutionInstance.updateMany\",\"ExecutionInstance.updateManyAndReturn\",\"ExecutionInstance.upsertOne\",\"ExecutionInstance.deleteOne\",\"ExecutionInstance.deleteMany\",\"ExecutionInstance.groupBy\",\"ExecutionInstance.aggregate\",\"RunSlotProjection.findUnique\",\"RunSlotProjection.findUniqueOrThrow\",\"RunSlotProjection.findFirst\",\"RunSlotProjection.findFirstOrThrow\",\"RunSlotProjection.findMany\",\"RunSlotProjection.createOne\",\"RunSlotProjection.createMany\",\"RunSlotProjection.createManyAndReturn\",\"RunSlotProjection.updateOne\",\"RunSlotProjection.updateMany\",\"RunSlotProjection.updateManyAndReturn\",\"RunSlotProjection.upsertOne\",\"RunSlotProjection.deleteOne\",\"RunSlotProjection.deleteMany\",\"RunSlotProjection.groupBy\",\"RunSlotProjection.aggregate\",\"WorkflowDebuggerOverlay.findUnique\",\"WorkflowDebuggerOverlay.findUniqueOrThrow\",\"WorkflowDebuggerOverlay.findFirst\",\"WorkflowDebuggerOverlay.findFirstOrThrow\",\"WorkflowDebuggerOverlay.findMany\",\"WorkflowDebuggerOverlay.createOne\",\"WorkflowDebuggerOverlay.createMany\",\"WorkflowDebuggerOverlay.createManyAndReturn\",\"WorkflowDebuggerOverlay.updateOne\",\"WorkflowDebuggerOverlay.updateMany\",\"WorkflowDebuggerOverlay.updateManyAndReturn\",\"WorkflowDebuggerOverlay.upsertOne\",\"WorkflowDebuggerOverlay.deleteOne\",\"WorkflowDebuggerOverlay.deleteMany\",\"WorkflowDebuggerOverlay.groupBy\",\"WorkflowDebuggerOverlay.aggregate\",\"WorkflowActivation.findUnique\",\"WorkflowActivation.findUniqueOrThrow\",\"WorkflowActivation.findFirst\",\"WorkflowActivation.findFirstOrThrow\",\"WorkflowActivation.findMany\",\"WorkflowActivation.createOne\",\"WorkflowActivation.createMany\",\"WorkflowActivation.createManyAndReturn\",\"WorkflowActivation.updateOne\",\"WorkflowActivation.updateMany\",\"WorkflowActivation.updateManyAndReturn\",\"WorkflowActivation.upsertOne\",\"WorkflowActivation.deleteOne\",\"WorkflowActivation.deleteMany\",\"WorkflowActivation.groupBy\",\"WorkflowActivation.aggregate\",\"TriggerSetupState.findUnique\",\"TriggerSetupState.findUniqueOrThrow\",\"TriggerSetupState.findFirst\",\"TriggerSetupState.findFirstOrThrow\",\"TriggerSetupState.findMany\",\"TriggerSetupState.createOne\",\"TriggerSetupState.createMany\",\"TriggerSetupState.createManyAndReturn\",\"TriggerSetupState.updateOne\",\"TriggerSetupState.updateMany\",\"TriggerSetupState.updateManyAndReturn\",\"TriggerSetupState.upsertOne\",\"TriggerSetupState.deleteOne\",\"TriggerSetupState.deleteMany\",\"TriggerSetupState.groupBy\",\"TriggerSetupState.aggregate\",\"RunTraceContext.findUnique\",\"RunTraceContext.findUniqueOrThrow\",\"RunTraceContext.findFirst\",\"RunTraceContext.findFirstOrThrow\",\"RunTraceContext.findMany\",\"RunTraceContext.createOne\",\"RunTraceContext.createMany\",\"RunTraceContext.createManyAndReturn\",\"RunTraceContext.updateOne\",\"RunTraceContext.updateMany\",\"RunTraceContext.updateManyAndReturn\",\"RunTraceContext.upsertOne\",\"RunTraceContext.deleteOne\",\"RunTraceContext.deleteMany\",\"RunTraceContext.groupBy\",\"RunTraceContext.aggregate\",\"TelemetrySpan.findUnique\",\"TelemetrySpan.findUniqueOrThrow\",\"TelemetrySpan.findFirst\",\"TelemetrySpan.findFirstOrThrow\",\"TelemetrySpan.findMany\",\"TelemetrySpan.createOne\",\"TelemetrySpan.createMany\",\"TelemetrySpan.createManyAndReturn\",\"TelemetrySpan.updateOne\",\"TelemetrySpan.updateMany\",\"TelemetrySpan.updateManyAndReturn\",\"TelemetrySpan.upsertOne\",\"TelemetrySpan.deleteOne\",\"TelemetrySpan.deleteMany\",\"TelemetrySpan.groupBy\",\"TelemetrySpan.aggregate\",\"TelemetryArtifact.findUnique\",\"TelemetryArtifact.findUniqueOrThrow\",\"TelemetryArtifact.findFirst\",\"TelemetryArtifact.findFirstOrThrow\",\"TelemetryArtifact.findMany\",\"TelemetryArtifact.createOne\",\"TelemetryArtifact.createMany\",\"TelemetryArtifact.createManyAndReturn\",\"TelemetryArtifact.updateOne\",\"TelemetryArtifact.updateMany\",\"TelemetryArtifact.updateManyAndReturn\",\"TelemetryArtifact.upsertOne\",\"TelemetryArtifact.deleteOne\",\"TelemetryArtifact.deleteMany\",\"TelemetryArtifact.groupBy\",\"TelemetryArtifact.aggregate\",\"TelemetryMetricPoint.findUnique\",\"TelemetryMetricPoint.findUniqueOrThrow\",\"TelemetryMetricPoint.findFirst\",\"TelemetryMetricPoint.findFirstOrThrow\",\"TelemetryMetricPoint.findMany\",\"TelemetryMetricPoint.createOne\",\"TelemetryMetricPoint.createMany\",\"TelemetryMetricPoint.createManyAndReturn\",\"TelemetryMetricPoint.updateOne\",\"TelemetryMetricPoint.updateMany\",\"TelemetryMetricPoint.updateManyAndReturn\",\"TelemetryMetricPoint.upsertOne\",\"TelemetryMetricPoint.deleteOne\",\"TelemetryMetricPoint.deleteMany\",\"TelemetryMetricPoint.groupBy\",\"TelemetryMetricPoint.aggregate\",\"CredentialInstance.findUnique\",\"CredentialInstance.findUniqueOrThrow\",\"CredentialInstance.findFirst\",\"CredentialInstance.findFirstOrThrow\",\"CredentialInstance.findMany\",\"CredentialInstance.createOne\",\"CredentialInstance.createMany\",\"CredentialInstance.createManyAndReturn\",\"CredentialInstance.updateOne\",\"CredentialInstance.updateMany\",\"CredentialInstance.updateManyAndReturn\",\"CredentialInstance.upsertOne\",\"CredentialInstance.deleteOne\",\"CredentialInstance.deleteMany\",\"CredentialInstance.groupBy\",\"CredentialInstance.aggregate\",\"CredentialSecretMaterial.findUnique\",\"CredentialSecretMaterial.findUniqueOrThrow\",\"CredentialSecretMaterial.findFirst\",\"CredentialSecretMaterial.findFirstOrThrow\",\"CredentialSecretMaterial.findMany\",\"CredentialSecretMaterial.createOne\",\"CredentialSecretMaterial.createMany\",\"CredentialSecretMaterial.createManyAndReturn\",\"CredentialSecretMaterial.updateOne\",\"CredentialSecretMaterial.updateMany\",\"CredentialSecretMaterial.updateManyAndReturn\",\"CredentialSecretMaterial.upsertOne\",\"CredentialSecretMaterial.deleteOne\",\"CredentialSecretMaterial.deleteMany\",\"CredentialSecretMaterial.groupBy\",\"CredentialSecretMaterial.aggregate\",\"CredentialOAuth2Material.findUnique\",\"CredentialOAuth2Material.findUniqueOrThrow\",\"CredentialOAuth2Material.findFirst\",\"CredentialOAuth2Material.findFirstOrThrow\",\"CredentialOAuth2Material.findMany\",\"CredentialOAuth2Material.createOne\",\"CredentialOAuth2Material.createMany\",\"CredentialOAuth2Material.createManyAndReturn\",\"CredentialOAuth2Material.updateOne\",\"CredentialOAuth2Material.updateMany\",\"CredentialOAuth2Material.updateManyAndReturn\",\"CredentialOAuth2Material.upsertOne\",\"CredentialOAuth2Material.deleteOne\",\"CredentialOAuth2Material.deleteMany\",\"CredentialOAuth2Material.groupBy\",\"CredentialOAuth2Material.aggregate\",\"CredentialOAuth2State.findUnique\",\"CredentialOAuth2State.findUniqueOrThrow\",\"CredentialOAuth2State.findFirst\",\"CredentialOAuth2State.findFirstOrThrow\",\"CredentialOAuth2State.findMany\",\"CredentialOAuth2State.createOne\",\"CredentialOAuth2State.createMany\",\"CredentialOAuth2State.createManyAndReturn\",\"CredentialOAuth2State.updateOne\",\"CredentialOAuth2State.updateMany\",\"CredentialOAuth2State.updateManyAndReturn\",\"CredentialOAuth2State.upsertOne\",\"CredentialOAuth2State.deleteOne\",\"CredentialOAuth2State.deleteMany\",\"CredentialOAuth2State.groupBy\",\"CredentialOAuth2State.aggregate\",\"CredentialBinding.findUnique\",\"CredentialBinding.findUniqueOrThrow\",\"CredentialBinding.findFirst\",\"CredentialBinding.findFirstOrThrow\",\"CredentialBinding.findMany\",\"CredentialBinding.createOne\",\"CredentialBinding.createMany\",\"CredentialBinding.createManyAndReturn\",\"CredentialBinding.updateOne\",\"CredentialBinding.updateMany\",\"CredentialBinding.updateManyAndReturn\",\"CredentialBinding.upsertOne\",\"CredentialBinding.deleteOne\",\"CredentialBinding.deleteMany\",\"CredentialBinding.groupBy\",\"CredentialBinding.aggregate\",\"CredentialTestResult.findUnique\",\"CredentialTestResult.findUniqueOrThrow\",\"CredentialTestResult.findFirst\",\"CredentialTestResult.findFirstOrThrow\",\"CredentialTestResult.findMany\",\"CredentialTestResult.createOne\",\"CredentialTestResult.createMany\",\"CredentialTestResult.createManyAndReturn\",\"CredentialTestResult.updateOne\",\"CredentialTestResult.updateMany\",\"CredentialTestResult.updateManyAndReturn\",\"CredentialTestResult.upsertOne\",\"CredentialTestResult.deleteOne\",\"CredentialTestResult.deleteMany\",\"CredentialTestResult.groupBy\",\"CredentialTestResult.aggregate\",\"user\",\"accounts\",\"sessions\",\"invites\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserInvite.findUnique\",\"UserInvite.findUniqueOrThrow\",\"UserInvite.findFirst\",\"UserInvite.findFirstOrThrow\",\"UserInvite.findMany\",\"UserInvite.createOne\",\"UserInvite.createMany\",\"UserInvite.createManyAndReturn\",\"UserInvite.updateOne\",\"UserInvite.updateMany\",\"UserInvite.updateManyAndReturn\",\"UserInvite.upsertOne\",\"UserInvite.deleteOne\",\"UserInvite.deleteMany\",\"UserInvite.groupBy\",\"UserInvite.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"VerificationToken.findUnique\",\"VerificationToken.findUniqueOrThrow\",\"VerificationToken.findFirst\",\"VerificationToken.findFirstOrThrow\",\"VerificationToken.findMany\",\"VerificationToken.createOne\",\"VerificationToken.createMany\",\"VerificationToken.createManyAndReturn\",\"VerificationToken.updateOne\",\"VerificationToken.updateMany\",\"VerificationToken.updateManyAndReturn\",\"VerificationToken.upsertOne\",\"VerificationToken.deleteOne\",\"VerificationToken.deleteMany\",\"VerificationToken.groupBy\",\"VerificationToken.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"identifier\",\"token\",\"expires\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"identifier_token\",\"sessionToken\",\"userId\",\"ipAddress\",\"userAgent\",\"type\",\"provider\",\"providerAccountId\",\"password\",\"refresh_token\",\"access_token\",\"expires_at\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"tokenHash\",\"expiresAt\",\"revokedAt\",\"name\",\"email\",\"emailVerified\",\"image\",\"passwordHash\",\"accountStatus\",\"every\",\"some\",\"none\",\"provider_providerAccountId\",\"testId\",\"instanceId\",\"status\",\"message\",\"detailsJson\",\"testedAt\",\"workflowId\",\"nodeId\",\"slotKey\",\"workflowId_nodeId_slotKey\",\"state\",\"codeVerifier\",\"providerId\",\"requestedScopesJson\",\"encryptedJson\",\"encryptionKeyId\",\"schemaVersion\",\"connectedEmail\",\"connectedAt\",\"scopesJson\",\"typeId\",\"displayName\",\"sourceKind\",\"publicConfigJson\",\"secretRefJson\",\"tagsJson\",\"setupStatus\",\"metricPointId\",\"traceId\",\"spanId\",\"runId\",\"activationId\",\"metricName\",\"value\",\"unit\",\"observedAt\",\"workflowFolder\",\"nodeType\",\"nodeRole\",\"modelName\",\"dimensionsJson\",\"retentionExpiresAt\",\"artifactId\",\"kind\",\"contentType\",\"previewText\",\"previewJson\",\"payloadText\",\"payloadJson\",\"bytes\",\"truncated\",\"telemetrySpanId\",\"parentSpanId\",\"connectionInvocationId\",\"statusMessage\",\"startTime\",\"endTime\",\"attributesJson\",\"eventsJson\",\"traceId_spanId\",\"rootSpanId\",\"serviceName\",\"stateJson\",\"workflowId_nodeId\",\"isActive\",\"copiedFromRunId\",\"revision\",\"slotStatesJson\",\"slotNodeId\",\"workflowNodeId\",\"connectionKind\",\"batchId\",\"runIndex\",\"parentInstanceId\",\"parentRunId\",\"workerClaimToken\",\"queuedAt\",\"startedAt\",\"finishedAt\",\"itemCount\",\"inputJson\",\"outputJson\",\"errorJson\",\"inputItemIndicesJson\",\"outputItemCount\",\"successfulItemCount\",\"failedItemCount\",\"inputStorageKind\",\"outputStorageKind\",\"inputBytes\",\"outputBytes\",\"inputPreviewJson\",\"outputPreviewJson\",\"inputPayloadRef\",\"outputPayloadRef\",\"inputTruncated\",\"outputTruncated\",\"usedPinnedOutput\",\"workItemId\",\"targetNodeId\",\"queueName\",\"claimToken\",\"claimedBy\",\"claimedAt\",\"availableAt\",\"enqueuedAt\",\"completedAt\",\"failedAt\",\"sourceInstanceId\",\"itemsIn\",\"inputsByPortJson\",\"parentJson\",\"executionOptionsJson\",\"controlJson\",\"workflowSnapshotJson\",\"policySnapshotJson\",\"engineCountersJson\",\"mutableStateJson\",\"outputsByNodeJson\",\"runId_slotNodeId_runIndex\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
15600
+ graph: "8gbFAeACFQQAAIsFACAFAACMBQAgBgAAjQUAIPQCAACKBQAw9QIAABAAEPYCAACKBQAw_AIBALsEACGpAwEAuwQAIa0DAQC7BAAhxQMBAAAAAekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACEBAAAAAQAgFwMAAIYFACD0AgAAkAUAMPUCAAADABD2AgAAkAUAMKkDAQC7BAAhrQMBALsEACHFAwEAuwQAIe4DAQC7BAAh8AMBANAEACH5AwEA0AQAIYkEAQC7BAAhigQBALsEACGLBAEA0AQAIYwEAQDQBAAhjQQBANAEACGOBAEA0AQAIY8EAQC7BAAhkAQBALsEACGRBAEA0AQAIZIEAQDQBAAhkwQBANAEACGUBAIA6AQAIZUEAQC7BAAhCgMAAJYGACDwAwAAlgUAIPkDAACWBQAgiwQAAJYFACCMBAAAlgUAII0EAACWBQAgjgQAAJYFACCRBAAAlgUAIJIEAACWBQAgkwQAAJYFACAXAwAAhgUAIPQCAACQBQAw9QIAAAMAEPYCAACQBQAwqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh7gMBALsEACHwAwEA0AQAIfkDAQDQBAAhiQQBAAAAAYoEAQC7BAAhiwQBANAEACGMBAEA0AQAIY0EAQDQBAAhjgQBANAEACGPBAEAuwQAIZAEAQC7BAAhkQQBANAEACGSBAEA0AQAIZMEAQDQBAAhlAQCAOgEACGVBAEAuwQAIQMAAAADACABAAAEADACAAAFACApAwAAhgUAIPQCAACPBQAw9QIAAAcAEPYCAACPBQAw_AIBALsEACGoAwEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIcYDAQDQBAAh0gMBALsEACHrAwEAuwQAIewDAQC7BAAh7QMBANAEACHuAwEAuwQAIe8DAgDoBAAh8AMBANAEACHxAwEA0AQAIfIDAQDQBAAh8wMBANAEACH0AwEA0AQAIfUDAQDQBAAh9gMCAOgEACH3AwEA0AQAIfgDAQDQBAAh-QMBANAEACH6AwEA0AQAIfsDAgDbBAAh_AMCANsEACH9AwIA2wQAIf4DAQDQBAAh_wMBANAEACGABAIA2wQAIYEEAgDbBAAhggQBANAEACGDBAEA0AQAIYQEAQDQBAAhhQQBANAEACGGBCAA9wQAIYcEIAD3BAAhiAQgAPcEACEbAwAAlgYAIMYDAACWBQAg7QMAAJYFACDwAwAAlgUAIPEDAACWBQAg8gMAAJYFACDzAwAAlgUAIPQDAACWBQAg9QMAAJYFACD3AwAAlgUAIPgDAACWBQAg-QMAAJYFACD6AwAAlgUAIPsDAACWBQAg_AMAAJYFACD9AwAAlgUAIP4DAACWBQAg_wMAAJYFACCABAAAlgUAIIEEAACWBQAgggQAAJYFACCDBAAAlgUAIIQEAACWBQAghQQAAJYFACCGBAAAlgUAIIcEAACWBQAgiAQAAJYFACAqAwAAhgUAIPQCAACPBQAw9QIAAAcAEPYCAACPBQAw_AIBALsEACGoAwEAAAABqQMBALsEACGtAwEAuwQAIcUDAQC7BAAhxgMBANAEACHSAwEAuwQAIesDAQC7BAAh7AMBALsEACHtAwEA0AQAIe4DAQC7BAAh7wMCAOgEACHwAwEA0AQAIfEDAQDQBAAh8gMBANAEACHzAwEA0AQAIfQDAQDQBAAh9QMBANAEACH2AwIA6AQAIfcDAQDQBAAh-AMBANAEACH5AwEA0AQAIfoDAQDQBAAh-wMCANsEACH8AwIA2wQAIf0DAgDbBAAh_gMBANAEACH_AwEA0AQAIYAEAgDbBAAhgQQCANsEACGCBAEA0AQAIYMEAQDQBAAhhAQBANAEACGFBAEA0AQAIYYEIAD3BAAhhwQgAPcEACGIBCAA9wQAIZ4EAACOBQAgAwAAAAcAIAEAAAgAMAIAAAkAIAkDAACGBQAg9AIAAIUFADD1AgAACwAQ9gIAAIUFADD8AgEAuwQAIa0DAQC7BAAhxQMBALsEACHpAwIA6AQAIeoDAQC7BAAhAQAAAAsAIAEAAAADACABAAAABwAgAQAAAAEAIBUEAACLBQAgBQAAjAUAIAYAAI0FACD0AgAAigUAMPUCAAAQABD2AgAAigUAMPwCAQC7BAAhqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh6QMCAOgEACH0AwEAuwQAIfUDAQDQBAAhlgQBANAEACGXBAEA0AQAIZgEAQDQBAAhmQQBANAEACGaBAEA0AQAIZsEAQDQBAAhnAQBANAEACGdBAEAuwQAIQsEAADNBgAgBQAAzgYAIAYAAM8GACD1AwAAlgUAIJYEAACWBQAglwQAAJYFACCYBAAAlgUAIJkEAACWBQAgmgQAAJYFACCbBAAAlgUAIJwEAACWBQAgAwAAABAAIAEAABEAMAIAAAEAIAMAAAAQACABAAARADACAAABACADAAAAEAAgAQAAEQAwAgAAAQAgEgQAAMoGACAFAADLBgAgBgAAzAYAIPwCAQAAAAGpAwEAAAABrQMBAAAAAcUDAQAAAAHpAwIAAAAB9AMBAAAAAfUDAQAAAAGWBAEAAAABlwQBAAAAAZgEAQAAAAGZBAEAAAABmgQBAAAAAZsEAQAAAAGcBAEAAAABnQQBAAAAAQENAAAVACAP_AIBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAekDAgAAAAH0AwEAAAAB9QMBAAAAAZYEAQAAAAGXBAEAAAABmAQBAAAAAZkEAQAAAAGaBAEAAAABmwQBAAAAAZwEAQAAAAGdBAEAAAABAQ0AABcAMAENAAAXADASBAAAqgYAIAUAAKsGACAGAACsBgAg_AIBAJQFACGpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHpAwIA6wUAIfQDAQCUBQAh9QMBAJoFACGWBAEAmgUAIZcEAQCaBQAhmAQBAJoFACGZBAEAmgUAIZoEAQCaBQAhmwQBAJoFACGcBAEAmgUAIZ0EAQCUBQAhAgAAAAEAIA0AABoAIA_8AgEAlAUAIakDAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh9AMBAJQFACH1AwEAmgUAIZYEAQCaBQAhlwQBAJoFACGYBAEAmgUAIZkEAQCaBQAhmgQBAJoFACGbBAEAmgUAIZwEAQCaBQAhnQQBAJQFACECAAAAEAAgDQAAHAAgAgAAABAAIA0AABwAIAMAAAABACAUAAAVACAVAAAaACABAAAAAQAgAQAAABAAIA0HAAClBgAgGgAApgYAIBsAAKkGACAcAACoBgAgHQAApwYAIPUDAACWBQAglgQAAJYFACCXBAAAlgUAIJgEAACWBQAgmQQAAJYFACCaBAAAlgUAIJsEAACWBQAgnAQAAJYFACAS9AIAAIkFADD1AgAAIwAQ9gIAAIkFADD8AgEAswQAIakDAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh9AMBALMEACH1AwEAvwQAIZYEAQC_BAAhlwQBAL8EACGYBAEAvwQAIZkEAQC_BAAhmgQBAL8EACGbBAEAvwQAIZwEAQC_BAAhnQQBALMEACEDAAAAEAAgAQAAIgAwGQAAIwAgAwAAABAAIAEAABEAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgFAMAAKQGACCpAwEAAAABrQMBAAAAAcUDAQAAAAHuAwEAAAAB8AMBAAAAAfkDAQAAAAGJBAEAAAABigQBAAAAAYsEAQAAAAGMBAEAAAABjQQBAAAAAY4EAQAAAAGPBAEAAAABkAQBAAAAAZEEAQAAAAGSBAEAAAABkwQBAAAAAZQEAgAAAAGVBAEAAAABAQ0AACsAIBOpAwEAAAABrQMBAAAAAcUDAQAAAAHuAwEAAAAB8AMBAAAAAfkDAQAAAAGJBAEAAAABigQBAAAAAYsEAQAAAAGMBAEAAAABjQQBAAAAAY4EAQAAAAGPBAEAAAABkAQBAAAAAZEEAQAAAAGSBAEAAAABkwQBAAAAAZQEAgAAAAGVBAEAAAABAQ0AAC0AMAENAAAtADAUAwAAowYAIKkDAQCUBQAhrQMBAJQFACHFAwEAlAUAIe4DAQCUBQAh8AMBAJoFACH5AwEAmgUAIYkEAQCUBQAhigQBAJQFACGLBAEAmgUAIYwEAQCaBQAhjQQBAJoFACGOBAEAmgUAIY8EAQCUBQAhkAQBAJQFACGRBAEAmgUAIZIEAQCaBQAhkwQBAJoFACGUBAIA6wUAIZUEAQCUBQAhAgAAAAUAIA0AADAAIBOpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHuAwEAlAUAIfADAQCaBQAh-QMBAJoFACGJBAEAlAUAIYoEAQCUBQAhiwQBAJoFACGMBAEAmgUAIY0EAQCaBQAhjgQBAJoFACGPBAEAlAUAIZAEAQCUBQAhkQQBAJoFACGSBAEAmgUAIZMEAQCaBQAhlAQCAOsFACGVBAEAlAUAIQIAAAADACANAAAyACACAAAAAwAgDQAAMgAgAwAAAAUAIBQAACsAIBUAADAAIAEAAAAFACABAAAAAwAgDgcAAJ4GACAaAACfBgAgGwAAogYAIBwAAKEGACAdAACgBgAg8AMAAJYFACD5AwAAlgUAIIsEAACWBQAgjAQAAJYFACCNBAAAlgUAII4EAACWBQAgkQQAAJYFACCSBAAAlgUAIJMEAACWBQAgFvQCAACIBQAw9QIAADkAEPYCAACIBQAwqQMBALMEACGtAwEAswQAIcUDAQCzBAAh7gMBALMEACHwAwEAvwQAIfkDAQC_BAAhiQQBALMEACGKBAEAswQAIYsEAQC_BAAhjAQBAL8EACGNBAEAvwQAIY4EAQC_BAAhjwQBALMEACGQBAEAswQAIZEEAQC_BAAhkgQBAL8EACGTBAEAvwQAIZQEAgDkBAAhlQQBALMEACEDAAAAAwAgAQAAOAAwGQAAOQAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgJgMAAJ0GACD8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAcYDAQAAAAHSAwEAAAAB6wMBAAAAAewDAQAAAAHtAwEAAAAB7gMBAAAAAe8DAgAAAAHwAwEAAAAB8QMBAAAAAfIDAQAAAAHzAwEAAAAB9AMBAAAAAfUDAQAAAAH2AwIAAAAB9wMBAAAAAfgDAQAAAAH5AwEAAAAB-gMBAAAAAfsDAgAAAAH8AwIAAAAB_QMCAAAAAf4DAQAAAAH_AwEAAAABgAQCAAAAAYEEAgAAAAGCBAEAAAABgwQBAAAAAYQEAQAAAAGFBAEAAAABhgQgAAAAAYcEIAAAAAGIBCAAAAABAQ0AAEEAICX8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAcYDAQAAAAHSAwEAAAAB6wMBAAAAAewDAQAAAAHtAwEAAAAB7gMBAAAAAe8DAgAAAAHwAwEAAAAB8QMBAAAAAfIDAQAAAAHzAwEAAAAB9AMBAAAAAfUDAQAAAAH2AwIAAAAB9wMBAAAAAfgDAQAAAAH5AwEAAAAB-gMBAAAAAfsDAgAAAAH8AwIAAAAB_QMCAAAAAf4DAQAAAAH_AwEAAAABgAQCAAAAAYEEAgAAAAGCBAEAAAABgwQBAAAAAYQEAQAAAAGFBAEAAAABhgQgAAAAAYcEIAAAAAGIBCAAAAABAQ0AAEMAMAENAABDADAmAwAAnAYAIPwCAQCUBQAhqAMBAJQFACGpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHGAwEAmgUAIdIDAQCUBQAh6wMBAJQFACHsAwEAlAUAIe0DAQCaBQAh7gMBAJQFACHvAwIA6wUAIfADAQCaBQAh8QMBAJoFACHyAwEAmgUAIfMDAQCaBQAh9AMBAJoFACH1AwEAmgUAIfYDAgDrBQAh9wMBAJoFACH4AwEAmgUAIfkDAQCaBQAh-gMBAJoFACH7AwIAogUAIfwDAgCiBQAh_QMCAKIFACH-AwEAmgUAIf8DAQCaBQAhgAQCAKIFACGBBAIAogUAIYIEAQCaBQAhgwQBAJoFACGEBAEAmgUAIYUEAQCaBQAhhgQgAP8FACGHBCAA_wUAIYgEIAD_BQAhAgAAAAkAIA0AAEYAICX8AgEAlAUAIagDAQCUBQAhqQMBAJQFACGtAwEAlAUAIcUDAQCUBQAhxgMBAJoFACHSAwEAlAUAIesDAQCUBQAh7AMBAJQFACHtAwEAmgUAIe4DAQCUBQAh7wMCAOsFACHwAwEAmgUAIfEDAQCaBQAh8gMBAJoFACHzAwEAmgUAIfQDAQCaBQAh9QMBAJoFACH2AwIA6wUAIfcDAQCaBQAh-AMBAJoFACH5AwEAmgUAIfoDAQCaBQAh-wMCAKIFACH8AwIAogUAIf0DAgCiBQAh_gMBAJoFACH_AwEAmgUAIYAEAgCiBQAhgQQCAKIFACGCBAEAmgUAIYMEAQCaBQAhhAQBAJoFACGFBAEAmgUAIYYEIAD_BQAhhwQgAP8FACGIBCAA_wUAIQIAAAAHACANAABIACACAAAABwAgDQAASAAgAwAAAAkAIBQAAEEAIBUAAEYAIAEAAAAJACABAAAABwAgHwcAAJcGACAaAACYBgAgGwAAmwYAIBwAAJoGACAdAACZBgAgxgMAAJYFACDtAwAAlgUAIPADAACWBQAg8QMAAJYFACDyAwAAlgUAIPMDAACWBQAg9AMAAJYFACD1AwAAlgUAIPcDAACWBQAg-AMAAJYFACD5AwAAlgUAIPoDAACWBQAg-wMAAJYFACD8AwAAlgUAIP0DAACWBQAg_gMAAJYFACD_AwAAlgUAIIAEAACWBQAggQQAAJYFACCCBAAAlgUAIIMEAACWBQAghAQAAJYFACCFBAAAlgUAIIYEAACWBQAghwQAAJYFACCIBAAAlgUAICj0AgAAhwUAMPUCAABPABD2AgAAhwUAMPwCAQCzBAAhqAMBALMEACGpAwEAswQAIa0DAQCzBAAhxQMBALMEACHGAwEAvwQAIdIDAQCzBAAh6wMBALMEACHsAwEAswQAIe0DAQC_BAAh7gMBALMEACHvAwIA5AQAIfADAQC_BAAh8QMBAL8EACHyAwEAvwQAIfMDAQC_BAAh9AMBAL8EACH1AwEAvwQAIfYDAgDkBAAh9wMBAL8EACH4AwEAvwQAIfkDAQC_BAAh-gMBAL8EACH7AwIAxAQAIfwDAgDEBAAh_QMCAMQEACH-AwEAvwQAIf8DAQC_BAAhgAQCAMQEACGBBAIAxAQAIYIEAQC_BAAhgwQBAL8EACGEBAEAvwQAIYUEAQC_BAAhhgQgAPMEACGHBCAA8wQAIYgEIADzBAAhAwAAAAcAIAEAAE4AMBkAAE8AIAMAAAAHACABAAAIADACAAAJACAJAwAAhgUAIPQCAACFBQAw9QIAAAsAEPYCAACFBQAw_AIBALsEACGtAwEAuwQAIcUDAQAAAAHpAwIA6AQAIeoDAQC7BAAhAQAAAFIAIAEAAABSACABAwAAlgYAIAMAAAALACABAABVADACAABSACADAAAACwAgAQAAVQAwAgAAUgAgAwAAAAsAIAEAAFUAMAIAAFIAIAYDAACVBgAg_AIBAAAAAa0DAQAAAAHFAwEAAAAB6QMCAAAAAeoDAQAAAAEBDQAAWQAgBfwCAQAAAAGtAwEAAAABxQMBAAAAAekDAgAAAAHqAwEAAAABAQ0AAFsAMAENAABbADAGAwAAlAYAIPwCAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh6gMBAJQFACECAAAAUgAgDQAAXgAgBfwCAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh6gMBAJQFACECAAAACwAgDQAAYAAgAgAAAAsAIA0AAGAAIAMAAABSACAUAABZACAVAABeACABAAAAUgAgAQAAAAsAIAUHAACPBgAgGgAAkAYAIBsAAJMGACAcAACSBgAgHQAAkQYAIAj0AgAAhAUAMPUCAABnABD2AgAAhAUAMPwCAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh6gMBALMEACEDAAAACwAgAQAAZgAwGQAAZwAgAwAAAAsAIAEAAFUAMAIAAFIAIAf0AgAAgwUAMPUCAABtABD2AgAAgwUAMPwCAQC7BAAhrQMBAAAAAeUDAQC7BAAh6AMBANAEACEBAAAAagAgAQAAAGoAIAf0AgAAgwUAMPUCAABtABD2AgAAgwUAMPwCAQC7BAAhrQMBALsEACHlAwEAuwQAIegDAQDQBAAhAegDAACWBQAgAwAAAG0AIAEAAG4AMAIAAGoAIAMAAABtACABAABuADACAABqACADAAAAbQAgAQAAbgAwAgAAagAgBPwCAQAAAAGtAwEAAAAB5QMBAAAAAegDAQAAAAEBDQAAcgAgBPwCAQAAAAGtAwEAAAAB5QMBAAAAAegDAQAAAAEBDQAAdAAwAQ0AAHQAMAT8AgEAlAUAIa0DAQCUBQAh5QMBAJQFACHoAwEAmgUAIQIAAABqACANAAB3ACAE_AIBAJQFACGtAwEAlAUAIeUDAQCUBQAh6AMBAJoFACECAAAAbQAgDQAAeQAgAgAAAG0AIA0AAHkAIAMAAABqACAUAAByACAVAAB3ACABAAAAagAgAQAAAG0AIAQHAACMBgAgHAAAjgYAIB0AAI0GACDoAwAAlgUAIAf0AgAAggUAMPUCAACAAQAQ9gIAAIIFADD8AgEAswQAIa0DAQCzBAAh5QMBALMEACHoAwEAvwQAIQMAAABtACABAAB_ADAZAACAAQAgAwAAAG0AIAEAAG4AMAIAAGoAIAb0AgAAgQUAMPUCAACGAQAQ9gIAAIEFADD8AgEAuwQAIa0DAQAAAAHnAyAA0QQAIQEAAACDAQAgAQAAAIMBACAG9AIAAIEFADD1AgAAhgEAEPYCAACBBQAw_AIBALsEACGtAwEAuwQAIecDIADRBAAhAAMAAACGAQAgAQAAhwEAMAIAAIMBACADAAAAhgEAIAEAAIcBADACAACDAQAgAwAAAIYBACABAACHAQAwAgAAgwEAIAP8AgEAAAABrQMBAAAAAecDIAAAAAEBDQAAiwEAIAP8AgEAAAABrQMBAAAAAecDIAAAAAEBDQAAjQEAMAENAACNAQAwA_wCAQCUBQAhrQMBAJQFACHnAyAArgUAIQIAAACDAQAgDQAAkAEAIAP8AgEAlAUAIa0DAQCUBQAh5wMgAK4FACECAAAAhgEAIA0AAJIBACACAAAAhgEAIA0AAJIBACADAAAAgwEAIBQAAIsBACAVAACQAQAgAQAAAIMBACABAAAAhgEAIAMHAACJBgAgHAAAiwYAIB0AAIoGACAG9AIAAIAFADD1AgAAmQEAEPYCAACABQAw_AIBALMEACGtAwEAswQAIecDIADMBAAhAwAAAIYBACABAACYAQAwGQAAmQEAIAMAAACGAQAgAQAAhwEAMAIAAIMBACAI9AIAAP4EADD1AgAAnwEAEPYCAAD-BAAw_AIBALsEACGtAwEAuwQAIa4DAQC7BAAh5QMBALsEACHmAwAA_wQAIAEAAACcAQAgAQAAAJwBACAH9AIAAP4EADD1AgAAnwEAEPYCAAD-BAAw_AIBALsEACGtAwEAuwQAIa4DAQC7BAAh5QMBALsEACEAAwAAAJ8BACABAACgAQAwAgAAnAEAIAMAAACfAQAgAQAAoAEAMAIAAJwBACADAAAAnwEAIAEAAKABADACAACcAQAgBPwCAQAAAAGtAwEAAAABrgMBAAAAAeUDAQAAAAEBDQAApAEAIAT8AgEAAAABrQMBAAAAAa4DAQAAAAHlAwEAAAABAQ0AAKYBADABDQAApgEAMAT8AgEAlAUAIa0DAQCUBQAhrgMBAJQFACHlAwEAlAUAIQIAAACcAQAgDQAAqQEAIAT8AgEAlAUAIa0DAQCUBQAhrgMBAJQFACHlAwEAlAUAIQIAAACfAQAgDQAAqwEAIAIAAACfAQAgDQAAqwEAIAMAAACcAQAgFAAApAEAIBUAAKkBACABAAAAnAEAIAEAAACfAQAgAwcAAIYGACAcAACIBgAgHQAAhwYAIAf0AgAA_QQAMPUCAACyAQAQ9gIAAP0EADD8AgEAswQAIa0DAQCzBAAhrgMBALMEACHlAwEAswQAIQMAAACfAQAgAQAAsQEAMBkAALIBACADAAAAnwEAIAEAAKABADACAACcAQAgCvQCAAD8BAAw9QIAALgBABD2AgAA_AQAMPsCAQC7BAAhmwMBANAEACGtAwEAuwQAIcMDAQAAAAHFAwEAAAAB4wMBALsEACHkAwEA0AQAIQEAAAC1AQAgAQAAALUBACAK9AIAAPwEADD1AgAAuAEAEPYCAAD8BAAw-wIBALsEACGbAwEA0AQAIa0DAQC7BAAhwwMBALsEACHFAwEAuwQAIeMDAQC7BAAh5AMBANAEACECmwMAAJYFACDkAwAAlgUAIAMAAAC4AQAgAQAAuQEAMAIAALUBACADAAAAuAEAIAEAALkBADACAAC1AQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAf7AgEAAAABmwMBAAAAAa0DAQAAAAHDAwEAAAABxQMBAAAAAeMDAQAAAAHkAwEAAAABAQ0AAL0BACAH-wIBAAAAAZsDAQAAAAGtAwEAAAABwwMBAAAAAcUDAQAAAAHjAwEAAAAB5AMBAAAAAQENAAC_AQAwAQ0AAL8BADAH-wIBAJQFACGbAwEAmgUAIa0DAQCUBQAhwwMBAJQFACHFAwEAlAUAIeMDAQCUBQAh5AMBAJoFACECAAAAtQEAIA0AAMIBACAH-wIBAJQFACGbAwEAmgUAIa0DAQCUBQAhwwMBAJQFACHFAwEAlAUAIeMDAQCUBQAh5AMBAJoFACECAAAAuAEAIA0AAMQBACACAAAAuAEAIA0AAMQBACADAAAAtQEAIBQAAL0BACAVAADCAQAgAQAAALUBACABAAAAuAEAIAUHAACDBgAgHAAAhQYAIB0AAIQGACCbAwAAlgUAIOQDAACWBQAgCvQCAAD7BAAw9QIAAMsBABD2AgAA-wQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIcMDAQCzBAAhxQMBALMEACHjAwEAswQAIeQDAQC_BAAhAwAAALgBACABAADKAQAwGQAAywEAIAMAAAC4AQAgAQAAuQEAMAIAALUBACAb9AIAAPkEADD1AgAA0QEAEPYCAAD5BAAw_AIBALsEACGdAwEAuwQAIakDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAhywMBANAEACHMAwEA0AQAIc0DAQDQBAAhzgMBANAEACHQAwEA0AQAIdIDAQC7BAAh2gMBAAAAAdsDAQDQBAAh3AMBANAEACHdAwEA0AQAId4DAQDQBAAh3wMBANAEACHgAwEA0AQAIeEDAQDQBAAh4gMAAPoEACABAAAAzgEAIAEAAADOAQAgGvQCAAD5BAAw9QIAANEBABD2AgAA-QQAMPwCAQC7BAAhnQMBALsEACGpAwEA0AQAIa0DAQC7BAAhrgMBANAEACHDAwEAuwQAIcQDAQC7BAAhxQMBALsEACHGAwEA0AQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAh0AMBANAEACHSAwEAuwQAIdoDAQC7BAAh2wMBANAEACHcAwEA0AQAId0DAQDQBAAh3gMBANAEACHfAwEA0AQAIeADAQDQBAAh4QMBANAEACEPqQMAAJYFACCuAwAAlgUAIMYDAACWBQAgywMAAJYFACDMAwAAlgUAIM0DAACWBQAgzgMAAJYFACDQAwAAlgUAINsDAACWBQAg3AMAAJYFACDdAwAAlgUAIN4DAACWBQAg3wMAAJYFACDgAwAAlgUAIOEDAACWBQAgAwAAANEBACABAADSAQAwAgAAzgEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACADAAAA0QEAIAEAANIBADACAADOAQAgF_wCAQAAAAGdAwEAAAABqQMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAcsDAQAAAAHMAwEAAAABzQMBAAAAAc4DAQAAAAHQAwEAAAAB0gMBAAAAAdoDAQAAAAHbAwEAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAABAQ0AANYBACAX_AIBAAAAAZ0DAQAAAAGpAwEAAAABrQMBAAAAAa4DAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGAwEAAAABywMBAAAAAcwDAQAAAAHNAwEAAAABzgMBAAAAAdADAQAAAAHSAwEAAAAB2gMBAAAAAdsDAQAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAEBDQAA2AEAMAENAADYAQAwF_wCAQCUBQAhnQMBAJQFACGpAwEAmgUAIa0DAQCUBQAhrgMBAJoFACHDAwEAlAUAIcQDAQCUBQAhxQMBAJQFACHGAwEAmgUAIcsDAQCaBQAhzAMBAJoFACHNAwEAmgUAIc4DAQCaBQAh0AMBAJoFACHSAwEAlAUAIdoDAQCUBQAh2wMBAJoFACHcAwEAmgUAId0DAQCaBQAh3gMBAJoFACHfAwEAmgUAIeADAQCaBQAh4QMBAJoFACECAAAAzgEAIA0AANsBACAX_AIBAJQFACGdAwEAlAUAIakDAQCaBQAhrQMBAJQFACGuAwEAmgUAIcMDAQCUBQAhxAMBAJQFACHFAwEAlAUAIcYDAQCaBQAhywMBAJoFACHMAwEAmgUAIc0DAQCaBQAhzgMBAJoFACHQAwEAmgUAIdIDAQCUBQAh2gMBAJQFACHbAwEAmgUAIdwDAQCaBQAh3QMBAJoFACHeAwEAmgUAId8DAQCaBQAh4AMBAJoFACHhAwEAmgUAIQIAAADRAQAgDQAA3QEAIAIAAADRAQAgDQAA3QEAIAMAAADOAQAgFAAA1gEAIBUAANsBACABAAAAzgEAIAEAAADRAQAgEgcAAIAGACAcAACCBgAgHQAAgQYAIKkDAACWBQAgrgMAAJYFACDGAwAAlgUAIMsDAACWBQAgzAMAAJYFACDNAwAAlgUAIM4DAACWBQAg0AMAAJYFACDbAwAAlgUAINwDAACWBQAg3QMAAJYFACDeAwAAlgUAIN8DAACWBQAg4AMAAJYFACDhAwAAlgUAIBr0AgAA-AQAMPUCAADkAQAQ9gIAAPgEADD8AgEAswQAIZ0DAQCzBAAhqQMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHLAwEAvwQAIcwDAQC_BAAhzQMBAL8EACHOAwEAvwQAIdADAQC_BAAh0gMBALMEACHaAwEAswQAIdsDAQC_BAAh3AMBAL8EACHdAwEAvwQAId4DAQC_BAAh3wMBAL8EACHgAwEAvwQAIeEDAQC_BAAhAwAAANEBACABAADjAQAwGQAA5AEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACAV9AIAAPYEADD1AgAA6gEAEPYCAAD2BAAw-wIBALsEACGbAwEA0AQAIa0DAQC7BAAhrgMBANAEACHDAwEAuwQAIcQDAQC7BAAhxQMBALsEACHGAwEA0AQAIdADAQDQBAAh0QMBAAAAAdIDAQC7BAAh0wMBALsEACHUAwEA0AQAIdUDAQDQBAAh1gMBANAEACHXAwEA0AQAIdgDAgDbBAAh2QMgAPcEACEBAAAA5wEAIAEAAADnAQAgFfQCAAD2BAAw9QIAAOoBABD2AgAA9gQAMPsCAQC7BAAhmwMBANAEACGtAwEAuwQAIa4DAQDQBAAhwwMBALsEACHEAwEAuwQAIcUDAQC7BAAhxgMBANAEACHQAwEA0AQAIdEDAQC7BAAh0gMBALsEACHTAwEAuwQAIdQDAQDQBAAh1QMBANAEACHWAwEA0AQAIdcDAQDQBAAh2AMCANsEACHZAyAA9wQAIQqbAwAAlgUAIK4DAACWBQAgxgMAAJYFACDQAwAAlgUAINQDAACWBQAg1QMAAJYFACDWAwAAlgUAINcDAACWBQAg2AMAAJYFACDZAwAAlgUAIAMAAADqAQAgAQAA6wEAMAIAAOcBACADAAAA6gEAIAEAAOsBADACAADnAQAgAwAAAOoBACABAADrAQAwAgAA5wEAIBL7AgEAAAABmwMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAdADAQAAAAHRAwEAAAAB0gMBAAAAAdMDAQAAAAHUAwEAAAAB1QMBAAAAAdYDAQAAAAHXAwEAAAAB2AMCAAAAAdkDIAAAAAEBDQAA7wEAIBL7AgEAAAABmwMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAdADAQAAAAHRAwEAAAAB0gMBAAAAAdMDAQAAAAHUAwEAAAAB1QMBAAAAAdYDAQAAAAHXAwEAAAAB2AMCAAAAAdkDIAAAAAEBDQAA8QEAMAENAADxAQAwEvsCAQCUBQAhmwMBAJoFACGtAwEAlAUAIa4DAQCaBQAhwwMBAJQFACHEAwEAlAUAIcUDAQCUBQAhxgMBAJoFACHQAwEAmgUAIdEDAQCUBQAh0gMBAJQFACHTAwEAlAUAIdQDAQCaBQAh1QMBAJoFACHWAwEAmgUAIdcDAQCaBQAh2AMCAKIFACHZAyAA_wUAIQIAAADnAQAgDQAA9AEAIBL7AgEAlAUAIZsDAQCaBQAhrQMBAJQFACGuAwEAmgUAIcMDAQCUBQAhxAMBAJQFACHFAwEAlAUAIcYDAQCaBQAh0AMBAJoFACHRAwEAlAUAIdIDAQCUBQAh0wMBAJQFACHUAwEAmgUAIdUDAQCaBQAh1gMBAJoFACHXAwEAmgUAIdgDAgCiBQAh2QMgAP8FACECAAAA6gEAIA0AAPYBACACAAAA6gEAIA0AAPYBACADAAAA5wEAIBQAAO8BACAVAAD0AQAgAQAAAOcBACABAAAA6gEAIA8HAAD6BQAgGgAA-wUAIBsAAP4FACAcAAD9BQAgHQAA_AUAIJsDAACWBQAgrgMAAJYFACDGAwAAlgUAINADAACWBQAg1AMAAJYFACDVAwAAlgUAINYDAACWBQAg1wMAAJYFACDYAwAAlgUAINkDAACWBQAgFfQCAADyBAAw9QIAAP0BABD2AgAA8gQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHQAwEAvwQAIdEDAQCzBAAh0gMBALMEACHTAwEAswQAIdQDAQC_BAAh1QMBAL8EACHWAwEAvwQAIdcDAQC_BAAh2AMCAMQEACHZAyAA8wQAIQMAAADqAQAgAQAA_AEAMBkAAP0BACADAAAA6gEAIAEAAOsBADACAADnAQAgFPQCAADwBAAw9QIAAIMCABD2AgAA8AQAMK0DAQC7BAAhrgMBANAEACHCAwEAAAABwwMBANAEACHEAwEA0AQAIcUDAQDQBAAhxgMBANAEACHHAwEAuwQAIcgDCADxBAAhyQMBANAEACHKAwEAuwQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAhzwMBANAEACHQAwEA0AQAIQEAAACAAgAgAQAAAIACACAU9AIAAPAEADD1AgAAgwIAEPYCAADwBAAwrQMBALsEACGuAwEA0AQAIcIDAQC7BAAhwwMBANAEACHEAwEA0AQAIcUDAQDQBAAhxgMBANAEACHHAwEAuwQAIcgDCADxBAAhyQMBANAEACHKAwEAuwQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAhzwMBANAEACHQAwEA0AQAIQyuAwAAlgUAIMMDAACWBQAgxAMAAJYFACDFAwAAlgUAIMYDAACWBQAgyQMAAJYFACDLAwAAlgUAIMwDAACWBQAgzQMAAJYFACDOAwAAlgUAIM8DAACWBQAg0AMAAJYFACADAAAAgwIAIAEAAIQCADACAACAAgAgAwAAAIMCACABAACEAgAwAgAAgAIAIAMAAACDAgAgAQAAhAIAMAIAAIACACARrQMBAAAAAa4DAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAccDAQAAAAHIAwgAAAAByQMBAAAAAcoDAQAAAAHLAwEAAAABzAMBAAAAAc0DAQAAAAHOAwEAAAABzwMBAAAAAdADAQAAAAEBDQAAiAIAIBGtAwEAAAABrgMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGAwEAAAABxwMBAAAAAcgDCAAAAAHJAwEAAAABygMBAAAAAcsDAQAAAAHMAwEAAAABzQMBAAAAAc4DAQAAAAHPAwEAAAAB0AMBAAAAAQENAACKAgAwAQ0AAIoCADARrQMBAJQFACGuAwEAmgUAIcIDAQCUBQAhwwMBAJoFACHEAwEAmgUAIcUDAQCaBQAhxgMBAJoFACHHAwEAlAUAIcgDCAD5BQAhyQMBAJoFACHKAwEAlAUAIcsDAQCaBQAhzAMBAJoFACHNAwEAmgUAIc4DAQCaBQAhzwMBAJoFACHQAwEAmgUAIQIAAACAAgAgDQAAjQIAIBGtAwEAlAUAIa4DAQCaBQAhwgMBAJQFACHDAwEAmgUAIcQDAQCaBQAhxQMBAJoFACHGAwEAmgUAIccDAQCUBQAhyAMIAPkFACHJAwEAmgUAIcoDAQCUBQAhywMBAJoFACHMAwEAmgUAIc0DAQCaBQAhzgMBAJoFACHPAwEAmgUAIdADAQCaBQAhAgAAAIMCACANAACPAgAgAgAAAIMCACANAACPAgAgAwAAAIACACAUAACIAgAgFQAAjQIAIAEAAACAAgAgAQAAAIMCACARBwAA9AUAIBoAAPUFACAbAAD4BQAgHAAA9wUAIB0AAPYFACCuAwAAlgUAIMMDAACWBQAgxAMAAJYFACDFAwAAlgUAIMYDAACWBQAgyQMAAJYFACDLAwAAlgUAIMwDAACWBQAgzQMAAJYFACDOAwAAlgUAIM8DAACWBQAg0AMAAJYFACAU9AIAAO0EADD1AgAAlgIAEPYCAADtBAAwrQMBALMEACGuAwEAvwQAIcIDAQCzBAAhwwMBAL8EACHEAwEAvwQAIcUDAQC_BAAhxgMBAL8EACHHAwEAswQAIcgDCADuBAAhyQMBAL8EACHKAwEAswQAIcsDAQC_BAAhzAMBAL8EACHNAwEAvwQAIc4DAQC_BAAhzwMBAL8EACHQAwEAvwQAIQMAAACDAgAgAQAAlQIAMBkAAJYCACADAAAAgwIAIAEAAIQCADACAACAAgAgDfQCAADsBAAw9QIAAJwCABD2AgAA7AQAMPsCAQC7BAAh_AIBALsEACGoAwEAAAABuwMBALsEACG8AwEAuwQAIb0DAQC7BAAhvgMBALsEACG_AwEAuwQAIcADAQC7BAAhwQMBALsEACEBAAAAmQIAIAEAAACZAgAgDfQCAADsBAAw9QIAAJwCABD2AgAA7AQAMPsCAQC7BAAh_AIBALsEACGoAwEAuwQAIbsDAQC7BAAhvAMBALsEACG9AwEAuwQAIb4DAQC7BAAhvwMBALsEACHAAwEAuwQAIcEDAQC7BAAhAAMAAACcAgAgAQAAnQIAMAIAAJkCACADAAAAnAIAIAEAAJ0CADACAACZAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAr7AgEAAAAB_AIBAAAAAagDAQAAAAG7AwEAAAABvAMBAAAAAb0DAQAAAAG-AwEAAAABvwMBAAAAAcADAQAAAAHBAwEAAAABAQ0AAKECACAK-wIBAAAAAfwCAQAAAAGoAwEAAAABuwMBAAAAAbwDAQAAAAG9AwEAAAABvgMBAAAAAb8DAQAAAAHAAwEAAAABwQMBAAAAAQENAACjAgAwAQ0AAKMCADAK-wIBAJQFACH8AgEAlAUAIagDAQCUBQAhuwMBAJQFACG8AwEAlAUAIb0DAQCUBQAhvgMBAJQFACG_AwEAlAUAIcADAQCUBQAhwQMBAJQFACECAAAAmQIAIA0AAKYCACAK-wIBAJQFACH8AgEAlAUAIagDAQCUBQAhuwMBAJQFACG8AwEAlAUAIb0DAQCUBQAhvgMBAJQFACG_AwEAlAUAIcADAQCUBQAhwQMBAJQFACECAAAAnAIAIA0AAKgCACACAAAAnAIAIA0AAKgCACADAAAAmQIAIBQAAKECACAVAACmAgAgAQAAAJkCACABAAAAnAIAIAMHAADxBQAgHAAA8wUAIB0AAPIFACAN9AIAAOsEADD1AgAArwIAEPYCAADrBAAw-wIBALMEACH8AgEAswQAIagDAQCzBAAhuwMBALMEACG8AwEAswQAIb0DAQCzBAAhvgMBALMEACG_AwEAswQAIcADAQCzBAAhwQMBALMEACEDAAAAnAIAIAEAAK4CADAZAACvAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAj0AgAA6gQAMPUCAAC1AgAQ9gIAAOoEADD8AgEAuwQAIagDAQAAAAG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACEBAAAAsgIAIAEAAACyAgAgCPQCAADqBAAw9QIAALUCABD2AgAA6gQAMPwCAQC7BAAhqAMBALsEACG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACEAAwAAALUCACABAAC2AgAwAgAAsgIAIAMAAAC1AgAgAQAAtgIAMAIAALICACADAAAAtQIAIAEAALYCADACAACyAgAgBfwCAQAAAAGoAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABAQ0AALoCACAF_AIBAAAAAagDAQAAAAG1AwEAAAABtgMBAAAAAbcDAgAAAAEBDQAAvAIAMAENAAC8AgAwBfwCAQCUBQAhqAMBAJQFACG1AwEAlAUAIbYDAQCUBQAhtwMCAOsFACECAAAAsgIAIA0AAL8CACAF_AIBAJQFACGoAwEAlAUAIbUDAQCUBQAhtgMBAJQFACG3AwIA6wUAIQIAAAC1AgAgDQAAwQIAIAIAAAC1AgAgDQAAwQIAIAMAAACyAgAgFAAAugIAIBUAAL8CACABAAAAsgIAIAEAAAC1AgAgBQcAAOwFACAaAADtBQAgGwAA8AUAIBwAAO8FACAdAADuBQAgCPQCAADpBAAw9QIAAMgCABD2AgAA6QQAMPwCAQCzBAAhqAMBALMEACG1AwEAswQAIbYDAQCzBAAhtwMCAOQEACEDAAAAtQIAIAEAAMcCADAZAADIAgAgAwAAALUCACABAAC2AgAwAgAAsgIAIAz0AgAA5wQAMPUCAADOAgAQ9gIAAOcEADD8AgEAuwQAIagDAQAAAAGzAwEAuwQAIbUDAQC7BAAhtgMBALsEACG3AwIA6AQAIbgDAQDQBAAhuQMBANAEACG6AwEAuwQAIQEAAADLAgAgAQAAAMsCACAM9AIAAOcEADD1AgAAzgIAEPYCAADnBAAw_AIBALsEACGoAwEAuwQAIbMDAQC7BAAhtQMBALsEACG2AwEAuwQAIbcDAgDoBAAhuAMBANAEACG5AwEA0AQAIboDAQC7BAAhArgDAACWBQAguQMAAJYFACADAAAAzgIAIAEAAM8CADACAADLAgAgAwAAAM4CACABAADPAgAwAgAAywIAIAMAAADOAgAgAQAAzwIAMAIAAMsCACAJ_AIBAAAAAagDAQAAAAGzAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABuAMBAAAAAbkDAQAAAAG6AwEAAAABAQ0AANMCACAJ_AIBAAAAAagDAQAAAAGzAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABuAMBAAAAAbkDAQAAAAG6AwEAAAABAQ0AANUCADABDQAA1QIAMAn8AgEAlAUAIagDAQCUBQAhswMBAJQFACG1AwEAlAUAIbYDAQCUBQAhtwMCAOsFACG4AwEAmgUAIbkDAQCaBQAhugMBAJQFACECAAAAywIAIA0AANgCACAJ_AIBAJQFACGoAwEAlAUAIbMDAQCUBQAhtQMBAJQFACG2AwEAlAUAIbcDAgDrBQAhuAMBAJoFACG5AwEAmgUAIboDAQCUBQAhAgAAAM4CACANAADaAgAgAgAAAM4CACANAADaAgAgAwAAAMsCACAUAADTAgAgFQAA2AIAIAEAAADLAgAgAQAAAM4CACAHBwAA5gUAIBoAAOcFACAbAADqBQAgHAAA6QUAIB0AAOgFACC4AwAAlgUAILkDAACWBQAgDPQCAADjBAAw9QIAAOECABD2AgAA4wQAMPwCAQCzBAAhqAMBALMEACGzAwEAswQAIbUDAQCzBAAhtgMBALMEACG3AwIA5AQAIbgDAQC_BAAhuQMBAL8EACG6AwEAswQAIQMAAADOAgAgAQAA4AIAMBkAAOECACADAAAAzgIAIAEAAM8CADACAADLAgAgCvQCAADiBAAw9QIAAOcCABD2AgAA4gQAMPsCAQC7BAAhmwMBALsEACGoAwEAuwQAIbEDAQAAAAGyAwEA0AQAIbMDAQDQBAAhtAMBALsEACEBAAAA5AIAIAEAAADkAgAgCvQCAADiBAAw9QIAAOcCABD2AgAA4gQAMPsCAQC7BAAhmwMBALsEACGoAwEAuwQAIbEDAQC7BAAhsgMBANAEACGzAwEA0AQAIbQDAQC7BAAhArIDAACWBQAgswMAAJYFACADAAAA5wIAIAEAAOgCADACAADkAgAgAwAAAOcCACABAADoAgAwAgAA5AIAIAMAAADnAgAgAQAA6AIAMAIAAOQCACAH-wIBAAAAAZsDAQAAAAGoAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtAMBAAAAAQENAADsAgAgB_sCAQAAAAGbAwEAAAABqAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDAQAAAAEBDQAA7gIAMAENAADuAgAwB_sCAQCUBQAhmwMBAJQFACGoAwEAlAUAIbEDAQCUBQAhsgMBAJoFACGzAwEAmgUAIbQDAQCUBQAhAgAAAOQCACANAADxAgAgB_sCAQCUBQAhmwMBAJQFACGoAwEAlAUAIbEDAQCUBQAhsgMBAJoFACGzAwEAmgUAIbQDAQCUBQAhAgAAAOcCACANAADzAgAgAgAAAOcCACANAADzAgAgAwAAAOQCACAUAADsAgAgFQAA8QIAIAEAAADkAgAgAQAAAOcCACAFBwAA4wUAIBwAAOUFACAdAADkBQAgsgMAAJYFACCzAwAAlgUAIAr0AgAA4QQAMPUCAAD6AgAQ9gIAAOEEADD7AgEAswQAIZsDAQCzBAAhqAMBALMEACGxAwEAswQAIbIDAQC_BAAhswMBAL8EACG0AwEAswQAIQMAAADnAgAgAQAA-QIAMBkAAPoCACADAAAA5wIAIAEAAOgCADACAADkAgAgCfQCAADfBAAw9QIAAIADABD2AgAA3wQAMPwCAQC7BAAhqAMBALsEACGtAwEAuwQAIa4DAQC7BAAhrwMBALsEACGwAwAA4AQAIAEAAAD9AgAgAQAAAP0CACAI9AIAAN8EADD1AgAAgAMAEPYCAADfBAAw_AIBALsEACGoAwEAuwQAIa0DAQC7BAAhrgMBALsEACGvAwEAuwQAIQADAAAAgAMAIAEAAIEDADACAAD9AgAgAwAAAIADACABAACBAwAwAgAA_QIAIAMAAACAAwAgAQAAgQMAMAIAAP0CACAF_AIBAAAAAagDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAEBDQAAhQMAIAX8AgEAAAABqAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQENAACHAwAwAQ0AAIcDADAF_AIBAJQFACGoAwEAlAUAIa0DAQCUBQAhrgMBAJQFACGvAwEAlAUAIQIAAAD9AgAgDQAAigMAIAX8AgEAlAUAIagDAQCUBQAhrQMBAJQFACGuAwEAlAUAIa8DAQCUBQAhAgAAAIADACANAACMAwAgAgAAAIADACANAACMAwAgAwAAAP0CACAUAACFAwAgFQAAigMAIAEAAAD9AgAgAQAAAIADACADBwAA4AUAIBwAAOIFACAdAADhBQAgCPQCAADeBAAw9QIAAJMDABD2AgAA3gQAMPwCAQCzBAAhqAMBALMEACGtAwEAswQAIa4DAQCzBAAhrwMBALMEACEDAAAAgAMAIAEAAJIDADAZAACTAwAgAwAAAIADACABAACBAwAwAgAA_QIAIAr0AgAA3QQAMPUCAACZAwAQ9gIAAN0EADCbAwEA0AQAIacDAQAAAAGoAwEAuwQAIakDAQC7BAAhqgMBANAEACGrAwEAuwQAIawDAQC7BAAhAQAAAJYDACABAAAAlgMAIAr0AgAA3QQAMPUCAACZAwAQ9gIAAN0EADCbAwEA0AQAIacDAQC7BAAhqAMBALsEACGpAwEAuwQAIaoDAQDQBAAhqwMBALsEACGsAwEAuwQAIQKbAwAAlgUAIKoDAACWBQAgAwAAAJkDACABAACaAwAwAgAAlgMAIAMAAACZAwAgAQAAmgMAMAIAAJYDACADAAAAmQMAIAEAAJoDADACAACWAwAgB5sDAQAAAAGnAwEAAAABqAMBAAAAAakDAQAAAAGqAwEAAAABqwMBAAAAAawDAQAAAAEBDQAAngMAIAebAwEAAAABpwMBAAAAAagDAQAAAAGpAwEAAAABqgMBAAAAAasDAQAAAAGsAwEAAAABAQ0AAKADADABDQAAoAMAMAebAwEAmgUAIacDAQCUBQAhqAMBAJQFACGpAwEAlAUAIaoDAQCaBQAhqwMBAJQFACGsAwEAlAUAIQIAAACWAwAgDQAAowMAIAebAwEAmgUAIacDAQCUBQAhqAMBAJQFACGpAwEAlAUAIaoDAQCaBQAhqwMBAJQFACGsAwEAlAUAIQIAAACZAwAgDQAApQMAIAIAAACZAwAgDQAApQMAIAMAAACWAwAgFAAAngMAIBUAAKMDACABAAAAlgMAIAEAAACZAwAgBQcAAN0FACAcAADfBQAgHQAA3gUAIJsDAACWBQAgqgMAAJYFACAK9AIAANwEADD1AgAArAMAEPYCAADcBAAwmwMBAL8EACGnAwEAswQAIagDAQCzBAAhqQMBALMEACGqAwEAvwQAIasDAQCzBAAhrAMBALMEACEDAAAAmQMAIAEAAKsDADAZAACsAwAgAwAAAJkDACABAACaAwAwAgAAlgMAIA-hAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIZ0DAQDQBAAhngMBAAAAAZ8DIADRBAAhoAMBANAEACGhAwEA0AQAIaIDAQC7BAAhAQAAAK8DACAVoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGKAwEAuwQAIY0DAQC7BAAhjgMBALsEACGPAwEAuwQAIZADAQDQBAAhkQMBANAEACGSAwEA0AQAIZMDAgDbBAAhlANAANYEACGVA0AA1gQAIZYDAQDQBAAhlwMBANAEACGYAwEA0AQAIZkDAQDQBAAhC6ACAADcBQAgkAMAAJYFACCRAwAAlgUAIJIDAACWBQAgkwMAAJYFACCUAwAAlgUAIJUDAACWBQAglgMAAJYFACCXAwAAlgUAIJgDAACWBQAgmQMAAJYFACAWoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACGmAwAA2QQAIAMAAACxAwAgAQAAsgMAMAIAALMDACAMoAIAANcEACD0AgAA2AQAMPUCAAC1AwAQ9gIAANgEADD3AgEAuwQAIfoCQAC8BAAh-wJAALwEACH8AkAAvAQAIYkDAQC7BAAhigMBALsEACGLAwEA0AQAIYwDAQDQBAAhA6ACAADcBQAgiwMAAJYFACCMAwAAlgUAIAygAgAA1wQAIPQCAADYBAAw9QIAALUDABD2AgAA2AQAMPcCAQAAAAH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAAAABigMBALsEACGLAwEA0AQAIYwDAQDQBAAhAwAAALUDACABAAC2AwAwAgAAtwMAIAqgAgAA1wQAIPQCAADVBAAw9QIAALkDABD2AgAA1QQAMPcCAQC7BAAh-wJAALwEACGKAwEAuwQAIZoDAQC7BAAhmwNAALwEACGcA0AA1gQAIQKgAgAA3AUAIJwDAACWBQAgCqACAADXBAAg9AIAANUEADD1AgAAuQMAEPYCAADVBAAw9wIBAAAAAfsCQAC8BAAhigMBALsEACGaAwEAAAABmwNAALwEACGcA0AA1gQAIQMAAAC5AwAgAQAAugMAMAIAALsDACABAAAAsQMAIAEAAAC1AwAgAQAAALkDACABAAAArwMAIA-hAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGdAwEA0AQAIZ4DAQDQBAAhnwMgANEEACGgAwEA0AQAIaEDAQDQBAAhogMBALsEACEHoQIAANkFACCiAgAA2gUAIKMCAADbBQAgnQMAAJYFACCeAwAAlgUAIKADAACWBQAgoQMAAJYFACADAAAAwQMAIAEAAMIDADACAACvAwAgAwAAAMEDACABAADCAwAwAgAArwMAIAMAAADBAwAgAQAAwgMAMAIAAK8DACAMoQIAANYFACCiAgAA1wUAIKMCAADYBQAg9wIBAAAAAfsCQAAAAAH8AkAAAAABnQMBAAAAAZ4DAQAAAAGfAyAAAAABoAMBAAAAAaEDAQAAAAGiAwEAAAABAQ0AAMYDACAJ9wIBAAAAAfsCQAAAAAH8AkAAAAABnQMBAAAAAZ4DAQAAAAGfAyAAAAABoAMBAAAAAaEDAQAAAAGiAwEAAAABAQ0AAMgDADABDQAAyAMAMAyhAgAArwUAIKICAACwBQAgowIAALEFACD3AgEAlAUAIfsCQACVBQAh_AJAAJUFACGdAwEAmgUAIZ4DAQCaBQAhnwMgAK4FACGgAwEAmgUAIaEDAQCaBQAhogMBAJQFACECAAAArwMAIA0AAMsDACAJ9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhnQMBAJoFACGeAwEAmgUAIZ8DIACuBQAhoAMBAJoFACGhAwEAmgUAIaIDAQCUBQAhAgAAAMEDACANAADNAwAgAgAAAMEDACANAADNAwAgAwAAAK8DACAUAADGAwAgFQAAywMAIAEAAACvAwAgAQAAAMEDACAHBwAAqwUAIBwAAK0FACAdAACsBQAgnQMAAJYFACCeAwAAlgUAIKADAACWBQAgoQMAAJYFACAM9AIAAMsEADD1AgAA1AMAEPYCAADLBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhnQMBAL8EACGeAwEAvwQAIZ8DIADMBAAhoAMBAL8EACGhAwEAvwQAIaIDAQCzBAAhAwAAAMEDACABAADTAwAwGQAA1AMAIAMAAADBAwAgAQAAwgMAMAIAAK8DACABAAAAuwMAIAEAAAC7AwAgAwAAALkDACABAAC6AwAwAgAAuwMAIAMAAAC5AwAgAQAAugMAMAIAALsDACADAAAAuQMAIAEAALoDADACAAC7AwAgB6ACAACqBQAg9wIBAAAAAfsCQAAAAAGKAwEAAAABmgMBAAAAAZsDQAAAAAGcA0AAAAABAQ0AANwDACAG9wIBAAAAAfsCQAAAAAGKAwEAAAABmgMBAAAAAZsDQAAAAAGcA0AAAAABAQ0AAN4DADABDQAA3gMAMAegAgAAqQUAIPcCAQCUBQAh-wJAAJUFACGKAwEAlAUAIZoDAQCUBQAhmwNAAJUFACGcA0AAowUAIQIAAAC7AwAgDQAA4QMAIAb3AgEAlAUAIfsCQACVBQAhigMBAJQFACGaAwEAlAUAIZsDQACVBQAhnANAAKMFACECAAAAuQMAIA0AAOMDACACAAAAuQMAIA0AAOMDACADAAAAuwMAIBQAANwDACAVAADhAwAgAQAAALsDACABAAAAuQMAIAQHAACmBQAgHAAAqAUAIB0AAKcFACCcAwAAlgUAIAn0AgAAygQAMPUCAADqAwAQ9gIAAMoEADD3AgEAswQAIfsCQAC0BAAhigMBALMEACGaAwEAswQAIZsDQAC0BAAhnANAAMUEACEDAAAAuQMAIAEAAOkDADAZAADqAwAgAwAAALkDACABAAC6AwAwAgAAuwMAIAEAAACzAwAgAQAAALMDACADAAAAsQMAIAEAALIDADACAACzAwAgAwAAALEDACABAACyAwAwAgAAswMAIAMAAACxAwAgAQAAsgMAMAIAALMDACASoAIAAKUFACD3AgEAAAAB-wJAAAAAAfwCQAAAAAGKAwEAAAABjQMBAAAAAY4DAQAAAAGPAwEAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMCAAAAAZQDQAAAAAGVA0AAAAABlgMBAAAAAZcDAQAAAAGYAwEAAAABmQMBAAAAAQENAADyAwAgEfcCAQAAAAH7AkAAAAAB_AJAAAAAAYoDAQAAAAGNAwEAAAABjgMBAAAAAY8DAQAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwIAAAABlANAAAAAAZUDQAAAAAGWAwEAAAABlwMBAAAAAZgDAQAAAAGZAwEAAAABAQ0AAPQDADABDQAA9AMAMBKgAgAApAUAIPcCAQCUBQAh-wJAAJUFACH8AkAAlQUAIYoDAQCUBQAhjQMBAJQFACGOAwEAlAUAIY8DAQCUBQAhkAMBAJoFACGRAwEAmgUAIZIDAQCaBQAhkwMCAKIFACGUA0AAowUAIZUDQACjBQAhlgMBAJoFACGXAwEAmgUAIZgDAQCaBQAhmQMBAJoFACECAAAAswMAIA0AAPcDACAR9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhigMBAJQFACGNAwEAlAUAIY4DAQCUBQAhjwMBAJQFACGQAwEAmgUAIZEDAQCaBQAhkgMBAJoFACGTAwIAogUAIZQDQACjBQAhlQNAAKMFACGWAwEAmgUAIZcDAQCaBQAhmAMBAJoFACGZAwEAmgUAIQIAAACxAwAgDQAA-QMAIAIAAACxAwAgDQAA-QMAIAMAAACzAwAgFAAA8gMAIBUAAPcDACABAAAAswMAIAEAAACxAwAgDwcAAJ0FACAaAACeBQAgGwAAoQUAIBwAAKAFACAdAACfBQAgkAMAAJYFACCRAwAAlgUAIJIDAACWBQAgkwMAAJYFACCUAwAAlgUAIJUDAACWBQAglgMAAJYFACCXAwAAlgUAIJgDAACWBQAgmQMAAJYFACAU9AIAAMMEADD1AgAAgAQAEPYCAADDBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhigMBALMEACGNAwEAswQAIY4DAQCzBAAhjwMBALMEACGQAwEAvwQAIZEDAQC_BAAhkgMBAL8EACGTAwIAxAQAIZQDQADFBAAhlQNAAMUEACGWAwEAvwQAIZcDAQC_BAAhmAMBAL8EACGZAwEAvwQAIQMAAACxAwAgAQAA_wMAMBkAAIAEACADAAAAsQMAIAEAALIDADACAACzAwAgAQAAALcDACABAAAAtwMAIAMAAAC1AwAgAQAAtgMAMAIAALcDACADAAAAtQMAIAEAALYDADACAAC3AwAgAwAAALUDACABAAC2AwAwAgAAtwMAIAmgAgAAnAUAIPcCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAGJAwEAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABAQ0AAIgEACAI9wIBAAAAAfoCQAAAAAH7AkAAAAAB_AJAAAAAAYkDAQAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAEBDQAAigQAMAENAACKBAAwCaACAACbBQAg9wIBAJQFACH6AkAAlQUAIfsCQACVBQAh_AJAAJUFACGJAwEAlAUAIYoDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQIAAAC3AwAgDQAAjQQAIAj3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhigMBAJQFACGLAwEAmgUAIYwDAQCaBQAhAgAAALUDACANAACPBAAgAgAAALUDACANAACPBAAgAwAAALcDACAUAACIBAAgFQAAjQQAIAEAAAC3AwAgAQAAALUDACAFBwAAlwUAIBwAAJkFACAdAACYBQAgiwMAAJYFACCMAwAAlgUAIAv0AgAAvgQAMPUCAACWBAAQ9gIAAL4EADD3AgEAswQAIfoCQAC0BAAh-wJAALQEACH8AkAAtAQAIYkDAQCzBAAhigMBALMEACGLAwEAvwQAIYwDAQC_BAAhAwAAALUDACABAACVBAAwGQAAlgQAIAMAAAC1AwAgAQAAtgMAMAIAALcDACAK9AIAALoEADD1AgAAnAQAEPYCAAC6BAAw9wIBAAAAAfgCAQC7BAAh-QIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGIAwAAvQQAIAEAAACZBAAgAQAAAJkEACAJ9AIAALoEADD1AgAAnAQAEPYCAAC6BAAw9wIBALsEACH4AgEAuwQAIfkCAQC7BAAh-gJAALwEACH7AkAAvAQAIfwCQAC8BAAhAAMAAACcBAAgAQAAnQQAMAIAAJkEACADAAAAnAQAIAEAAJ0EADACAACZBAAgAwAAAJwEACABAACdBAAwAgAAmQQAIAb3AgEAAAAB-AIBAAAAAfkCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAEBDQAAoQQAIAb3AgEAAAAB-AIBAAAAAfkCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAEBDQAAowQAMAENAACjBAAwBvcCAQCUBQAh-AIBAJQFACH5AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIQIAAACZBAAgDQAApgQAIAb3AgEAlAUAIfgCAQCUBQAh-QIBAJQFACH6AkAAlQUAIfsCQACVBQAh_AJAAJUFACECAAAAnAQAIA0AAKgEACACAAAAnAQAIA0AAKgEACADAAAAmQQAIBQAAKEEACAVAACmBAAgAQAAAJkEACABAAAAnAQAIAMHAACRBQAgHAAAkwUAIB0AAJIFACAJ9AIAALIEADD1AgAArwQAEPYCAACyBAAw9wIBALMEACH4AgEAswQAIfkCAQCzBAAh-gJAALQEACH7AkAAtAQAIfwCQAC0BAAhAwAAAJwEACABAACuBAAwGQAArwQAIAMAAACcBAAgAQAAnQQAMAIAAJkEACAJ9AIAALIEADD1AgAArwQAEPYCAACyBAAw9wIBALMEACH4AgEAswQAIfkCAQCzBAAh-gJAALQEACH7AkAAtAQAIfwCQAC0BAAhDgcAALYEACAcAAC5BAAgHQAAuQQAIP0CAQAAAAH-AgEAAAAE_wIBAAAABIADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAuAQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQsHAAC2BAAgHAAAtwQAIB0AALcEACD9AkAAAAAB_gJAAAAABP8CQAAAAASAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAALUEACELBwAAtgQAIBwAALcEACAdAAC3BAAg_QJAAAAAAf4CQAAAAAT_AkAAAAAEgANAAAAAAYEDQAAAAAGCA0AAAAABgwNAAAAAAYQDQAC1BAAhCP0CAgAAAAH-AgIAAAAE_wICAAAABIADAgAAAAGBAwIAAAABggMCAAAAAYMDAgAAAAGEAwIAtgQAIQj9AkAAAAAB_gJAAAAABP8CQAAAAASAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAALcEACEOBwAAtgQAIBwAALkEACAdAAC5BAAg_QIBAAAAAf4CAQAAAAT_AgEAAAAEgAMBAAAAAYEDAQAAAAGCAwEAAAABgwMBAAAAAYQDAQC4BAAhhQMBAAAAAYYDAQAAAAGHAwEAAAABC_0CAQAAAAH-AgEAAAAE_wIBAAAABIADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAuQQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQn0AgAAugQAMPUCAACcBAAQ9gIAALoEADD3AgEAuwQAIfgCAQC7BAAh-QIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACEL_QIBAAAAAf4CAQAAAAT_AgEAAAAEgAMBAAAAAYEDAQAAAAGCAwEAAAABgwMBAAAAAYQDAQC5BAAhhQMBAAAAAYYDAQAAAAGHAwEAAAABCP0CQAAAAAH-AkAAAAAE_wJAAAAABIADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAtwQAIQL4AgEAAAAB-QIBAAAAAQv0AgAAvgQAMPUCAACWBAAQ9gIAAL4EADD3AgEAswQAIfoCQAC0BAAh-wJAALQEACH8AkAAtAQAIYkDAQCzBAAhigMBALMEACGLAwEAvwQAIYwDAQC_BAAhDgcAAMEEACAcAADCBAAgHQAAwgQAIP0CAQAAAAH-AgEAAAAF_wIBAAAABYADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAwAQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQ4HAADBBAAgHAAAwgQAIB0AAMIEACD9AgEAAAAB_gIBAAAABf8CAQAAAAWAAwEAAAABgQMBAAAAAYIDAQAAAAGDAwEAAAABhAMBAMAEACGFAwEAAAABhgMBAAAAAYcDAQAAAAEI_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDBBAAhC_0CAQAAAAH-AgEAAAAF_wIBAAAABYADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAwgQAIYUDAQAAAAGGAwEAAAABhwMBAAAAART0AgAAwwQAMPUCAACABAAQ9gIAAMMEADD3AgEAswQAIfsCQAC0BAAh_AJAALQEACGKAwEAswQAIY0DAQCzBAAhjgMBALMEACGPAwEAswQAIZADAQC_BAAhkQMBAL8EACGSAwEAvwQAIZMDAgDEBAAhlANAAMUEACGVA0AAxQQAIZYDAQC_BAAhlwMBAL8EACGYAwEAvwQAIZkDAQC_BAAhDQcAAMEEACAaAADJBAAgGwAAwQQAIBwAAMEEACAdAADBBAAg_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDIBAAhCwcAAMEEACAcAADHBAAgHQAAxwQAIP0CQAAAAAH-AkAAAAAF_wJAAAAABYADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAxgQAIQsHAADBBAAgHAAAxwQAIB0AAMcEACD9AkAAAAAB_gJAAAAABf8CQAAAAAWAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAAMYEACEI_QJAAAAAAf4CQAAAAAX_AkAAAAAFgANAAAAAAYEDQAAAAAGCA0AAAAABgwNAAAAAAYQDQADHBAAhDQcAAMEEACAaAADJBAAgGwAAwQQAIBwAAMEEACAdAADBBAAg_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDIBAAhCP0CCAAAAAH-AggAAAAF_wIIAAAABYADCAAAAAGBAwgAAAABggMIAAAAAYMDCAAAAAGEAwgAyQQAIQn0AgAAygQAMPUCAADqAwAQ9gIAAMoEADD3AgEAswQAIfsCQAC0BAAhigMBALMEACGaAwEAswQAIZsDQAC0BAAhnANAAMUEACEM9AIAAMsEADD1AgAA1AMAEPYCAADLBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhnQMBAL8EACGeAwEAvwQAIZ8DIADMBAAhoAMBAL8EACGhAwEAvwQAIaIDAQCzBAAhBQcAALYEACAcAADOBAAgHQAAzgQAIP0CIAAAAAGEAyAAzQQAIQUHAAC2BAAgHAAAzgQAIB0AAM4EACD9AiAAAAABhAMgAM0EACEC_QIgAAAAAYQDIADOBAAhD6ECAADSBAAgogIAANMEACCjAgAA1AQAIPQCAADPBAAw9QIAAMEDABD2AgAAzwQAMPcCAQC7BAAh-wJAALwEACH8AkAAvAQAIZ0DAQDQBAAhngMBANAEACGfAyAA0QQAIaADAQDQBAAhoQMBANAEACGiAwEAuwQAIQv9AgEAAAAB_gIBAAAABf8CAQAAAAWAAwEAAAABgQMBAAAAAYIDAQAAAAGDAwEAAAABhAMBAMIEACGFAwEAAAABhgMBAAAAAYcDAQAAAAEC_QIgAAAAAYQDIADOBAAhA6MDAACxAwAgpAMAALEDACClAwAAsQMAIAOjAwAAtQMAIKQDAAC1AwAgpQMAALUDACADowMAALkDACCkAwAAuQMAIKUDAAC5AwAgCqACAADXBAAg9AIAANUEADD1AgAAuQMAEPYCAADVBAAw9wIBALsEACH7AkAAvAQAIYoDAQC7BAAhmgMBALsEACGbA0AAvAQAIZwDQADWBAAhCP0CQAAAAAH-AkAAAAAF_wJAAAAABYADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAxwQAIRGhAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGdAwEA0AQAIZ4DAQDQBAAhnwMgANEEACGgAwEA0AQAIaEDAQDQBAAhogMBALsEACGfBAAAwQMAIKAEAADBAwAgDKACAADXBAAg9AIAANgEADD1AgAAtQMAEPYCAADYBAAw9wIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAuwQAIYoDAQC7BAAhiwMBANAEACGMAwEA0AQAIQKOAwEAAAABjwMBAAAAARWgAgAA1wQAIPQCAADaBAAw9QIAALEDABD2AgAA2gQAMPcCAQC7BAAh-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACEI_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDBBAAhCvQCAADcBAAw9QIAAKwDABD2AgAA3AQAMJsDAQC_BAAhpwMBALMEACGoAwEAswQAIakDAQCzBAAhqgMBAL8EACGrAwEAswQAIawDAQCzBAAhCvQCAADdBAAw9QIAAJkDABD2AgAA3QQAMJsDAQDQBAAhpwMBALsEACGoAwEAuwQAIakDAQC7BAAhqgMBANAEACGrAwEAuwQAIawDAQC7BAAhCPQCAADeBAAw9QIAAJMDABD2AgAA3gQAMPwCAQCzBAAhqAMBALMEACGtAwEAswQAIa4DAQCzBAAhrwMBALMEACEI9AIAAN8EADD1AgAAgAMAEPYCAADfBAAw_AIBALsEACGoAwEAuwQAIa0DAQC7BAAhrgMBALsEACGvAwEAuwQAIQOtAwEAAAABrgMBAAAAAa8DAQAAAAEK9AIAAOEEADD1AgAA-gIAEPYCAADhBAAw-wIBALMEACGbAwEAswQAIagDAQCzBAAhsQMBALMEACGyAwEAvwQAIbMDAQC_BAAhtAMBALMEACEK9AIAAOIEADD1AgAA5wIAEPYCAADiBAAw-wIBALsEACGbAwEAuwQAIagDAQC7BAAhsQMBALsEACGyAwEA0AQAIbMDAQDQBAAhtAMBALsEACEM9AIAAOMEADD1AgAA4QIAEPYCAADjBAAw_AIBALMEACGoAwEAswQAIbMDAQCzBAAhtQMBALMEACG2AwEAswQAIbcDAgDkBAAhuAMBAL8EACG5AwEAvwQAIboDAQCzBAAhDQcAALYEACAaAADmBAAgGwAAtgQAIBwAALYEACAdAAC2BAAg_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDlBAAhDQcAALYEACAaAADmBAAgGwAAtgQAIBwAALYEACAdAAC2BAAg_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDlBAAhCP0CCAAAAAH-AggAAAAE_wIIAAAABIADCAAAAAGBAwgAAAABggMIAAAAAYMDCAAAAAGEAwgA5gQAIQz0AgAA5wQAMPUCAADOAgAQ9gIAAOcEADD8AgEAuwQAIagDAQC7BAAhswMBALsEACG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACG4AwEA0AQAIbkDAQDQBAAhugMBALsEACEI_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgC2BAAhCPQCAADpBAAw9QIAAMgCABD2AgAA6QQAMPwCAQCzBAAhqAMBALMEACG1AwEAswQAIbYDAQCzBAAhtwMCAOQEACEI9AIAAOoEADD1AgAAtQIAEPYCAADqBAAw_AIBALsEACGoAwEAuwQAIbUDAQC7BAAhtgMBALsEACG3AwIA6AQAIQ30AgAA6wQAMPUCAACvAgAQ9gIAAOsEADD7AgEAswQAIfwCAQCzBAAhqAMBALMEACG7AwEAswQAIbwDAQCzBAAhvQMBALMEACG-AwEAswQAIb8DAQCzBAAhwAMBALMEACHBAwEAswQAIQ30AgAA7AQAMPUCAACcAgAQ9gIAAOwEADD7AgEAuwQAIfwCAQC7BAAhqAMBALsEACG7AwEAuwQAIbwDAQC7BAAhvQMBALsEACG-AwEAuwQAIb8DAQC7BAAhwAMBALsEACHBAwEAuwQAIRT0AgAA7QQAMPUCAACWAgAQ9gIAAO0EADCtAwEAswQAIa4DAQC_BAAhwgMBALMEACHDAwEAvwQAIcQDAQC_BAAhxQMBAL8EACHGAwEAvwQAIccDAQCzBAAhyAMIAO4EACHJAwEAvwQAIcoDAQCzBAAhywMBAL8EACHMAwEAvwQAIc0DAQC_BAAhzgMBAL8EACHPAwEAvwQAIdADAQC_BAAhDQcAALYEACAaAADmBAAgGwAA5gQAIBwAAOYEACAdAADmBAAg_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADvBAAhDQcAALYEACAaAADmBAAgGwAA5gQAIBwAAOYEACAdAADmBAAg_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADvBAAhFPQCAADwBAAw9QIAAIMCABD2AgAA8AQAMK0DAQC7BAAhrgMBANAEACHCAwEAuwQAIcMDAQDQBAAhxAMBANAEACHFAwEA0AQAIcYDAQDQBAAhxwMBALsEACHIAwgA8QQAIckDAQDQBAAhygMBALsEACHLAwEA0AQAIcwDAQDQBAAhzQMBANAEACHOAwEA0AQAIc8DAQDQBAAh0AMBANAEACEI_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADmBAAhFfQCAADyBAAw9QIAAP0BABD2AgAA8gQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHQAwEAvwQAIdEDAQCzBAAh0gMBALMEACHTAwEAswQAIdQDAQC_BAAh1QMBAL8EACHWAwEAvwQAIdcDAQC_BAAh2AMCAMQEACHZAyAA8wQAIQUHAADBBAAgHAAA9QQAIB0AAPUEACD9AiAAAAABhAMgAPQEACEFBwAAwQQAIBwAAPUEACAdAAD1BAAg_QIgAAAAAYQDIAD0BAAhAv0CIAAAAAGEAyAA9QQAIRX0AgAA9gQAMPUCAADqAQAQ9gIAAPYEADD7AgEAuwQAIZsDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAh0AMBANAEACHRAwEAuwQAIdIDAQC7BAAh0wMBALsEACHUAwEA0AQAIdUDAQDQBAAh1gMBANAEACHXAwEA0AQAIdgDAgDbBAAh2QMgAPcEACEC_QIgAAAAAYQDIAD1BAAhGvQCAAD4BAAw9QIAAOQBABD2AgAA-AQAMPwCAQCzBAAhnQMBALMEACGpAwEAvwQAIa0DAQCzBAAhrgMBAL8EACHDAwEAswQAIcQDAQCzBAAhxQMBALMEACHGAwEAvwQAIcsDAQC_BAAhzAMBAL8EACHNAwEAvwQAIc4DAQC_BAAh0AMBAL8EACHSAwEAswQAIdoDAQCzBAAh2wMBAL8EACHcAwEAvwQAId0DAQC_BAAh3gMBAL8EACHfAwEAvwQAIeADAQC_BAAh4QMBAL8EACEa9AIAAPkEADD1AgAA0QEAEPYCAAD5BAAw_AIBALsEACGdAwEAuwQAIakDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAhywMBANAEACHMAwEA0AQAIc0DAQDQBAAhzgMBANAEACHQAwEA0AQAIdIDAQC7BAAh2gMBALsEACHbAwEA0AQAIdwDAQDQBAAh3QMBANAEACHeAwEA0AQAId8DAQDQBAAh4AMBANAEACHhAwEA0AQAIQLDAwEAAAABxAMBAAAAAQr0AgAA-wQAMPUCAADLAQAQ9gIAAPsEADD7AgEAswQAIZsDAQC_BAAhrQMBALMEACHDAwEAswQAIcUDAQCzBAAh4wMBALMEACHkAwEAvwQAIQr0AgAA_AQAMPUCAAC4AQAQ9gIAAPwEADD7AgEAuwQAIZsDAQDQBAAhrQMBALsEACHDAwEAuwQAIcUDAQC7BAAh4wMBALsEACHkAwEA0AQAIQf0AgAA_QQAMPUCAACyAQAQ9gIAAP0EADD8AgEAswQAIa0DAQCzBAAhrgMBALMEACHlAwEAswQAIQf0AgAA_gQAMPUCAACfAQAQ9gIAAP4EADD8AgEAuwQAIa0DAQC7BAAhrgMBALsEACHlAwEAuwQAIQKtAwEAAAABrgMBAAAAAQb0AgAAgAUAMPUCAACZAQAQ9gIAAIAFADD8AgEAswQAIa0DAQCzBAAh5wMgAMwEACEG9AIAAIEFADD1AgAAhgEAEPYCAACBBQAw_AIBALsEACGtAwEAuwQAIecDIADRBAAhB_QCAACCBQAw9QIAAIABABD2AgAAggUAMPwCAQCzBAAhrQMBALMEACHlAwEAswQAIegDAQC_BAAhB_QCAACDBQAw9QIAAG0AEPYCAACDBQAw_AIBALsEACGtAwEAuwQAIeUDAQC7BAAh6AMBANAEACEI9AIAAIQFADD1AgAAZwAQ9gIAAIQFADD8AgEAswQAIa0DAQCzBAAhxQMBALMEACHpAwIA5AQAIeoDAQCzBAAhCQMAAIYFACD0AgAAhQUAMPUCAAALABD2AgAAhQUAMPwCAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh6gMBALsEACEXBAAAiwUAIAUAAIwFACAGAACNBQAg9AIAAIoFADD1AgAAEAAQ9gIAAIoFADD8AgEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACGfBAAAEAAgoAQAABAAICj0AgAAhwUAMPUCAABPABD2AgAAhwUAMPwCAQCzBAAhqAMBALMEACGpAwEAswQAIa0DAQCzBAAhxQMBALMEACHGAwEAvwQAIdIDAQCzBAAh6wMBALMEACHsAwEAswQAIe0DAQC_BAAh7gMBALMEACHvAwIA5AQAIfADAQC_BAAh8QMBAL8EACHyAwEAvwQAIfMDAQC_BAAh9AMBAL8EACH1AwEAvwQAIfYDAgDkBAAh9wMBAL8EACH4AwEAvwQAIfkDAQC_BAAh-gMBAL8EACH7AwIAxAQAIfwDAgDEBAAh_QMCAMQEACH-AwEAvwQAIf8DAQC_BAAhgAQCAMQEACGBBAIAxAQAIYIEAQC_BAAhgwQBAL8EACGEBAEAvwQAIYUEAQC_BAAhhgQgAPMEACGHBCAA8wQAIYgEIADzBAAhFvQCAACIBQAw9QIAADkAEPYCAACIBQAwqQMBALMEACGtAwEAswQAIcUDAQCzBAAh7gMBALMEACHwAwEAvwQAIfkDAQC_BAAhiQQBALMEACGKBAEAswQAIYsEAQC_BAAhjAQBAL8EACGNBAEAvwQAIY4EAQC_BAAhjwQBALMEACGQBAEAswQAIZEEAQC_BAAhkgQBAL8EACGTBAEAvwQAIZQEAgDkBAAhlQQBALMEACES9AIAAIkFADD1AgAAIwAQ9gIAAIkFADD8AgEAswQAIakDAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh9AMBALMEACH1AwEAvwQAIZYEAQC_BAAhlwQBAL8EACGYBAEAvwQAIZkEAQC_BAAhmgQBAL8EACGbBAEAvwQAIZwEAQC_BAAhnQQBALMEACEVBAAAiwUAIAUAAIwFACAGAACNBQAg9AIAAIoFADD1AgAAEAAQ9gIAAIoFADD8AgEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACEDowMAAAMAIKQDAAADACClAwAAAwAgA6MDAAAHACCkAwAABwAgpQMAAAcAIAsDAACGBQAg9AIAAIUFADD1AgAACwAQ9gIAAIUFADD8AgEAuwQAIa0DAQC7BAAhxQMBALsEACHpAwIA6AQAIeoDAQC7BAAhnwQAAAsAIKAEAAALACADxQMBAAAAAesDAQAAAAHvAwIAAAABKQMAAIYFACD0AgAAjwUAMPUCAAAHABD2AgAAjwUAMPwCAQC7BAAhqAMBALsEACGpAwEAuwQAIa0DAQC7BAAhxQMBALsEACHGAwEA0AQAIdIDAQC7BAAh6wMBALsEACHsAwEAuwQAIe0DAQDQBAAh7gMBALsEACHvAwIA6AQAIfADAQDQBAAh8QMBANAEACHyAwEA0AQAIfMDAQDQBAAh9AMBANAEACH1AwEA0AQAIfYDAgDoBAAh9wMBANAEACH4AwEA0AQAIfkDAQDQBAAh-gMBANAEACH7AwIA2wQAIfwDAgDbBAAh_QMCANsEACH-AwEA0AQAIf8DAQDQBAAhgAQCANsEACGBBAIA2wQAIYIEAQDQBAAhgwQBANAEACGEBAEA0AQAIYUEAQDQBAAhhgQgAPcEACGHBCAA9wQAIYgEIAD3BAAhFwMAAIYFACD0AgAAkAUAMPUCAAADABD2AgAAkAUAMKkDAQC7BAAhrQMBALsEACHFAwEAuwQAIe4DAQC7BAAh8AMBANAEACH5AwEA0AQAIYkEAQC7BAAhigQBALsEACGLBAEA0AQAIYwEAQDQBAAhjQQBANAEACGOBAEA0AQAIY8EAQC7BAAhkAQBALsEACGRBAEA0AQAIZIEAQDQBAAhkwQBANAEACGUBAIA6AQAIZUEAQC7BAAhAAAAAaQEAQAAAAEBpARAAAAAAQAAAAABpAQBAAAAAQUUAADuBgAgFQAA8QYAIKEEAADvBgAgogQAAPAGACCnBAAArwMAIAMUAADuBgAgoQQAAO8GACCnBAAArwMAIAAAAAAABaQEAgAAAAGqBAIAAAABqwQCAAAAAawEAgAAAAGtBAIAAAABAaQEQAAAAAEFFAAA6QYAIBUAAOwGACChBAAA6gYAIKIEAADrBgAgpwQAAK8DACADFAAA6QYAIKEEAADqBgAgpwQAAK8DACAAAAAFFAAA5AYAIBUAAOcGACChBAAA5QYAIKIEAADmBgAgpwQAAK8DACADFAAA5AYAIKEEAADlBgAgpwQAAK8DACAAAAABpAQgAAAAAQsUAADKBQAwFQAAzwUAMKEEAADLBQAwogQAAMwFADCjBAAAzQUAIKQEAADOBQAwpQQAAM4FADCmBAAAzgUAMKcEAADOBQAwqAQAANAFADCpBAAA0QUAMAsUAAC-BQAwFQAAwwUAMKEEAAC_BQAwogQAAMAFADCjBAAAwQUAIKQEAADCBQAwpQQAAMIFADCmBAAAwgUAMKcEAADCBQAwqAQAAMQFADCpBAAAxQUAMAsUAACyBQAwFQAAtwUAMKEEAACzBQAwogQAALQFADCjBAAAtQUAIKQEAAC2BQAwpQQAALYFADCmBAAAtgUAMKcEAAC2BQAwqAQAALgFADCpBAAAuQUAMAX3AgEAAAAB-wJAAAAAAZoDAQAAAAGbA0AAAAABnANAAAAAAQIAAAC7AwAgFAAAvQUAIAMAAAC7AwAgFAAAvQUAIBUAALwFACABDQAA4wYAMAqgAgAA1wQAIPQCAADVBAAw9QIAALkDABD2AgAA1QQAMPcCAQAAAAH7AkAAvAQAIYoDAQC7BAAhmgMBAAAAAZsDQAC8BAAhnANAANYEACECAAAAuwMAIA0AALwFACACAAAAugUAIA0AALsFACAJ9AIAALkFADD1AgAAugUAEPYCAAC5BQAw9wIBALsEACH7AkAAvAQAIYoDAQC7BAAhmgMBALsEACGbA0AAvAQAIZwDQADWBAAhCfQCAAC5BQAw9QIAALoFABD2AgAAuQUAMPcCAQC7BAAh-wJAALwEACGKAwEAuwQAIZoDAQC7BAAhmwNAALwEACGcA0AA1gQAIQX3AgEAlAUAIfsCQACVBQAhmgMBAJQFACGbA0AAlQUAIZwDQACjBQAhBfcCAQCUBQAh-wJAAJUFACGaAwEAlAUAIZsDQACVBQAhnANAAKMFACEF9wIBAAAAAfsCQAAAAAGaAwEAAAABmwNAAAAAAZwDQAAAAAEH9wIBAAAAAfoCQAAAAAH7AkAAAAAB_AJAAAAAAYkDAQAAAAGLAwEAAAABjAMBAAAAAQIAAAC3AwAgFAAAyQUAIAMAAAC3AwAgFAAAyQUAIBUAAMgFACABDQAA4gYAMAygAgAA1wQAIPQCAADYBAAw9QIAALUDABD2AgAA2AQAMPcCAQAAAAH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAAAABigMBALsEACGLAwEA0AQAIYwDAQDQBAAhAgAAALcDACANAADIBQAgAgAAAMYFACANAADHBQAgC_QCAADFBQAw9QIAAMYFABD2AgAAxQUAMPcCAQC7BAAh-gJAALwEACH7AkAAvAQAIfwCQAC8BAAhiQMBALsEACGKAwEAuwQAIYsDAQDQBAAhjAMBANAEACEL9AIAAMUFADD1AgAAxgUAEPYCAADFBQAw9wIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAuwQAIYoDAQC7BAAhiwMBANAEACGMAwEA0AQAIQf3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQf3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQf3AgEAAAAB-gJAAAAAAfsCQAAAAAH8AkAAAAABiQMBAAAAAYsDAQAAAAGMAwEAAAABEPcCAQAAAAH7AkAAAAAB_AJAAAAAAY0DAQAAAAGOAwEAAAABjwMBAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAgAAAAGUA0AAAAABlQNAAAAAAZYDAQAAAAGXAwEAAAABmAMBAAAAAZkDAQAAAAECAAAAswMAIBQAANUFACADAAAAswMAIBQAANUFACAVAADUBQAgAQ0AAOEGADAWoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACGmAwAA2QQAIAIAAACzAwAgDQAA1AUAIAIAAADSBQAgDQAA0wUAIBT0AgAA0QUAMPUCAADSBQAQ9gIAANEFADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGKAwEAuwQAIY0DAQC7BAAhjgMBALsEACGPAwEAuwQAIZADAQDQBAAhkQMBANAEACGSAwEA0AQAIZMDAgDbBAAhlANAANYEACGVA0AA1gQAIZYDAQDQBAAhlwMBANAEACGYAwEA0AQAIZkDAQDQBAAhFPQCAADRBQAw9QIAANIFABD2AgAA0QUAMPcCAQC7BAAh-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACEQ9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhjQMBAJQFACGOAwEAlAUAIY8DAQCUBQAhkAMBAJoFACGRAwEAmgUAIZIDAQCaBQAhkwMCAKIFACGUA0AAowUAIZUDQACjBQAhlgMBAJoFACGXAwEAmgUAIZgDAQCaBQAhmQMBAJoFACEQ9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhjQMBAJQFACGOAwEAlAUAIY8DAQCUBQAhkAMBAJoFACGRAwEAmgUAIZIDAQCaBQAhkwMCAKIFACGUA0AAowUAIZUDQACjBQAhlgMBAJoFACGXAwEAmgUAIZgDAQCaBQAhmQMBAJoFACEQ9wIBAAAAAfsCQAAAAAH8AkAAAAABjQMBAAAAAY4DAQAAAAGPAwEAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMCAAAAAZQDQAAAAAGVA0AAAAABlgMBAAAAAZcDAQAAAAGYAwEAAAABmQMBAAAAAQQUAADKBQAwoQQAAMsFADCjBAAAzQUAIKcEAADOBQAwBBQAAL4FADChBAAAvwUAMKMEAADBBQAgpwQAAMIFADAEFAAAsgUAMKEEAACzBQAwowQAALUFACCnBAAAtgUAMAAAAAehAgAA2QUAIKICAADaBQAgowIAANsFACCdAwAAlgUAIJ4DAACWBQAgoAMAAJYFACChAwAAlgUAIAAAAAAAAAAAAAAAAAAABaQEAgAAAAGqBAIAAAABqwQCAAAAAawEAgAAAAGtBAIAAAABAAAAAAAAAAAAAAAAAAWkBAgAAAABqgQIAAAAAasECAAAAAGsBAgAAAABrQQIAAAAAQAAAAAAAaQEIAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAUUAADcBgAgFQAA3wYAIKEEAADdBgAgogQAAN4GACCnBAAAAQAgAxQAANwGACChBAAA3QYAIKcEAAABACALBAAAzQYAIAUAAM4GACAGAADPBgAg9QMAAJYFACCWBAAAlgUAIJcEAACWBQAgmAQAAJYFACCZBAAAlgUAIJoEAACWBQAgmwQAAJYFACCcBAAAlgUAIAAAAAAABRQAANcGACAVAADaBgAgoQQAANgGACCiBAAA2QYAIKcEAAABACADFAAA1wYAIKEEAADYBgAgpwQAAAEAIAAAAAAABRQAANIGACAVAADVBgAgoQQAANMGACCiBAAA1AYAIKcEAAABACADFAAA0gYAIKEEAADTBgAgpwQAAAEAIAAAAAAACxQAAL4GADAVAADDBgAwoQQAAL8GADCiBAAAwAYAMKMEAADBBgAgpAQAAMIGADClBAAAwgYAMKYEAADCBgAwpwQAAMIGADCoBAAAxAYAMKkEAADFBgAwCxQAALIGADAVAAC3BgAwoQQAALMGADCiBAAAtAYAMKMEAAC1BgAgpAQAALYGADClBAAAtgYAMKYEAAC2BgAwpwQAALYGADCoBAAAuAYAMKkEAAC5BgAwBxQAAK0GACAVAACwBgAgoQQAAK4GACCiBAAArwYAIKUEAAALACCmBAAACwAgpwQAAFIAIAT8AgEAAAABrQMBAAAAAekDAgAAAAHqAwEAAAABAgAAAFIAIBQAAK0GACADAAAACwAgFAAArQYAIBUAALEGACAGAAAACwAgDQAAsQYAIPwCAQCUBQAhrQMBAJQFACHpAwIA6wUAIeoDAQCUBQAhBPwCAQCUBQAhrQMBAJQFACHpAwIA6wUAIeoDAQCUBQAhJPwCAQAAAAGoAwEAAAABqQMBAAAAAa0DAQAAAAHGAwEAAAAB0gMBAAAAAesDAQAAAAHsAwEAAAAB7QMBAAAAAe4DAQAAAAHvAwIAAAAB8AMBAAAAAfEDAQAAAAHyAwEAAAAB8wMBAAAAAfQDAQAAAAH1AwEAAAAB9gMCAAAAAfcDAQAAAAH4AwEAAAAB-QMBAAAAAfoDAQAAAAH7AwIAAAAB_AMCAAAAAf0DAgAAAAH-AwEAAAAB_wMBAAAAAYAEAgAAAAGBBAIAAAABggQBAAAAAYMEAQAAAAGEBAEAAAABhQQBAAAAAYYEIAAAAAGHBCAAAAABiAQgAAAAAQIAAAAJACAUAAC9BgAgAwAAAAkAIBQAAL0GACAVAAC8BgAgAQ0AANEGADAqAwAAhgUAIPQCAACPBQAw9QIAAAcAEPYCAACPBQAw_AIBALsEACGoAwEAAAABqQMBALsEACGtAwEAuwQAIcUDAQC7BAAhxgMBANAEACHSAwEAuwQAIesDAQC7BAAh7AMBALsEACHtAwEA0AQAIe4DAQC7BAAh7wMCAOgEACHwAwEA0AQAIfEDAQDQBAAh8gMBANAEACHzAwEA0AQAIfQDAQDQBAAh9QMBANAEACH2AwIA6AQAIfcDAQDQBAAh-AMBANAEACH5AwEA0AQAIfoDAQDQBAAh-wMCANsEACH8AwIA2wQAIf0DAgDbBAAh_gMBANAEACH_AwEA0AQAIYAEAgDbBAAhgQQCANsEACGCBAEA0AQAIYMEAQDQBAAhhAQBANAEACGFBAEA0AQAIYYEIAD3BAAhhwQgAPcEACGIBCAA9wQAIZ4EAACOBQAgAgAAAAkAIA0AALwGACACAAAAugYAIA0AALsGACAo9AIAALkGADD1AgAAugYAEPYCAAC5BgAw_AIBALsEACGoAwEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIcYDAQDQBAAh0gMBALsEACHrAwEAuwQAIewDAQC7BAAh7QMBANAEACHuAwEAuwQAIe8DAgDoBAAh8AMBANAEACHxAwEA0AQAIfIDAQDQBAAh8wMBANAEACH0AwEA0AQAIfUDAQDQBAAh9gMCAOgEACH3AwEA0AQAIfgDAQDQBAAh-QMBANAEACH6AwEA0AQAIfsDAgDbBAAh_AMCANsEACH9AwIA2wQAIf4DAQDQBAAh_wMBANAEACGABAIA2wQAIYEEAgDbBAAhggQBANAEACGDBAEA0AQAIYQEAQDQBAAhhQQBANAEACGGBCAA9wQAIYcEIAD3BAAhiAQgAPcEACEo9AIAALkGADD1AgAAugYAEPYCAAC5BgAw_AIBALsEACGoAwEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIcYDAQDQBAAh0gMBALsEACHrAwEAuwQAIewDAQC7BAAh7QMBANAEACHuAwEAuwQAIe8DAgDoBAAh8AMBANAEACHxAwEA0AQAIfIDAQDQBAAh8wMBANAEACH0AwEA0AQAIfUDAQDQBAAh9gMCAOgEACH3AwEA0AQAIfgDAQDQBAAh-QMBANAEACH6AwEA0AQAIfsDAgDbBAAh_AMCANsEACH9AwIA2wQAIf4DAQDQBAAh_wMBANAEACGABAIA2wQAIYEEAgDbBAAhggQBANAEACGDBAEA0AQAIYQEAQDQBAAhhQQBANAEACGGBCAA9wQAIYcEIAD3BAAhiAQgAPcEACEk_AIBAJQFACGoAwEAlAUAIakDAQCUBQAhrQMBAJQFACHGAwEAmgUAIdIDAQCUBQAh6wMBAJQFACHsAwEAlAUAIe0DAQCaBQAh7gMBAJQFACHvAwIA6wUAIfADAQCaBQAh8QMBAJoFACHyAwEAmgUAIfMDAQCaBQAh9AMBAJoFACH1AwEAmgUAIfYDAgDrBQAh9wMBAJoFACH4AwEAmgUAIfkDAQCaBQAh-gMBAJoFACH7AwIAogUAIfwDAgCiBQAh_QMCAKIFACH-AwEAmgUAIf8DAQCaBQAhgAQCAKIFACGBBAIAogUAIYIEAQCaBQAhgwQBAJoFACGEBAEAmgUAIYUEAQCaBQAhhgQgAP8FACGHBCAA_wUAIYgEIAD_BQAhJPwCAQCUBQAhqAMBAJQFACGpAwEAlAUAIa0DAQCUBQAhxgMBAJoFACHSAwEAlAUAIesDAQCUBQAh7AMBAJQFACHtAwEAmgUAIe4DAQCUBQAh7wMCAOsFACHwAwEAmgUAIfEDAQCaBQAh8gMBAJoFACHzAwEAmgUAIfQDAQCaBQAh9QMBAJoFACH2AwIA6wUAIfcDAQCaBQAh-AMBAJoFACH5AwEAmgUAIfoDAQCaBQAh-wMCAKIFACH8AwIAogUAIf0DAgCiBQAh_gMBAJoFACH_AwEAmgUAIYAEAgCiBQAhgQQCAKIFACGCBAEAmgUAIYMEAQCaBQAhhAQBAJoFACGFBAEAmgUAIYYEIAD_BQAhhwQgAP8FACGIBCAA_wUAIST8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxgMBAAAAAdIDAQAAAAHrAwEAAAAB7AMBAAAAAe0DAQAAAAHuAwEAAAAB7wMCAAAAAfADAQAAAAHxAwEAAAAB8gMBAAAAAfMDAQAAAAH0AwEAAAAB9QMBAAAAAfYDAgAAAAH3AwEAAAAB-AMBAAAAAfkDAQAAAAH6AwEAAAAB-wMCAAAAAfwDAgAAAAH9AwIAAAAB_gMBAAAAAf8DAQAAAAGABAIAAAABgQQCAAAAAYIEAQAAAAGDBAEAAAABhAQBAAAAAYUEAQAAAAGGBCAAAAABhwQgAAAAAYgEIAAAAAESqQMBAAAAAa0DAQAAAAHuAwEAAAAB8AMBAAAAAfkDAQAAAAGJBAEAAAABigQBAAAAAYsEAQAAAAGMBAEAAAABjQQBAAAAAY4EAQAAAAGPBAEAAAABkAQBAAAAAZEEAQAAAAGSBAEAAAABkwQBAAAAAZQEAgAAAAGVBAEAAAABAgAAAAUAIBQAAMkGACADAAAABQAgFAAAyQYAIBUAAMgGACABDQAA0AYAMBcDAACGBQAg9AIAAJAFADD1AgAAAwAQ9gIAAJAFADCpAwEAuwQAIa0DAQC7BAAhxQMBALsEACHuAwEAuwQAIfADAQDQBAAh-QMBANAEACGJBAEAAAABigQBALsEACGLBAEA0AQAIYwEAQDQBAAhjQQBANAEACGOBAEA0AQAIY8EAQC7BAAhkAQBALsEACGRBAEA0AQAIZIEAQDQBAAhkwQBANAEACGUBAIA6AQAIZUEAQC7BAAhAgAAAAUAIA0AAMgGACACAAAAxgYAIA0AAMcGACAW9AIAAMUGADD1AgAAxgYAEPYCAADFBgAwqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh7gMBALsEACHwAwEA0AQAIfkDAQDQBAAhiQQBALsEACGKBAEAuwQAIYsEAQDQBAAhjAQBANAEACGNBAEA0AQAIY4EAQDQBAAhjwQBALsEACGQBAEAuwQAIZEEAQDQBAAhkgQBANAEACGTBAEA0AQAIZQEAgDoBAAhlQQBALsEACEW9AIAAMUGADD1AgAAxgYAEPYCAADFBgAwqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh7gMBALsEACHwAwEA0AQAIfkDAQDQBAAhiQQBALsEACGKBAEAuwQAIYsEAQDQBAAhjAQBANAEACGNBAEA0AQAIY4EAQDQBAAhjwQBALsEACGQBAEAuwQAIZEEAQDQBAAhkgQBANAEACGTBAEA0AQAIZQEAgDoBAAhlQQBALsEACESqQMBAJQFACGtAwEAlAUAIe4DAQCUBQAh8AMBAJoFACH5AwEAmgUAIYkEAQCUBQAhigQBAJQFACGLBAEAmgUAIYwEAQCaBQAhjQQBAJoFACGOBAEAmgUAIY8EAQCUBQAhkAQBAJQFACGRBAEAmgUAIZIEAQCaBQAhkwQBAJoFACGUBAIA6wUAIZUEAQCUBQAhEqkDAQCUBQAhrQMBAJQFACHuAwEAlAUAIfADAQCaBQAh-QMBAJoFACGJBAEAlAUAIYoEAQCUBQAhiwQBAJoFACGMBAEAmgUAIY0EAQCaBQAhjgQBAJoFACGPBAEAlAUAIZAEAQCUBQAhkQQBAJoFACGSBAEAmgUAIZMEAQCaBQAhlAQCAOsFACGVBAEAlAUAIRKpAwEAAAABrQMBAAAAAe4DAQAAAAHwAwEAAAAB-QMBAAAAAYkEAQAAAAGKBAEAAAABiwQBAAAAAYwEAQAAAAGNBAEAAAABjgQBAAAAAY8EAQAAAAGQBAEAAAABkQQBAAAAAZIEAQAAAAGTBAEAAAABlAQCAAAAAZUEAQAAAAEEFAAAvgYAMKEEAAC_BgAwowQAAMEGACCnBAAAwgYAMAQUAACyBgAwoQQAALMGADCjBAAAtQYAIKcEAAC2BgAwAxQAAK0GACChBAAArgYAIKcEAABSACAAAAEDAACWBgAgEqkDAQAAAAGtAwEAAAAB7gMBAAAAAfADAQAAAAH5AwEAAAABiQQBAAAAAYoEAQAAAAGLBAEAAAABjAQBAAAAAY0EAQAAAAGOBAEAAAABjwQBAAAAAZAEAQAAAAGRBAEAAAABkgQBAAAAAZMEAQAAAAGUBAIAAAABlQQBAAAAAST8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxgMBAAAAAdIDAQAAAAHrAwEAAAAB7AMBAAAAAe0DAQAAAAHuAwEAAAAB7wMCAAAAAfADAQAAAAHxAwEAAAAB8gMBAAAAAfMDAQAAAAH0AwEAAAAB9QMBAAAAAfYDAgAAAAH3AwEAAAAB-AMBAAAAAfkDAQAAAAH6AwEAAAAB-wMCAAAAAfwDAgAAAAH9AwIAAAAB_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_HABAHQBBAAAAAwcARxwASB0ASQAAAAMHAEccAEgdAEkAAAADBwBPHABQHQBRAAAAAwcATxwAUB0AUQAAAAUHAFcaAFgbAFkcAFodAFsAAAAAAAUHAFcaAFgbAFkcAFodAFsAAAAFBwBhGgBiGwBjHABkHQBlAAAAAAAFBwBhGgBiGwBjHABkHQBlAAAAAwcAaxwAbB0AbQAAAAMHAGscAGwdAG0AAAAFBwBzGgB0GwB1HAB2HQB3AAAAAAAFBwBzGgB0GwB1HAB2HQB3AAAABQcAfRoAfhsAfxwAgAEdAIEBAAAAAAAFBwB9GgB-GwB_HACAAR0AgQEAAAADBwCHARwAiAEdAIkBAAAAAwcAhwEcAIgBHQCJAQAAAAMHAI8BHACQAR0AkQEAAAADBwCPARwAkAEdAJEBAAAAAwcAlwEcAJgBHQCZAQAAAAMHAJcBHACYAR0AmQEEBwCfAaECtAOcAaICuAOdAaMCvAOeAQGgAgCbAQGgAgCbAQGgAgCbAQOhAr0DAKICvgMAowK_AwAAAAMHAKMBHACkAR0ApQEAAAADBwCjARwApAEdAKUBAaACAJsBAaACAJsBAwcAqgEcAKsBHQCsAQAAAAMHAKoBHACrAR0ArAEBoAIAmwEBoAIAmwEFBwCxARoAsgEbALMBHAC0AR0AtQEAAAAAAAUHALEBGgCyARsAswEcALQBHQC1AQGgAgCbAQGgAgCbAQMHALoBHAC7AR0AvAEAAAADBwC6ARwAuwEdALwBAAAAAwcAwgEcAMMBHQDEAQAAAAMHAMIBHADDAR0AxAEIAgEJDwEKEgELEwEMFAEOFgEPGAYQGQcRGwESHQYTHggWHwEXIAEYIQYeJAkfJQ8gJgIhJwIiKAIjKQIkKgIlLAImLgYnLxAoMQIpMwYqNBErNQIsNgItNwYuOhIvOxgwPAMxPQMyPgMzPwM0QAM1QgM2RAY3RRk4RwM5SQY6Sho7SwM8TAM9TQY-UBs_USFAUwRBVARCVgRDVwREWARFWgRGXAZHXSJIXwRJYQZKYiNLYwRMZARNZQZOaCRPaSpQaytRbCtSbytTcCtUcStVcytWdQZXdixYeCtZegZaey1bfCtcfStdfgZegQEuX4IBMmCEATNhhQEzYogBM2OJATNkigEzZYwBM2aOAQZnjwE0aJEBM2mTAQZqlAE1a5UBM2yWATNtlwEGbpoBNm-bATpwnQE7cZ4BO3KhATtzogE7dKMBO3WlATt2pwEGd6gBPHiqATt5rAEGeq0BPXuuATt8rwE7fbABBn6zAT5_tAFCgAG2AUOBAbcBQ4IBugFDgwG7AUOEAbwBQ4UBvgFDhgHAAQaHAcEBRIgBwwFDiQHFAQaKAcYBRYsBxwFDjAHIAUONAckBBo4BzAFGjwHNAUqQAc8BS5EB0AFLkgHTAUuTAdQBS5QB1QFLlQHXAUuWAdkBBpcB2gFMmAHcAUuZAd4BBpoB3wFNmwHgAUucAeEBS50B4gEGngHlAU6fAeYBUqAB6AFToQHpAVOiAewBU6MB7QFTpAHuAVOlAfABU6YB8gEGpwHzAVSoAfUBU6kB9wEGqgH4AVWrAfkBU6wB-gFTrQH7AQauAf4BVq8B_wFcsAGBAl2xAYICXbIBhQJdswGGAl20AYcCXbUBiQJdtgGLAga3AYwCXrgBjgJduQGQAga6AZECX7sBkgJdvAGTAl29AZQCBr4BlwJgvwGYAmbAAZoCZ8EBmwJnwgGeAmfDAZ8CZ8QBoAJnxQGiAmfGAaQCBscBpQJoyAGnAmfJAakCBsoBqgJpywGrAmfMAawCZ80BrQIGzgGwAmrPAbECbtABswJv0QG0Am_SAbcCb9MBuAJv1AG5Am_VAbsCb9YBvQIG1wG-AnDYAcACb9kBwgIG2gHDAnHbAcQCb9wBxQJv3QHGAgbeAckCct8BygJ44AHMAnnhAc0CeeIB0AJ54wHRAnnkAdICeeUB1AJ55gHWAgbnAdcCeugB2QJ56QHbAgbqAdwCe-sB3QJ57AHeAnntAd8CBu4B4gJ87wHjAoIB8AHlAoMB8QHmAoMB8gHpAoMB8wHqAoMB9AHrAoMB9QHtAoMB9gHvAgb3AfAChAH4AfICgwH5AfQCBvoB9QKFAfsB9gKDAfwB9wKDAf0B-AIG_gH7AoYB_wH8AooBgAL-AosBgQL_AosBggKCA4sBgwKDA4sBhAKEA4sBhQKGA4sBhgKIAwaHAokDjAGIAosDiwGJAo0DBooCjgONAYsCjwOLAYwCkAOLAY0CkQMGjgKUA44BjwKVA5IBkAKXA5MBkQKYA5MBkgKbA5MBkwKcA5MBlAKdA5MBlQKfA5MBlgKhAwaXAqIDlAGYAqQDkwGZAqYDBpoCpwOVAZsCqAOTAZwCqQOTAZ0CqgMGngKtA5YBnwKuA5oBpAKwA5sBpQLAA5sBpgLDA5sBpwLEA5sBqALFA5sBqQLHA5sBqgLJAwarAsoDoAGsAswDmwGtAs4DBq4CzwOhAa8C0AObAbAC0QObAbEC0gMGsgLVA6IBswLWA6YBtALXA54BtQLYA54BtgLZA54BtwLaA54BuALbA54BuQLdA54BugLfAwa7AuADpwG8AuIDngG9AuQDBr4C5QOoAb8C5gOeAcAC5wOeAcEC6AMGwgLrA6kBwwLsA60BxALtA5wBxQLuA5wBxgLvA5wBxwLwA5wByALxA5wByQLzA5wBygL1AwbLAvYDrgHMAvgDnAHNAvoDBs4C-wOvAc8C_AOcAdAC_QOcAdEC_gMG0gKBBLAB0wKCBLYB1AKDBJ0B1QKEBJ0B1gKFBJ0B1wKGBJ0B2AKHBJ0B2QKJBJ0B2gKLBAbbAowEtwHcAo4EnQHdApAEBt4CkQS4Ad8CkgSdAeACkwSdAeEClAQG4gKXBLkB4wKYBL0B5AKaBL4B5QKbBL4B5gKeBL4B5wKfBL4B6AKgBL4B6QKiBL4B6gKkBAbrAqUEvwHsAqcEvgHtAqkEBu4CqgTAAe8CqwS-AfACrAS-AfECrQQG8gKwBMEB8wKxBMUB"
13764
15601
  };
13765
15602
  config.compilerWasm = {
13766
15603
  getRuntime: async () => require_query_compiler_fast_bg(),
@@ -13849,6 +15686,403 @@ PrismaTriggerSetupStateRepository = __decorate([
13849
15686
  __decorateMetadata("design:paramtypes", [Object])
13850
15687
  ], PrismaTriggerSetupStateRepository);
13851
15688
 
15689
+ //#endregion
15690
+ //#region src/infrastructure/persistence/PrismaRunTraceContextRepository.ts
15691
+ var _ref$7;
15692
+ let PrismaRunTraceContextRepository = class PrismaRunTraceContextRepository$1 {
15693
+ constructor(prisma, otelIdentityFactory) {
15694
+ this.prisma = prisma;
15695
+ this.otelIdentityFactory = otelIdentityFactory;
15696
+ }
15697
+ async load(runId) {
15698
+ const row = await this.prisma.runTraceContext.findUnique({ where: { runId: decodeURIComponent(runId) } });
15699
+ if (!row) return;
15700
+ return {
15701
+ runId: row.runId,
15702
+ workflowId: row.workflowId,
15703
+ traceId: row.traceId,
15704
+ rootSpanId: row.rootSpanId,
15705
+ serviceName: row.serviceName ?? void 0,
15706
+ createdAt: row.createdAt,
15707
+ expiresAt: row.expiresAt ?? void 0
15708
+ };
15709
+ }
15710
+ async getOrCreate(args) {
15711
+ const existing = await this.load(args.runId);
15712
+ if (existing) return existing;
15713
+ const created = {
15714
+ runId: decodeURIComponent(args.runId),
15715
+ workflowId: decodeURIComponent(args.workflowId),
15716
+ traceId: this.otelIdentityFactory.createTraceId(args.runId),
15717
+ rootSpanId: this.otelIdentityFactory.createRootSpanId(args.runId),
15718
+ serviceName: args.serviceName,
15719
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
15720
+ };
15721
+ await this.prisma.runTraceContext.create({ data: {
15722
+ runId: created.runId,
15723
+ workflowId: created.workflowId,
15724
+ traceId: created.traceId,
15725
+ rootSpanId: created.rootSpanId,
15726
+ serviceName: created.serviceName ?? null,
15727
+ createdAt: created.createdAt,
15728
+ expiresAt: null
15729
+ } });
15730
+ return created;
15731
+ }
15732
+ async upsertExpiry(args) {
15733
+ if (!args.expiresAt) return;
15734
+ const runId = decodeURIComponent(args.runId);
15735
+ const existing = await this.prisma.runTraceContext.findUnique({
15736
+ where: { runId },
15737
+ select: { expiresAt: true }
15738
+ });
15739
+ if (!existing) return;
15740
+ const expiresAt = this.resolveLaterExpiry(existing.expiresAt ?? void 0, args.expiresAt);
15741
+ await this.prisma.runTraceContext.update({
15742
+ where: { runId },
15743
+ data: { expiresAt: expiresAt ?? null }
15744
+ });
15745
+ }
15746
+ resolveLaterExpiry(current, candidate) {
15747
+ if (!current) return candidate;
15748
+ if (!candidate) return current;
15749
+ return current >= candidate ? current : candidate;
15750
+ }
15751
+ };
15752
+ PrismaRunTraceContextRepository = __decorate([
15753
+ injectable(),
15754
+ __decorateParam(0, inject(PrismaDatabaseClientToken)),
15755
+ __decorateParam(1, inject(OtelIdentityFactory)),
15756
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$7 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$7 : Object])
15757
+ ], PrismaRunTraceContextRepository);
15758
+
15759
+ //#endregion
15760
+ //#region src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts
15761
+ var _ref$6;
15762
+ let PrismaTelemetryArtifactStore = class PrismaTelemetryArtifactStore$1 {
15763
+ constructor(prisma, otelIdentityFactory) {
15764
+ this.prisma = prisma;
15765
+ this.otelIdentityFactory = otelIdentityFactory;
15766
+ }
15767
+ async save(record) {
15768
+ const artifactId = this.otelIdentityFactory.createArtifactId();
15769
+ const createdAt = (/* @__PURE__ */ new Date()).toISOString();
15770
+ await this.prisma.telemetryArtifact.create({ data: {
15771
+ artifactId,
15772
+ traceId: record.traceId,
15773
+ spanId: record.spanId,
15774
+ runId: record.runId,
15775
+ workflowId: record.workflowId,
15776
+ nodeId: record.nodeId ?? null,
15777
+ activationId: record.activationId ?? null,
15778
+ kind: record.kind,
15779
+ contentType: record.contentType,
15780
+ previewText: record.previewText ?? null,
15781
+ previewJson: record.previewJson !== void 0 ? JSON.stringify(record.previewJson) : null,
15782
+ payloadText: record.payloadText ?? null,
15783
+ payloadJson: record.payloadJson !== void 0 ? JSON.stringify(record.payloadJson) : null,
15784
+ bytes: record.bytes ?? null,
15785
+ truncated: record.truncated ?? null,
15786
+ createdAt,
15787
+ expiresAt: record.expiresAt?.toISOString() ?? null,
15788
+ retentionExpiresAt: record.retentionExpiresAt ?? null
15789
+ } });
15790
+ return {
15791
+ artifactId,
15792
+ traceId: record.traceId,
15793
+ spanId: record.spanId,
15794
+ runId: record.runId,
15795
+ workflowId: record.workflowId,
15796
+ nodeId: record.nodeId,
15797
+ activationId: record.activationId,
15798
+ kind: record.kind,
15799
+ contentType: record.contentType,
15800
+ previewText: record.previewText,
15801
+ previewJson: record.previewJson,
15802
+ payloadText: record.payloadText,
15803
+ payloadJson: record.payloadJson,
15804
+ bytes: record.bytes,
15805
+ truncated: record.truncated,
15806
+ createdAt,
15807
+ expiresAt: record.expiresAt?.toISOString(),
15808
+ retentionExpiresAt: record.retentionExpiresAt
15809
+ };
15810
+ }
15811
+ async listByTraceId(traceId) {
15812
+ return (await this.prisma.telemetryArtifact.findMany({
15813
+ where: { traceId },
15814
+ orderBy: [{ createdAt: "asc" }, { artifactId: "asc" }]
15815
+ })).map((row) => ({
15816
+ artifactId: row.artifactId,
15817
+ traceId: row.traceId,
15818
+ spanId: row.spanId,
15819
+ runId: row.runId,
15820
+ workflowId: row.workflowId,
15821
+ nodeId: row.nodeId ?? void 0,
15822
+ activationId: row.activationId ?? void 0,
15823
+ kind: row.kind,
15824
+ contentType: row.contentType,
15825
+ previewText: row.previewText ?? void 0,
15826
+ previewJson: this.parseJson(row.previewJson),
15827
+ payloadText: row.payloadText ?? void 0,
15828
+ payloadJson: this.parseJson(row.payloadJson),
15829
+ bytes: row.bytes ?? void 0,
15830
+ truncated: row.truncated ?? void 0,
15831
+ createdAt: row.createdAt,
15832
+ expiresAt: row.expiresAt ?? void 0,
15833
+ retentionExpiresAt: row.retentionExpiresAt ?? void 0
15834
+ }));
15835
+ }
15836
+ async pruneExpired(args) {
15837
+ const rows = await this.prisma.telemetryArtifact.findMany({
15838
+ where: { retentionExpiresAt: { lte: args.nowIso } },
15839
+ select: { artifactId: true },
15840
+ orderBy: [{ retentionExpiresAt: "asc" }, { artifactId: "asc" }],
15841
+ ...args.limit ? { take: args.limit } : {}
15842
+ });
15843
+ if (rows.length === 0) return 0;
15844
+ return (await this.prisma.telemetryArtifact.deleteMany({ where: { artifactId: { in: rows.map((row) => row.artifactId) } } })).count;
15845
+ }
15846
+ parseJson(value) {
15847
+ if (!value) return;
15848
+ return JSON.parse(value);
15849
+ }
15850
+ };
15851
+ PrismaTelemetryArtifactStore = __decorate([
15852
+ injectable(),
15853
+ __decorateParam(0, inject(PrismaDatabaseClientToken)),
15854
+ __decorateParam(1, inject(OtelIdentityFactory)),
15855
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$6 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$6 : Object])
15856
+ ], PrismaTelemetryArtifactStore);
15857
+
15858
+ //#endregion
15859
+ //#region src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts
15860
+ var _ref$5;
15861
+ let PrismaTelemetryMetricPointStore = class PrismaTelemetryMetricPointStore$1 {
15862
+ constructor(prisma, otelIdentityFactory) {
15863
+ this.prisma = prisma;
15864
+ this.otelIdentityFactory = otelIdentityFactory;
15865
+ }
15866
+ async save(record) {
15867
+ const metricPointId = this.otelIdentityFactory.createArtifactId();
15868
+ await this.prisma.telemetryMetricPoint.create({ data: {
15869
+ metricPointId,
15870
+ traceId: record.traceId ?? null,
15871
+ spanId: record.spanId ?? null,
15872
+ runId: record.runId ?? null,
15873
+ workflowId: record.workflowId,
15874
+ nodeId: record.nodeId ?? null,
15875
+ activationId: record.activationId ?? null,
15876
+ metricName: record.name,
15877
+ value: record.value,
15878
+ unit: record.unit ?? null,
15879
+ observedAt: record.observedAt,
15880
+ workflowFolder: record.workflowFolder ?? null,
15881
+ nodeType: record.nodeType ?? null,
15882
+ nodeRole: record.nodeRole ?? null,
15883
+ modelName: record.modelName ?? null,
15884
+ dimensionsJson: record.attributes ? JSON.stringify(record.attributes) : null,
15885
+ retentionExpiresAt: record.retentionExpiresAt ?? null
15886
+ } });
15887
+ return {
15888
+ metricPointId,
15889
+ traceId: record.traceId,
15890
+ spanId: record.spanId,
15891
+ runId: record.runId,
15892
+ workflowId: record.workflowId,
15893
+ nodeId: record.nodeId,
15894
+ activationId: record.activationId,
15895
+ metricName: record.name,
15896
+ value: record.value,
15897
+ unit: record.unit,
15898
+ observedAt: record.observedAt,
15899
+ workflowFolder: record.workflowFolder,
15900
+ nodeType: record.nodeType,
15901
+ nodeRole: record.nodeRole,
15902
+ modelName: record.modelName,
15903
+ dimensions: record.attributes,
15904
+ retentionExpiresAt: record.retentionExpiresAt
15905
+ };
15906
+ }
15907
+ async list(args = {}) {
15908
+ return (await this.prisma.telemetryMetricPoint.findMany({
15909
+ where: {
15910
+ ...args.traceId ? { traceId: args.traceId } : {},
15911
+ ...args.runId ? { runId: args.runId } : {},
15912
+ ...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
15913
+ ...args.workflowId ? { workflowId: args.workflowId } : {},
15914
+ ...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
15915
+ ...args.nodeId ? { nodeId: args.nodeId } : {},
15916
+ ...args.metricNames && args.metricNames.length > 0 ? { metricName: { in: [...args.metricNames] } } : {},
15917
+ ...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
15918
+ ...args.observedAtGte ? { observedAt: { gte: args.observedAtGte } } : {},
15919
+ ...args.observedAtLte ? { observedAt: { lte: args.observedAtLte } } : {}
15920
+ },
15921
+ orderBy: [{ observedAt: "asc" }, { metricPointId: "asc" }],
15922
+ ...args.limit ? { take: args.limit } : {}
15923
+ })).map((row) => ({
15924
+ metricPointId: row.metricPointId,
15925
+ traceId: row.traceId ?? void 0,
15926
+ spanId: row.spanId ?? void 0,
15927
+ runId: row.runId ?? void 0,
15928
+ workflowId: row.workflowId,
15929
+ nodeId: row.nodeId ?? void 0,
15930
+ activationId: row.activationId ?? void 0,
15931
+ metricName: row.metricName,
15932
+ value: row.value,
15933
+ unit: row.unit ?? void 0,
15934
+ observedAt: row.observedAt,
15935
+ workflowFolder: row.workflowFolder ?? void 0,
15936
+ nodeType: row.nodeType ?? void 0,
15937
+ nodeRole: row.nodeRole ?? void 0,
15938
+ modelName: row.modelName ?? void 0,
15939
+ dimensions: this.parseJson(row.dimensionsJson),
15940
+ retentionExpiresAt: row.retentionExpiresAt ?? void 0
15941
+ }));
15942
+ }
15943
+ async pruneExpired(args) {
15944
+ const rows = await this.prisma.telemetryMetricPoint.findMany({
15945
+ where: { retentionExpiresAt: { lte: args.nowIso } },
15946
+ select: { metricPointId: true },
15947
+ orderBy: [{ retentionExpiresAt: "asc" }, { metricPointId: "asc" }],
15948
+ ...args.limit ? { take: args.limit } : {}
15949
+ });
15950
+ if (rows.length === 0) return 0;
15951
+ return (await this.prisma.telemetryMetricPoint.deleteMany({ where: { metricPointId: { in: rows.map((row) => row.metricPointId) } } })).count;
15952
+ }
15953
+ parseJson(value) {
15954
+ if (!value) return;
15955
+ return JSON.parse(value);
15956
+ }
15957
+ };
15958
+ PrismaTelemetryMetricPointStore = __decorate([
15959
+ injectable(),
15960
+ __decorateParam(0, inject(PrismaDatabaseClientToken)),
15961
+ __decorateParam(1, inject(OtelIdentityFactory)),
15962
+ __decorateMetadata("design:paramtypes", [Object, typeof (_ref$5 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$5 : Object])
15963
+ ], PrismaTelemetryMetricPointStore);
15964
+
15965
+ //#endregion
15966
+ //#region src/infrastructure/persistence/PrismaTelemetrySpanStore.ts
15967
+ let PrismaTelemetrySpanStore = class PrismaTelemetrySpanStore$1 {
15968
+ constructor(prisma) {
15969
+ this.prisma = prisma;
15970
+ }
15971
+ async upsert(record) {
15972
+ const telemetrySpanId = this.createTelemetrySpanId(record.traceId, record.spanId);
15973
+ const existing = await this.prisma.telemetrySpan.findUnique({ where: { telemetrySpanId } });
15974
+ const attributes = this.mergeAttributes(this.parseJson(existing?.attributesJson ?? null), record.attributes);
15975
+ const events = this.mergeEvents(this.parseJson(existing?.eventsJson ?? null), record.events);
15976
+ const data = {
15977
+ traceId: record.traceId,
15978
+ spanId: record.spanId,
15979
+ parentSpanId: record.parentSpanId ?? existing?.parentSpanId ?? null,
15980
+ runId: record.runId,
15981
+ workflowId: record.workflowId,
15982
+ nodeId: record.nodeId ?? existing?.nodeId ?? null,
15983
+ activationId: record.activationId ?? existing?.activationId ?? null,
15984
+ connectionInvocationId: record.connectionInvocationId ?? existing?.connectionInvocationId ?? null,
15985
+ name: record.name ?? existing?.name ?? "codemation.span",
15986
+ kind: record.kind ?? existing?.kind ?? "internal",
15987
+ status: record.status ?? existing?.status ?? null,
15988
+ statusMessage: record.statusMessage ?? existing?.statusMessage ?? null,
15989
+ startTime: record.startTime ?? existing?.startTime ?? null,
15990
+ endTime: record.endTime ?? existing?.endTime ?? null,
15991
+ workflowFolder: record.workflowFolder ?? existing?.workflowFolder ?? null,
15992
+ nodeType: record.nodeType ?? existing?.nodeType ?? null,
15993
+ nodeRole: record.nodeRole ?? existing?.nodeRole ?? null,
15994
+ modelName: record.modelName ?? existing?.modelName ?? null,
15995
+ attributesJson: attributes ? JSON.stringify(attributes) : null,
15996
+ eventsJson: events.length > 0 ? JSON.stringify(events) : null,
15997
+ retentionExpiresAt: record.retentionExpiresAt ?? existing?.retentionExpiresAt ?? null,
15998
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
15999
+ };
16000
+ await this.prisma.telemetrySpan.upsert({
16001
+ where: { telemetrySpanId },
16002
+ create: {
16003
+ telemetrySpanId,
16004
+ ...data
16005
+ },
16006
+ update: data
16007
+ });
16008
+ }
16009
+ async list(args = {}) {
16010
+ return (await this.prisma.telemetrySpan.findMany({
16011
+ where: {
16012
+ ...args.traceId ? { traceId: args.traceId } : {},
16013
+ ...args.runId ? { runId: args.runId } : {},
16014
+ ...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
16015
+ ...args.workflowId ? { workflowId: args.workflowId } : {},
16016
+ ...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
16017
+ ...args.statuses && args.statuses.length > 0 ? { status: { in: [...args.statuses] } } : {},
16018
+ ...args.names && args.names.length > 0 ? { name: { in: [...args.names] } } : {},
16019
+ ...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
16020
+ ...args.startTimeGte ? { startTime: { gte: args.startTimeGte } } : {},
16021
+ ...args.endTimeLte ? { endTime: { lte: args.endTimeLte } } : {}
16022
+ },
16023
+ orderBy: [{ startTime: "asc" }, { spanId: "asc" }],
16024
+ ...args.limit ? { take: args.limit } : {}
16025
+ })).map((row) => ({
16026
+ traceId: row.traceId,
16027
+ spanId: row.spanId,
16028
+ parentSpanId: row.parentSpanId ?? void 0,
16029
+ runId: row.runId,
16030
+ workflowId: row.workflowId,
16031
+ nodeId: row.nodeId ?? void 0,
16032
+ activationId: row.activationId ?? void 0,
16033
+ connectionInvocationId: row.connectionInvocationId ?? void 0,
16034
+ name: row.name,
16035
+ kind: row.kind,
16036
+ status: row.status ? row.status : void 0,
16037
+ statusMessage: row.statusMessage ?? void 0,
16038
+ startTime: row.startTime ?? void 0,
16039
+ endTime: row.endTime ?? void 0,
16040
+ workflowFolder: row.workflowFolder ?? void 0,
16041
+ nodeType: row.nodeType ?? void 0,
16042
+ nodeRole: row.nodeRole ?? void 0,
16043
+ modelName: row.modelName ?? void 0,
16044
+ attributes: this.parseJson(row.attributesJson),
16045
+ events: this.parseJson(row.eventsJson) ?? [],
16046
+ retentionExpiresAt: row.retentionExpiresAt ?? void 0
16047
+ }));
16048
+ }
16049
+ async listByTraceId(traceId) {
16050
+ return await this.list({ traceId });
16051
+ }
16052
+ async pruneExpired(args) {
16053
+ const rows = await this.prisma.telemetrySpan.findMany({
16054
+ where: { retentionExpiresAt: { lte: args.nowIso } },
16055
+ select: { telemetrySpanId: true },
16056
+ orderBy: [{ retentionExpiresAt: "asc" }, { telemetrySpanId: "asc" }],
16057
+ ...args.limit ? { take: args.limit } : {}
16058
+ });
16059
+ if (rows.length === 0) return 0;
16060
+ return (await this.prisma.telemetrySpan.deleteMany({ where: { telemetrySpanId: { in: rows.map((row) => row.telemetrySpanId) } } })).count;
16061
+ }
16062
+ createTelemetrySpanId(traceId, spanId) {
16063
+ return `${traceId}:${spanId}`;
16064
+ }
16065
+ parseJson(value) {
16066
+ if (!value) return;
16067
+ return JSON.parse(value);
16068
+ }
16069
+ mergeAttributes(existing, update) {
16070
+ if (!existing && !update) return;
16071
+ return {
16072
+ ...existing ?? {},
16073
+ ...update ?? {}
16074
+ };
16075
+ }
16076
+ mergeEvents(existing, update) {
16077
+ return [...existing ?? [], ...update ?? []];
16078
+ }
16079
+ };
16080
+ PrismaTelemetrySpanStore = __decorate([
16081
+ injectable(),
16082
+ __decorateParam(0, inject(PrismaDatabaseClientToken)),
16083
+ __decorateMetadata("design:paramtypes", [Object])
16084
+ ], PrismaTelemetrySpanStore);
16085
+
13852
16086
  //#endregion
13853
16087
  //#region src/infrastructure/persistence/PrismaWorkflowActivationRepository.ts
13854
16088
  let PrismaWorkflowActivationRepository = class PrismaWorkflowActivationRepository$1 {
@@ -14221,13 +16455,22 @@ let PrismaWorkflowRunRepository = class PrismaWorkflowRunRepository$1 {
14221
16455
  async listRunsOlderThan(args) {
14222
16456
  const limit = args.limit ?? 100;
14223
16457
  return (await this.prisma.run.findMany({
14224
- where: {
14225
- status: { in: ["completed", "failed"] },
14226
- OR: [{ AND: [{ finishedAt: { not: null } }, { finishedAt: { lt: args.beforeIso } }] }, { AND: [{ finishedAt: null }, { updatedAt: { lt: args.beforeIso } }] }]
16458
+ where: { status: { in: ["completed", "failed"] } },
16459
+ select: {
16460
+ runId: true,
16461
+ workflowId: true,
16462
+ startedAt: true,
16463
+ finishedAt: true,
16464
+ updatedAt: true,
16465
+ policySnapshotJson: true
14227
16466
  },
14228
16467
  orderBy: { updatedAt: "asc" },
14229
- take: limit
14230
- })).map((r) => this.rowToPruneCandidate(r));
16468
+ take: limit * 4
16469
+ })).filter((row) => {
16470
+ const finishedAt = row.finishedAt ?? row.updatedAt;
16471
+ const retentionSeconds = this.parseJson(row.policySnapshotJson)?.retentionSeconds ?? args.defaultRetentionSeconds;
16472
+ return finishedAt < (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
16473
+ }).slice(0, limit).map((row) => this.rowToPruneCandidate(row));
14231
16474
  }
14232
16475
  instancesToDomain(runId, workflowId, instances) {
14233
16476
  const nodeSnapshotsByNodeId = {};
@@ -14604,7 +16847,7 @@ PrismaWorkflowRunRepository = __decorate([
14604
16847
 
14605
16848
  //#endregion
14606
16849
  //#region src/infrastructure/persistence/WorkflowDefinitionRepositoryAdapter.ts
14607
- var _ref$3;
16850
+ var _ref$4;
14608
16851
  let WorkflowDefinitionRepositoryAdapter = class WorkflowDefinitionRepositoryAdapter$1 {
14609
16852
  constructor(engine, workflowRepository) {
14610
16853
  this.engine = engine;
@@ -14627,7 +16870,7 @@ WorkflowDefinitionRepositoryAdapter = __decorate([
14627
16870
  injectable(),
14628
16871
  __decorateParam(0, inject(Engine)),
14629
16872
  __decorateParam(1, inject(CoreTokens.WorkflowRepository)),
14630
- __decorateMetadata("design:paramtypes", [typeof (_ref$3 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$3 : Object, Object])
16873
+ __decorateMetadata("design:paramtypes", [typeof (_ref$4 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$4 : Object, Object])
14631
16874
  ], WorkflowDefinitionRepositoryAdapter);
14632
16875
 
14633
16876
  //#endregion
@@ -14785,6 +17028,141 @@ var LocalFilesystemBinaryStorage = class {
14785
17028
  }
14786
17029
  };
14787
17030
 
17031
+ //#endregion
17032
+ //#region src/application/runs/WorkflowRunRetentionPruneScheduler.ts
17033
+ var _ref$3, _WorkflowRunRetentionPruneScheduler;
17034
+ let WorkflowRunRetentionPruneScheduler = class WorkflowRunRetentionPruneScheduler$1 {
17035
+ static {
17036
+ _WorkflowRunRetentionPruneScheduler = this;
17037
+ }
17038
+ static defaultIntervalMs = 3600 * 1e3;
17039
+ timer;
17040
+ logger;
17041
+ constructor(clock, runs, binaryStorage, telemetrySpanStore, telemetryArtifactStore, telemetryMetricPointStore, appConfig, loggerFactory) {
17042
+ this.clock = clock;
17043
+ this.runs = runs;
17044
+ this.binaryStorage = binaryStorage;
17045
+ this.telemetrySpanStore = telemetrySpanStore;
17046
+ this.telemetryArtifactStore = telemetryArtifactStore;
17047
+ this.telemetryMetricPointStore = telemetryMetricPointStore;
17048
+ this.appConfig = appConfig;
17049
+ this.logger = loggerFactory.create("codemation.runRetentionPrune");
17050
+ }
17051
+ start() {
17052
+ if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED === "false" && this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED === "false") return;
17053
+ if (this.timer) return;
17054
+ const intervalMs = Number(this.appConfig.env.CODEMATION_RUN_PRUNE_INTERVAL_MS ?? _WorkflowRunRetentionPruneScheduler.defaultIntervalMs);
17055
+ this.runScheduledTick();
17056
+ this.timer = setInterval(() => {
17057
+ this.runScheduledTick();
17058
+ }, intervalMs);
17059
+ }
17060
+ stop() {
17061
+ if (this.timer) {
17062
+ clearInterval(this.timer);
17063
+ this.timer = void 0;
17064
+ }
17065
+ }
17066
+ /** Exposed for tests; production path is the interval started by {@link start}. */
17067
+ async runOnce() {
17068
+ const defaultRetentionSec = Number(this.appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS ?? 86400);
17069
+ const nowIso = this.clock.now().toISOString();
17070
+ let foundCount = 0;
17071
+ let prunedCount = 0;
17072
+ if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED !== "false") {
17073
+ const candidates = await this.runs.listRunsOlderThan?.({
17074
+ nowIso,
17075
+ defaultRetentionSeconds: defaultRetentionSec,
17076
+ limit: 500
17077
+ }) ?? (await this.runs.listRuns({ limit: 500 })).filter((summary) => summary.status === "completed" || summary.status === "failed");
17078
+ for (const candidate of candidates) {
17079
+ const runId = candidate.runId;
17080
+ const workflowId = candidate.workflowId;
17081
+ foundCount += 1;
17082
+ const storageKeys = await this.runs.listBinaryStorageKeys?.(runId) ?? await this.loadStorageKeysFromRunStateFallback(runId);
17083
+ for (const key of storageKeys) await this.binaryStorage.delete(key);
17084
+ await this.runs.deleteRun(runId);
17085
+ prunedCount += 1;
17086
+ this.logger.debug(`Run retention prune: pruned run ${runId} for workflow ${workflowId}`);
17087
+ }
17088
+ }
17089
+ let prunedSpanCount = 0;
17090
+ let prunedArtifactCount = 0;
17091
+ let prunedMetricCount = 0;
17092
+ if (this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED !== "false") {
17093
+ const telemetryLimit = Number(this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_LIMIT ?? 2e3);
17094
+ prunedSpanCount = await this.telemetrySpanStore.pruneExpired({
17095
+ nowIso,
17096
+ limit: telemetryLimit
17097
+ });
17098
+ prunedArtifactCount = await this.telemetryArtifactStore.pruneExpired({
17099
+ nowIso,
17100
+ limit: telemetryLimit
17101
+ });
17102
+ prunedMetricCount = await this.telemetryMetricPointStore.pruneExpired({
17103
+ nowIso,
17104
+ limit: telemetryLimit
17105
+ });
17106
+ }
17107
+ if (foundCount + prunedCount + prunedSpanCount + prunedArtifactCount + prunedMetricCount === 0) return;
17108
+ this.logger.info(`Run retention prune: found ${foundCount} run(s) to prune`);
17109
+ this.logger.info(`Run retention prune: pruned ${prunedCount} run(s)`);
17110
+ this.logger.info(`Run retention prune: pruned ${prunedSpanCount} telemetry span(s)`);
17111
+ this.logger.info(`Run retention prune: pruned ${prunedArtifactCount} telemetry artifact(s)`);
17112
+ this.logger.info(`Run retention prune: pruned ${prunedMetricCount} telemetry metric point(s)`);
17113
+ }
17114
+ async runScheduledTick() {
17115
+ try {
17116
+ await this.runOnce();
17117
+ } catch (error) {
17118
+ this.logger.warn(`Run retention prune tick failed: ${error instanceof Error ? error.message : String(error)}`);
17119
+ }
17120
+ }
17121
+ async loadStorageKeysFromRunStateFallback(runId) {
17122
+ const state = await this.runs.load(runId);
17123
+ if (!state) return [];
17124
+ const keys = /* @__PURE__ */ new Set();
17125
+ this.collectStorageKeysFromValue(state.outputsByNode, keys);
17126
+ this.collectStorageKeysFromValue(state.nodeSnapshotsByNodeId, keys);
17127
+ this.collectStorageKeysFromValue(state.mutableState, keys);
17128
+ return [...keys];
17129
+ }
17130
+ collectStorageKeysFromValue(value, keys) {
17131
+ if (Array.isArray(value)) {
17132
+ for (const entry of value) this.collectStorageKeysFromValue(entry, keys);
17133
+ return;
17134
+ }
17135
+ if (!value || typeof value !== "object") return;
17136
+ const record = value;
17137
+ if (typeof record.id === "string" && typeof record.storageKey === "string" && typeof record.mimeType === "string" && typeof record.size === "number") {
17138
+ if (record.storageKey.length > 0) keys.add(record.storageKey);
17139
+ return;
17140
+ }
17141
+ for (const child of Object.values(record)) this.collectStorageKeysFromValue(child, keys);
17142
+ }
17143
+ };
17144
+ WorkflowRunRetentionPruneScheduler = _WorkflowRunRetentionPruneScheduler = __decorate([
17145
+ injectable(),
17146
+ __decorateParam(0, inject(ApplicationTokens.Clock)),
17147
+ __decorateParam(1, inject(ApplicationTokens.WorkflowRunRepository)),
17148
+ __decorateParam(2, inject(CoreTokens.BinaryStorage)),
17149
+ __decorateParam(3, inject(ApplicationTokens.TelemetrySpanStore)),
17150
+ __decorateParam(4, inject(ApplicationTokens.TelemetryArtifactStore)),
17151
+ __decorateParam(5, inject(ApplicationTokens.TelemetryMetricPointStore)),
17152
+ __decorateParam(6, inject(ApplicationTokens.AppConfig)),
17153
+ __decorateParam(7, inject(ServerLoggerFactory)),
17154
+ __decorateMetadata("design:paramtypes", [
17155
+ Object,
17156
+ Object,
17157
+ Object,
17158
+ Object,
17159
+ Object,
17160
+ Object,
17161
+ Object,
17162
+ typeof (_ref$3 = typeof ServerLoggerFactory !== "undefined" && ServerLoggerFactory) === "function" ? _ref$3 : Object
17163
+ ])
17164
+ ], WorkflowRunRetentionPruneScheduler);
17165
+
14788
17166
  //#endregion
14789
17167
  //#region src/bootstrap/AppContainerLifecycle.ts
14790
17168
  var AppContainerLifecycle = class {
@@ -14795,6 +17173,8 @@ var AppContainerLifecycle = class {
14795
17173
  async stop(args) {
14796
17174
  if (this.container.isRegistered(Engine, true)) await this.container.resolve(Engine).stop();
14797
17175
  if (this.container.isRegistered(WorkflowRunEventWebsocketRelay, true)) await this.container.resolve(WorkflowRunEventWebsocketRelay).stop();
17176
+ if (this.container.isRegistered(RunEventBusTelemetryReporter, true)) await this.container.resolve(RunEventBusTelemetryReporter).stop();
17177
+ if (this.container.isRegistered(WorkflowRunRetentionPruneScheduler, true)) this.container.resolve(WorkflowRunRetentionPruneScheduler).stop();
14798
17178
  if (args?.stopWebsocketServer !== false && this.container.isRegistered(WorkflowWebsocketServer, true)) await this.container.resolve(WorkflowWebsocketServer).stop();
14799
17179
  if (this.ownedPrismaClient) await this.ownedPrismaClient.$disconnect();
14800
17180
  }
@@ -14821,9 +17201,9 @@ DatabaseMigrations = __decorate([
14821
17201
 
14822
17202
  //#endregion
14823
17203
  //#region src/bootstrap/runtime/FrontendRuntime.ts
14824
- var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5;
17204
+ var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5$1, _ref6$1, _ref7;
14825
17205
  let FrontendRuntime = class FrontendRuntime$1 {
14826
- constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, engine) {
17206
+ constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, engine) {
14827
17207
  this.appConfig = appConfig;
14828
17208
  this.databaseMigrations = databaseMigrations;
14829
17209
  this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
@@ -14831,6 +17211,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
14831
17211
  this.workflowRepository = workflowRepository;
14832
17212
  this.workflowWebsocketServer = workflowWebsocketServer;
14833
17213
  this.workflowRunEventWebsocketRelay = workflowRunEventWebsocketRelay;
17214
+ this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
17215
+ this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
14834
17216
  this.engine = engine;
14835
17217
  }
14836
17218
  async start(args) {
@@ -14839,6 +17221,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
14839
17221
  if (args?.skipPresentationServers === true) return;
14840
17222
  await this.engine.start([...this.workflowRepository.list()]);
14841
17223
  await this.workflowWebsocketServer.start();
17224
+ await this.runEventBusTelemetryReporter.start();
17225
+ this.workflowRunRetentionPruneScheduler.start();
14842
17226
  await this.workflowRunEventWebsocketRelay.start();
14843
17227
  }
14844
17228
  };
@@ -14851,7 +17235,9 @@ FrontendRuntime = __decorate([
14851
17235
  __decorateParam(4, inject(CoreTokens.WorkflowRepository)),
14852
17236
  __decorateParam(5, inject(WorkflowWebsocketServer)),
14853
17237
  __decorateParam(6, inject(WorkflowRunEventWebsocketRelay)),
14854
- __decorateParam(7, inject(Engine)),
17238
+ __decorateParam(7, inject(RunEventBusTelemetryReporter)),
17239
+ __decorateParam(8, inject(WorkflowRunRetentionPruneScheduler)),
17240
+ __decorateParam(9, inject(Engine)),
14855
17241
  __decorateMetadata("design:paramtypes", [
14856
17242
  Object,
14857
17243
  typeof (_ref$1 = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref$1 : Object,
@@ -14860,21 +17246,25 @@ FrontendRuntime = __decorate([
14860
17246
  Object,
14861
17247
  typeof (_ref3$1 = typeof WorkflowWebsocketServer !== "undefined" && WorkflowWebsocketServer) === "function" ? _ref3$1 : Object,
14862
17248
  typeof (_ref4$1 = typeof WorkflowRunEventWebsocketRelay !== "undefined" && WorkflowRunEventWebsocketRelay) === "function" ? _ref4$1 : Object,
14863
- typeof (_ref5 = typeof Engine !== "undefined" && Engine) === "function" ? _ref5 : Object
17249
+ typeof (_ref5$1 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref5$1 : Object,
17250
+ typeof (_ref6$1 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref6$1 : Object,
17251
+ typeof (_ref7 = typeof Engine !== "undefined" && Engine) === "function" ? _ref7 : Object
14864
17252
  ])
14865
17253
  ], FrontendRuntime);
14866
17254
 
14867
17255
  //#endregion
14868
17256
  //#region src/bootstrap/runtime/WorkerRuntime.ts
14869
- var _ref, _ref2, _ref3, _ref4;
17257
+ var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
14870
17258
  let WorkerRuntime = class WorkerRuntime$1 {
14871
- constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, scheduler, lifecycle) {
17259
+ constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, scheduler, lifecycle) {
14872
17260
  this.appConfig = appConfig;
14873
17261
  this.databaseMigrations = databaseMigrations;
14874
17262
  this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
14875
17263
  this.workflowActivationRepository = workflowActivationRepository;
14876
17264
  this.workflowRepository = workflowRepository;
14877
17265
  this.engine = engine;
17266
+ this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
17267
+ this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
14878
17268
  this.scheduler = scheduler;
14879
17269
  this.lifecycle = lifecycle;
14880
17270
  }
@@ -14883,6 +17273,8 @@ let WorkerRuntime = class WorkerRuntime$1 {
14883
17273
  await this.runtimeWorkflowActivationPolicy.hydrateFromRepository(this.workflowActivationRepository);
14884
17274
  const workflows = [...this.workflowRepository.list()];
14885
17275
  await this.engine.start(workflows);
17276
+ await this.runEventBusTelemetryReporter.start();
17277
+ this.workflowRunRetentionPruneScheduler.start();
14886
17278
  const worker = this.scheduler.createWorker({
14887
17279
  queues,
14888
17280
  requestHandler: this.engine
@@ -14902,8 +17294,10 @@ WorkerRuntime = __decorate([
14902
17294
  __decorateParam(3, inject(ApplicationTokens.WorkflowActivationRepository)),
14903
17295
  __decorateParam(4, inject(CoreTokens.WorkflowRepository)),
14904
17296
  __decorateParam(5, inject(Engine)),
14905
- __decorateParam(6, inject(ApplicationTokens.WorkerRuntimeScheduler)),
14906
- __decorateParam(7, inject(AppContainerLifecycle)),
17297
+ __decorateParam(6, inject(RunEventBusTelemetryReporter)),
17298
+ __decorateParam(7, inject(WorkflowRunRetentionPruneScheduler)),
17299
+ __decorateParam(8, inject(ApplicationTokens.WorkerRuntimeScheduler)),
17300
+ __decorateParam(9, inject(AppContainerLifecycle)),
14907
17301
  __decorateMetadata("design:paramtypes", [
14908
17302
  Object,
14909
17303
  typeof (_ref = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref : Object,
@@ -14911,8 +17305,10 @@ WorkerRuntime = __decorate([
14911
17305
  Object,
14912
17306
  Object,
14913
17307
  typeof (_ref3 = typeof Engine !== "undefined" && Engine) === "function" ? _ref3 : Object,
17308
+ typeof (_ref4 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref4 : Object,
17309
+ typeof (_ref5 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref5 : Object,
14914
17310
  Object,
14915
- typeof (_ref4 = typeof AppContainerLifecycle !== "undefined" && AppContainerLifecycle) === "function" ? _ref4 : Object
17311
+ typeof (_ref6 = typeof AppContainerLifecycle !== "undefined" && AppContainerLifecycle) === "function" ? _ref6 : Object
14916
17312
  ])
14917
17313
  ], WorkerRuntime);
14918
17314
 
@@ -15045,6 +17441,11 @@ var AppContainerFactory = class AppContainerFactory {
15045
17441
  ListUserAccountsQueryHandler,
15046
17442
  VerifyUserInviteQueryHandler,
15047
17443
  GetRunBinaryAttachmentQueryHandler,
17444
+ GetTelemetryDashboardDimensionsQueryHandler,
17445
+ GetTelemetryDashboardRunsQueryHandler,
17446
+ GetTelemetryRunTraceQueryHandler,
17447
+ GetTelemetryDashboardSummaryQueryHandler,
17448
+ GetTelemetryDashboardTimeseriesQueryHandler,
15048
17449
  GetRunStateQueryHandler,
15049
17450
  GetWorkflowRunDetailQueryHandler,
15050
17451
  GetWorkflowDebuggerOverlayQueryHandler,
@@ -15082,6 +17483,7 @@ var AppContainerFactory = class AppContainerFactory {
15082
17483
  DevHonoApiRouteRegistrar,
15083
17484
  OAuth2HonoApiRouteRegistrar,
15084
17485
  RunHonoApiRouteRegistrar,
17486
+ TelemetryHonoApiRouteRegistrar,
15085
17487
  UserHonoApiRouteRegistrar,
15086
17488
  WebhookHonoApiRouteRegistrar,
15087
17489
  WhitelabelHonoApiRouteRegistrar,
@@ -15156,6 +17558,7 @@ var AppContainerFactory = class AppContainerFactory {
15156
17558
  container$1.registerInstance(CoreTokens.WorkflowActivationPolicy, runtimeWorkflowActivationPolicy);
15157
17559
  new EngineRuntimeRegistrar().register(container$1, {
15158
17560
  resolveEngineExecutionLimits: () => inputs.appConfig.engineExecutionLimits,
17561
+ workflowPolicyRuntimeDefaults: this.createWorkflowPolicyRuntimeDefaults(inputs.appConfig),
15159
17562
  webhookTriggerMatcherProvider: { createMatcher: (dependencyContainer) => {
15160
17563
  const webhookRoutingLogger = dependencyContainer.resolve(ServerLoggerFactory).create("codemation.webhooks.routing");
15161
17564
  return new WorkflowRepositoryWebhookTriggerMatcher(dependencyContainer.resolve(CoreTokens.WorkflowRepository), dependencyContainer.resolve(CoreTokens.WorkflowActivationPolicy), {
@@ -15244,6 +17647,22 @@ var AppContainerFactory = class AppContainerFactory {
15244
17647
  }) });
15245
17648
  }
15246
17649
  registerRepositoriesAndBuses(container$1) {
17650
+ container$1.register(OtelIdentityFactory, { useClass: OtelIdentityFactory });
17651
+ container$1.register(TelemetryPrivacyPolicy, { useClass: TelemetryPrivacyPolicy });
17652
+ container$1.register(TelemetryEnricherChain, { useClass: TelemetryEnricherChain });
17653
+ container$1.register(TelemetryRetentionTimestampFactory, { useClass: TelemetryRetentionTimestampFactory });
17654
+ container$1.register(TelemetryQueryService, { useClass: TelemetryQueryService });
17655
+ container$1.register(NoOpTelemetryExporter, { useClass: NoOpTelemetryExporter });
17656
+ container$1.register(CompositeTelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => new CompositeTelemetryExporter([dependencyContainer.resolve(NoOpTelemetryExporter)])) });
17657
+ container$1.register(OtelExecutionTelemetryFactory, { useClass: OtelExecutionTelemetryFactory });
17658
+ container$1.register(InMemoryRunTraceContextRepository, { useClass: InMemoryRunTraceContextRepository });
17659
+ container$1.register(InMemoryTelemetrySpanStore, { useClass: InMemoryTelemetrySpanStore });
17660
+ container$1.register(InMemoryTelemetryArtifactStore, { useClass: InMemoryTelemetryArtifactStore });
17661
+ container$1.register(InMemoryTelemetryMetricPointStore, { useClass: InMemoryTelemetryMetricPointStore });
17662
+ container$1.register(PrismaRunTraceContextRepository, { useClass: PrismaRunTraceContextRepository });
17663
+ container$1.register(PrismaTelemetrySpanStore, { useClass: PrismaTelemetrySpanStore });
17664
+ container$1.register(PrismaTelemetryArtifactStore, { useClass: PrismaTelemetryArtifactStore });
17665
+ container$1.register(PrismaTelemetryMetricPointStore, { useClass: PrismaTelemetryMetricPointStore });
15247
17666
  container$1.register(WorkflowDefinitionRepositoryAdapter, { useClass: WorkflowDefinitionRepositoryAdapter });
15248
17667
  container$1.register(InMemoryWorkflowRunRepository, { useClass: InMemoryWorkflowRunRepository });
15249
17668
  container$1.register(InMemoryTriggerSetupStateRepository, { useClass: InMemoryTriggerSetupStateRepository });
@@ -15264,6 +17683,7 @@ var AppContainerFactory = class AppContainerFactory {
15264
17683
  container$1.register(ApplicationTokens.QueryBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryQueryBus)) });
15265
17684
  container$1.register(ApplicationTokens.CommandBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryCommandBus)) });
15266
17685
  container$1.register(ApplicationTokens.DomainEventBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryDomainEventBus)) });
17686
+ container$1.register(ApplicationTokens.TelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CompositeTelemetryExporter)) });
15267
17687
  }
15268
17688
  registerApplicationServicesAndRoutes(container$1) {
15269
17689
  container$1.register(DevBootstrapSummaryAssembler, { useClass: DevBootstrapSummaryAssembler });
@@ -15278,6 +17698,8 @@ var AppContainerFactory = class AppContainerFactory {
15278
17698
  registerOperationalInfrastructure(container$1) {
15279
17699
  container$1.register(ApplicationTokens.WorkflowWebsocketPublisher, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(WorkflowWebsocketServer)) });
15280
17700
  container$1.register(WorkflowRunEventWebsocketRelay, { useClass: WorkflowRunEventWebsocketRelay });
17701
+ container$1.register(RunEventBusTelemetryReporter, { useClass: RunEventBusTelemetryReporter });
17702
+ container$1.register(WorkflowRunRetentionPruneScheduler, { useClass: WorkflowRunRetentionPruneScheduler });
15281
17703
  }
15282
17704
  async registerRuntimeInfrastructure(container$1, appConfig) {
15283
17705
  const queuePrefix = appConfig.scheduler.queuePrefix ?? appConfig.eventing.queuePrefix ?? "codemation";
@@ -15286,7 +17708,6 @@ var AppContainerFactory = class AppContainerFactory {
15286
17708
  const binaryStorage = this.createBinaryStorage(appConfig.repoRoot);
15287
17709
  container$1.registerInstance(CoreTokens.RunDataFactory, new InMemoryRunDataFactory());
15288
17710
  container$1.registerInstance(CoreTokens.BinaryStorage, binaryStorage);
15289
- container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage));
15290
17711
  container$1.registerInstance(ApplicationTokens.Clock, new SystemClock());
15291
17712
  if (appConfig.persistence.kind === "none") {
15292
17713
  const workflowRunRepository$1 = container$1.resolve(InMemoryWorkflowRunRepository);
@@ -15296,6 +17717,11 @@ var AppContainerFactory = class AppContainerFactory {
15296
17717
  container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, container$1.resolve(InMemoryWorkflowDebuggerOverlayRepository));
15297
17718
  container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(InMemoryWorkflowActivationRepository));
15298
17719
  container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(InMemoryCredentialStore));
17720
+ container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, container$1.resolve(InMemoryRunTraceContextRepository));
17721
+ container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, container$1.resolve(InMemoryTelemetrySpanStore));
17722
+ container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, container$1.resolve(InMemoryTelemetryArtifactStore));
17723
+ container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, container$1.resolve(InMemoryTelemetryMetricPointStore));
17724
+ container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
15299
17725
  this.registerRuntimeNodeActivationScheduler(container$1);
15300
17726
  return { ownedPrismaClient: null };
15301
17727
  }
@@ -15305,6 +17731,10 @@ var AppContainerFactory = class AppContainerFactory {
15305
17731
  const workflowRunRepository = childContainer.resolve(PrismaWorkflowRunRepository);
15306
17732
  const triggerSetupStateRepository = childContainer.resolve(PrismaTriggerSetupStateRepository);
15307
17733
  const workflowDebuggerOverlayRepository = childContainer.resolve(PrismaWorkflowDebuggerOverlayRepository);
17734
+ const runTraceContextRepository = childContainer.resolve(PrismaRunTraceContextRepository);
17735
+ const telemetrySpanStore = childContainer.resolve(PrismaTelemetrySpanStore);
17736
+ const telemetryArtifactStore = childContainer.resolve(PrismaTelemetryArtifactStore);
17737
+ const telemetryMetricPointStore = childContainer.resolve(PrismaTelemetryMetricPointStore);
15308
17738
  container$1.registerInstance(PrismaDatabaseClientToken, prismaOwnership.prismaClient);
15309
17739
  container$1.registerInstance(ApplicationTokens.PrismaClient, prismaOwnership.prismaClient);
15310
17740
  container$1.registerInstance(CoreTokens.WorkflowExecutionRepository, new EventPublishingWorkflowExecutionRepository(workflowRunRepository, eventBus));
@@ -15313,6 +17743,11 @@ var AppContainerFactory = class AppContainerFactory {
15313
17743
  container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, workflowDebuggerOverlayRepository);
15314
17744
  container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(PrismaWorkflowActivationRepository));
15315
17745
  container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(PrismaCredentialStore));
17746
+ container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, runTraceContextRepository);
17747
+ container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, telemetrySpanStore);
17748
+ container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, telemetryArtifactStore);
17749
+ container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, telemetryMetricPointStore);
17750
+ container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
15316
17751
  if (appConfig.scheduler.kind === "bullmq") container$1.registerInstance(ApplicationTokens.WorkerRuntimeScheduler, new BullmqScheduler({ url: this.requireRedisUrl(appConfig.scheduler.redisUrl) }, queuePrefix));
15317
17752
  this.registerRuntimeNodeActivationScheduler(container$1);
15318
17753
  return { ownedPrismaClient: prismaOwnership.ownedPrismaClient };
@@ -15344,6 +17779,15 @@ var AppContainerFactory = class AppContainerFactory {
15344
17779
  return new DefaultDrivingScheduler(new ConfigDrivenOffloadPolicy(), dependencyContainer.resolve(ApplicationTokens.WorkerRuntimeScheduler), inlineScheduler);
15345
17780
  }) });
15346
17781
  }
17782
+ createWorkflowPolicyRuntimeDefaults(appConfig) {
17783
+ return {
17784
+ retentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS),
17785
+ binaryRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_BINARY_RETENTION_DEFAULT_SECONDS),
17786
+ telemetrySpanRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_SPAN_RETENTION_DEFAULT_SECONDS),
17787
+ telemetryArtifactRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_ARTIFACT_RETENTION_DEFAULT_SECONDS),
17788
+ telemetryMetricRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_METRIC_RETENTION_DEFAULT_SECONDS)
17789
+ };
17790
+ }
15347
17791
  createBinaryStorage(repoRoot) {
15348
17792
  if (!repoRoot) return new InMemoryBinaryStorage();
15349
17793
  return new LocalFilesystemBinaryStorage(`${repoRoot}/.codemation/binary`);
@@ -15362,6 +17806,11 @@ var AppContainerFactory = class AppContainerFactory {
15362
17806
  if (!redisUrl) throw new Error("Redis-backed runtime requires runtime.eventBus.redisUrl or REDIS_URL.");
15363
17807
  return redisUrl;
15364
17808
  }
17809
+ readPositiveInteger(value) {
17810
+ if (!value) return;
17811
+ const parsed = Number(value);
17812
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
17813
+ }
15365
17814
  synchronizeLiveWorkflowRepository(container$1, workflows) {
15366
17815
  container$1.resolve(CoreTokens.LiveWorkflowRepository).setWorkflows(workflows);
15367
17816
  if (container$1.isRegistered(WebhookEndpointPathValidator, true)) container$1.resolve(WebhookEndpointPathValidator).validateAndWarn(workflows);
@@ -15369,5 +17818,5 @@ var AppContainerFactory = class AppContainerFactory {
15369
17818
  };
15370
17819
 
15371
17820
  //#endregion
15372
- export { GetWorkflowDetailQuery as C, ListUserAccountsQuery as E, GetWorkflowSummariesQuery as S, UpsertLocalBootstrapUserCommand as T, CodemationFrontendAuthSnapshotFactory as _, AppContainerLifecycle as a, WorkflowDefinitionMapper as b, RequestToWebhookItemMapper as c, CredentialHttpRouteHandler as d, CodemationHonoApiApp as f, FrontendAppConfigFactory as g, InternalAuthBootstrapFactory as h, DatabaseMigrations as i, RunHttpRouteHandler as l, PublicFrontendBootstrapFactory as m, WorkerRuntime as n, WorkflowHttpRouteHandler as o, BinaryHttpRouteHandler as p, FrontendRuntime as r, WebhookHttpRouteHandler as s, AppContainerFactory as t, OAuth2HttpRouteHandler as u, WorkflowWebsocketServer as v, RunBinaryAttachmentLookupService as w, WorkflowPolicyUiPresentationFactory as x, ApiPaths as y };
15373
- //# sourceMappingURL=AppContainerFactory-CcSGFNLW.js.map
17821
+ export { GetWorkflowSummariesQuery as C, ListUserAccountsQuery as D, UpsertLocalBootstrapUserCommand as E, WorkflowPolicyUiPresentationFactory as S, RunBinaryAttachmentLookupService as T, FrontendAppConfigFactory as _, AppContainerLifecycle as a, ApiPaths as b, WebhookHttpRouteHandler as c, OAuth2HttpRouteHandler as d, CredentialHttpRouteHandler as f, InternalAuthBootstrapFactory as g, PublicFrontendBootstrapFactory as h, DatabaseMigrations as i, RequestToWebhookItemMapper as l, BinaryHttpRouteHandler as m, WorkerRuntime as n, WorkflowRunRetentionPruneScheduler as o, CodemationHonoApiApp as p, FrontendRuntime as r, WorkflowHttpRouteHandler as s, AppContainerFactory as t, RunHttpRouteHandler as u, CodemationFrontendAuthSnapshotFactory as v, GetWorkflowDetailQuery as w, WorkflowDefinitionMapper as x, WorkflowWebsocketServer as y };
17822
+ //# sourceMappingURL=AppContainerFactory-D9je1sSV.js.map