@codemation/host 0.2.5 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/dist/{AppConfigFactory-CqKWXqOm.js → AppConfigFactory-BPp02HMv.js} +82 -5
- package/dist/{AppConfigFactory-CqKWXqOm.js.map → AppConfigFactory-BPp02HMv.js.map} +1 -1
- package/dist/{AppConfigFactory-CK28UPK0.d.ts → AppConfigFactory-Dq7ttwQ_.d.ts} +6001 -144
- package/dist/{AppContainerFactory-CcSGFNLW.js → AppContainerFactory-DL_qZ80U.js} +2665 -264
- package/dist/AppContainerFactory-DL_qZ80U.js.map +1 -0
- package/dist/{CodemationAppContext-KqDoeHqN.d.ts → CodemationAppContext-P7P-xZhQ.d.ts} +2 -2
- package/dist/{CodemationAuthoring.types-BP6Inucu.d.ts → CodemationAuthoring.types-OMYu7vKP.d.ts} +3 -3
- package/dist/{CodemationConfigNormalizer-DIAE0VHw.d.ts → CodemationConfigNormalizer-BCtBrJDe.d.ts} +2 -2
- package/dist/{CodemationConsumerConfigLoader-nj9kTmfJ.d.ts → CodemationConsumerConfigLoader-evvw4b_a.d.ts} +2 -2
- package/dist/CodemationPluginListMerger-PSTtEQjC.d.ts +674 -0
- package/dist/{CredentialServices-BFQD_VN1.d.ts → CredentialServices-0Hk8RFY1.d.ts} +3 -3
- package/dist/{CredentialServices-BPKUF8Xs.js → CredentialServices-BNBMFOPt.js} +6 -1
- package/dist/CredentialServices-BNBMFOPt.js.map +1 -0
- package/dist/{PublicFrontendBootstrapFactory-DTA1iDo0.d.ts → PublicFrontendBootstrapFactory-D0_ds7nS.d.ts} +2 -2
- package/dist/authoring.d.ts +3 -3
- package/dist/consumer.d.ts +4 -4
- package/dist/credentials.d.ts +3 -3
- package/dist/credentials.js +1 -1
- package/dist/devServerSidecar.d.ts +1 -1
- package/dist/{index-Dd6BrWyH.d.ts → index-CeS2saCe.d.ts} +105 -2
- package/dist/index.d.ts +12 -11
- package/dist/index.js +5 -5
- package/dist/nextServer.d.ts +8 -58
- package/dist/nextServer.js +6 -100
- package/dist/{persistenceServer-DKbFDxoS.js → persistenceServer-CA0_q0D7.js} +2 -2
- package/dist/{persistenceServer-DKbFDxoS.js.map → persistenceServer-CA0_q0D7.js.map} +1 -1
- package/dist/{persistenceServer-Y-u7lV7f.d.ts → persistenceServer-CJeu1STC.d.ts} +2 -2
- package/dist/persistenceServer.d.ts +5 -5
- package/dist/persistenceServer.js +2 -2
- package/dist/{server-axppTMgo.d.ts → server-Clvg5x1w.d.ts} +11 -5
- package/dist/{server-CFpgKuVE.js → server-DteBORJX.js} +4 -4
- package/dist/{server-CFpgKuVE.js.map → server-DteBORJX.js.map} +1 -1
- package/dist/server.d.ts +8 -8
- package/dist/server.js +5 -5
- package/package.json +6 -5
- package/prisma/migrations/20260414120000_telemetry_foundation/migration.sql +112 -0
- package/prisma/migrations/20260414153000_telemetry_retention_metrics_refactor/migration.sql +239 -0
- package/prisma/migrations.sqlite/20260414120000_telemetry_foundation/migration.sql +103 -0
- package/prisma/migrations.sqlite/20260414153000_telemetry_retention_metrics_refactor/migration.sql +540 -0
- package/prisma/schema.postgresql.prisma +100 -1
- package/prisma/schema.sqlite.prisma +100 -1
- package/scripts/generate-prisma-clients.mjs +89 -1
- package/src/application/contracts/TelemetryDashboardContracts.ts +113 -0
- package/src/application/contracts/TelemetryRunTraceContracts.ts +13 -0
- package/src/application/cost/FrameworkCostCatalogEntries.ts +126 -0
- package/src/application/queries/GetTelemetryDashboardDimensionsQuery.ts +11 -0
- package/src/application/queries/GetTelemetryDashboardDimensionsQueryHandler.ts +20 -0
- package/src/application/queries/GetTelemetryDashboardRunsQuery.ts +11 -0
- package/src/application/queries/GetTelemetryDashboardRunsQueryHandler.ts +20 -0
- package/src/application/queries/GetTelemetryDashboardSummaryQuery.ts +11 -0
- package/src/application/queries/GetTelemetryDashboardSummaryQueryHandler.ts +29 -0
- package/src/application/queries/GetTelemetryDashboardTimeseriesQuery.ts +11 -0
- package/src/application/queries/GetTelemetryDashboardTimeseriesQueryHandler.ts +36 -0
- package/src/application/queries/GetTelemetryRunTraceQuery.ts +8 -0
- package/src/application/queries/GetTelemetryRunTraceQueryHandler.ts +20 -0
- package/src/application/queries/WorkflowQueryHandlers.ts +5 -0
- package/src/application/runs/WorkflowRunRetentionPruneScheduler.ts +71 -26
- package/src/application/telemetry/CompositeTelemetryExporter.ts +13 -0
- package/src/application/telemetry/LazyExecutionTelemetryFactory.ts +21 -0
- package/src/application/telemetry/NoOpTelemetryExporter.ts +7 -0
- package/src/application/telemetry/OtelExecutionTelemetry.types.ts +41 -0
- package/src/application/telemetry/OtelExecutionTelemetryFactory.ts +56 -0
- package/src/application/telemetry/OtelIdentityFactory.ts +41 -0
- package/src/application/telemetry/RunEventBusTelemetryReporter.ts +188 -0
- package/src/application/telemetry/StoredExecutionTelemetry.ts +56 -0
- package/src/application/telemetry/StoredNodeExecutionTelemetry.ts +35 -0
- package/src/application/telemetry/StoredTelemetrySpanScope.ts +188 -0
- package/src/application/telemetry/TelemetryEnricherChain.ts +85 -0
- package/src/application/telemetry/TelemetryPrivacyPolicy.ts +19 -0
- package/src/application/telemetry/TelemetryQueryService.ts +815 -0
- package/src/application/telemetry/TelemetryRetentionTimestampFactory.ts +40 -0
- package/src/applicationTokens.ts +18 -0
- package/src/bootstrap/AppContainerFactory.ts +183 -64
- package/src/bootstrap/AppContainerLifecycle.ts +8 -0
- package/src/bootstrap/CodemationContainerRegistrationRegistrar.ts +1 -3
- package/src/bootstrap/runtime/FrontendRuntime.ts +8 -0
- package/src/bootstrap/runtime/WorkerRuntime.ts +8 -0
- package/src/domain/runs/WorkflowRunRepository.ts +3 -1
- package/src/domain/telemetry/TelemetryContracts.ts +197 -0
- package/src/infrastructure/config/CodemationPluginRegistrar.ts +2 -6
- package/src/infrastructure/di/HandlesDomainEventRegistry.ts +5 -7
- package/src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts +56 -0
- package/src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts +56 -0
- package/src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts +97 -0
- package/src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts +113 -0
- package/src/infrastructure/persistence/InMemoryWorkflowRunRepository.ts +4 -2
- package/src/infrastructure/persistence/PrismaRunTraceContextRepository.ts +92 -0
- package/src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts +125 -0
- package/src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts +134 -0
- package/src/infrastructure/persistence/PrismaTelemetrySpanStore.ts +166 -0
- package/src/infrastructure/persistence/PrismaWorkflowRunRepository.ts +20 -7
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/edge.js +85 -4
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/index-browser.js +81 -0
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.d.ts +6488 -102
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/index.js +85 -4
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/package.json +1 -1
- package/src/infrastructure/persistence/generated/prisma-postgresql-client/schema.prisma +100 -0
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/edge.js +85 -4
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/index-browser.js +81 -0
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.d.ts +6476 -98
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/index.js +85 -4
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/package.json +1 -1
- package/src/infrastructure/persistence/generated/prisma-sqlite-client/schema.prisma +100 -0
- package/src/presentation/http/ApiPaths.ts +22 -0
- package/src/presentation/http/hono/registrars/AuthHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/BinaryHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/CredentialHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/DevHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/RunHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts +17 -0
- package/src/presentation/http/hono/registrars/UserHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/WebhookHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/WhitelabelHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/hono/registrars/WorkflowHonoApiRouteRegistrar.ts +1 -3
- package/src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts +1 -0
- package/src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts +181 -0
- package/dist/AppContainerFactory-CcSGFNLW.js.map +0 -1
- package/dist/CodemationPluginListMerger-QvUa2SIt.d.ts +0 -357
- package/dist/CredentialServices-BPKUF8Xs.js.map +0 -1
- 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-
|
|
6
|
-
import { i as require_client$2, r as PrismaMigrationDeployer } from "./AppConfigFactory-
|
|
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
|
|
11
|
+
import { AgentConfigInspector, AgentConnectionNodeCollector, CoreTokens, CostTrackingTelemetryAttributeNames, CostTrackingTelemetryMetricNames, DefaultExecutionBinaryService, EventPublishingWorkflowExecutionRepository, GenAiTelemetryAttributeNames, InMemoryLiveWorkflowRepository, InMemoryRunEventBus, ItemsInputNormalizer, NoOpTelemetryArtifactReference, RunFinishedAtFactory, SystemClock, container, getPersistedRuntimeTypeMetadata, inject, injectAll, injectable, instanceCachingFactory } 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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
988
|
-
typeof (_ref2$
|
|
989
|
-
typeof (_ref3$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1116
|
-
typeof (_ref2$
|
|
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$
|
|
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$
|
|
1177
|
-
typeof (_ref2$
|
|
1178
|
-
typeof (_ref3$
|
|
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$
|
|
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$
|
|
1367
|
-
typeof (_ref2$
|
|
1368
|
-
typeof (_ref3$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2645
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$45 = typeof RunBinaryAttachmentLookupService !== "undefined" && RunBinaryAttachmentLookupService) === "function" ? _ref$45 : Object])
|
|
1956
2646
|
], GetWorkflowOverlayBinaryAttachmentQueryHandler);
|
|
1957
2647
|
|
|
1958
2648
|
//#endregion
|
|
@@ -2018,13 +2708,13 @@ var CodemationPluginRegistrar = class {
|
|
|
2018
2708
|
loggerFactory: args.loggerFactory,
|
|
2019
2709
|
registerCredentialType: (type) => args.registerCredentialType(type),
|
|
2020
2710
|
registerNode: (token, implementation) => {
|
|
2021
|
-
args.container.
|
|
2711
|
+
args.container.registerSingleton(token, implementation ?? token);
|
|
2022
2712
|
},
|
|
2023
2713
|
registerValue: (token, value) => {
|
|
2024
2714
|
args.container.registerInstance(token, value);
|
|
2025
2715
|
},
|
|
2026
2716
|
registerClass: (token, implementation) => {
|
|
2027
|
-
args.container.
|
|
2717
|
+
args.container.registerSingleton(token, implementation);
|
|
2028
2718
|
},
|
|
2029
2719
|
registerFactory: (token, factory) => {
|
|
2030
2720
|
args.container.register(token, { useFactory: (dependencyContainer) => factory(dependencyContainer) });
|
|
@@ -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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
5339
|
+
var _ref$29, _ref2$5;
|
|
3953
5340
|
let AuthHonoApiRouteRegistrar = class AuthHonoApiRouteRegistrar$1 {
|
|
3954
5341
|
constructor(handler, betterAuthRuntime) {
|
|
3955
5342
|
this.handler = handler;
|
|
@@ -3969,18 +5356,14 @@ let AuthHonoApiRouteRegistrar = class AuthHonoApiRouteRegistrar$1 {
|
|
|
3969
5356
|
};
|
|
3970
5357
|
AuthHonoApiRouteRegistrar = __decorate([
|
|
3971
5358
|
injectable(),
|
|
3972
|
-
registry([{
|
|
3973
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
3974
|
-
useClass: AuthHonoApiRouteRegistrar
|
|
3975
|
-
}]),
|
|
3976
5359
|
__decorateParam(0, inject(AuthHttpRouteHandler)),
|
|
3977
5360
|
__decorateParam(1, inject(CodemationBetterAuthRuntime)),
|
|
3978
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5361
|
+
__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
5362
|
], AuthHonoApiRouteRegistrar);
|
|
3980
5363
|
|
|
3981
5364
|
//#endregion
|
|
3982
5365
|
//#region src/presentation/http/hono/registrars/BinaryHonoApiRouteRegistrar.ts
|
|
3983
|
-
var _ref$
|
|
5366
|
+
var _ref$28;
|
|
3984
5367
|
let BinaryHonoApiRouteRegistrar = class BinaryHonoApiRouteRegistrar$1 {
|
|
3985
5368
|
constructor(handler) {
|
|
3986
5369
|
this.handler = handler;
|
|
@@ -3994,17 +5377,13 @@ let BinaryHonoApiRouteRegistrar = class BinaryHonoApiRouteRegistrar$1 {
|
|
|
3994
5377
|
};
|
|
3995
5378
|
BinaryHonoApiRouteRegistrar = __decorate([
|
|
3996
5379
|
injectable(),
|
|
3997
|
-
registry([{
|
|
3998
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
3999
|
-
useClass: BinaryHonoApiRouteRegistrar
|
|
4000
|
-
}]),
|
|
4001
5380
|
__decorateParam(0, inject(BinaryHttpRouteHandler)),
|
|
4002
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5381
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$28 = typeof BinaryHttpRouteHandler !== "undefined" && BinaryHttpRouteHandler) === "function" ? _ref$28 : Object])
|
|
4003
5382
|
], BinaryHonoApiRouteRegistrar);
|
|
4004
5383
|
|
|
4005
5384
|
//#endregion
|
|
4006
5385
|
//#region src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts
|
|
4007
|
-
var _ref$
|
|
5386
|
+
var _ref$27, _ref2$4;
|
|
4008
5387
|
let BootstrapHonoApiRouteRegistrar = class BootstrapHonoApiRouteRegistrar$1 {
|
|
4009
5388
|
constructor(publicFrontendBootstrapHttpRouteHandler, internalAuthBootstrapHttpRouteHandler) {
|
|
4010
5389
|
this.publicFrontendBootstrapHttpRouteHandler = publicFrontendBootstrapHttpRouteHandler;
|
|
@@ -4020,13 +5399,9 @@ let BootstrapHonoApiRouteRegistrar = class BootstrapHonoApiRouteRegistrar$1 {
|
|
|
4020
5399
|
};
|
|
4021
5400
|
BootstrapHonoApiRouteRegistrar = __decorate([
|
|
4022
5401
|
injectable(),
|
|
4023
|
-
registry([{
|
|
4024
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4025
|
-
useClass: BootstrapHonoApiRouteRegistrar
|
|
4026
|
-
}]),
|
|
4027
5402
|
__decorateParam(0, inject(PublicFrontendBootstrapHttpRouteHandler)),
|
|
4028
5403
|
__decorateParam(1, inject(InternalAuthBootstrapHttpRouteHandler)),
|
|
4029
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5404
|
+
__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
5405
|
], BootstrapHonoApiRouteRegistrar);
|
|
4031
5406
|
|
|
4032
5407
|
//#endregion
|
|
@@ -4134,7 +5509,7 @@ CredentialHttpRouteHandler = __decorate([
|
|
|
4134
5509
|
|
|
4135
5510
|
//#endregion
|
|
4136
5511
|
//#region src/presentation/http/hono/registrars/CredentialHonoApiRouteRegistrar.ts
|
|
4137
|
-
var _ref$
|
|
5512
|
+
var _ref$26;
|
|
4138
5513
|
let CredentialHonoApiRouteRegistrar = class CredentialHonoApiRouteRegistrar$1 {
|
|
4139
5514
|
constructor(handler) {
|
|
4140
5515
|
this.handler = handler;
|
|
@@ -4154,17 +5529,13 @@ let CredentialHonoApiRouteRegistrar = class CredentialHonoApiRouteRegistrar$1 {
|
|
|
4154
5529
|
};
|
|
4155
5530
|
CredentialHonoApiRouteRegistrar = __decorate([
|
|
4156
5531
|
injectable(),
|
|
4157
|
-
registry([{
|
|
4158
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4159
|
-
useClass: CredentialHonoApiRouteRegistrar
|
|
4160
|
-
}]),
|
|
4161
5532
|
__decorateParam(0, inject(CredentialHttpRouteHandler)),
|
|
4162
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5533
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$26 = typeof CredentialHttpRouteHandler !== "undefined" && CredentialHttpRouteHandler) === "function" ? _ref$26 : Object])
|
|
4163
5534
|
], CredentialHonoApiRouteRegistrar);
|
|
4164
5535
|
|
|
4165
5536
|
//#endregion
|
|
4166
5537
|
//#region src/presentation/http/hono/registrars/DevHonoApiRouteRegistrar.ts
|
|
4167
|
-
var _ref$
|
|
5538
|
+
var _ref$25;
|
|
4168
5539
|
let DevHonoApiRouteRegistrar = class DevHonoApiRouteRegistrar$1 {
|
|
4169
5540
|
constructor(handler) {
|
|
4170
5541
|
this.handler = handler;
|
|
@@ -4175,17 +5546,13 @@ let DevHonoApiRouteRegistrar = class DevHonoApiRouteRegistrar$1 {
|
|
|
4175
5546
|
};
|
|
4176
5547
|
DevHonoApiRouteRegistrar = __decorate([
|
|
4177
5548
|
injectable(),
|
|
4178
|
-
registry([{
|
|
4179
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4180
|
-
useClass: DevHonoApiRouteRegistrar
|
|
4181
|
-
}]),
|
|
4182
5549
|
__decorateParam(0, inject(DevBootstrapSummaryHttpRouteHandler)),
|
|
4183
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5550
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$25 = typeof DevBootstrapSummaryHttpRouteHandler !== "undefined" && DevBootstrapSummaryHttpRouteHandler) === "function" ? _ref$25 : Object])
|
|
4184
5551
|
], DevHonoApiRouteRegistrar);
|
|
4185
5552
|
|
|
4186
5553
|
//#endregion
|
|
4187
5554
|
//#region src/presentation/http/routeHandlers/OAuth2HttpRouteHandlerFactory.ts
|
|
4188
|
-
var _ref$
|
|
5555
|
+
var _ref$24, _ref2$3, _OAuth2HttpRouteHandler;
|
|
4189
5556
|
let OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = class OAuth2HttpRouteHandler$1 {
|
|
4190
5557
|
constructor(oauth2ConnectService, credentialInstanceService) {
|
|
4191
5558
|
this.oauth2ConnectService = oauth2ConnectService;
|
|
@@ -4285,12 +5652,12 @@ OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = __decorate([
|
|
|
4285
5652
|
injectable(),
|
|
4286
5653
|
__decorateParam(0, inject(OAuth2ConnectService)),
|
|
4287
5654
|
__decorateParam(1, inject(CredentialInstanceService)),
|
|
4288
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5655
|
+
__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
5656
|
], OAuth2HttpRouteHandler);
|
|
4290
5657
|
|
|
4291
5658
|
//#endregion
|
|
4292
5659
|
//#region src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts
|
|
4293
|
-
var _ref$
|
|
5660
|
+
var _ref$23;
|
|
4294
5661
|
let OAuth2HonoApiRouteRegistrar = class OAuth2HonoApiRouteRegistrar$1 {
|
|
4295
5662
|
constructor(handler) {
|
|
4296
5663
|
this.handler = handler;
|
|
@@ -4304,12 +5671,8 @@ let OAuth2HonoApiRouteRegistrar = class OAuth2HonoApiRouteRegistrar$1 {
|
|
|
4304
5671
|
};
|
|
4305
5672
|
OAuth2HonoApiRouteRegistrar = __decorate([
|
|
4306
5673
|
injectable(),
|
|
4307
|
-
registry([{
|
|
4308
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4309
|
-
useClass: OAuth2HonoApiRouteRegistrar
|
|
4310
|
-
}]),
|
|
4311
5674
|
__decorateParam(0, inject(OAuth2HttpRouteHandler)),
|
|
4312
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5675
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$23 = typeof OAuth2HttpRouteHandler !== "undefined" && OAuth2HttpRouteHandler) === "function" ? _ref$23 : Object])
|
|
4313
5676
|
], OAuth2HonoApiRouteRegistrar);
|
|
4314
5677
|
|
|
4315
5678
|
//#endregion
|
|
@@ -4379,7 +5742,7 @@ RunHttpRouteHandler = __decorate([
|
|
|
4379
5742
|
|
|
4380
5743
|
//#endregion
|
|
4381
5744
|
//#region src/presentation/http/hono/registrars/RunHonoApiRouteRegistrar.ts
|
|
4382
|
-
var _ref$
|
|
5745
|
+
var _ref$22;
|
|
4383
5746
|
let RunHonoApiRouteRegistrar = class RunHonoApiRouteRegistrar$1 {
|
|
4384
5747
|
constructor(handler) {
|
|
4385
5748
|
this.handler = handler;
|
|
@@ -4399,15 +5762,150 @@ let RunHonoApiRouteRegistrar = class RunHonoApiRouteRegistrar$1 {
|
|
|
4399
5762
|
}));
|
|
4400
5763
|
}
|
|
4401
5764
|
};
|
|
4402
|
-
RunHonoApiRouteRegistrar = __decorate([
|
|
5765
|
+
RunHonoApiRouteRegistrar = __decorate([
|
|
5766
|
+
injectable(),
|
|
5767
|
+
__decorateParam(0, inject(RunHttpRouteHandler)),
|
|
5768
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$22 = typeof RunHttpRouteHandler !== "undefined" && RunHttpRouteHandler) === "function" ? _ref$22 : Object])
|
|
5769
|
+
], RunHonoApiRouteRegistrar);
|
|
5770
|
+
|
|
5771
|
+
//#endregion
|
|
5772
|
+
//#region src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts
|
|
5773
|
+
var TelemetryDashboardRequestError = class extends Error {};
|
|
5774
|
+
|
|
5775
|
+
//#endregion
|
|
5776
|
+
//#region src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts
|
|
5777
|
+
let TelemetryHttpRouteHandler = class TelemetryHttpRouteHandler$1 {
|
|
5778
|
+
constructor(queryBus) {
|
|
5779
|
+
this.queryBus = queryBus;
|
|
5780
|
+
}
|
|
5781
|
+
async getDashboardSummary(request) {
|
|
5782
|
+
try {
|
|
5783
|
+
const filters = this.parseFilters(request);
|
|
5784
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardSummaryQuery(filters)));
|
|
5785
|
+
} catch (error) {
|
|
5786
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5787
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5788
|
+
}
|
|
5789
|
+
}
|
|
5790
|
+
async getDashboardTimeseries(request) {
|
|
5791
|
+
try {
|
|
5792
|
+
const parsed = this.parseTimeseriesRequest(request);
|
|
5793
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardTimeseriesQuery(parsed)));
|
|
5794
|
+
} catch (error) {
|
|
5795
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5796
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5797
|
+
}
|
|
5798
|
+
}
|
|
5799
|
+
async getDashboardDimensions(request) {
|
|
5800
|
+
try {
|
|
5801
|
+
const filters = this.parseFilters(request);
|
|
5802
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardDimensionsQuery(filters)));
|
|
5803
|
+
} catch (error) {
|
|
5804
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5805
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5806
|
+
}
|
|
5807
|
+
}
|
|
5808
|
+
async getDashboardRuns(request) {
|
|
5809
|
+
try {
|
|
5810
|
+
const parsed = this.parseRunsRequest(request);
|
|
5811
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardRunsQuery(parsed)));
|
|
5812
|
+
} catch (error) {
|
|
5813
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5814
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5815
|
+
}
|
|
5816
|
+
}
|
|
5817
|
+
async getRunTrace(runId) {
|
|
5818
|
+
try {
|
|
5819
|
+
if (!runId.trim()) throw new TelemetryDashboardRequestError("Run trace request requires a run id.");
|
|
5820
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryRunTraceQuery(runId)));
|
|
5821
|
+
} catch (error) {
|
|
5822
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5823
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5824
|
+
}
|
|
5825
|
+
}
|
|
5826
|
+
parseTimeseriesRequest(request) {
|
|
5827
|
+
const interval = new URL(request.url).searchParams.get("interval");
|
|
5828
|
+
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.");
|
|
5829
|
+
return {
|
|
5830
|
+
interval,
|
|
5831
|
+
filters: this.parseFilters(request)
|
|
5832
|
+
};
|
|
5833
|
+
}
|
|
5834
|
+
parseRunsRequest(request) {
|
|
5835
|
+
const url = new URL(request.url);
|
|
5836
|
+
return {
|
|
5837
|
+
filters: this.parseFilters(request),
|
|
5838
|
+
page: this.readPositiveInt(url, "page", 1),
|
|
5839
|
+
pageSize: this.readPositiveInt(url, "pageSize", 10)
|
|
5840
|
+
};
|
|
5841
|
+
}
|
|
5842
|
+
parseFilters(request) {
|
|
5843
|
+
const url = new URL(request.url);
|
|
5844
|
+
return {
|
|
5845
|
+
workflowIds: this.readMany(url, "workflowId"),
|
|
5846
|
+
statuses: this.readStatuses(url),
|
|
5847
|
+
runOrigins: this.readRunOrigins(url),
|
|
5848
|
+
modelNames: this.readMany(url, "modelName"),
|
|
5849
|
+
startTimeGte: this.readIso(url, "startTimeGte"),
|
|
5850
|
+
endTimeLte: this.readIso(url, "endTimeLte")
|
|
5851
|
+
};
|
|
5852
|
+
}
|
|
5853
|
+
readMany(url, key) {
|
|
5854
|
+
const values = url.searchParams.getAll(key).map((value) => value.trim()).filter((value) => value.length > 0);
|
|
5855
|
+
return values.length > 0 ? values : void 0;
|
|
5856
|
+
}
|
|
5857
|
+
readStatuses(url) {
|
|
5858
|
+
const values = this.readMany(url, "status");
|
|
5859
|
+
if (!values) return;
|
|
5860
|
+
for (const value of values) if (value !== "running" && value !== "completed" && value !== "failed") throw new TelemetryDashboardRequestError(`Unsupported telemetry status filter: ${value}`);
|
|
5861
|
+
return values;
|
|
5862
|
+
}
|
|
5863
|
+
readRunOrigins(url) {
|
|
5864
|
+
const values = this.readMany(url, "runOrigin");
|
|
5865
|
+
if (!values) return;
|
|
5866
|
+
for (const value of values) if (value !== "triggered" && value !== "manual") throw new TelemetryDashboardRequestError(`Unsupported telemetry run origin filter: ${value}`);
|
|
5867
|
+
return values;
|
|
5868
|
+
}
|
|
5869
|
+
readIso(url, key) {
|
|
5870
|
+
const value = url.searchParams.get(key)?.trim();
|
|
5871
|
+
if (!value) return;
|
|
5872
|
+
if (Number.isNaN(new Date(value).getTime())) throw new TelemetryDashboardRequestError(`Invalid ISO timestamp for ${key}.`);
|
|
5873
|
+
return value;
|
|
5874
|
+
}
|
|
5875
|
+
readPositiveInt(url, key, fallback) {
|
|
5876
|
+
const raw$1 = url.searchParams.get(key)?.trim();
|
|
5877
|
+
if (!raw$1) return fallback;
|
|
5878
|
+
const value = Number(raw$1);
|
|
5879
|
+
if (!Number.isInteger(value) || value <= 0) throw new TelemetryDashboardRequestError(`${key} must be a positive integer.`);
|
|
5880
|
+
return value;
|
|
5881
|
+
}
|
|
5882
|
+
};
|
|
5883
|
+
TelemetryHttpRouteHandler = __decorate([
|
|
5884
|
+
injectable(),
|
|
5885
|
+
__decorateParam(0, inject(ApplicationTokens.QueryBus)),
|
|
5886
|
+
__decorateMetadata("design:paramtypes", [Object])
|
|
5887
|
+
], TelemetryHttpRouteHandler);
|
|
5888
|
+
|
|
5889
|
+
//#endregion
|
|
5890
|
+
//#region src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts
|
|
5891
|
+
var _ref$21;
|
|
5892
|
+
let TelemetryHonoApiRouteRegistrar = class TelemetryHonoApiRouteRegistrar$1 {
|
|
5893
|
+
constructor(handler) {
|
|
5894
|
+
this.handler = handler;
|
|
5895
|
+
}
|
|
5896
|
+
register(app) {
|
|
5897
|
+
app.get("/telemetry/dashboard/summary", (c) => this.handler.getDashboardSummary(c.req.raw));
|
|
5898
|
+
app.get("/telemetry/dashboard/timeseries", (c) => this.handler.getDashboardTimeseries(c.req.raw));
|
|
5899
|
+
app.get("/telemetry/dashboard/dimensions", (c) => this.handler.getDashboardDimensions(c.req.raw));
|
|
5900
|
+
app.get("/telemetry/dashboard/runs", (c) => this.handler.getDashboardRuns(c.req.raw));
|
|
5901
|
+
app.get("/telemetry/runs/:runId/trace", (c) => this.handler.getRunTrace(c.req.param("runId")));
|
|
5902
|
+
}
|
|
5903
|
+
};
|
|
5904
|
+
TelemetryHonoApiRouteRegistrar = __decorate([
|
|
4403
5905
|
injectable(),
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
}]),
|
|
4408
|
-
__decorateParam(0, inject(RunHttpRouteHandler)),
|
|
4409
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$14 = typeof RunHttpRouteHandler !== "undefined" && RunHttpRouteHandler) === "function" ? _ref$14 : Object])
|
|
4410
|
-
], RunHonoApiRouteRegistrar);
|
|
5906
|
+
__decorateParam(0, inject(TelemetryHttpRouteHandler)),
|
|
5907
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$21 = typeof TelemetryHttpRouteHandler !== "undefined" && TelemetryHttpRouteHandler) === "function" ? _ref$21 : Object])
|
|
5908
|
+
], TelemetryHonoApiRouteRegistrar);
|
|
4411
5909
|
|
|
4412
5910
|
//#endregion
|
|
4413
5911
|
//#region src/presentation/http/routeHandlers/UserHttpRouteHandlerFactory.ts
|
|
@@ -4490,7 +5988,7 @@ UserHttpRouteHandler = __decorate([
|
|
|
4490
5988
|
|
|
4491
5989
|
//#endregion
|
|
4492
5990
|
//#region src/presentation/http/hono/registrars/UserHonoApiRouteRegistrar.ts
|
|
4493
|
-
var _ref$
|
|
5991
|
+
var _ref$20;
|
|
4494
5992
|
let UserHonoApiRouteRegistrar = class UserHonoApiRouteRegistrar$1 {
|
|
4495
5993
|
constructor(handler) {
|
|
4496
5994
|
this.handler = handler;
|
|
@@ -4506,12 +6004,8 @@ let UserHonoApiRouteRegistrar = class UserHonoApiRouteRegistrar$1 {
|
|
|
4506
6004
|
};
|
|
4507
6005
|
UserHonoApiRouteRegistrar = __decorate([
|
|
4508
6006
|
injectable(),
|
|
4509
|
-
registry([{
|
|
4510
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4511
|
-
useClass: UserHonoApiRouteRegistrar
|
|
4512
|
-
}]),
|
|
4513
6007
|
__decorateParam(0, inject(UserHttpRouteHandler)),
|
|
4514
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6008
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$20 = typeof UserHttpRouteHandler !== "undefined" && UserHttpRouteHandler) === "function" ? _ref$20 : Object])
|
|
4515
6009
|
], UserHonoApiRouteRegistrar);
|
|
4516
6010
|
|
|
4517
6011
|
//#endregion
|
|
@@ -4612,7 +6106,7 @@ RequestToWebhookItemMapper = __decorate([
|
|
|
4612
6106
|
|
|
4613
6107
|
//#endregion
|
|
4614
6108
|
//#region src/presentation/http/routeHandlers/WebhookHttpRouteHandler.ts
|
|
4615
|
-
var _ref$
|
|
6109
|
+
var _ref$19, _ref2$2;
|
|
4616
6110
|
let WebhookHttpRouteHandler = class WebhookHttpRouteHandler$1 {
|
|
4617
6111
|
constructor(commandBus, runIntentService, requestToWebhookItemMapper) {
|
|
4618
6112
|
this.commandBus = commandBus;
|
|
@@ -4643,14 +6137,14 @@ WebhookHttpRouteHandler = __decorate([
|
|
|
4643
6137
|
__decorateParam(2, inject(RequestToWebhookItemMapper)),
|
|
4644
6138
|
__decorateMetadata("design:paramtypes", [
|
|
4645
6139
|
Object,
|
|
4646
|
-
typeof (_ref$
|
|
6140
|
+
typeof (_ref$19 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$19 : Object,
|
|
4647
6141
|
typeof (_ref2$2 = typeof RequestToWebhookItemMapper !== "undefined" && RequestToWebhookItemMapper) === "function" ? _ref2$2 : Object
|
|
4648
6142
|
])
|
|
4649
6143
|
], WebhookHttpRouteHandler);
|
|
4650
6144
|
|
|
4651
6145
|
//#endregion
|
|
4652
6146
|
//#region src/presentation/http/hono/registrars/WebhookHonoApiRouteRegistrar.ts
|
|
4653
|
-
var _ref$
|
|
6147
|
+
var _ref$18;
|
|
4654
6148
|
let WebhookHonoApiRouteRegistrar = class WebhookHonoApiRouteRegistrar$1 {
|
|
4655
6149
|
constructor(handler) {
|
|
4656
6150
|
this.handler = handler;
|
|
@@ -4667,17 +6161,13 @@ let WebhookHonoApiRouteRegistrar = class WebhookHonoApiRouteRegistrar$1 {
|
|
|
4667
6161
|
};
|
|
4668
6162
|
WebhookHonoApiRouteRegistrar = __decorate([
|
|
4669
6163
|
injectable(),
|
|
4670
|
-
registry([{
|
|
4671
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4672
|
-
useClass: WebhookHonoApiRouteRegistrar
|
|
4673
|
-
}]),
|
|
4674
6164
|
__decorateParam(0, inject(WebhookHttpRouteHandler)),
|
|
4675
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6165
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$18 = typeof WebhookHttpRouteHandler !== "undefined" && WebhookHttpRouteHandler) === "function" ? _ref$18 : Object])
|
|
4676
6166
|
], WebhookHonoApiRouteRegistrar);
|
|
4677
6167
|
|
|
4678
6168
|
//#endregion
|
|
4679
6169
|
//#region src/presentation/http/hono/registrars/WhitelabelHonoApiRouteRegistrar.ts
|
|
4680
|
-
var _ref$
|
|
6170
|
+
var _ref$17;
|
|
4681
6171
|
let WhitelabelHonoApiRouteRegistrar = class WhitelabelHonoApiRouteRegistrar$1 {
|
|
4682
6172
|
constructor(whitelabelLogoHttpRouteHandler) {
|
|
4683
6173
|
this.whitelabelLogoHttpRouteHandler = whitelabelLogoHttpRouteHandler;
|
|
@@ -4688,17 +6178,13 @@ let WhitelabelHonoApiRouteRegistrar = class WhitelabelHonoApiRouteRegistrar$1 {
|
|
|
4688
6178
|
};
|
|
4689
6179
|
WhitelabelHonoApiRouteRegistrar = __decorate([
|
|
4690
6180
|
injectable(),
|
|
4691
|
-
registry([{
|
|
4692
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4693
|
-
useClass: WhitelabelHonoApiRouteRegistrar
|
|
4694
|
-
}]),
|
|
4695
6181
|
__decorateParam(0, inject(WhitelabelLogoHttpRouteHandler)),
|
|
4696
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6182
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$17 = typeof WhitelabelLogoHttpRouteHandler !== "undefined" && WhitelabelLogoHttpRouteHandler) === "function" ? _ref$17 : Object])
|
|
4697
6183
|
], WhitelabelHonoApiRouteRegistrar);
|
|
4698
6184
|
|
|
4699
6185
|
//#endregion
|
|
4700
6186
|
//#region src/presentation/http/routeHandlers/WorkflowHttpRouteHandler.ts
|
|
4701
|
-
var _ref$
|
|
6187
|
+
var _ref$16;
|
|
4702
6188
|
let WorkflowHttpRouteHandler = class WorkflowHttpRouteHandler$1 {
|
|
4703
6189
|
constructor(queryBus, commandBus, workflowDefinitionMapper) {
|
|
4704
6190
|
this.queryBus = queryBus;
|
|
@@ -4772,13 +6258,13 @@ WorkflowHttpRouteHandler = __decorate([
|
|
|
4772
6258
|
__decorateMetadata("design:paramtypes", [
|
|
4773
6259
|
Object,
|
|
4774
6260
|
Object,
|
|
4775
|
-
typeof (_ref$
|
|
6261
|
+
typeof (_ref$16 = typeof WorkflowDefinitionMapper !== "undefined" && WorkflowDefinitionMapper) === "function" ? _ref$16 : Object
|
|
4776
6262
|
])
|
|
4777
6263
|
], WorkflowHttpRouteHandler);
|
|
4778
6264
|
|
|
4779
6265
|
//#endregion
|
|
4780
6266
|
//#region src/presentation/http/hono/registrars/WorkflowHonoApiRouteRegistrar.ts
|
|
4781
|
-
var _ref$
|
|
6267
|
+
var _ref$15;
|
|
4782
6268
|
let WorkflowHonoApiRouteRegistrar = class WorkflowHonoApiRouteRegistrar$1 {
|
|
4783
6269
|
constructor(handler) {
|
|
4784
6270
|
this.handler = handler;
|
|
@@ -4795,12 +6281,8 @@ let WorkflowHonoApiRouteRegistrar = class WorkflowHonoApiRouteRegistrar$1 {
|
|
|
4795
6281
|
};
|
|
4796
6282
|
WorkflowHonoApiRouteRegistrar = __decorate([
|
|
4797
6283
|
injectable(),
|
|
4798
|
-
registry([{
|
|
4799
|
-
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4800
|
-
useClass: WorkflowHonoApiRouteRegistrar
|
|
4801
|
-
}]),
|
|
4802
6284
|
__decorateParam(0, inject(WorkflowHttpRouteHandler)),
|
|
4803
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6285
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$15 = typeof WorkflowHttpRouteHandler !== "undefined" && WorkflowHttpRouteHandler) === "function" ? _ref$15 : Object])
|
|
4804
6286
|
], WorkflowHonoApiRouteRegistrar);
|
|
4805
6287
|
|
|
4806
6288
|
//#endregion
|
|
@@ -4841,7 +6323,7 @@ CodemationIdFactory = __decorate([injectable()], CodemationIdFactory);
|
|
|
4841
6323
|
|
|
4842
6324
|
//#endregion
|
|
4843
6325
|
//#region src/infrastructure/di/InMemoryCommandBus.ts
|
|
4844
|
-
var _ref$
|
|
6326
|
+
var _ref$14;
|
|
4845
6327
|
let InMemoryCommandBus = class InMemoryCommandBus$1 {
|
|
4846
6328
|
handlersByCommandType;
|
|
4847
6329
|
constructor(handlers) {
|
|
@@ -4866,7 +6348,7 @@ let InMemoryCommandBus = class InMemoryCommandBus$1 {
|
|
|
4866
6348
|
InMemoryCommandBus = __decorate([
|
|
4867
6349
|
injectable(),
|
|
4868
6350
|
__decorateParam(0, injectAll(ApplicationTokens.CommandHandler)),
|
|
4869
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6351
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$14 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$14 : Object])
|
|
4870
6352
|
], InMemoryCommandBus);
|
|
4871
6353
|
|
|
4872
6354
|
//#endregion
|
|
@@ -4875,7 +6357,7 @@ const domainEventHandlerMetadataKey = Symbol.for("codemation.infrastructure.di.D
|
|
|
4875
6357
|
|
|
4876
6358
|
//#endregion
|
|
4877
6359
|
//#region src/infrastructure/di/InMemoryDomainEventBus.ts
|
|
4878
|
-
var _ref$
|
|
6360
|
+
var _ref$13;
|
|
4879
6361
|
let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
|
|
4880
6362
|
handlersByEventType;
|
|
4881
6363
|
constructor(handlers) {
|
|
@@ -4900,12 +6382,12 @@ let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
|
|
|
4900
6382
|
InMemoryDomainEventBus = __decorate([
|
|
4901
6383
|
injectable(),
|
|
4902
6384
|
__decorateParam(0, injectAll(ApplicationTokens.DomainEventHandler)),
|
|
4903
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6385
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$13 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$13 : Object])
|
|
4904
6386
|
], InMemoryDomainEventBus);
|
|
4905
6387
|
|
|
4906
6388
|
//#endregion
|
|
4907
6389
|
//#region src/infrastructure/di/InMemoryQueryBus.ts
|
|
4908
|
-
var _ref$
|
|
6390
|
+
var _ref$12;
|
|
4909
6391
|
let InMemoryQueryBus = class InMemoryQueryBus$1 {
|
|
4910
6392
|
handlersByQueryType;
|
|
4911
6393
|
constructor(handlers) {
|
|
@@ -4930,7 +6412,7 @@ let InMemoryQueryBus = class InMemoryQueryBus$1 {
|
|
|
4930
6412
|
InMemoryQueryBus = __decorate([
|
|
4931
6413
|
injectable(),
|
|
4932
6414
|
__decorateParam(0, injectAll(ApplicationTokens.QueryHandler)),
|
|
4933
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6415
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$12 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$12 : Object])
|
|
4934
6416
|
], InMemoryQueryBus);
|
|
4935
6417
|
|
|
4936
6418
|
//#endregion
|
|
@@ -5141,7 +6623,7 @@ var CodemationBetterAuthBaseUrlPolicy = class {
|
|
|
5141
6623
|
|
|
5142
6624
|
//#endregion
|
|
5143
6625
|
//#region src/infrastructure/auth/CodemationSessionVerifier.ts
|
|
5144
|
-
var _ref$
|
|
6626
|
+
var _ref$11;
|
|
5145
6627
|
let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
|
|
5146
6628
|
constructor(betterAuthApiSessionVerifier) {
|
|
5147
6629
|
this.betterAuthApiSessionVerifier = betterAuthApiSessionVerifier;
|
|
@@ -5153,7 +6635,7 @@ let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
|
|
|
5153
6635
|
CodemationSessionVerifier = __decorate([
|
|
5154
6636
|
injectable(),
|
|
5155
6637
|
__decorateParam(0, inject(BetterAuthApiSessionVerifier)),
|
|
5156
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6638
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$11 = typeof BetterAuthApiSessionVerifier !== "undefined" && BetterAuthApiSessionVerifier) === "function" ? _ref$11 : Object])
|
|
5157
6639
|
], CodemationSessionVerifier);
|
|
5158
6640
|
|
|
5159
6641
|
//#endregion
|
|
@@ -5536,6 +7018,234 @@ let InMemoryTriggerSetupStateRepository = class InMemoryTriggerSetupStateReposit
|
|
|
5536
7018
|
};
|
|
5537
7019
|
InMemoryTriggerSetupStateRepository = __decorate([injectable()], InMemoryTriggerSetupStateRepository);
|
|
5538
7020
|
|
|
7021
|
+
//#endregion
|
|
7022
|
+
//#region src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts
|
|
7023
|
+
var _ref$10;
|
|
7024
|
+
let InMemoryRunTraceContextRepository = class InMemoryRunTraceContextRepository$1 {
|
|
7025
|
+
rows = /* @__PURE__ */ new Map();
|
|
7026
|
+
constructor(otelIdentityFactory) {
|
|
7027
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7028
|
+
}
|
|
7029
|
+
async load(runId) {
|
|
7030
|
+
return this.rows.get(decodeURIComponent(runId));
|
|
7031
|
+
}
|
|
7032
|
+
async getOrCreate(args) {
|
|
7033
|
+
const key = decodeURIComponent(args.runId);
|
|
7034
|
+
const existing = this.rows.get(key);
|
|
7035
|
+
if (existing) return existing;
|
|
7036
|
+
const created = {
|
|
7037
|
+
runId: key,
|
|
7038
|
+
workflowId: decodeURIComponent(args.workflowId),
|
|
7039
|
+
traceId: this.otelIdentityFactory.createTraceId(key),
|
|
7040
|
+
rootSpanId: this.otelIdentityFactory.createRootSpanId(key),
|
|
7041
|
+
serviceName: args.serviceName,
|
|
7042
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
7043
|
+
};
|
|
7044
|
+
this.rows.set(key, created);
|
|
7045
|
+
return created;
|
|
7046
|
+
}
|
|
7047
|
+
async upsertExpiry(args) {
|
|
7048
|
+
const key = decodeURIComponent(args.runId);
|
|
7049
|
+
const existing = this.rows.get(key);
|
|
7050
|
+
if (!existing) return;
|
|
7051
|
+
this.rows.set(key, {
|
|
7052
|
+
...existing,
|
|
7053
|
+
expiresAt: this.resolveLaterExpiry(existing.expiresAt, args.expiresAt)
|
|
7054
|
+
});
|
|
7055
|
+
}
|
|
7056
|
+
resolveLaterExpiry(current, candidate) {
|
|
7057
|
+
if (!current) return candidate;
|
|
7058
|
+
if (!candidate) return current;
|
|
7059
|
+
return current >= candidate ? current : candidate;
|
|
7060
|
+
}
|
|
7061
|
+
};
|
|
7062
|
+
InMemoryRunTraceContextRepository = __decorate([
|
|
7063
|
+
injectable(),
|
|
7064
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7065
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$10 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$10 : Object])
|
|
7066
|
+
], InMemoryRunTraceContextRepository);
|
|
7067
|
+
|
|
7068
|
+
//#endregion
|
|
7069
|
+
//#region src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts
|
|
7070
|
+
var _ref$9;
|
|
7071
|
+
let InMemoryTelemetryArtifactStore = class InMemoryTelemetryArtifactStore$1 {
|
|
7072
|
+
rows = /* @__PURE__ */ new Map();
|
|
7073
|
+
constructor(otelIdentityFactory) {
|
|
7074
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7075
|
+
}
|
|
7076
|
+
async save(record) {
|
|
7077
|
+
const created = {
|
|
7078
|
+
artifactId: this.otelIdentityFactory.createArtifactId(),
|
|
7079
|
+
traceId: record.traceId,
|
|
7080
|
+
spanId: record.spanId,
|
|
7081
|
+
runId: record.runId,
|
|
7082
|
+
workflowId: record.workflowId,
|
|
7083
|
+
nodeId: record.nodeId,
|
|
7084
|
+
activationId: record.activationId,
|
|
7085
|
+
kind: record.kind,
|
|
7086
|
+
contentType: record.contentType,
|
|
7087
|
+
previewText: record.previewText,
|
|
7088
|
+
previewJson: record.previewJson,
|
|
7089
|
+
payloadText: record.payloadText,
|
|
7090
|
+
payloadJson: record.payloadJson,
|
|
7091
|
+
bytes: record.bytes,
|
|
7092
|
+
truncated: record.truncated,
|
|
7093
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
7094
|
+
expiresAt: record.expiresAt?.toISOString(),
|
|
7095
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
7096
|
+
};
|
|
7097
|
+
this.rows.set(created.artifactId, created);
|
|
7098
|
+
return created;
|
|
7099
|
+
}
|
|
7100
|
+
async listByTraceId(traceId) {
|
|
7101
|
+
return [...this.rows.values()].filter((row) => row.traceId === traceId).sort((left, right) => left.createdAt.localeCompare(right.createdAt));
|
|
7102
|
+
}
|
|
7103
|
+
async pruneExpired(args) {
|
|
7104
|
+
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);
|
|
7105
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7106
|
+
return candidates.length;
|
|
7107
|
+
}
|
|
7108
|
+
};
|
|
7109
|
+
InMemoryTelemetryArtifactStore = __decorate([
|
|
7110
|
+
injectable(),
|
|
7111
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7112
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$9 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$9 : Object])
|
|
7113
|
+
], InMemoryTelemetryArtifactStore);
|
|
7114
|
+
|
|
7115
|
+
//#endregion
|
|
7116
|
+
//#region src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts
|
|
7117
|
+
var _ref$8;
|
|
7118
|
+
let InMemoryTelemetryMetricPointStore = class InMemoryTelemetryMetricPointStore$1 {
|
|
7119
|
+
rows = /* @__PURE__ */ new Map();
|
|
7120
|
+
constructor(otelIdentityFactory) {
|
|
7121
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7122
|
+
}
|
|
7123
|
+
async save(record) {
|
|
7124
|
+
const created = {
|
|
7125
|
+
metricPointId: this.otelIdentityFactory.createArtifactId(),
|
|
7126
|
+
traceId: record.traceId,
|
|
7127
|
+
spanId: record.spanId,
|
|
7128
|
+
runId: record.runId,
|
|
7129
|
+
workflowId: record.workflowId,
|
|
7130
|
+
nodeId: record.nodeId,
|
|
7131
|
+
activationId: record.activationId,
|
|
7132
|
+
metricName: record.name,
|
|
7133
|
+
value: record.value,
|
|
7134
|
+
unit: record.unit,
|
|
7135
|
+
observedAt: record.observedAt,
|
|
7136
|
+
workflowFolder: record.workflowFolder,
|
|
7137
|
+
nodeType: record.nodeType,
|
|
7138
|
+
nodeRole: record.nodeRole,
|
|
7139
|
+
modelName: record.modelName,
|
|
7140
|
+
dimensions: record.attributes,
|
|
7141
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
7142
|
+
};
|
|
7143
|
+
this.rows.set(created.metricPointId, created);
|
|
7144
|
+
return created;
|
|
7145
|
+
}
|
|
7146
|
+
async list(args = {}) {
|
|
7147
|
+
return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
|
|
7148
|
+
const observedCompare = left.observedAt.localeCompare(right.observedAt);
|
|
7149
|
+
if (observedCompare !== 0) return observedCompare;
|
|
7150
|
+
return left.metricPointId.localeCompare(right.metricPointId);
|
|
7151
|
+
}).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7152
|
+
}
|
|
7153
|
+
async pruneExpired(args) {
|
|
7154
|
+
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);
|
|
7155
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7156
|
+
return candidates.length;
|
|
7157
|
+
}
|
|
7158
|
+
matches(row, args) {
|
|
7159
|
+
if (args.traceId && row.traceId !== args.traceId) return false;
|
|
7160
|
+
if (args.runId && row.runId !== args.runId) return false;
|
|
7161
|
+
if (args.runIds && args.runIds.length > 0 && (!row.runId || !args.runIds.includes(row.runId))) return false;
|
|
7162
|
+
if (args.workflowId && row.workflowId !== args.workflowId) return false;
|
|
7163
|
+
if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
|
|
7164
|
+
if (args.nodeId && row.nodeId !== args.nodeId) return false;
|
|
7165
|
+
if (args.metricNames && args.metricNames.length > 0 && !args.metricNames.includes(row.metricName)) return false;
|
|
7166
|
+
if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
|
|
7167
|
+
if (args.observedAtGte && row.observedAt < args.observedAtGte) return false;
|
|
7168
|
+
if (args.observedAtLte && row.observedAt > args.observedAtLte) return false;
|
|
7169
|
+
return true;
|
|
7170
|
+
}
|
|
7171
|
+
};
|
|
7172
|
+
InMemoryTelemetryMetricPointStore = __decorate([
|
|
7173
|
+
injectable(),
|
|
7174
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7175
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$8 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$8 : Object])
|
|
7176
|
+
], InMemoryTelemetryMetricPointStore);
|
|
7177
|
+
|
|
7178
|
+
//#endregion
|
|
7179
|
+
//#region src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts
|
|
7180
|
+
let InMemoryTelemetrySpanStore = class InMemoryTelemetrySpanStore$1 {
|
|
7181
|
+
rows = /* @__PURE__ */ new Map();
|
|
7182
|
+
async upsert(record) {
|
|
7183
|
+
const key = this.createKey(record.traceId, record.spanId);
|
|
7184
|
+
const existing = this.rows.get(key);
|
|
7185
|
+
this.rows.set(key, this.merge(existing, record));
|
|
7186
|
+
}
|
|
7187
|
+
async list(args = {}) {
|
|
7188
|
+
return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
|
|
7189
|
+
const startCompare = (left.startTime ?? "").localeCompare(right.startTime ?? "");
|
|
7190
|
+
if (startCompare !== 0) return startCompare;
|
|
7191
|
+
return left.spanId.localeCompare(right.spanId);
|
|
7192
|
+
}).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7193
|
+
}
|
|
7194
|
+
async listByTraceId(traceId) {
|
|
7195
|
+
return await this.list({ traceId });
|
|
7196
|
+
}
|
|
7197
|
+
createKey(traceId, spanId) {
|
|
7198
|
+
return `${traceId}:${spanId}`;
|
|
7199
|
+
}
|
|
7200
|
+
merge(existing, update) {
|
|
7201
|
+
return {
|
|
7202
|
+
traceId: update.traceId,
|
|
7203
|
+
spanId: update.spanId,
|
|
7204
|
+
parentSpanId: update.parentSpanId ?? existing?.parentSpanId,
|
|
7205
|
+
runId: update.runId,
|
|
7206
|
+
workflowId: update.workflowId,
|
|
7207
|
+
nodeId: update.nodeId ?? existing?.nodeId,
|
|
7208
|
+
activationId: update.activationId ?? existing?.activationId,
|
|
7209
|
+
connectionInvocationId: update.connectionInvocationId ?? existing?.connectionInvocationId,
|
|
7210
|
+
name: update.name ?? existing?.name ?? "codemation.span",
|
|
7211
|
+
kind: update.kind ?? existing?.kind ?? "internal",
|
|
7212
|
+
status: update.status ?? existing?.status,
|
|
7213
|
+
statusMessage: update.statusMessage ?? existing?.statusMessage,
|
|
7214
|
+
startTime: update.startTime ?? existing?.startTime,
|
|
7215
|
+
endTime: update.endTime ?? existing?.endTime,
|
|
7216
|
+
workflowFolder: update.workflowFolder ?? existing?.workflowFolder,
|
|
7217
|
+
nodeType: update.nodeType ?? existing?.nodeType,
|
|
7218
|
+
nodeRole: update.nodeRole ?? existing?.nodeRole,
|
|
7219
|
+
modelName: update.modelName ?? existing?.modelName,
|
|
7220
|
+
attributes: {
|
|
7221
|
+
...existing?.attributes ?? {},
|
|
7222
|
+
...update.attributes ?? {}
|
|
7223
|
+
},
|
|
7224
|
+
events: [...existing?.events ?? [], ...update.events ?? []],
|
|
7225
|
+
retentionExpiresAt: update.retentionExpiresAt ?? existing?.retentionExpiresAt
|
|
7226
|
+
};
|
|
7227
|
+
}
|
|
7228
|
+
matches(row, args) {
|
|
7229
|
+
if (args.traceId && row.traceId !== args.traceId) return false;
|
|
7230
|
+
if (args.runId && row.runId !== args.runId) return false;
|
|
7231
|
+
if (args.runIds && args.runIds.length > 0 && !args.runIds.includes(row.runId)) return false;
|
|
7232
|
+
if (args.workflowId && row.workflowId !== args.workflowId) return false;
|
|
7233
|
+
if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
|
|
7234
|
+
if (args.statuses && args.statuses.length > 0 && (!row.status || !args.statuses.includes(row.status))) return false;
|
|
7235
|
+
if (args.names && args.names.length > 0 && !args.names.includes(row.name)) return false;
|
|
7236
|
+
if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
|
|
7237
|
+
if (args.startTimeGte && row.startTime && row.startTime < args.startTimeGte) return false;
|
|
7238
|
+
if (args.endTimeLte && row.endTime && row.endTime > args.endTimeLte) return false;
|
|
7239
|
+
return true;
|
|
7240
|
+
}
|
|
7241
|
+
async pruneExpired(args) {
|
|
7242
|
+
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);
|
|
7243
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7244
|
+
return candidates.length;
|
|
7245
|
+
}
|
|
7246
|
+
};
|
|
7247
|
+
InMemoryTelemetrySpanStore = __decorate([injectable()], InMemoryTelemetrySpanStore);
|
|
7248
|
+
|
|
5539
7249
|
//#endregion
|
|
5540
7250
|
//#region src/infrastructure/persistence/InMemoryWorkflowActivationRepository.ts
|
|
5541
7251
|
let InMemoryWorkflowActivationRepository = class InMemoryWorkflowActivationRepository$1 {
|
|
@@ -5668,7 +7378,9 @@ let InMemoryWorkflowRunRepository = class InMemoryWorkflowRunRepository$1 {
|
|
|
5668
7378
|
for (const s of this.runs.values()) {
|
|
5669
7379
|
if (s.status !== "completed" && s.status !== "failed") continue;
|
|
5670
7380
|
const finishedAt = RunFinishedAtFactory.resolveIso(s);
|
|
5671
|
-
|
|
7381
|
+
const retentionSeconds = s.policySnapshot?.retentionSeconds ?? args.defaultRetentionSeconds;
|
|
7382
|
+
const cutoffIso = (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
|
|
7383
|
+
if (!finishedAt || finishedAt >= cutoffIso) continue;
|
|
5672
7384
|
out.push({
|
|
5673
7385
|
runId: s.runId,
|
|
5674
7386
|
workflowId: s.workflowId,
|
|
@@ -13607,6 +15319,79 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13607
15319
|
updatedAt: "updatedAt",
|
|
13608
15320
|
stateJson: "stateJson"
|
|
13609
15321
|
};
|
|
15322
|
+
exports.Prisma.RunTraceContextScalarFieldEnum = {
|
|
15323
|
+
runId: "runId",
|
|
15324
|
+
workflowId: "workflowId",
|
|
15325
|
+
traceId: "traceId",
|
|
15326
|
+
rootSpanId: "rootSpanId",
|
|
15327
|
+
serviceName: "serviceName",
|
|
15328
|
+
createdAt: "createdAt",
|
|
15329
|
+
expiresAt: "expiresAt"
|
|
15330
|
+
};
|
|
15331
|
+
exports.Prisma.TelemetrySpanScalarFieldEnum = {
|
|
15332
|
+
telemetrySpanId: "telemetrySpanId",
|
|
15333
|
+
traceId: "traceId",
|
|
15334
|
+
spanId: "spanId",
|
|
15335
|
+
parentSpanId: "parentSpanId",
|
|
15336
|
+
runId: "runId",
|
|
15337
|
+
workflowId: "workflowId",
|
|
15338
|
+
nodeId: "nodeId",
|
|
15339
|
+
activationId: "activationId",
|
|
15340
|
+
connectionInvocationId: "connectionInvocationId",
|
|
15341
|
+
name: "name",
|
|
15342
|
+
kind: "kind",
|
|
15343
|
+
status: "status",
|
|
15344
|
+
statusMessage: "statusMessage",
|
|
15345
|
+
startTime: "startTime",
|
|
15346
|
+
endTime: "endTime",
|
|
15347
|
+
workflowFolder: "workflowFolder",
|
|
15348
|
+
nodeType: "nodeType",
|
|
15349
|
+
nodeRole: "nodeRole",
|
|
15350
|
+
modelName: "modelName",
|
|
15351
|
+
attributesJson: "attributesJson",
|
|
15352
|
+
eventsJson: "eventsJson",
|
|
15353
|
+
retentionExpiresAt: "retentionExpiresAt",
|
|
15354
|
+
updatedAt: "updatedAt"
|
|
15355
|
+
};
|
|
15356
|
+
exports.Prisma.TelemetryArtifactScalarFieldEnum = {
|
|
15357
|
+
artifactId: "artifactId",
|
|
15358
|
+
traceId: "traceId",
|
|
15359
|
+
spanId: "spanId",
|
|
15360
|
+
runId: "runId",
|
|
15361
|
+
workflowId: "workflowId",
|
|
15362
|
+
nodeId: "nodeId",
|
|
15363
|
+
activationId: "activationId",
|
|
15364
|
+
kind: "kind",
|
|
15365
|
+
contentType: "contentType",
|
|
15366
|
+
previewText: "previewText",
|
|
15367
|
+
previewJson: "previewJson",
|
|
15368
|
+
payloadText: "payloadText",
|
|
15369
|
+
payloadJson: "payloadJson",
|
|
15370
|
+
bytes: "bytes",
|
|
15371
|
+
truncated: "truncated",
|
|
15372
|
+
createdAt: "createdAt",
|
|
15373
|
+
expiresAt: "expiresAt",
|
|
15374
|
+
retentionExpiresAt: "retentionExpiresAt"
|
|
15375
|
+
};
|
|
15376
|
+
exports.Prisma.TelemetryMetricPointScalarFieldEnum = {
|
|
15377
|
+
metricPointId: "metricPointId",
|
|
15378
|
+
traceId: "traceId",
|
|
15379
|
+
spanId: "spanId",
|
|
15380
|
+
runId: "runId",
|
|
15381
|
+
workflowId: "workflowId",
|
|
15382
|
+
nodeId: "nodeId",
|
|
15383
|
+
activationId: "activationId",
|
|
15384
|
+
metricName: "metricName",
|
|
15385
|
+
value: "value",
|
|
15386
|
+
unit: "unit",
|
|
15387
|
+
observedAt: "observedAt",
|
|
15388
|
+
workflowFolder: "workflowFolder",
|
|
15389
|
+
nodeType: "nodeType",
|
|
15390
|
+
nodeRole: "nodeRole",
|
|
15391
|
+
modelName: "modelName",
|
|
15392
|
+
dimensionsJson: "dimensionsJson",
|
|
15393
|
+
retentionExpiresAt: "retentionExpiresAt"
|
|
15394
|
+
};
|
|
13610
15395
|
exports.Prisma.CredentialInstanceScalarFieldEnum = {
|
|
13611
15396
|
instanceId: "instanceId",
|
|
13612
15397
|
typeId: "typeId",
|
|
@@ -13734,6 +15519,10 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13734
15519
|
WorkflowDebuggerOverlay: "WorkflowDebuggerOverlay",
|
|
13735
15520
|
WorkflowActivation: "WorkflowActivation",
|
|
13736
15521
|
TriggerSetupState: "TriggerSetupState",
|
|
15522
|
+
RunTraceContext: "RunTraceContext",
|
|
15523
|
+
TelemetrySpan: "TelemetrySpan",
|
|
15524
|
+
TelemetryArtifact: "TelemetryArtifact",
|
|
15525
|
+
TelemetryMetricPoint: "TelemetryMetricPoint",
|
|
13737
15526
|
CredentialInstance: "CredentialInstance",
|
|
13738
15527
|
CredentialSecretMaterial: "CredentialSecretMaterial",
|
|
13739
15528
|
CredentialOAuth2Material: "CredentialOAuth2Material",
|
|
@@ -13754,13 +15543,13 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13754
15543
|
"clientVersion": "7.5.0",
|
|
13755
15544
|
"engineVersion": "280c870be64f457428992c43c1f6d557fab6e29e",
|
|
13756
15545
|
"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"
|
|
15546
|
+
"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
15547
|
};
|
|
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\":{}}");
|
|
15548
|
+
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
15549
|
defineDmmfProperty(exports.Prisma, config.runtimeDataModel);
|
|
13761
15550
|
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: "8QWhAaACFQQAAJoEACAFAACbBAAgBgAAnAQAILQCAACZBAAwtQIAABAAELYCAACZBAAwvAIBANcDACHpAgEA1wMAIe0CAQDXAwAhhgMBAAAAAYcDAgCEBAAhlAMBANcDACGVAwEA7AMAIbYDAQDsAwAhtwMBAOwDACG4AwEA7AMAIbkDAQDsAwAhugMBAOwDACG7AwEA7AMAIbwDAQDsAwAhvQMBANcDACEBAAAAAQAgFwMAAJIEACC0AgAAoAQAMLUCAAADABC2AgAAoAQAMOkCAQDXAwAh7QIBANcDACGGAwEA1wMAIY4DAQDXAwAhkAMBAOwDACGZAwEA7AMAIakDAQDXAwAhqgMBANcDACGrAwEA7AMAIawDAQDsAwAhrQMBAOwDACGuAwEA7AMAIa8DAQDXAwAhsAMBANcDACGxAwEA7AMAIbIDAQDsAwAhswMBAOwDACG0AwIAhAQAIbUDAQDXAwAhCgMAAJQFACCQAwAApgQAIJkDAACmBAAgqwMAAKYEACCsAwAApgQAIK0DAACmBAAgrgMAAKYEACCxAwAApgQAILIDAACmBAAgswMAAKYEACAXAwAAkgQAILQCAACgBAAwtQIAAAMAELYCAACgBAAw6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhjgMBANcDACGQAwEA7AMAIZkDAQDsAwAhqQMBAAAAAaoDAQDXAwAhqwMBAOwDACGsAwEA7AMAIa0DAQDsAwAhrgMBAOwDACGvAwEA1wMAIbADAQDXAwAhsQMBAOwDACGyAwEA7AMAIbMDAQDsAwAhtAMCAIQEACG1AwEA1wMAIQMAAAADACABAAAEADACAAAFACApAwAAkgQAILQCAACeBAAwtQIAAAcAELYCAACeBAAwvAIBANcDACHoAgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYkDAQDXAwAhigMBANcDACGLAwEA1wMAIYwDAQDsAwAhjQMBAOwDACGOAwEA1wMAIY8DAgCEBAAhkAMBAOwDACGRAwEA7AMAIZIDAQDsAwAhkwMBAOwDACGUAwEA7AMAIZUDAQDsAwAhlgMCAIQEACGXAwEA7AMAIZgDAQDsAwAhmQMBAOwDACGaAwEA7AMAIZsDAgD3AwAhnAMCAPcDACGdAwIA9wMAIZ4DAQDsAwAhnwMBAOwDACGgAwIA9wMAIaEDAgD3AwAhogMBAOwDACGjAwEA7AMAIaQDAQDsAwAhpQMBAOwDACGmAyAAnwQAIacDIACfBAAhqAMgAJ8EACEbAwAAlAUAIIwDAACmBAAgjQMAAKYEACCQAwAApgQAIJEDAACmBAAgkgMAAKYEACCTAwAApgQAIJQDAACmBAAglQMAAKYEACCXAwAApgQAIJgDAACmBAAgmQMAAKYEACCaAwAApgQAIJsDAACmBAAgnAMAAKYEACCdAwAApgQAIJ4DAACmBAAgnwMAAKYEACCgAwAApgQAIKEDAACmBAAgogMAAKYEACCjAwAApgQAIKQDAACmBAAgpQMAAKYEACCmAwAApgQAIKcDAACmBAAgqAMAAKYEACAqAwAAkgQAILQCAACeBAAwtQIAAAcAELYCAACeBAAwvAIBANcDACHoAgEAAAAB6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhiQMBANcDACGKAwEA1wMAIYsDAQDXAwAhjAMBAOwDACGNAwEA7AMAIY4DAQDXAwAhjwMCAIQEACGQAwEA7AMAIZEDAQDsAwAhkgMBAOwDACGTAwEA7AMAIZQDAQDsAwAhlQMBAOwDACGWAwIAhAQAIZcDAQDsAwAhmAMBAOwDACGZAwEA7AMAIZoDAQDsAwAhmwMCAPcDACGcAwIA9wMAIZ0DAgD3AwAhngMBAOwDACGfAwEA7AMAIaADAgD3AwAhoQMCAPcDACGiAwEA7AMAIaMDAQDsAwAhpAMBAOwDACGlAwEA7AMAIaYDIACfBAAhpwMgAJ8EACGoAyAAnwQAIb4DAACdBAAgAwAAAAcAIAEAAAgAMAIAAAkAIAkDAACSBAAgtAIAAJEEADC1AgAACwAQtgIAAJEEADC8AgEA1wMAIe0CAQDXAwAhhgMBANcDACGHAwIAhAQAIYgDAQDXAwAhAQAAAAsAIAEAAAADACABAAAABwAgAQAAAAEAIBUEAACaBAAgBQAAmwQAIAYAAJwEACC0AgAAmQQAMLUCAAAQABC2AgAAmQQAMLwCAQDXAwAh6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhhwMCAIQEACGUAwEA1wMAIZUDAQDsAwAhtgMBAOwDACG3AwEA7AMAIbgDAQDsAwAhuQMBAOwDACG6AwEA7AMAIbsDAQDsAwAhvAMBAOwDACG9AwEA1wMAIQsEAADMBQAgBQAAzQUAIAYAAM4FACCVAwAApgQAILYDAACmBAAgtwMAAKYEACC4AwAApgQAILkDAACmBAAgugMAAKYEACC7AwAApgQAILwDAACmBAAgAwAAABAAIAEAABEAMAIAAAEAIAMAAAAQACABAAARADACAAABACADAAAAEAAgAQAAEQAwAgAAAQAgEgQAAMkFACAFAADKBQAgBgAAywUAILwCAQAAAAHpAgEAAAAB7QIBAAAAAYYDAQAAAAGHAwIAAAABlAMBAAAAAZUDAQAAAAG2AwEAAAABtwMBAAAAAbgDAQAAAAG5AwEAAAABugMBAAAAAbsDAQAAAAG8AwEAAAABvQMBAAAAAQENAAAVACAPvAIBAAAAAekCAQAAAAHtAgEAAAABhgMBAAAAAYcDAgAAAAGUAwEAAAABlQMBAAAAAbYDAQAAAAG3AwEAAAABuAMBAAAAAbkDAQAAAAG6AwEAAAABuwMBAAAAAbwDAQAAAAG9AwEAAAABAQ0AABcAMAENAAAXADASBAAAqQUAIAUAAKoFACAGAACrBQAgvAIBAKQEACHpAgEApAQAIe0CAQCkBAAhhgMBAKQEACGHAwIA-wQAIZQDAQCkBAAhlQMBAKoEACG2AwEAqgQAIbcDAQCqBAAhuAMBAKoEACG5AwEAqgQAIboDAQCqBAAhuwMBAKoEACG8AwEAqgQAIb0DAQCkBAAhAgAAAAEAIA0AABoAIA-8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACECAAAAEAAgDQAAHAAgAgAAABAAIA0AABwAIAMAAAABACAUAAAVACAVAAAaACABAAAAAQAgAQAAABAAIA0HAACkBQAgGgAApQUAIBsAAKgFACAcAACnBQAgHQAApgUAIJUDAACmBAAgtgMAAKYEACC3AwAApgQAILgDAACmBAAguQMAAKYEACC6AwAApgQAILsDAACmBAAgvAMAAKYEACAStAIAAJgEADC1AgAAIwAQtgIAAJgEADC8AgEAzwMAIekCAQDPAwAh7QIBAM8DACGGAwEAzwMAIYcDAgCABAAhlAMBAM8DACGVAwEA2wMAIbYDAQDbAwAhtwMBANsDACG4AwEA2wMAIbkDAQDbAwAhugMBANsDACG7AwEA2wMAIbwDAQDbAwAhvQMBAM8DACEDAAAAEAAgAQAAIgAwGQAAIwAgAwAAABAAIAEAABEAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgFAMAAKMFACDpAgEAAAAB7QIBAAAAAYYDAQAAAAGOAwEAAAABkAMBAAAAAZkDAQAAAAGpAwEAAAABqgMBAAAAAasDAQAAAAGsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDAgAAAAG1AwEAAAABAQ0AACsAIBPpAgEAAAAB7QIBAAAAAYYDAQAAAAGOAwEAAAABkAMBAAAAAZkDAQAAAAGpAwEAAAABqgMBAAAAAasDAQAAAAGsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDAgAAAAG1AwEAAAABAQ0AAC0AMAENAAAtADAUAwAAogUAIOkCAQCkBAAh7QIBAKQEACGGAwEApAQAIY4DAQCkBAAhkAMBAKoEACGZAwEAqgQAIakDAQCkBAAhqgMBAKQEACGrAwEAqgQAIawDAQCqBAAhrQMBAKoEACGuAwEAqgQAIa8DAQCkBAAhsAMBAKQEACGxAwEAqgQAIbIDAQCqBAAhswMBAKoEACG0AwIA-wQAIbUDAQCkBAAhAgAAAAUAIA0AADAAIBPpAgEApAQAIe0CAQCkBAAhhgMBAKQEACGOAwEApAQAIZADAQCqBAAhmQMBAKoEACGpAwEApAQAIaoDAQCkBAAhqwMBAKoEACGsAwEAqgQAIa0DAQCqBAAhrgMBAKoEACGvAwEApAQAIbADAQCkBAAhsQMBAKoEACGyAwEAqgQAIbMDAQCqBAAhtAMCAPsEACG1AwEApAQAIQIAAAADACANAAAyACACAAAAAwAgDQAAMgAgAwAAAAUAIBQAACsAIBUAADAAIAEAAAAFACABAAAAAwAgDgcAAJ0FACAaAACeBQAgGwAAoQUAIBwAAKAFACAdAACfBQAgkAMAAKYEACCZAwAApgQAIKsDAACmBAAgrAMAAKYEACCtAwAApgQAIK4DAACmBAAgsQMAAKYEACCyAwAApgQAILMDAACmBAAgFrQCAACXBAAwtQIAADkAELYCAACXBAAw6QIBAM8DACHtAgEAzwMAIYYDAQDPAwAhjgMBAM8DACGQAwEA2wMAIZkDAQDbAwAhqQMBAM8DACGqAwEAzwMAIasDAQDbAwAhrAMBANsDACGtAwEA2wMAIa4DAQDbAwAhrwMBAM8DACGwAwEAzwMAIbEDAQDbAwAhsgMBANsDACGzAwEA2wMAIbQDAgCABAAhtQMBAM8DACEDAAAAAwAgAQAAOAAwGQAAOQAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgJgMAAJwFACC8AgEAAAAB6AIBAAAAAekCAQAAAAHtAgEAAAABhgMBAAAAAYkDAQAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwIAAAABlwMBAAAAAZgDAQAAAAGZAwEAAAABmgMBAAAAAZsDAgAAAAGcAwIAAAABnQMCAAAAAZ4DAQAAAAGfAwEAAAABoAMCAAAAAaEDAgAAAAGiAwEAAAABowMBAAAAAaQDAQAAAAGlAwEAAAABpgMgAAAAAacDIAAAAAGoAyAAAAABAQ0AAEEAICW8AgEAAAAB6AIBAAAAAekCAQAAAAHtAgEAAAABhgMBAAAAAYkDAQAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAY8DAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZUDAQAAAAGWAwIAAAABlwMBAAAAAZgDAQAAAAGZAwEAAAABmgMBAAAAAZsDAgAAAAGcAwIAAAABnQMCAAAAAZ4DAQAAAAGfAwEAAAABoAMCAAAAAaEDAgAAAAGiAwEAAAABowMBAAAAAaQDAQAAAAGlAwEAAAABpgMgAAAAAacDIAAAAAGoAyAAAAABAQ0AAEMAMAENAABDADAmAwAAmwUAILwCAQCkBAAh6AIBAKQEACHpAgEApAQAIe0CAQCkBAAhhgMBAKQEACGJAwEApAQAIYoDAQCkBAAhiwMBAKQEACGMAwEAqgQAIY0DAQCqBAAhjgMBAKQEACGPAwIA-wQAIZADAQCqBAAhkQMBAKoEACGSAwEAqgQAIZMDAQCqBAAhlAMBAKoEACGVAwEAqgQAIZYDAgD7BAAhlwMBAKoEACGYAwEAqgQAIZkDAQCqBAAhmgMBAKoEACGbAwIAsgQAIZwDAgCyBAAhnQMCALIEACGeAwEAqgQAIZ8DAQCqBAAhoAMCALIEACGhAwIAsgQAIaIDAQCqBAAhowMBAKoEACGkAwEAqgQAIaUDAQCqBAAhpgMgAJoFACGnAyAAmgUAIagDIACaBQAhAgAAAAkAIA0AAEYAICW8AgEApAQAIegCAQCkBAAh6QIBAKQEACHtAgEApAQAIYYDAQCkBAAhiQMBAKQEACGKAwEApAQAIYsDAQCkBAAhjAMBAKoEACGNAwEAqgQAIY4DAQCkBAAhjwMCAPsEACGQAwEAqgQAIZEDAQCqBAAhkgMBAKoEACGTAwEAqgQAIZQDAQCqBAAhlQMBAKoEACGWAwIA-wQAIZcDAQCqBAAhmAMBAKoEACGZAwEAqgQAIZoDAQCqBAAhmwMCALIEACGcAwIAsgQAIZ0DAgCyBAAhngMBAKoEACGfAwEAqgQAIaADAgCyBAAhoQMCALIEACGiAwEAqgQAIaMDAQCqBAAhpAMBAKoEACGlAwEAqgQAIaYDIACaBQAhpwMgAJoFACGoAyAAmgUAIQIAAAAHACANAABIACACAAAABwAgDQAASAAgAwAAAAkAIBQAAEEAIBUAAEYAIAEAAAAJACABAAAABwAgHwcAAJUFACAaAACWBQAgGwAAmQUAIBwAAJgFACAdAACXBQAgjAMAAKYEACCNAwAApgQAIJADAACmBAAgkQMAAKYEACCSAwAApgQAIJMDAACmBAAglAMAAKYEACCVAwAApgQAIJcDAACmBAAgmAMAAKYEACCZAwAApgQAIJoDAACmBAAgmwMAAKYEACCcAwAApgQAIJ0DAACmBAAgngMAAKYEACCfAwAApgQAIKADAACmBAAgoQMAAKYEACCiAwAApgQAIKMDAACmBAAgpAMAAKYEACClAwAApgQAIKYDAACmBAAgpwMAAKYEACCoAwAApgQAICi0AgAAkwQAMLUCAABPABC2AgAAkwQAMLwCAQDPAwAh6AIBAM8DACHpAgEAzwMAIe0CAQDPAwAhhgMBAM8DACGJAwEAzwMAIYoDAQDPAwAhiwMBAM8DACGMAwEA2wMAIY0DAQDbAwAhjgMBAM8DACGPAwIAgAQAIZADAQDbAwAhkQMBANsDACGSAwEA2wMAIZMDAQDbAwAhlAMBANsDACGVAwEA2wMAIZYDAgCABAAhlwMBANsDACGYAwEA2wMAIZkDAQDbAwAhmgMBANsDACGbAwIA4AMAIZwDAgDgAwAhnQMCAOADACGeAwEA2wMAIZ8DAQDbAwAhoAMCAOADACGhAwIA4AMAIaIDAQDbAwAhowMBANsDACGkAwEA2wMAIaUDAQDbAwAhpgMgAJQEACGnAyAAlAQAIagDIACUBAAhAwAAAAcAIAEAAE4AMBkAAE8AIAMAAAAHACABAAAIADACAAAJACAJAwAAkgQAILQCAACRBAAwtQIAAAsAELYCAACRBAAwvAIBANcDACHtAgEA1wMAIYYDAQAAAAGHAwIAhAQAIYgDAQDXAwAhAQAAAFIAIAEAAABSACABAwAAlAUAIAMAAAALACABAABVADACAABSACADAAAACwAgAQAAVQAwAgAAUgAgAwAAAAsAIAEAAFUAMAIAAFIAIAYDAACTBQAgvAIBAAAAAe0CAQAAAAGGAwEAAAABhwMCAAAAAYgDAQAAAAEBDQAAWQAgBbwCAQAAAAHtAgEAAAABhgMBAAAAAYcDAgAAAAGIAwEAAAABAQ0AAFsAMAENAABbADAGAwAAkgUAILwCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhiAMBAKQEACECAAAAUgAgDQAAXgAgBbwCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhiAMBAKQEACECAAAACwAgDQAAYAAgAgAAAAsAIA0AAGAAIAMAAABSACAUAABZACAVAABeACABAAAAUgAgAQAAAAsAIAUHAACNBQAgGgAAjgUAIBsAAJEFACAcAACQBQAgHQAAjwUAIAi0AgAAkAQAMLUCAABnABC2AgAAkAQAMLwCAQDPAwAh7QIBAM8DACGGAwEAzwMAIYcDAgCABAAhiAMBAM8DACEDAAAACwAgAQAAZgAwGQAAZwAgAwAAAAsAIAEAAFUAMAIAAFIAIAe0AgAAjwQAMLUCAABtABC2AgAAjwQAMLwCAQDXAwAh7QIBAAAAAYIDAQDXAwAhhQMBAOwDACEBAAAAagAgAQAAAGoAIAe0AgAAjwQAMLUCAABtABC2AgAAjwQAMLwCAQDXAwAh7QIBANcDACGCAwEA1wMAIYUDAQDsAwAhAYUDAACmBAAgAwAAAG0AIAEAAG4AMAIAAGoAIAMAAABtACABAABuADACAABqACADAAAAbQAgAQAAbgAwAgAAagAgBLwCAQAAAAHtAgEAAAABggMBAAAAAYUDAQAAAAEBDQAAcgAgBLwCAQAAAAHtAgEAAAABggMBAAAAAYUDAQAAAAEBDQAAdAAwAQ0AAHQAMAS8AgEApAQAIe0CAQCkBAAhggMBAKQEACGFAwEAqgQAIQIAAABqACANAAB3ACAEvAIBAKQEACHtAgEApAQAIYIDAQCkBAAhhQMBAKoEACECAAAAbQAgDQAAeQAgAgAAAG0AIA0AAHkAIAMAAABqACAUAAByACAVAAB3ACABAAAAagAgAQAAAG0AIAQHAACKBQAgHAAAjAUAIB0AAIsFACCFAwAApgQAIAe0AgAAjgQAMLUCAACAAQAQtgIAAI4EADC8AgEAzwMAIe0CAQDPAwAhggMBAM8DACGFAwEA2wMAIQMAAABtACABAAB_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"
|
|
15551
|
+
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\"]"),
|
|
15552
|
+
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_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-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
15553
|
};
|
|
13765
15554
|
config.compilerWasm = {
|
|
13766
15555
|
getRuntime: async () => require_query_compiler_fast_bg(),
|
|
@@ -13849,6 +15638,403 @@ PrismaTriggerSetupStateRepository = __decorate([
|
|
|
13849
15638
|
__decorateMetadata("design:paramtypes", [Object])
|
|
13850
15639
|
], PrismaTriggerSetupStateRepository);
|
|
13851
15640
|
|
|
15641
|
+
//#endregion
|
|
15642
|
+
//#region src/infrastructure/persistence/PrismaRunTraceContextRepository.ts
|
|
15643
|
+
var _ref$7;
|
|
15644
|
+
let PrismaRunTraceContextRepository = class PrismaRunTraceContextRepository$1 {
|
|
15645
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15646
|
+
this.prisma = prisma;
|
|
15647
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15648
|
+
}
|
|
15649
|
+
async load(runId) {
|
|
15650
|
+
const row = await this.prisma.runTraceContext.findUnique({ where: { runId: decodeURIComponent(runId) } });
|
|
15651
|
+
if (!row) return;
|
|
15652
|
+
return {
|
|
15653
|
+
runId: row.runId,
|
|
15654
|
+
workflowId: row.workflowId,
|
|
15655
|
+
traceId: row.traceId,
|
|
15656
|
+
rootSpanId: row.rootSpanId,
|
|
15657
|
+
serviceName: row.serviceName ?? void 0,
|
|
15658
|
+
createdAt: row.createdAt,
|
|
15659
|
+
expiresAt: row.expiresAt ?? void 0
|
|
15660
|
+
};
|
|
15661
|
+
}
|
|
15662
|
+
async getOrCreate(args) {
|
|
15663
|
+
const existing = await this.load(args.runId);
|
|
15664
|
+
if (existing) return existing;
|
|
15665
|
+
const created = {
|
|
15666
|
+
runId: decodeURIComponent(args.runId),
|
|
15667
|
+
workflowId: decodeURIComponent(args.workflowId),
|
|
15668
|
+
traceId: this.otelIdentityFactory.createTraceId(args.runId),
|
|
15669
|
+
rootSpanId: this.otelIdentityFactory.createRootSpanId(args.runId),
|
|
15670
|
+
serviceName: args.serviceName,
|
|
15671
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
15672
|
+
};
|
|
15673
|
+
await this.prisma.runTraceContext.create({ data: {
|
|
15674
|
+
runId: created.runId,
|
|
15675
|
+
workflowId: created.workflowId,
|
|
15676
|
+
traceId: created.traceId,
|
|
15677
|
+
rootSpanId: created.rootSpanId,
|
|
15678
|
+
serviceName: created.serviceName ?? null,
|
|
15679
|
+
createdAt: created.createdAt,
|
|
15680
|
+
expiresAt: null
|
|
15681
|
+
} });
|
|
15682
|
+
return created;
|
|
15683
|
+
}
|
|
15684
|
+
async upsertExpiry(args) {
|
|
15685
|
+
if (!args.expiresAt) return;
|
|
15686
|
+
const runId = decodeURIComponent(args.runId);
|
|
15687
|
+
const existing = await this.prisma.runTraceContext.findUnique({
|
|
15688
|
+
where: { runId },
|
|
15689
|
+
select: { expiresAt: true }
|
|
15690
|
+
});
|
|
15691
|
+
if (!existing) return;
|
|
15692
|
+
const expiresAt = this.resolveLaterExpiry(existing.expiresAt ?? void 0, args.expiresAt);
|
|
15693
|
+
await this.prisma.runTraceContext.update({
|
|
15694
|
+
where: { runId },
|
|
15695
|
+
data: { expiresAt: expiresAt ?? null }
|
|
15696
|
+
});
|
|
15697
|
+
}
|
|
15698
|
+
resolveLaterExpiry(current, candidate) {
|
|
15699
|
+
if (!current) return candidate;
|
|
15700
|
+
if (!candidate) return current;
|
|
15701
|
+
return current >= candidate ? current : candidate;
|
|
15702
|
+
}
|
|
15703
|
+
};
|
|
15704
|
+
PrismaRunTraceContextRepository = __decorate([
|
|
15705
|
+
injectable(),
|
|
15706
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15707
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15708
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$7 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$7 : Object])
|
|
15709
|
+
], PrismaRunTraceContextRepository);
|
|
15710
|
+
|
|
15711
|
+
//#endregion
|
|
15712
|
+
//#region src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts
|
|
15713
|
+
var _ref$6;
|
|
15714
|
+
let PrismaTelemetryArtifactStore = class PrismaTelemetryArtifactStore$1 {
|
|
15715
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15716
|
+
this.prisma = prisma;
|
|
15717
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15718
|
+
}
|
|
15719
|
+
async save(record) {
|
|
15720
|
+
const artifactId = this.otelIdentityFactory.createArtifactId();
|
|
15721
|
+
const createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
15722
|
+
await this.prisma.telemetryArtifact.create({ data: {
|
|
15723
|
+
artifactId,
|
|
15724
|
+
traceId: record.traceId,
|
|
15725
|
+
spanId: record.spanId,
|
|
15726
|
+
runId: record.runId,
|
|
15727
|
+
workflowId: record.workflowId,
|
|
15728
|
+
nodeId: record.nodeId ?? null,
|
|
15729
|
+
activationId: record.activationId ?? null,
|
|
15730
|
+
kind: record.kind,
|
|
15731
|
+
contentType: record.contentType,
|
|
15732
|
+
previewText: record.previewText ?? null,
|
|
15733
|
+
previewJson: record.previewJson !== void 0 ? JSON.stringify(record.previewJson) : null,
|
|
15734
|
+
payloadText: record.payloadText ?? null,
|
|
15735
|
+
payloadJson: record.payloadJson !== void 0 ? JSON.stringify(record.payloadJson) : null,
|
|
15736
|
+
bytes: record.bytes ?? null,
|
|
15737
|
+
truncated: record.truncated ?? null,
|
|
15738
|
+
createdAt,
|
|
15739
|
+
expiresAt: record.expiresAt?.toISOString() ?? null,
|
|
15740
|
+
retentionExpiresAt: record.retentionExpiresAt ?? null
|
|
15741
|
+
} });
|
|
15742
|
+
return {
|
|
15743
|
+
artifactId,
|
|
15744
|
+
traceId: record.traceId,
|
|
15745
|
+
spanId: record.spanId,
|
|
15746
|
+
runId: record.runId,
|
|
15747
|
+
workflowId: record.workflowId,
|
|
15748
|
+
nodeId: record.nodeId,
|
|
15749
|
+
activationId: record.activationId,
|
|
15750
|
+
kind: record.kind,
|
|
15751
|
+
contentType: record.contentType,
|
|
15752
|
+
previewText: record.previewText,
|
|
15753
|
+
previewJson: record.previewJson,
|
|
15754
|
+
payloadText: record.payloadText,
|
|
15755
|
+
payloadJson: record.payloadJson,
|
|
15756
|
+
bytes: record.bytes,
|
|
15757
|
+
truncated: record.truncated,
|
|
15758
|
+
createdAt,
|
|
15759
|
+
expiresAt: record.expiresAt?.toISOString(),
|
|
15760
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
15761
|
+
};
|
|
15762
|
+
}
|
|
15763
|
+
async listByTraceId(traceId) {
|
|
15764
|
+
return (await this.prisma.telemetryArtifact.findMany({
|
|
15765
|
+
where: { traceId },
|
|
15766
|
+
orderBy: [{ createdAt: "asc" }, { artifactId: "asc" }]
|
|
15767
|
+
})).map((row) => ({
|
|
15768
|
+
artifactId: row.artifactId,
|
|
15769
|
+
traceId: row.traceId,
|
|
15770
|
+
spanId: row.spanId,
|
|
15771
|
+
runId: row.runId,
|
|
15772
|
+
workflowId: row.workflowId,
|
|
15773
|
+
nodeId: row.nodeId ?? void 0,
|
|
15774
|
+
activationId: row.activationId ?? void 0,
|
|
15775
|
+
kind: row.kind,
|
|
15776
|
+
contentType: row.contentType,
|
|
15777
|
+
previewText: row.previewText ?? void 0,
|
|
15778
|
+
previewJson: this.parseJson(row.previewJson),
|
|
15779
|
+
payloadText: row.payloadText ?? void 0,
|
|
15780
|
+
payloadJson: this.parseJson(row.payloadJson),
|
|
15781
|
+
bytes: row.bytes ?? void 0,
|
|
15782
|
+
truncated: row.truncated ?? void 0,
|
|
15783
|
+
createdAt: row.createdAt,
|
|
15784
|
+
expiresAt: row.expiresAt ?? void 0,
|
|
15785
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
15786
|
+
}));
|
|
15787
|
+
}
|
|
15788
|
+
async pruneExpired(args) {
|
|
15789
|
+
const rows = await this.prisma.telemetryArtifact.findMany({
|
|
15790
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
15791
|
+
select: { artifactId: true },
|
|
15792
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { artifactId: "asc" }],
|
|
15793
|
+
...args.limit ? { take: args.limit } : {}
|
|
15794
|
+
});
|
|
15795
|
+
if (rows.length === 0) return 0;
|
|
15796
|
+
return (await this.prisma.telemetryArtifact.deleteMany({ where: { artifactId: { in: rows.map((row) => row.artifactId) } } })).count;
|
|
15797
|
+
}
|
|
15798
|
+
parseJson(value) {
|
|
15799
|
+
if (!value) return;
|
|
15800
|
+
return JSON.parse(value);
|
|
15801
|
+
}
|
|
15802
|
+
};
|
|
15803
|
+
PrismaTelemetryArtifactStore = __decorate([
|
|
15804
|
+
injectable(),
|
|
15805
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15806
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15807
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$6 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$6 : Object])
|
|
15808
|
+
], PrismaTelemetryArtifactStore);
|
|
15809
|
+
|
|
15810
|
+
//#endregion
|
|
15811
|
+
//#region src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts
|
|
15812
|
+
var _ref$5;
|
|
15813
|
+
let PrismaTelemetryMetricPointStore = class PrismaTelemetryMetricPointStore$1 {
|
|
15814
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15815
|
+
this.prisma = prisma;
|
|
15816
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15817
|
+
}
|
|
15818
|
+
async save(record) {
|
|
15819
|
+
const metricPointId = this.otelIdentityFactory.createArtifactId();
|
|
15820
|
+
await this.prisma.telemetryMetricPoint.create({ data: {
|
|
15821
|
+
metricPointId,
|
|
15822
|
+
traceId: record.traceId ?? null,
|
|
15823
|
+
spanId: record.spanId ?? null,
|
|
15824
|
+
runId: record.runId ?? null,
|
|
15825
|
+
workflowId: record.workflowId,
|
|
15826
|
+
nodeId: record.nodeId ?? null,
|
|
15827
|
+
activationId: record.activationId ?? null,
|
|
15828
|
+
metricName: record.name,
|
|
15829
|
+
value: record.value,
|
|
15830
|
+
unit: record.unit ?? null,
|
|
15831
|
+
observedAt: record.observedAt,
|
|
15832
|
+
workflowFolder: record.workflowFolder ?? null,
|
|
15833
|
+
nodeType: record.nodeType ?? null,
|
|
15834
|
+
nodeRole: record.nodeRole ?? null,
|
|
15835
|
+
modelName: record.modelName ?? null,
|
|
15836
|
+
dimensionsJson: record.attributes ? JSON.stringify(record.attributes) : null,
|
|
15837
|
+
retentionExpiresAt: record.retentionExpiresAt ?? null
|
|
15838
|
+
} });
|
|
15839
|
+
return {
|
|
15840
|
+
metricPointId,
|
|
15841
|
+
traceId: record.traceId,
|
|
15842
|
+
spanId: record.spanId,
|
|
15843
|
+
runId: record.runId,
|
|
15844
|
+
workflowId: record.workflowId,
|
|
15845
|
+
nodeId: record.nodeId,
|
|
15846
|
+
activationId: record.activationId,
|
|
15847
|
+
metricName: record.name,
|
|
15848
|
+
value: record.value,
|
|
15849
|
+
unit: record.unit,
|
|
15850
|
+
observedAt: record.observedAt,
|
|
15851
|
+
workflowFolder: record.workflowFolder,
|
|
15852
|
+
nodeType: record.nodeType,
|
|
15853
|
+
nodeRole: record.nodeRole,
|
|
15854
|
+
modelName: record.modelName,
|
|
15855
|
+
dimensions: record.attributes,
|
|
15856
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
15857
|
+
};
|
|
15858
|
+
}
|
|
15859
|
+
async list(args = {}) {
|
|
15860
|
+
return (await this.prisma.telemetryMetricPoint.findMany({
|
|
15861
|
+
where: {
|
|
15862
|
+
...args.traceId ? { traceId: args.traceId } : {},
|
|
15863
|
+
...args.runId ? { runId: args.runId } : {},
|
|
15864
|
+
...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
|
|
15865
|
+
...args.workflowId ? { workflowId: args.workflowId } : {},
|
|
15866
|
+
...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
|
|
15867
|
+
...args.nodeId ? { nodeId: args.nodeId } : {},
|
|
15868
|
+
...args.metricNames && args.metricNames.length > 0 ? { metricName: { in: [...args.metricNames] } } : {},
|
|
15869
|
+
...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
|
|
15870
|
+
...args.observedAtGte ? { observedAt: { gte: args.observedAtGte } } : {},
|
|
15871
|
+
...args.observedAtLte ? { observedAt: { lte: args.observedAtLte } } : {}
|
|
15872
|
+
},
|
|
15873
|
+
orderBy: [{ observedAt: "asc" }, { metricPointId: "asc" }],
|
|
15874
|
+
...args.limit ? { take: args.limit } : {}
|
|
15875
|
+
})).map((row) => ({
|
|
15876
|
+
metricPointId: row.metricPointId,
|
|
15877
|
+
traceId: row.traceId ?? void 0,
|
|
15878
|
+
spanId: row.spanId ?? void 0,
|
|
15879
|
+
runId: row.runId ?? void 0,
|
|
15880
|
+
workflowId: row.workflowId,
|
|
15881
|
+
nodeId: row.nodeId ?? void 0,
|
|
15882
|
+
activationId: row.activationId ?? void 0,
|
|
15883
|
+
metricName: row.metricName,
|
|
15884
|
+
value: row.value,
|
|
15885
|
+
unit: row.unit ?? void 0,
|
|
15886
|
+
observedAt: row.observedAt,
|
|
15887
|
+
workflowFolder: row.workflowFolder ?? void 0,
|
|
15888
|
+
nodeType: row.nodeType ?? void 0,
|
|
15889
|
+
nodeRole: row.nodeRole ?? void 0,
|
|
15890
|
+
modelName: row.modelName ?? void 0,
|
|
15891
|
+
dimensions: this.parseJson(row.dimensionsJson),
|
|
15892
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
15893
|
+
}));
|
|
15894
|
+
}
|
|
15895
|
+
async pruneExpired(args) {
|
|
15896
|
+
const rows = await this.prisma.telemetryMetricPoint.findMany({
|
|
15897
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
15898
|
+
select: { metricPointId: true },
|
|
15899
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { metricPointId: "asc" }],
|
|
15900
|
+
...args.limit ? { take: args.limit } : {}
|
|
15901
|
+
});
|
|
15902
|
+
if (rows.length === 0) return 0;
|
|
15903
|
+
return (await this.prisma.telemetryMetricPoint.deleteMany({ where: { metricPointId: { in: rows.map((row) => row.metricPointId) } } })).count;
|
|
15904
|
+
}
|
|
15905
|
+
parseJson(value) {
|
|
15906
|
+
if (!value) return;
|
|
15907
|
+
return JSON.parse(value);
|
|
15908
|
+
}
|
|
15909
|
+
};
|
|
15910
|
+
PrismaTelemetryMetricPointStore = __decorate([
|
|
15911
|
+
injectable(),
|
|
15912
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15913
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15914
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$5 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$5 : Object])
|
|
15915
|
+
], PrismaTelemetryMetricPointStore);
|
|
15916
|
+
|
|
15917
|
+
//#endregion
|
|
15918
|
+
//#region src/infrastructure/persistence/PrismaTelemetrySpanStore.ts
|
|
15919
|
+
let PrismaTelemetrySpanStore = class PrismaTelemetrySpanStore$1 {
|
|
15920
|
+
constructor(prisma) {
|
|
15921
|
+
this.prisma = prisma;
|
|
15922
|
+
}
|
|
15923
|
+
async upsert(record) {
|
|
15924
|
+
const telemetrySpanId = this.createTelemetrySpanId(record.traceId, record.spanId);
|
|
15925
|
+
const existing = await this.prisma.telemetrySpan.findUnique({ where: { telemetrySpanId } });
|
|
15926
|
+
const attributes = this.mergeAttributes(this.parseJson(existing?.attributesJson ?? null), record.attributes);
|
|
15927
|
+
const events = this.mergeEvents(this.parseJson(existing?.eventsJson ?? null), record.events);
|
|
15928
|
+
const data = {
|
|
15929
|
+
traceId: record.traceId,
|
|
15930
|
+
spanId: record.spanId,
|
|
15931
|
+
parentSpanId: record.parentSpanId ?? existing?.parentSpanId ?? null,
|
|
15932
|
+
runId: record.runId,
|
|
15933
|
+
workflowId: record.workflowId,
|
|
15934
|
+
nodeId: record.nodeId ?? existing?.nodeId ?? null,
|
|
15935
|
+
activationId: record.activationId ?? existing?.activationId ?? null,
|
|
15936
|
+
connectionInvocationId: record.connectionInvocationId ?? existing?.connectionInvocationId ?? null,
|
|
15937
|
+
name: record.name ?? existing?.name ?? "codemation.span",
|
|
15938
|
+
kind: record.kind ?? existing?.kind ?? "internal",
|
|
15939
|
+
status: record.status ?? existing?.status ?? null,
|
|
15940
|
+
statusMessage: record.statusMessage ?? existing?.statusMessage ?? null,
|
|
15941
|
+
startTime: record.startTime ?? existing?.startTime ?? null,
|
|
15942
|
+
endTime: record.endTime ?? existing?.endTime ?? null,
|
|
15943
|
+
workflowFolder: record.workflowFolder ?? existing?.workflowFolder ?? null,
|
|
15944
|
+
nodeType: record.nodeType ?? existing?.nodeType ?? null,
|
|
15945
|
+
nodeRole: record.nodeRole ?? existing?.nodeRole ?? null,
|
|
15946
|
+
modelName: record.modelName ?? existing?.modelName ?? null,
|
|
15947
|
+
attributesJson: attributes ? JSON.stringify(attributes) : null,
|
|
15948
|
+
eventsJson: events.length > 0 ? JSON.stringify(events) : null,
|
|
15949
|
+
retentionExpiresAt: record.retentionExpiresAt ?? existing?.retentionExpiresAt ?? null,
|
|
15950
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
15951
|
+
};
|
|
15952
|
+
await this.prisma.telemetrySpan.upsert({
|
|
15953
|
+
where: { telemetrySpanId },
|
|
15954
|
+
create: {
|
|
15955
|
+
telemetrySpanId,
|
|
15956
|
+
...data
|
|
15957
|
+
},
|
|
15958
|
+
update: data
|
|
15959
|
+
});
|
|
15960
|
+
}
|
|
15961
|
+
async list(args = {}) {
|
|
15962
|
+
return (await this.prisma.telemetrySpan.findMany({
|
|
15963
|
+
where: {
|
|
15964
|
+
...args.traceId ? { traceId: args.traceId } : {},
|
|
15965
|
+
...args.runId ? { runId: args.runId } : {},
|
|
15966
|
+
...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
|
|
15967
|
+
...args.workflowId ? { workflowId: args.workflowId } : {},
|
|
15968
|
+
...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
|
|
15969
|
+
...args.statuses && args.statuses.length > 0 ? { status: { in: [...args.statuses] } } : {},
|
|
15970
|
+
...args.names && args.names.length > 0 ? { name: { in: [...args.names] } } : {},
|
|
15971
|
+
...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
|
|
15972
|
+
...args.startTimeGte ? { startTime: { gte: args.startTimeGte } } : {},
|
|
15973
|
+
...args.endTimeLte ? { endTime: { lte: args.endTimeLte } } : {}
|
|
15974
|
+
},
|
|
15975
|
+
orderBy: [{ startTime: "asc" }, { spanId: "asc" }],
|
|
15976
|
+
...args.limit ? { take: args.limit } : {}
|
|
15977
|
+
})).map((row) => ({
|
|
15978
|
+
traceId: row.traceId,
|
|
15979
|
+
spanId: row.spanId,
|
|
15980
|
+
parentSpanId: row.parentSpanId ?? void 0,
|
|
15981
|
+
runId: row.runId,
|
|
15982
|
+
workflowId: row.workflowId,
|
|
15983
|
+
nodeId: row.nodeId ?? void 0,
|
|
15984
|
+
activationId: row.activationId ?? void 0,
|
|
15985
|
+
connectionInvocationId: row.connectionInvocationId ?? void 0,
|
|
15986
|
+
name: row.name,
|
|
15987
|
+
kind: row.kind,
|
|
15988
|
+
status: row.status ? row.status : void 0,
|
|
15989
|
+
statusMessage: row.statusMessage ?? void 0,
|
|
15990
|
+
startTime: row.startTime ?? void 0,
|
|
15991
|
+
endTime: row.endTime ?? void 0,
|
|
15992
|
+
workflowFolder: row.workflowFolder ?? void 0,
|
|
15993
|
+
nodeType: row.nodeType ?? void 0,
|
|
15994
|
+
nodeRole: row.nodeRole ?? void 0,
|
|
15995
|
+
modelName: row.modelName ?? void 0,
|
|
15996
|
+
attributes: this.parseJson(row.attributesJson),
|
|
15997
|
+
events: this.parseJson(row.eventsJson) ?? [],
|
|
15998
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
15999
|
+
}));
|
|
16000
|
+
}
|
|
16001
|
+
async listByTraceId(traceId) {
|
|
16002
|
+
return await this.list({ traceId });
|
|
16003
|
+
}
|
|
16004
|
+
async pruneExpired(args) {
|
|
16005
|
+
const rows = await this.prisma.telemetrySpan.findMany({
|
|
16006
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
16007
|
+
select: { telemetrySpanId: true },
|
|
16008
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { telemetrySpanId: "asc" }],
|
|
16009
|
+
...args.limit ? { take: args.limit } : {}
|
|
16010
|
+
});
|
|
16011
|
+
if (rows.length === 0) return 0;
|
|
16012
|
+
return (await this.prisma.telemetrySpan.deleteMany({ where: { telemetrySpanId: { in: rows.map((row) => row.telemetrySpanId) } } })).count;
|
|
16013
|
+
}
|
|
16014
|
+
createTelemetrySpanId(traceId, spanId) {
|
|
16015
|
+
return `${traceId}:${spanId}`;
|
|
16016
|
+
}
|
|
16017
|
+
parseJson(value) {
|
|
16018
|
+
if (!value) return;
|
|
16019
|
+
return JSON.parse(value);
|
|
16020
|
+
}
|
|
16021
|
+
mergeAttributes(existing, update) {
|
|
16022
|
+
if (!existing && !update) return;
|
|
16023
|
+
return {
|
|
16024
|
+
...existing ?? {},
|
|
16025
|
+
...update ?? {}
|
|
16026
|
+
};
|
|
16027
|
+
}
|
|
16028
|
+
mergeEvents(existing, update) {
|
|
16029
|
+
return [...existing ?? [], ...update ?? []];
|
|
16030
|
+
}
|
|
16031
|
+
};
|
|
16032
|
+
PrismaTelemetrySpanStore = __decorate([
|
|
16033
|
+
injectable(),
|
|
16034
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
16035
|
+
__decorateMetadata("design:paramtypes", [Object])
|
|
16036
|
+
], PrismaTelemetrySpanStore);
|
|
16037
|
+
|
|
13852
16038
|
//#endregion
|
|
13853
16039
|
//#region src/infrastructure/persistence/PrismaWorkflowActivationRepository.ts
|
|
13854
16040
|
let PrismaWorkflowActivationRepository = class PrismaWorkflowActivationRepository$1 {
|
|
@@ -14221,13 +16407,22 @@ let PrismaWorkflowRunRepository = class PrismaWorkflowRunRepository$1 {
|
|
|
14221
16407
|
async listRunsOlderThan(args) {
|
|
14222
16408
|
const limit = args.limit ?? 100;
|
|
14223
16409
|
return (await this.prisma.run.findMany({
|
|
14224
|
-
where: {
|
|
14225
|
-
|
|
14226
|
-
|
|
16410
|
+
where: { status: { in: ["completed", "failed"] } },
|
|
16411
|
+
select: {
|
|
16412
|
+
runId: true,
|
|
16413
|
+
workflowId: true,
|
|
16414
|
+
startedAt: true,
|
|
16415
|
+
finishedAt: true,
|
|
16416
|
+
updatedAt: true,
|
|
16417
|
+
policySnapshotJson: true
|
|
14227
16418
|
},
|
|
14228
16419
|
orderBy: { updatedAt: "asc" },
|
|
14229
|
-
take: limit
|
|
14230
|
-
})).
|
|
16420
|
+
take: limit * 4
|
|
16421
|
+
})).filter((row) => {
|
|
16422
|
+
const finishedAt = row.finishedAt ?? row.updatedAt;
|
|
16423
|
+
const retentionSeconds = this.parseJson(row.policySnapshotJson)?.retentionSeconds ?? args.defaultRetentionSeconds;
|
|
16424
|
+
return finishedAt < (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
|
|
16425
|
+
}).slice(0, limit).map((row) => this.rowToPruneCandidate(row));
|
|
14231
16426
|
}
|
|
14232
16427
|
instancesToDomain(runId, workflowId, instances) {
|
|
14233
16428
|
const nodeSnapshotsByNodeId = {};
|
|
@@ -14604,7 +16799,7 @@ PrismaWorkflowRunRepository = __decorate([
|
|
|
14604
16799
|
|
|
14605
16800
|
//#endregion
|
|
14606
16801
|
//#region src/infrastructure/persistence/WorkflowDefinitionRepositoryAdapter.ts
|
|
14607
|
-
var _ref$
|
|
16802
|
+
var _ref$4;
|
|
14608
16803
|
let WorkflowDefinitionRepositoryAdapter = class WorkflowDefinitionRepositoryAdapter$1 {
|
|
14609
16804
|
constructor(engine, workflowRepository) {
|
|
14610
16805
|
this.engine = engine;
|
|
@@ -14627,7 +16822,7 @@ WorkflowDefinitionRepositoryAdapter = __decorate([
|
|
|
14627
16822
|
injectable(),
|
|
14628
16823
|
__decorateParam(0, inject(Engine)),
|
|
14629
16824
|
__decorateParam(1, inject(CoreTokens.WorkflowRepository)),
|
|
14630
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
16825
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$4 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$4 : Object, Object])
|
|
14631
16826
|
], WorkflowDefinitionRepositoryAdapter);
|
|
14632
16827
|
|
|
14633
16828
|
//#endregion
|
|
@@ -14687,7 +16882,7 @@ var CodemationContainerRegistrationRegistrar = class {
|
|
|
14687
16882
|
return;
|
|
14688
16883
|
}
|
|
14689
16884
|
if (this.isClassRegistration(registration)) {
|
|
14690
|
-
container$1.
|
|
16885
|
+
container$1.registerSingleton(registration.token, registration.useClass);
|
|
14691
16886
|
return;
|
|
14692
16887
|
}
|
|
14693
16888
|
container$1.register(registration.token, { useFactory: (dependencyContainer) => registration.useFactory(dependencyContainer) });
|
|
@@ -14785,6 +16980,141 @@ var LocalFilesystemBinaryStorage = class {
|
|
|
14785
16980
|
}
|
|
14786
16981
|
};
|
|
14787
16982
|
|
|
16983
|
+
//#endregion
|
|
16984
|
+
//#region src/application/runs/WorkflowRunRetentionPruneScheduler.ts
|
|
16985
|
+
var _ref$3, _WorkflowRunRetentionPruneScheduler;
|
|
16986
|
+
let WorkflowRunRetentionPruneScheduler = class WorkflowRunRetentionPruneScheduler$1 {
|
|
16987
|
+
static {
|
|
16988
|
+
_WorkflowRunRetentionPruneScheduler = this;
|
|
16989
|
+
}
|
|
16990
|
+
static defaultIntervalMs = 3600 * 1e3;
|
|
16991
|
+
timer;
|
|
16992
|
+
logger;
|
|
16993
|
+
constructor(clock, runs, binaryStorage, telemetrySpanStore, telemetryArtifactStore, telemetryMetricPointStore, appConfig, loggerFactory) {
|
|
16994
|
+
this.clock = clock;
|
|
16995
|
+
this.runs = runs;
|
|
16996
|
+
this.binaryStorage = binaryStorage;
|
|
16997
|
+
this.telemetrySpanStore = telemetrySpanStore;
|
|
16998
|
+
this.telemetryArtifactStore = telemetryArtifactStore;
|
|
16999
|
+
this.telemetryMetricPointStore = telemetryMetricPointStore;
|
|
17000
|
+
this.appConfig = appConfig;
|
|
17001
|
+
this.logger = loggerFactory.create("codemation.runRetentionPrune");
|
|
17002
|
+
}
|
|
17003
|
+
start() {
|
|
17004
|
+
if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED === "false" && this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED === "false") return;
|
|
17005
|
+
if (this.timer) return;
|
|
17006
|
+
const intervalMs = Number(this.appConfig.env.CODEMATION_RUN_PRUNE_INTERVAL_MS ?? _WorkflowRunRetentionPruneScheduler.defaultIntervalMs);
|
|
17007
|
+
this.runScheduledTick();
|
|
17008
|
+
this.timer = setInterval(() => {
|
|
17009
|
+
this.runScheduledTick();
|
|
17010
|
+
}, intervalMs);
|
|
17011
|
+
}
|
|
17012
|
+
stop() {
|
|
17013
|
+
if (this.timer) {
|
|
17014
|
+
clearInterval(this.timer);
|
|
17015
|
+
this.timer = void 0;
|
|
17016
|
+
}
|
|
17017
|
+
}
|
|
17018
|
+
/** Exposed for tests; production path is the interval started by {@link start}. */
|
|
17019
|
+
async runOnce() {
|
|
17020
|
+
const defaultRetentionSec = Number(this.appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS ?? 86400);
|
|
17021
|
+
const nowIso = this.clock.now().toISOString();
|
|
17022
|
+
let foundCount = 0;
|
|
17023
|
+
let prunedCount = 0;
|
|
17024
|
+
if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED !== "false") {
|
|
17025
|
+
const candidates = await this.runs.listRunsOlderThan?.({
|
|
17026
|
+
nowIso,
|
|
17027
|
+
defaultRetentionSeconds: defaultRetentionSec,
|
|
17028
|
+
limit: 500
|
|
17029
|
+
}) ?? (await this.runs.listRuns({ limit: 500 })).filter((summary) => summary.status === "completed" || summary.status === "failed");
|
|
17030
|
+
for (const candidate of candidates) {
|
|
17031
|
+
const runId = candidate.runId;
|
|
17032
|
+
const workflowId = candidate.workflowId;
|
|
17033
|
+
foundCount += 1;
|
|
17034
|
+
const storageKeys = await this.runs.listBinaryStorageKeys?.(runId) ?? await this.loadStorageKeysFromRunStateFallback(runId);
|
|
17035
|
+
for (const key of storageKeys) await this.binaryStorage.delete(key);
|
|
17036
|
+
await this.runs.deleteRun(runId);
|
|
17037
|
+
prunedCount += 1;
|
|
17038
|
+
this.logger.debug(`Run retention prune: pruned run ${runId} for workflow ${workflowId}`);
|
|
17039
|
+
}
|
|
17040
|
+
}
|
|
17041
|
+
let prunedSpanCount = 0;
|
|
17042
|
+
let prunedArtifactCount = 0;
|
|
17043
|
+
let prunedMetricCount = 0;
|
|
17044
|
+
if (this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED !== "false") {
|
|
17045
|
+
const telemetryLimit = Number(this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_LIMIT ?? 2e3);
|
|
17046
|
+
prunedSpanCount = await this.telemetrySpanStore.pruneExpired({
|
|
17047
|
+
nowIso,
|
|
17048
|
+
limit: telemetryLimit
|
|
17049
|
+
});
|
|
17050
|
+
prunedArtifactCount = await this.telemetryArtifactStore.pruneExpired({
|
|
17051
|
+
nowIso,
|
|
17052
|
+
limit: telemetryLimit
|
|
17053
|
+
});
|
|
17054
|
+
prunedMetricCount = await this.telemetryMetricPointStore.pruneExpired({
|
|
17055
|
+
nowIso,
|
|
17056
|
+
limit: telemetryLimit
|
|
17057
|
+
});
|
|
17058
|
+
}
|
|
17059
|
+
if (foundCount + prunedCount + prunedSpanCount + prunedArtifactCount + prunedMetricCount === 0) return;
|
|
17060
|
+
this.logger.info(`Run retention prune: found ${foundCount} run(s) to prune`);
|
|
17061
|
+
this.logger.info(`Run retention prune: pruned ${prunedCount} run(s)`);
|
|
17062
|
+
this.logger.info(`Run retention prune: pruned ${prunedSpanCount} telemetry span(s)`);
|
|
17063
|
+
this.logger.info(`Run retention prune: pruned ${prunedArtifactCount} telemetry artifact(s)`);
|
|
17064
|
+
this.logger.info(`Run retention prune: pruned ${prunedMetricCount} telemetry metric point(s)`);
|
|
17065
|
+
}
|
|
17066
|
+
async runScheduledTick() {
|
|
17067
|
+
try {
|
|
17068
|
+
await this.runOnce();
|
|
17069
|
+
} catch (error) {
|
|
17070
|
+
this.logger.warn(`Run retention prune tick failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
17071
|
+
}
|
|
17072
|
+
}
|
|
17073
|
+
async loadStorageKeysFromRunStateFallback(runId) {
|
|
17074
|
+
const state = await this.runs.load(runId);
|
|
17075
|
+
if (!state) return [];
|
|
17076
|
+
const keys = /* @__PURE__ */ new Set();
|
|
17077
|
+
this.collectStorageKeysFromValue(state.outputsByNode, keys);
|
|
17078
|
+
this.collectStorageKeysFromValue(state.nodeSnapshotsByNodeId, keys);
|
|
17079
|
+
this.collectStorageKeysFromValue(state.mutableState, keys);
|
|
17080
|
+
return [...keys];
|
|
17081
|
+
}
|
|
17082
|
+
collectStorageKeysFromValue(value, keys) {
|
|
17083
|
+
if (Array.isArray(value)) {
|
|
17084
|
+
for (const entry of value) this.collectStorageKeysFromValue(entry, keys);
|
|
17085
|
+
return;
|
|
17086
|
+
}
|
|
17087
|
+
if (!value || typeof value !== "object") return;
|
|
17088
|
+
const record = value;
|
|
17089
|
+
if (typeof record.id === "string" && typeof record.storageKey === "string" && typeof record.mimeType === "string" && typeof record.size === "number") {
|
|
17090
|
+
if (record.storageKey.length > 0) keys.add(record.storageKey);
|
|
17091
|
+
return;
|
|
17092
|
+
}
|
|
17093
|
+
for (const child of Object.values(record)) this.collectStorageKeysFromValue(child, keys);
|
|
17094
|
+
}
|
|
17095
|
+
};
|
|
17096
|
+
WorkflowRunRetentionPruneScheduler = _WorkflowRunRetentionPruneScheduler = __decorate([
|
|
17097
|
+
injectable(),
|
|
17098
|
+
__decorateParam(0, inject(ApplicationTokens.Clock)),
|
|
17099
|
+
__decorateParam(1, inject(ApplicationTokens.WorkflowRunRepository)),
|
|
17100
|
+
__decorateParam(2, inject(CoreTokens.BinaryStorage)),
|
|
17101
|
+
__decorateParam(3, inject(ApplicationTokens.TelemetrySpanStore)),
|
|
17102
|
+
__decorateParam(4, inject(ApplicationTokens.TelemetryArtifactStore)),
|
|
17103
|
+
__decorateParam(5, inject(ApplicationTokens.TelemetryMetricPointStore)),
|
|
17104
|
+
__decorateParam(6, inject(ApplicationTokens.AppConfig)),
|
|
17105
|
+
__decorateParam(7, inject(ServerLoggerFactory)),
|
|
17106
|
+
__decorateMetadata("design:paramtypes", [
|
|
17107
|
+
Object,
|
|
17108
|
+
Object,
|
|
17109
|
+
Object,
|
|
17110
|
+
Object,
|
|
17111
|
+
Object,
|
|
17112
|
+
Object,
|
|
17113
|
+
Object,
|
|
17114
|
+
typeof (_ref$3 = typeof ServerLoggerFactory !== "undefined" && ServerLoggerFactory) === "function" ? _ref$3 : Object
|
|
17115
|
+
])
|
|
17116
|
+
], WorkflowRunRetentionPruneScheduler);
|
|
17117
|
+
|
|
14788
17118
|
//#endregion
|
|
14789
17119
|
//#region src/bootstrap/AppContainerLifecycle.ts
|
|
14790
17120
|
var AppContainerLifecycle = class {
|
|
@@ -14795,6 +17125,8 @@ var AppContainerLifecycle = class {
|
|
|
14795
17125
|
async stop(args) {
|
|
14796
17126
|
if (this.container.isRegistered(Engine, true)) await this.container.resolve(Engine).stop();
|
|
14797
17127
|
if (this.container.isRegistered(WorkflowRunEventWebsocketRelay, true)) await this.container.resolve(WorkflowRunEventWebsocketRelay).stop();
|
|
17128
|
+
if (this.container.isRegistered(RunEventBusTelemetryReporter, true)) await this.container.resolve(RunEventBusTelemetryReporter).stop();
|
|
17129
|
+
if (this.container.isRegistered(WorkflowRunRetentionPruneScheduler, true)) this.container.resolve(WorkflowRunRetentionPruneScheduler).stop();
|
|
14798
17130
|
if (args?.stopWebsocketServer !== false && this.container.isRegistered(WorkflowWebsocketServer, true)) await this.container.resolve(WorkflowWebsocketServer).stop();
|
|
14799
17131
|
if (this.ownedPrismaClient) await this.ownedPrismaClient.$disconnect();
|
|
14800
17132
|
}
|
|
@@ -14821,9 +17153,9 @@ DatabaseMigrations = __decorate([
|
|
|
14821
17153
|
|
|
14822
17154
|
//#endregion
|
|
14823
17155
|
//#region src/bootstrap/runtime/FrontendRuntime.ts
|
|
14824
|
-
var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5;
|
|
17156
|
+
var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5$1, _ref6$1, _ref7;
|
|
14825
17157
|
let FrontendRuntime = class FrontendRuntime$1 {
|
|
14826
|
-
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, engine) {
|
|
17158
|
+
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, engine) {
|
|
14827
17159
|
this.appConfig = appConfig;
|
|
14828
17160
|
this.databaseMigrations = databaseMigrations;
|
|
14829
17161
|
this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
|
|
@@ -14831,6 +17163,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
|
|
|
14831
17163
|
this.workflowRepository = workflowRepository;
|
|
14832
17164
|
this.workflowWebsocketServer = workflowWebsocketServer;
|
|
14833
17165
|
this.workflowRunEventWebsocketRelay = workflowRunEventWebsocketRelay;
|
|
17166
|
+
this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
|
|
17167
|
+
this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
|
|
14834
17168
|
this.engine = engine;
|
|
14835
17169
|
}
|
|
14836
17170
|
async start(args) {
|
|
@@ -14839,6 +17173,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
|
|
|
14839
17173
|
if (args?.skipPresentationServers === true) return;
|
|
14840
17174
|
await this.engine.start([...this.workflowRepository.list()]);
|
|
14841
17175
|
await this.workflowWebsocketServer.start();
|
|
17176
|
+
await this.runEventBusTelemetryReporter.start();
|
|
17177
|
+
this.workflowRunRetentionPruneScheduler.start();
|
|
14842
17178
|
await this.workflowRunEventWebsocketRelay.start();
|
|
14843
17179
|
}
|
|
14844
17180
|
};
|
|
@@ -14851,7 +17187,9 @@ FrontendRuntime = __decorate([
|
|
|
14851
17187
|
__decorateParam(4, inject(CoreTokens.WorkflowRepository)),
|
|
14852
17188
|
__decorateParam(5, inject(WorkflowWebsocketServer)),
|
|
14853
17189
|
__decorateParam(6, inject(WorkflowRunEventWebsocketRelay)),
|
|
14854
|
-
__decorateParam(7, inject(
|
|
17190
|
+
__decorateParam(7, inject(RunEventBusTelemetryReporter)),
|
|
17191
|
+
__decorateParam(8, inject(WorkflowRunRetentionPruneScheduler)),
|
|
17192
|
+
__decorateParam(9, inject(Engine)),
|
|
14855
17193
|
__decorateMetadata("design:paramtypes", [
|
|
14856
17194
|
Object,
|
|
14857
17195
|
typeof (_ref$1 = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref$1 : Object,
|
|
@@ -14860,21 +17198,25 @@ FrontendRuntime = __decorate([
|
|
|
14860
17198
|
Object,
|
|
14861
17199
|
typeof (_ref3$1 = typeof WorkflowWebsocketServer !== "undefined" && WorkflowWebsocketServer) === "function" ? _ref3$1 : Object,
|
|
14862
17200
|
typeof (_ref4$1 = typeof WorkflowRunEventWebsocketRelay !== "undefined" && WorkflowRunEventWebsocketRelay) === "function" ? _ref4$1 : Object,
|
|
14863
|
-
typeof (_ref5 = typeof
|
|
17201
|
+
typeof (_ref5$1 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref5$1 : Object,
|
|
17202
|
+
typeof (_ref6$1 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref6$1 : Object,
|
|
17203
|
+
typeof (_ref7 = typeof Engine !== "undefined" && Engine) === "function" ? _ref7 : Object
|
|
14864
17204
|
])
|
|
14865
17205
|
], FrontendRuntime);
|
|
14866
17206
|
|
|
14867
17207
|
//#endregion
|
|
14868
17208
|
//#region src/bootstrap/runtime/WorkerRuntime.ts
|
|
14869
|
-
var _ref, _ref2, _ref3, _ref4;
|
|
17209
|
+
var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
|
|
14870
17210
|
let WorkerRuntime = class WorkerRuntime$1 {
|
|
14871
|
-
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, scheduler, lifecycle) {
|
|
17211
|
+
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, scheduler, lifecycle) {
|
|
14872
17212
|
this.appConfig = appConfig;
|
|
14873
17213
|
this.databaseMigrations = databaseMigrations;
|
|
14874
17214
|
this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
|
|
14875
17215
|
this.workflowActivationRepository = workflowActivationRepository;
|
|
14876
17216
|
this.workflowRepository = workflowRepository;
|
|
14877
17217
|
this.engine = engine;
|
|
17218
|
+
this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
|
|
17219
|
+
this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
|
|
14878
17220
|
this.scheduler = scheduler;
|
|
14879
17221
|
this.lifecycle = lifecycle;
|
|
14880
17222
|
}
|
|
@@ -14883,6 +17225,8 @@ let WorkerRuntime = class WorkerRuntime$1 {
|
|
|
14883
17225
|
await this.runtimeWorkflowActivationPolicy.hydrateFromRepository(this.workflowActivationRepository);
|
|
14884
17226
|
const workflows = [...this.workflowRepository.list()];
|
|
14885
17227
|
await this.engine.start(workflows);
|
|
17228
|
+
await this.runEventBusTelemetryReporter.start();
|
|
17229
|
+
this.workflowRunRetentionPruneScheduler.start();
|
|
14886
17230
|
const worker = this.scheduler.createWorker({
|
|
14887
17231
|
queues,
|
|
14888
17232
|
requestHandler: this.engine
|
|
@@ -14902,8 +17246,10 @@ WorkerRuntime = __decorate([
|
|
|
14902
17246
|
__decorateParam(3, inject(ApplicationTokens.WorkflowActivationRepository)),
|
|
14903
17247
|
__decorateParam(4, inject(CoreTokens.WorkflowRepository)),
|
|
14904
17248
|
__decorateParam(5, inject(Engine)),
|
|
14905
|
-
__decorateParam(6, inject(
|
|
14906
|
-
__decorateParam(7, inject(
|
|
17249
|
+
__decorateParam(6, inject(RunEventBusTelemetryReporter)),
|
|
17250
|
+
__decorateParam(7, inject(WorkflowRunRetentionPruneScheduler)),
|
|
17251
|
+
__decorateParam(8, inject(ApplicationTokens.WorkerRuntimeScheduler)),
|
|
17252
|
+
__decorateParam(9, inject(AppContainerLifecycle)),
|
|
14907
17253
|
__decorateMetadata("design:paramtypes", [
|
|
14908
17254
|
Object,
|
|
14909
17255
|
typeof (_ref = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref : Object,
|
|
@@ -14911,8 +17257,10 @@ WorkerRuntime = __decorate([
|
|
|
14911
17257
|
Object,
|
|
14912
17258
|
Object,
|
|
14913
17259
|
typeof (_ref3 = typeof Engine !== "undefined" && Engine) === "function" ? _ref3 : Object,
|
|
17260
|
+
typeof (_ref4 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref4 : Object,
|
|
17261
|
+
typeof (_ref5 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref5 : Object,
|
|
14914
17262
|
Object,
|
|
14915
|
-
typeof (
|
|
17263
|
+
typeof (_ref6 = typeof AppContainerLifecycle !== "undefined" && AppContainerLifecycle) === "function" ? _ref6 : Object
|
|
14916
17264
|
])
|
|
14917
17265
|
], WorkerRuntime);
|
|
14918
17266
|
|
|
@@ -15045,6 +17393,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15045
17393
|
ListUserAccountsQueryHandler,
|
|
15046
17394
|
VerifyUserInviteQueryHandler,
|
|
15047
17395
|
GetRunBinaryAttachmentQueryHandler,
|
|
17396
|
+
GetTelemetryDashboardDimensionsQueryHandler,
|
|
17397
|
+
GetTelemetryDashboardRunsQueryHandler,
|
|
17398
|
+
GetTelemetryRunTraceQueryHandler,
|
|
17399
|
+
GetTelemetryDashboardSummaryQueryHandler,
|
|
17400
|
+
GetTelemetryDashboardTimeseriesQueryHandler,
|
|
15048
17401
|
GetRunStateQueryHandler,
|
|
15049
17402
|
GetWorkflowRunDetailQueryHandler,
|
|
15050
17403
|
GetWorkflowDebuggerOverlayQueryHandler,
|
|
@@ -15082,6 +17435,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15082
17435
|
DevHonoApiRouteRegistrar,
|
|
15083
17436
|
OAuth2HonoApiRouteRegistrar,
|
|
15084
17437
|
RunHonoApiRouteRegistrar,
|
|
17438
|
+
TelemetryHonoApiRouteRegistrar,
|
|
15085
17439
|
UserHonoApiRouteRegistrar,
|
|
15086
17440
|
WebhookHonoApiRouteRegistrar,
|
|
15087
17441
|
WhitelabelHonoApiRouteRegistrar,
|
|
@@ -15126,8 +17480,8 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15126
17480
|
});
|
|
15127
17481
|
}
|
|
15128
17482
|
registerCredentialTypes(container$1, credentialTypes) {
|
|
15129
|
-
const registry
|
|
15130
|
-
for (const credentialType of credentialTypes) registry
|
|
17483
|
+
const registry = container$1.resolve(CredentialTypeRegistryImpl);
|
|
17484
|
+
for (const credentialType of credentialTypes) registry.register(credentialType);
|
|
15131
17485
|
}
|
|
15132
17486
|
registerConfiguredRegistrations(container$1, appConfig) {
|
|
15133
17487
|
if (appConfig.containerRegistrations.length === 0) return;
|
|
@@ -15145,7 +17499,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15145
17499
|
container$1.registerInstance(CoreTokens.PersistedWorkflowTokenRegistry, container$1.resolve(PersistedWorkflowTokenRegistry));
|
|
15146
17500
|
container$1.register(CredentialTypeRegistryImpl, { useFactory: instanceCachingFactory(() => new CredentialTypeRegistryImpl()) });
|
|
15147
17501
|
container$1.register(CoreTokens.CredentialTypeRegistry, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CredentialTypeRegistryImpl)) });
|
|
15148
|
-
container$1.
|
|
17502
|
+
container$1.registerSingleton(CodemationIdFactory, CodemationIdFactory);
|
|
15149
17503
|
container$1.register(CoreTokens.RunIdFactory, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CodemationIdFactory)) });
|
|
15150
17504
|
container$1.register(CoreTokens.ActivationIdFactory, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CodemationIdFactory)) });
|
|
15151
17505
|
container$1.register(CoreTokens.LiveWorkflowRepository, { useFactory: instanceCachingFactory(() => new LiveWorkflowRepository(new AIAgentConnectionWorkflowExpander(new ConnectionCredentialNodeConfigFactory()))) });
|
|
@@ -15156,6 +17510,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15156
17510
|
container$1.registerInstance(CoreTokens.WorkflowActivationPolicy, runtimeWorkflowActivationPolicy);
|
|
15157
17511
|
new EngineRuntimeRegistrar().register(container$1, {
|
|
15158
17512
|
resolveEngineExecutionLimits: () => inputs.appConfig.engineExecutionLimits,
|
|
17513
|
+
workflowPolicyRuntimeDefaults: this.createWorkflowPolicyRuntimeDefaults(inputs.appConfig),
|
|
15159
17514
|
webhookTriggerMatcherProvider: { createMatcher: (dependencyContainer) => {
|
|
15160
17515
|
const webhookRoutingLogger = dependencyContainer.resolve(ServerLoggerFactory).create("codemation.webhooks.routing");
|
|
15161
17516
|
return new WorkflowRepositoryWebhookTriggerMatcher(dependencyContainer.resolve(CoreTokens.WorkflowRepository), dependencyContainer.resolve(CoreTokens.WorkflowActivationPolicy), {
|
|
@@ -15172,46 +17527,46 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15172
17527
|
} }
|
|
15173
17528
|
});
|
|
15174
17529
|
container$1.registerInstance(LogLevelPolicyFactory, logLevelPolicyFactory);
|
|
15175
|
-
container$1.
|
|
17530
|
+
container$1.registerSingleton(ServerLoggerFactory, ServerLoggerFactory);
|
|
15176
17531
|
container$1.register(ApplicationTokens.LoggerFactory, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(ServerLoggerFactory)) });
|
|
15177
17532
|
container$1.register(ApplicationTokens.PerformanceDiagnosticsLogger, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(ServerLoggerFactory).createPerformanceDiagnostics("codemation.performance")) });
|
|
15178
17533
|
container$1.register(WorkflowWebsocketServer, { useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
15179
17534
|
if (inputs.sharedWorkflowWebsocketServer) return inputs.sharedWorkflowWebsocketServer;
|
|
15180
17535
|
return new WorkflowWebsocketServer(dependencyContainer.resolve(ApplicationTokens.WebSocketPort), dependencyContainer.resolve(ApplicationTokens.WebSocketBindHost), dependencyContainer.resolve(ServerLoggerFactory).create("codemation-websocket.server"));
|
|
15181
17536
|
}) });
|
|
15182
|
-
container$1.
|
|
15183
|
-
container$1.
|
|
15184
|
-
container$1.
|
|
15185
|
-
container$1.
|
|
15186
|
-
container$1.
|
|
15187
|
-
container$1.
|
|
15188
|
-
container$1.
|
|
15189
|
-
container$1.
|
|
15190
|
-
container$1.
|
|
15191
|
-
container$1.
|
|
15192
|
-
container$1.
|
|
15193
|
-
container$1.
|
|
15194
|
-
container$1.
|
|
15195
|
-
container$1.
|
|
15196
|
-
container$1.
|
|
15197
|
-
container$1.
|
|
17537
|
+
container$1.registerSingleton(PrismaClientFactory, PrismaClientFactory);
|
|
17538
|
+
container$1.registerSingleton(WorkflowPolicyUiPresentationFactory, WorkflowPolicyUiPresentationFactory);
|
|
17539
|
+
container$1.registerSingleton(WorkflowDefinitionMapper, WorkflowDefinitionMapper);
|
|
17540
|
+
container$1.registerSingleton(RequestToWebhookItemMapper, RequestToWebhookItemMapper);
|
|
17541
|
+
container$1.registerSingleton(WebhookEndpointPathValidator, WebhookEndpointPathValidator);
|
|
17542
|
+
container$1.registerSingleton(CredentialSecretCipher, CredentialSecretCipher);
|
|
17543
|
+
container$1.registerSingleton(CredentialMaterialResolver, CredentialMaterialResolver);
|
|
17544
|
+
container$1.registerSingleton(CredentialFieldEnvOverlayService, CredentialFieldEnvOverlayService);
|
|
17545
|
+
container$1.registerSingleton(CredentialRuntimeMaterialService, CredentialRuntimeMaterialService);
|
|
17546
|
+
container$1.registerSingleton(WorkflowCredentialNodeResolver, WorkflowCredentialNodeResolver);
|
|
17547
|
+
container$1.registerSingleton(CredentialInstanceService, CredentialInstanceService);
|
|
17548
|
+
container$1.registerSingleton(CredentialBindingService, CredentialBindingService);
|
|
17549
|
+
container$1.registerSingleton(WorkflowActivationPreflightRules, WorkflowActivationPreflightRules);
|
|
17550
|
+
container$1.registerSingleton(WorkflowActivationPreflight, WorkflowActivationPreflight);
|
|
17551
|
+
container$1.registerSingleton(CredentialTestService, CredentialTestService);
|
|
17552
|
+
container$1.registerSingleton(CredentialSessionServiceImpl, CredentialSessionServiceImpl);
|
|
15198
17553
|
if (!inputs.appConfig.hasConfiguredCredentialSessionServiceRegistration) container$1.register(CoreTokens.CredentialSessionService, { useToken: CredentialSessionServiceImpl });
|
|
15199
|
-
container$1.
|
|
15200
|
-
container$1.
|
|
15201
|
-
container$1.
|
|
15202
|
-
container$1.
|
|
15203
|
-
container$1.
|
|
15204
|
-
container$1.
|
|
15205
|
-
container$1.
|
|
15206
|
-
container$1.
|
|
15207
|
-
container$1.
|
|
15208
|
-
container$1.
|
|
15209
|
-
container$1.
|
|
15210
|
-
container$1.
|
|
15211
|
-
container$1.
|
|
15212
|
-
container$1.
|
|
15213
|
-
container$1.
|
|
15214
|
-
container$1.
|
|
17554
|
+
container$1.registerSingleton(OAuth2ProviderRegistry, OAuth2ProviderRegistry);
|
|
17555
|
+
container$1.registerSingleton(OAuth2ConnectService, OAuth2ConnectService);
|
|
17556
|
+
container$1.registerSingleton(CodemationFrontendAuthSnapshotFactory, CodemationFrontendAuthSnapshotFactory);
|
|
17557
|
+
container$1.registerSingleton(FrontendAppConfigFactory, FrontendAppConfigFactory);
|
|
17558
|
+
container$1.registerSingleton(PublicFrontendBootstrapFactory, PublicFrontendBootstrapFactory);
|
|
17559
|
+
container$1.registerSingleton(InternalAuthBootstrapFactory, InternalAuthBootstrapFactory);
|
|
17560
|
+
container$1.registerSingleton(DatabaseMigrations, DatabaseMigrations);
|
|
17561
|
+
container$1.registerSingleton(FrontendRuntime, FrontendRuntime);
|
|
17562
|
+
container$1.registerSingleton(WorkerRuntime, WorkerRuntime);
|
|
17563
|
+
container$1.registerSingleton(DevelopmentSessionBypassVerifier, DevelopmentSessionBypassVerifier);
|
|
17564
|
+
container$1.registerSingleton(SecureRequestDetector, SecureRequestDetector);
|
|
17565
|
+
container$1.registerSingleton(InAppCallbackUrlPolicy, InAppCallbackUrlPolicy);
|
|
17566
|
+
container$1.registerSingleton(AuthSessionCookieFactory, AuthSessionCookieFactory);
|
|
17567
|
+
container$1.registerSingleton(CodemationBetterAuthBcryptPasswordCodec, CodemationBetterAuthBcryptPasswordCodec);
|
|
17568
|
+
container$1.registerSingleton(CodemationBetterAuthDatabaseOptionsFactory, CodemationBetterAuthDatabaseOptionsFactory);
|
|
17569
|
+
container$1.registerSingleton(UserAccountSessionPolicy, UserAccountSessionPolicy);
|
|
15215
17570
|
container$1.register(CodemationBetterAuthBaseUrlPolicy, { useFactory: instanceCachingFactory((dependencyContainer) => new CodemationBetterAuthBaseUrlPolicy(dependencyContainer.resolve(ServerLoggerFactory).create("codemation.auth.better-auth.base-url"))) });
|
|
15216
17571
|
container$1.register(CodemationBetterAuthServerFactory, { useFactory: instanceCachingFactory((dependencyContainer) => new CodemationBetterAuthServerFactory(dependencyContainer.resolve(ApplicationTokens.AppConfig), dependencyContainer.resolve(CodemationBetterAuthDatabaseOptionsFactory), dependencyContainer.resolve(CodemationBetterAuthBcryptPasswordCodec), dependencyContainer.resolve(UserAccountSessionPolicy), dependencyContainer.resolve(CodemationBetterAuthBaseUrlPolicy))) });
|
|
15217
17572
|
container$1.register(CodemationBetterAuthRuntime, { useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
@@ -15225,7 +17580,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15225
17580
|
const policy = dependencyContainer.resolve(UserAccountSessionPolicy);
|
|
15226
17581
|
return new BetterAuthApiSessionVerifier(runtime, prismaClient ? new PrismaUserAccountSessionEligibilityChecker(prismaClient, policy) : void 0);
|
|
15227
17582
|
}) });
|
|
15228
|
-
container$1.
|
|
17583
|
+
container$1.registerSingleton(CodemationSessionVerifier, CodemationSessionVerifier);
|
|
15229
17584
|
container$1.register(ApplicationTokens.SessionVerifier, { useFactory: instanceCachingFactory((dependencyContainer) => {
|
|
15230
17585
|
const appConfig = dependencyContainer.resolve(ApplicationTokens.AppConfig);
|
|
15231
17586
|
const isPackagedDevRuntime = Boolean(appConfig.env.CODEMATION_RUNTIME_DEV_URL?.trim());
|
|
@@ -15244,40 +17599,59 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15244
17599
|
}) });
|
|
15245
17600
|
}
|
|
15246
17601
|
registerRepositoriesAndBuses(container$1) {
|
|
15247
|
-
container$1.
|
|
15248
|
-
container$1.
|
|
15249
|
-
container$1.
|
|
15250
|
-
container$1.
|
|
15251
|
-
container$1.
|
|
15252
|
-
container$1.
|
|
15253
|
-
container$1.register(
|
|
15254
|
-
container$1.
|
|
15255
|
-
container$1.
|
|
15256
|
-
container$1.
|
|
15257
|
-
container$1.
|
|
17602
|
+
container$1.registerSingleton(OtelIdentityFactory, OtelIdentityFactory);
|
|
17603
|
+
container$1.registerSingleton(TelemetryPrivacyPolicy, TelemetryPrivacyPolicy);
|
|
17604
|
+
container$1.registerSingleton(TelemetryEnricherChain, TelemetryEnricherChain);
|
|
17605
|
+
container$1.registerSingleton(TelemetryRetentionTimestampFactory, TelemetryRetentionTimestampFactory);
|
|
17606
|
+
container$1.registerSingleton(TelemetryQueryService, TelemetryQueryService);
|
|
17607
|
+
container$1.registerSingleton(NoOpTelemetryExporter, NoOpTelemetryExporter);
|
|
17608
|
+
container$1.register(CompositeTelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => new CompositeTelemetryExporter([dependencyContainer.resolve(NoOpTelemetryExporter)])) });
|
|
17609
|
+
container$1.registerSingleton(OtelExecutionTelemetryFactory, OtelExecutionTelemetryFactory);
|
|
17610
|
+
container$1.registerSingleton(InMemoryRunTraceContextRepository, InMemoryRunTraceContextRepository);
|
|
17611
|
+
container$1.registerSingleton(InMemoryTelemetrySpanStore, InMemoryTelemetrySpanStore);
|
|
17612
|
+
container$1.registerSingleton(InMemoryTelemetryArtifactStore, InMemoryTelemetryArtifactStore);
|
|
17613
|
+
container$1.registerSingleton(InMemoryTelemetryMetricPointStore, InMemoryTelemetryMetricPointStore);
|
|
17614
|
+
container$1.registerSingleton(PrismaRunTraceContextRepository, PrismaRunTraceContextRepository);
|
|
17615
|
+
container$1.registerSingleton(PrismaTelemetrySpanStore, PrismaTelemetrySpanStore);
|
|
17616
|
+
container$1.registerSingleton(PrismaTelemetryArtifactStore, PrismaTelemetryArtifactStore);
|
|
17617
|
+
container$1.registerSingleton(PrismaTelemetryMetricPointStore, PrismaTelemetryMetricPointStore);
|
|
17618
|
+
container$1.registerSingleton(WorkflowDefinitionRepositoryAdapter, WorkflowDefinitionRepositoryAdapter);
|
|
17619
|
+
container$1.registerSingleton(InMemoryWorkflowRunRepository, InMemoryWorkflowRunRepository);
|
|
17620
|
+
container$1.registerSingleton(InMemoryTriggerSetupStateRepository, InMemoryTriggerSetupStateRepository);
|
|
17621
|
+
container$1.registerSingleton(InMemoryCredentialStore, InMemoryCredentialStore);
|
|
17622
|
+
container$1.registerSingleton(WorkflowRunRepository, WorkflowRunRepository);
|
|
17623
|
+
container$1.registerSingleton(InMemoryWorkflowDebuggerOverlayRepository, InMemoryWorkflowDebuggerOverlayRepository);
|
|
17624
|
+
container$1.registerSingleton(PrismaTriggerSetupStateRepository, PrismaTriggerSetupStateRepository);
|
|
17625
|
+
container$1.registerSingleton(PrismaWorkflowDebuggerOverlayRepository, PrismaWorkflowDebuggerOverlayRepository);
|
|
17626
|
+
container$1.registerSingleton(PrismaWorkflowActivationRepository, PrismaWorkflowActivationRepository);
|
|
17627
|
+
container$1.registerSingleton(InMemoryWorkflowActivationRepository, InMemoryWorkflowActivationRepository);
|
|
17628
|
+
container$1.registerSingleton(PrismaCredentialStore, PrismaCredentialStore);
|
|
15258
17629
|
container$1.register(ApplicationTokens.WorkflowDefinitionRepository, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(WorkflowDefinitionRepositoryAdapter)) });
|
|
15259
|
-
container$1.
|
|
15260
|
-
container$1.
|
|
15261
|
-
container$1.
|
|
15262
|
-
for (const handler of AppContainerFactory.queryHandlers) container$1.
|
|
15263
|
-
for (const handler of AppContainerFactory.commandHandlers) container$1.
|
|
17630
|
+
container$1.registerSingleton(InMemoryQueryBus, InMemoryQueryBus);
|
|
17631
|
+
container$1.registerSingleton(InMemoryCommandBus, InMemoryCommandBus);
|
|
17632
|
+
container$1.registerSingleton(InMemoryDomainEventBus, InMemoryDomainEventBus);
|
|
17633
|
+
for (const handler of AppContainerFactory.queryHandlers) container$1.registerSingleton(ApplicationTokens.QueryHandler, handler);
|
|
17634
|
+
for (const handler of AppContainerFactory.commandHandlers) container$1.registerSingleton(ApplicationTokens.CommandHandler, handler);
|
|
15264
17635
|
container$1.register(ApplicationTokens.QueryBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryQueryBus)) });
|
|
15265
17636
|
container$1.register(ApplicationTokens.CommandBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryCommandBus)) });
|
|
15266
17637
|
container$1.register(ApplicationTokens.DomainEventBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryDomainEventBus)) });
|
|
17638
|
+
container$1.register(ApplicationTokens.TelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CompositeTelemetryExporter)) });
|
|
15267
17639
|
}
|
|
15268
17640
|
registerApplicationServicesAndRoutes(container$1) {
|
|
15269
|
-
container$1.
|
|
15270
|
-
container$1.
|
|
15271
|
-
container$1.
|
|
15272
|
-
container$1.
|
|
15273
|
-
container$1.
|
|
15274
|
-
container$1.
|
|
15275
|
-
for (const registrar of AppContainerFactory.honoRouteRegistrars) container$1.
|
|
15276
|
-
container$1.
|
|
17641
|
+
container$1.registerSingleton(DevBootstrapSummaryAssembler, DevBootstrapSummaryAssembler);
|
|
17642
|
+
container$1.registerSingleton(DevBootstrapSummaryHttpRouteHandler, DevBootstrapSummaryHttpRouteHandler);
|
|
17643
|
+
container$1.registerSingleton(AuthHttpRouteHandler, AuthHttpRouteHandler);
|
|
17644
|
+
container$1.registerSingleton(PublicFrontendBootstrapHttpRouteHandler, PublicFrontendBootstrapHttpRouteHandler);
|
|
17645
|
+
container$1.registerSingleton(InternalAuthBootstrapHttpRouteHandler, InternalAuthBootstrapHttpRouteHandler);
|
|
17646
|
+
container$1.registerSingleton(WhitelabelLogoHttpRouteHandler, WhitelabelLogoHttpRouteHandler);
|
|
17647
|
+
for (const registrar of AppContainerFactory.honoRouteRegistrars) container$1.registerSingleton(ApplicationTokens.HonoApiRouteRegistrar, registrar);
|
|
17648
|
+
container$1.registerSingleton(CodemationHonoApiApp, CodemationHonoApiApp);
|
|
15277
17649
|
}
|
|
15278
17650
|
registerOperationalInfrastructure(container$1) {
|
|
15279
17651
|
container$1.register(ApplicationTokens.WorkflowWebsocketPublisher, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(WorkflowWebsocketServer)) });
|
|
15280
|
-
container$1.
|
|
17652
|
+
container$1.registerSingleton(WorkflowRunEventWebsocketRelay, WorkflowRunEventWebsocketRelay);
|
|
17653
|
+
container$1.registerSingleton(RunEventBusTelemetryReporter, RunEventBusTelemetryReporter);
|
|
17654
|
+
container$1.registerSingleton(WorkflowRunRetentionPruneScheduler, WorkflowRunRetentionPruneScheduler);
|
|
15281
17655
|
}
|
|
15282
17656
|
async registerRuntimeInfrastructure(container$1, appConfig) {
|
|
15283
17657
|
const queuePrefix = appConfig.scheduler.queuePrefix ?? appConfig.eventing.queuePrefix ?? "codemation";
|
|
@@ -15286,7 +17660,6 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15286
17660
|
const binaryStorage = this.createBinaryStorage(appConfig.repoRoot);
|
|
15287
17661
|
container$1.registerInstance(CoreTokens.RunDataFactory, new InMemoryRunDataFactory());
|
|
15288
17662
|
container$1.registerInstance(CoreTokens.BinaryStorage, binaryStorage);
|
|
15289
|
-
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage));
|
|
15290
17663
|
container$1.registerInstance(ApplicationTokens.Clock, new SystemClock());
|
|
15291
17664
|
if (appConfig.persistence.kind === "none") {
|
|
15292
17665
|
const workflowRunRepository$1 = container$1.resolve(InMemoryWorkflowRunRepository);
|
|
@@ -15296,6 +17669,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15296
17669
|
container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, container$1.resolve(InMemoryWorkflowDebuggerOverlayRepository));
|
|
15297
17670
|
container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(InMemoryWorkflowActivationRepository));
|
|
15298
17671
|
container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(InMemoryCredentialStore));
|
|
17672
|
+
container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, container$1.resolve(InMemoryRunTraceContextRepository));
|
|
17673
|
+
container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, container$1.resolve(InMemoryTelemetrySpanStore));
|
|
17674
|
+
container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, container$1.resolve(InMemoryTelemetryArtifactStore));
|
|
17675
|
+
container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, container$1.resolve(InMemoryTelemetryMetricPointStore));
|
|
17676
|
+
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
|
|
15299
17677
|
this.registerRuntimeNodeActivationScheduler(container$1);
|
|
15300
17678
|
return { ownedPrismaClient: null };
|
|
15301
17679
|
}
|
|
@@ -15305,6 +17683,10 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15305
17683
|
const workflowRunRepository = childContainer.resolve(PrismaWorkflowRunRepository);
|
|
15306
17684
|
const triggerSetupStateRepository = childContainer.resolve(PrismaTriggerSetupStateRepository);
|
|
15307
17685
|
const workflowDebuggerOverlayRepository = childContainer.resolve(PrismaWorkflowDebuggerOverlayRepository);
|
|
17686
|
+
const runTraceContextRepository = childContainer.resolve(PrismaRunTraceContextRepository);
|
|
17687
|
+
const telemetrySpanStore = childContainer.resolve(PrismaTelemetrySpanStore);
|
|
17688
|
+
const telemetryArtifactStore = childContainer.resolve(PrismaTelemetryArtifactStore);
|
|
17689
|
+
const telemetryMetricPointStore = childContainer.resolve(PrismaTelemetryMetricPointStore);
|
|
15308
17690
|
container$1.registerInstance(PrismaDatabaseClientToken, prismaOwnership.prismaClient);
|
|
15309
17691
|
container$1.registerInstance(ApplicationTokens.PrismaClient, prismaOwnership.prismaClient);
|
|
15310
17692
|
container$1.registerInstance(CoreTokens.WorkflowExecutionRepository, new EventPublishingWorkflowExecutionRepository(workflowRunRepository, eventBus));
|
|
@@ -15313,6 +17695,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15313
17695
|
container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, workflowDebuggerOverlayRepository);
|
|
15314
17696
|
container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(PrismaWorkflowActivationRepository));
|
|
15315
17697
|
container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(PrismaCredentialStore));
|
|
17698
|
+
container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, runTraceContextRepository);
|
|
17699
|
+
container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, telemetrySpanStore);
|
|
17700
|
+
container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, telemetryArtifactStore);
|
|
17701
|
+
container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, telemetryMetricPointStore);
|
|
17702
|
+
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
|
|
15316
17703
|
if (appConfig.scheduler.kind === "bullmq") container$1.registerInstance(ApplicationTokens.WorkerRuntimeScheduler, new BullmqScheduler({ url: this.requireRedisUrl(appConfig.scheduler.redisUrl) }, queuePrefix));
|
|
15317
17704
|
this.registerRuntimeNodeActivationScheduler(container$1);
|
|
15318
17705
|
return { ownedPrismaClient: prismaOwnership.ownedPrismaClient };
|
|
@@ -15344,6 +17731,15 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15344
17731
|
return new DefaultDrivingScheduler(new ConfigDrivenOffloadPolicy(), dependencyContainer.resolve(ApplicationTokens.WorkerRuntimeScheduler), inlineScheduler);
|
|
15345
17732
|
}) });
|
|
15346
17733
|
}
|
|
17734
|
+
createWorkflowPolicyRuntimeDefaults(appConfig) {
|
|
17735
|
+
return {
|
|
17736
|
+
retentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS),
|
|
17737
|
+
binaryRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_BINARY_RETENTION_DEFAULT_SECONDS),
|
|
17738
|
+
telemetrySpanRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_SPAN_RETENTION_DEFAULT_SECONDS),
|
|
17739
|
+
telemetryArtifactRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_ARTIFACT_RETENTION_DEFAULT_SECONDS),
|
|
17740
|
+
telemetryMetricRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_METRIC_RETENTION_DEFAULT_SECONDS)
|
|
17741
|
+
};
|
|
17742
|
+
}
|
|
15347
17743
|
createBinaryStorage(repoRoot) {
|
|
15348
17744
|
if (!repoRoot) return new InMemoryBinaryStorage();
|
|
15349
17745
|
return new LocalFilesystemBinaryStorage(`${repoRoot}/.codemation/binary`);
|
|
@@ -15362,6 +17758,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15362
17758
|
if (!redisUrl) throw new Error("Redis-backed runtime requires runtime.eventBus.redisUrl or REDIS_URL.");
|
|
15363
17759
|
return redisUrl;
|
|
15364
17760
|
}
|
|
17761
|
+
readPositiveInteger(value) {
|
|
17762
|
+
if (!value) return;
|
|
17763
|
+
const parsed = Number(value);
|
|
17764
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
|
|
17765
|
+
}
|
|
15365
17766
|
synchronizeLiveWorkflowRepository(container$1, workflows) {
|
|
15366
17767
|
container$1.resolve(CoreTokens.LiveWorkflowRepository).setWorkflows(workflows);
|
|
15367
17768
|
if (container$1.isRegistered(WebhookEndpointPathValidator, true)) container$1.resolve(WebhookEndpointPathValidator).validateAndWarn(workflows);
|
|
@@ -15369,5 +17770,5 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15369
17770
|
};
|
|
15370
17771
|
|
|
15371
17772
|
//#endregion
|
|
15372
|
-
export {
|
|
15373
|
-
//# sourceMappingURL=AppContainerFactory-
|
|
17773
|
+
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 };
|
|
17774
|
+
//# sourceMappingURL=AppContainerFactory-DL_qZ80U.js.map
|