@codemation/host 0.2.5 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -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-D9je1sSV.js} +2604 -155
- package/dist/AppContainerFactory-D9je1sSV.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-CFpgKuVE.js → server-C_ZIEOTY.js} +4 -4
- package/dist/{server-CFpgKuVE.js.map → server-C_ZIEOTY.js.map} +1 -1
- package/dist/{server-axppTMgo.d.ts → server-Clvg5x1w.d.ts} +11 -5
- 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 +124 -1
- package/src/bootstrap/AppContainerLifecycle.ts +8 -0
- 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/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/TelemetryHonoApiRouteRegistrar.ts +19 -0
- 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, registry } from "@codemation/core";
|
|
11
|
+
import { AgentConfigInspector, AgentConnectionNodeCollector, CoreTokens, CostTrackingTelemetryAttributeNames, CostTrackingTelemetryMetricNames, DefaultExecutionBinaryService, EventPublishingWorkflowExecutionRepository, GenAiTelemetryAttributeNames, InMemoryLiveWorkflowRepository, InMemoryRunEventBus, ItemsInputNormalizer, NoOpTelemetryArtifactReference, RunFinishedAtFactory, SystemClock, container, getPersistedRuntimeTypeMetadata, inject, injectAll, injectable, instanceCachingFactory, registry } from "@codemation/core";
|
|
12
12
|
import { createHash, randomBytes } from "node:crypto";
|
|
13
13
|
import "reflect-metadata";
|
|
14
|
-
import { ConfigDrivenOffloadPolicy, DefaultDrivingScheduler, DefaultExecutionContextFactory, Engine, EngineRuntimeRegistrar, InMemoryBinaryStorage, InMemoryRunDataFactory, InlineDrivingScheduler, MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry, RunIntentService, RunSummaryMapper, WorkflowRepositoryWebhookTriggerMatcher } from "@codemation/core/bootstrap";
|
|
14
|
+
import { CatalogBackedCostTrackingTelemetryFactory, ConfigDrivenOffloadPolicy, DefaultDrivingScheduler, DefaultExecutionContextFactory, Engine, EngineRuntimeRegistrar, InMemoryBinaryStorage, InMemoryRunDataFactory, InlineDrivingScheduler, MissingRuntimeTriggerToken, PersistedWorkflowTokenRegistry, RunIntentService, RunSummaryMapper, StaticCostCatalog, WorkflowRepositoryWebhookTriggerMatcher } from "@codemation/core/bootstrap";
|
|
15
15
|
import { compare, hash } from "bcryptjs";
|
|
16
16
|
import sanitizeFilename from "sanitize-filename";
|
|
17
17
|
import { WebSocket, WebSocketServer } from "ws";
|
|
@@ -83,7 +83,7 @@ var HandlesCommand = class {
|
|
|
83
83
|
|
|
84
84
|
//#endregion
|
|
85
85
|
//#region src/application/commands/CreateCredentialInstanceCommandHandler.ts
|
|
86
|
-
var _ref$
|
|
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
|
|
@@ -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;
|
|
@@ -3975,12 +5362,12 @@ AuthHonoApiRouteRegistrar = __decorate([
|
|
|
3975
5362
|
}]),
|
|
3976
5363
|
__decorateParam(0, inject(AuthHttpRouteHandler)),
|
|
3977
5364
|
__decorateParam(1, inject(CodemationBetterAuthRuntime)),
|
|
3978
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5365
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$29 = typeof AuthHttpRouteHandler !== "undefined" && AuthHttpRouteHandler) === "function" ? _ref$29 : Object, typeof (_ref2$5 = typeof CodemationBetterAuthRuntime !== "undefined" && CodemationBetterAuthRuntime) === "function" ? _ref2$5 : Object])
|
|
3979
5366
|
], AuthHonoApiRouteRegistrar);
|
|
3980
5367
|
|
|
3981
5368
|
//#endregion
|
|
3982
5369
|
//#region src/presentation/http/hono/registrars/BinaryHonoApiRouteRegistrar.ts
|
|
3983
|
-
var _ref$
|
|
5370
|
+
var _ref$28;
|
|
3984
5371
|
let BinaryHonoApiRouteRegistrar = class BinaryHonoApiRouteRegistrar$1 {
|
|
3985
5372
|
constructor(handler) {
|
|
3986
5373
|
this.handler = handler;
|
|
@@ -3999,12 +5386,12 @@ BinaryHonoApiRouteRegistrar = __decorate([
|
|
|
3999
5386
|
useClass: BinaryHonoApiRouteRegistrar
|
|
4000
5387
|
}]),
|
|
4001
5388
|
__decorateParam(0, inject(BinaryHttpRouteHandler)),
|
|
4002
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5389
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$28 = typeof BinaryHttpRouteHandler !== "undefined" && BinaryHttpRouteHandler) === "function" ? _ref$28 : Object])
|
|
4003
5390
|
], BinaryHonoApiRouteRegistrar);
|
|
4004
5391
|
|
|
4005
5392
|
//#endregion
|
|
4006
5393
|
//#region src/presentation/http/hono/registrars/BootstrapHonoApiRouteRegistrar.ts
|
|
4007
|
-
var _ref$
|
|
5394
|
+
var _ref$27, _ref2$4;
|
|
4008
5395
|
let BootstrapHonoApiRouteRegistrar = class BootstrapHonoApiRouteRegistrar$1 {
|
|
4009
5396
|
constructor(publicFrontendBootstrapHttpRouteHandler, internalAuthBootstrapHttpRouteHandler) {
|
|
4010
5397
|
this.publicFrontendBootstrapHttpRouteHandler = publicFrontendBootstrapHttpRouteHandler;
|
|
@@ -4026,7 +5413,7 @@ BootstrapHonoApiRouteRegistrar = __decorate([
|
|
|
4026
5413
|
}]),
|
|
4027
5414
|
__decorateParam(0, inject(PublicFrontendBootstrapHttpRouteHandler)),
|
|
4028
5415
|
__decorateParam(1, inject(InternalAuthBootstrapHttpRouteHandler)),
|
|
4029
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5416
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$27 = typeof PublicFrontendBootstrapHttpRouteHandler !== "undefined" && PublicFrontendBootstrapHttpRouteHandler) === "function" ? _ref$27 : Object, typeof (_ref2$4 = typeof InternalAuthBootstrapHttpRouteHandler !== "undefined" && InternalAuthBootstrapHttpRouteHandler) === "function" ? _ref2$4 : Object])
|
|
4030
5417
|
], BootstrapHonoApiRouteRegistrar);
|
|
4031
5418
|
|
|
4032
5419
|
//#endregion
|
|
@@ -4134,7 +5521,7 @@ CredentialHttpRouteHandler = __decorate([
|
|
|
4134
5521
|
|
|
4135
5522
|
//#endregion
|
|
4136
5523
|
//#region src/presentation/http/hono/registrars/CredentialHonoApiRouteRegistrar.ts
|
|
4137
|
-
var _ref$
|
|
5524
|
+
var _ref$26;
|
|
4138
5525
|
let CredentialHonoApiRouteRegistrar = class CredentialHonoApiRouteRegistrar$1 {
|
|
4139
5526
|
constructor(handler) {
|
|
4140
5527
|
this.handler = handler;
|
|
@@ -4159,12 +5546,12 @@ CredentialHonoApiRouteRegistrar = __decorate([
|
|
|
4159
5546
|
useClass: CredentialHonoApiRouteRegistrar
|
|
4160
5547
|
}]),
|
|
4161
5548
|
__decorateParam(0, inject(CredentialHttpRouteHandler)),
|
|
4162
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5549
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$26 = typeof CredentialHttpRouteHandler !== "undefined" && CredentialHttpRouteHandler) === "function" ? _ref$26 : Object])
|
|
4163
5550
|
], CredentialHonoApiRouteRegistrar);
|
|
4164
5551
|
|
|
4165
5552
|
//#endregion
|
|
4166
5553
|
//#region src/presentation/http/hono/registrars/DevHonoApiRouteRegistrar.ts
|
|
4167
|
-
var _ref$
|
|
5554
|
+
var _ref$25;
|
|
4168
5555
|
let DevHonoApiRouteRegistrar = class DevHonoApiRouteRegistrar$1 {
|
|
4169
5556
|
constructor(handler) {
|
|
4170
5557
|
this.handler = handler;
|
|
@@ -4180,12 +5567,12 @@ DevHonoApiRouteRegistrar = __decorate([
|
|
|
4180
5567
|
useClass: DevHonoApiRouteRegistrar
|
|
4181
5568
|
}]),
|
|
4182
5569
|
__decorateParam(0, inject(DevBootstrapSummaryHttpRouteHandler)),
|
|
4183
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5570
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$25 = typeof DevBootstrapSummaryHttpRouteHandler !== "undefined" && DevBootstrapSummaryHttpRouteHandler) === "function" ? _ref$25 : Object])
|
|
4184
5571
|
], DevHonoApiRouteRegistrar);
|
|
4185
5572
|
|
|
4186
5573
|
//#endregion
|
|
4187
5574
|
//#region src/presentation/http/routeHandlers/OAuth2HttpRouteHandlerFactory.ts
|
|
4188
|
-
var _ref$
|
|
5575
|
+
var _ref$24, _ref2$3, _OAuth2HttpRouteHandler;
|
|
4189
5576
|
let OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = class OAuth2HttpRouteHandler$1 {
|
|
4190
5577
|
constructor(oauth2ConnectService, credentialInstanceService) {
|
|
4191
5578
|
this.oauth2ConnectService = oauth2ConnectService;
|
|
@@ -4285,12 +5672,12 @@ OAuth2HttpRouteHandler = _OAuth2HttpRouteHandler = __decorate([
|
|
|
4285
5672
|
injectable(),
|
|
4286
5673
|
__decorateParam(0, inject(OAuth2ConnectService)),
|
|
4287
5674
|
__decorateParam(1, inject(CredentialInstanceService)),
|
|
4288
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5675
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$24 = typeof OAuth2ConnectService !== "undefined" && OAuth2ConnectService) === "function" ? _ref$24 : Object, typeof (_ref2$3 = typeof CredentialInstanceService !== "undefined" && CredentialInstanceService) === "function" ? _ref2$3 : Object])
|
|
4289
5676
|
], OAuth2HttpRouteHandler);
|
|
4290
5677
|
|
|
4291
5678
|
//#endregion
|
|
4292
5679
|
//#region src/presentation/http/hono/registrars/OAuth2HonoApiRouteRegistrar.ts
|
|
4293
|
-
var _ref$
|
|
5680
|
+
var _ref$23;
|
|
4294
5681
|
let OAuth2HonoApiRouteRegistrar = class OAuth2HonoApiRouteRegistrar$1 {
|
|
4295
5682
|
constructor(handler) {
|
|
4296
5683
|
this.handler = handler;
|
|
@@ -4309,7 +5696,7 @@ OAuth2HonoApiRouteRegistrar = __decorate([
|
|
|
4309
5696
|
useClass: OAuth2HonoApiRouteRegistrar
|
|
4310
5697
|
}]),
|
|
4311
5698
|
__decorateParam(0, inject(OAuth2HttpRouteHandler)),
|
|
4312
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
5699
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$23 = typeof OAuth2HttpRouteHandler !== "undefined" && OAuth2HttpRouteHandler) === "function" ? _ref$23 : Object])
|
|
4313
5700
|
], OAuth2HonoApiRouteRegistrar);
|
|
4314
5701
|
|
|
4315
5702
|
//#endregion
|
|
@@ -4379,7 +5766,7 @@ RunHttpRouteHandler = __decorate([
|
|
|
4379
5766
|
|
|
4380
5767
|
//#endregion
|
|
4381
5768
|
//#region src/presentation/http/hono/registrars/RunHonoApiRouteRegistrar.ts
|
|
4382
|
-
var _ref$
|
|
5769
|
+
var _ref$22;
|
|
4383
5770
|
let RunHonoApiRouteRegistrar = class RunHonoApiRouteRegistrar$1 {
|
|
4384
5771
|
constructor(handler) {
|
|
4385
5772
|
this.handler = handler;
|
|
@@ -4403,11 +5790,154 @@ RunHonoApiRouteRegistrar = __decorate([
|
|
|
4403
5790
|
injectable(),
|
|
4404
5791
|
registry([{
|
|
4405
5792
|
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
4406
|
-
useClass: RunHonoApiRouteRegistrar
|
|
5793
|
+
useClass: RunHonoApiRouteRegistrar
|
|
5794
|
+
}]),
|
|
5795
|
+
__decorateParam(0, inject(RunHttpRouteHandler)),
|
|
5796
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$22 = typeof RunHttpRouteHandler !== "undefined" && RunHttpRouteHandler) === "function" ? _ref$22 : Object])
|
|
5797
|
+
], RunHonoApiRouteRegistrar);
|
|
5798
|
+
|
|
5799
|
+
//#endregion
|
|
5800
|
+
//#region src/presentation/http/routeHandlers/TelemetryDashboardRequestError.ts
|
|
5801
|
+
var TelemetryDashboardRequestError = class extends Error {};
|
|
5802
|
+
|
|
5803
|
+
//#endregion
|
|
5804
|
+
//#region src/presentation/http/routeHandlers/TelemetryHttpRouteHandler.ts
|
|
5805
|
+
let TelemetryHttpRouteHandler = class TelemetryHttpRouteHandler$1 {
|
|
5806
|
+
constructor(queryBus) {
|
|
5807
|
+
this.queryBus = queryBus;
|
|
5808
|
+
}
|
|
5809
|
+
async getDashboardSummary(request) {
|
|
5810
|
+
try {
|
|
5811
|
+
const filters = this.parseFilters(request);
|
|
5812
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardSummaryQuery(filters)));
|
|
5813
|
+
} catch (error) {
|
|
5814
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5815
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5816
|
+
}
|
|
5817
|
+
}
|
|
5818
|
+
async getDashboardTimeseries(request) {
|
|
5819
|
+
try {
|
|
5820
|
+
const parsed = this.parseTimeseriesRequest(request);
|
|
5821
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardTimeseriesQuery(parsed)));
|
|
5822
|
+
} catch (error) {
|
|
5823
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5824
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5825
|
+
}
|
|
5826
|
+
}
|
|
5827
|
+
async getDashboardDimensions(request) {
|
|
5828
|
+
try {
|
|
5829
|
+
const filters = this.parseFilters(request);
|
|
5830
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardDimensionsQuery(filters)));
|
|
5831
|
+
} catch (error) {
|
|
5832
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5833
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5834
|
+
}
|
|
5835
|
+
}
|
|
5836
|
+
async getDashboardRuns(request) {
|
|
5837
|
+
try {
|
|
5838
|
+
const parsed = this.parseRunsRequest(request);
|
|
5839
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryDashboardRunsQuery(parsed)));
|
|
5840
|
+
} catch (error) {
|
|
5841
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5842
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5843
|
+
}
|
|
5844
|
+
}
|
|
5845
|
+
async getRunTrace(runId) {
|
|
5846
|
+
try {
|
|
5847
|
+
if (!runId.trim()) throw new TelemetryDashboardRequestError("Run trace request requires a run id.");
|
|
5848
|
+
return Response.json(await this.queryBus.execute(new GetTelemetryRunTraceQuery(runId)));
|
|
5849
|
+
} catch (error) {
|
|
5850
|
+
if (error instanceof TelemetryDashboardRequestError) return Response.json({ error: error.message }, { status: 400 });
|
|
5851
|
+
return ServerHttpErrorResponseFactory.fromUnknown(error);
|
|
5852
|
+
}
|
|
5853
|
+
}
|
|
5854
|
+
parseTimeseriesRequest(request) {
|
|
5855
|
+
const interval = new URL(request.url).searchParams.get("interval");
|
|
5856
|
+
if (interval !== "minute_5" && interval !== "minute_15" && interval !== "hour" && interval !== "day" && interval !== "week") throw new TelemetryDashboardRequestError("Query string must include interval=minute_5|minute_15|hour|day|week.");
|
|
5857
|
+
return {
|
|
5858
|
+
interval,
|
|
5859
|
+
filters: this.parseFilters(request)
|
|
5860
|
+
};
|
|
5861
|
+
}
|
|
5862
|
+
parseRunsRequest(request) {
|
|
5863
|
+
const url = new URL(request.url);
|
|
5864
|
+
return {
|
|
5865
|
+
filters: this.parseFilters(request),
|
|
5866
|
+
page: this.readPositiveInt(url, "page", 1),
|
|
5867
|
+
pageSize: this.readPositiveInt(url, "pageSize", 10)
|
|
5868
|
+
};
|
|
5869
|
+
}
|
|
5870
|
+
parseFilters(request) {
|
|
5871
|
+
const url = new URL(request.url);
|
|
5872
|
+
return {
|
|
5873
|
+
workflowIds: this.readMany(url, "workflowId"),
|
|
5874
|
+
statuses: this.readStatuses(url),
|
|
5875
|
+
runOrigins: this.readRunOrigins(url),
|
|
5876
|
+
modelNames: this.readMany(url, "modelName"),
|
|
5877
|
+
startTimeGte: this.readIso(url, "startTimeGte"),
|
|
5878
|
+
endTimeLte: this.readIso(url, "endTimeLte")
|
|
5879
|
+
};
|
|
5880
|
+
}
|
|
5881
|
+
readMany(url, key) {
|
|
5882
|
+
const values = url.searchParams.getAll(key).map((value) => value.trim()).filter((value) => value.length > 0);
|
|
5883
|
+
return values.length > 0 ? values : void 0;
|
|
5884
|
+
}
|
|
5885
|
+
readStatuses(url) {
|
|
5886
|
+
const values = this.readMany(url, "status");
|
|
5887
|
+
if (!values) return;
|
|
5888
|
+
for (const value of values) if (value !== "running" && value !== "completed" && value !== "failed") throw new TelemetryDashboardRequestError(`Unsupported telemetry status filter: ${value}`);
|
|
5889
|
+
return values;
|
|
5890
|
+
}
|
|
5891
|
+
readRunOrigins(url) {
|
|
5892
|
+
const values = this.readMany(url, "runOrigin");
|
|
5893
|
+
if (!values) return;
|
|
5894
|
+
for (const value of values) if (value !== "triggered" && value !== "manual") throw new TelemetryDashboardRequestError(`Unsupported telemetry run origin filter: ${value}`);
|
|
5895
|
+
return values;
|
|
5896
|
+
}
|
|
5897
|
+
readIso(url, key) {
|
|
5898
|
+
const value = url.searchParams.get(key)?.trim();
|
|
5899
|
+
if (!value) return;
|
|
5900
|
+
if (Number.isNaN(new Date(value).getTime())) throw new TelemetryDashboardRequestError(`Invalid ISO timestamp for ${key}.`);
|
|
5901
|
+
return value;
|
|
5902
|
+
}
|
|
5903
|
+
readPositiveInt(url, key, fallback) {
|
|
5904
|
+
const raw$1 = url.searchParams.get(key)?.trim();
|
|
5905
|
+
if (!raw$1) return fallback;
|
|
5906
|
+
const value = Number(raw$1);
|
|
5907
|
+
if (!Number.isInteger(value) || value <= 0) throw new TelemetryDashboardRequestError(`${key} must be a positive integer.`);
|
|
5908
|
+
return value;
|
|
5909
|
+
}
|
|
5910
|
+
};
|
|
5911
|
+
TelemetryHttpRouteHandler = __decorate([
|
|
5912
|
+
injectable(),
|
|
5913
|
+
__decorateParam(0, inject(ApplicationTokens.QueryBus)),
|
|
5914
|
+
__decorateMetadata("design:paramtypes", [Object])
|
|
5915
|
+
], TelemetryHttpRouteHandler);
|
|
5916
|
+
|
|
5917
|
+
//#endregion
|
|
5918
|
+
//#region src/presentation/http/hono/registrars/TelemetryHonoApiRouteRegistrar.ts
|
|
5919
|
+
var _ref$21;
|
|
5920
|
+
let TelemetryHonoApiRouteRegistrar = class TelemetryHonoApiRouteRegistrar$1 {
|
|
5921
|
+
constructor(handler) {
|
|
5922
|
+
this.handler = handler;
|
|
5923
|
+
}
|
|
5924
|
+
register(app) {
|
|
5925
|
+
app.get("/telemetry/dashboard/summary", (c) => this.handler.getDashboardSummary(c.req.raw));
|
|
5926
|
+
app.get("/telemetry/dashboard/timeseries", (c) => this.handler.getDashboardTimeseries(c.req.raw));
|
|
5927
|
+
app.get("/telemetry/dashboard/dimensions", (c) => this.handler.getDashboardDimensions(c.req.raw));
|
|
5928
|
+
app.get("/telemetry/dashboard/runs", (c) => this.handler.getDashboardRuns(c.req.raw));
|
|
5929
|
+
app.get("/telemetry/runs/:runId/trace", (c) => this.handler.getRunTrace(c.req.param("runId")));
|
|
5930
|
+
}
|
|
5931
|
+
};
|
|
5932
|
+
TelemetryHonoApiRouteRegistrar = __decorate([
|
|
5933
|
+
injectable(),
|
|
5934
|
+
registry([{
|
|
5935
|
+
token: ApplicationTokens.HonoApiRouteRegistrar,
|
|
5936
|
+
useClass: TelemetryHonoApiRouteRegistrar
|
|
4407
5937
|
}]),
|
|
4408
|
-
__decorateParam(0, inject(
|
|
4409
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
4410
|
-
],
|
|
5938
|
+
__decorateParam(0, inject(TelemetryHttpRouteHandler)),
|
|
5939
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$21 = typeof TelemetryHttpRouteHandler !== "undefined" && TelemetryHttpRouteHandler) === "function" ? _ref$21 : Object])
|
|
5940
|
+
], TelemetryHonoApiRouteRegistrar);
|
|
4411
5941
|
|
|
4412
5942
|
//#endregion
|
|
4413
5943
|
//#region src/presentation/http/routeHandlers/UserHttpRouteHandlerFactory.ts
|
|
@@ -4490,7 +6020,7 @@ UserHttpRouteHandler = __decorate([
|
|
|
4490
6020
|
|
|
4491
6021
|
//#endregion
|
|
4492
6022
|
//#region src/presentation/http/hono/registrars/UserHonoApiRouteRegistrar.ts
|
|
4493
|
-
var _ref$
|
|
6023
|
+
var _ref$20;
|
|
4494
6024
|
let UserHonoApiRouteRegistrar = class UserHonoApiRouteRegistrar$1 {
|
|
4495
6025
|
constructor(handler) {
|
|
4496
6026
|
this.handler = handler;
|
|
@@ -4511,7 +6041,7 @@ UserHonoApiRouteRegistrar = __decorate([
|
|
|
4511
6041
|
useClass: UserHonoApiRouteRegistrar
|
|
4512
6042
|
}]),
|
|
4513
6043
|
__decorateParam(0, inject(UserHttpRouteHandler)),
|
|
4514
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6044
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$20 = typeof UserHttpRouteHandler !== "undefined" && UserHttpRouteHandler) === "function" ? _ref$20 : Object])
|
|
4515
6045
|
], UserHonoApiRouteRegistrar);
|
|
4516
6046
|
|
|
4517
6047
|
//#endregion
|
|
@@ -4612,7 +6142,7 @@ RequestToWebhookItemMapper = __decorate([
|
|
|
4612
6142
|
|
|
4613
6143
|
//#endregion
|
|
4614
6144
|
//#region src/presentation/http/routeHandlers/WebhookHttpRouteHandler.ts
|
|
4615
|
-
var _ref$
|
|
6145
|
+
var _ref$19, _ref2$2;
|
|
4616
6146
|
let WebhookHttpRouteHandler = class WebhookHttpRouteHandler$1 {
|
|
4617
6147
|
constructor(commandBus, runIntentService, requestToWebhookItemMapper) {
|
|
4618
6148
|
this.commandBus = commandBus;
|
|
@@ -4643,14 +6173,14 @@ WebhookHttpRouteHandler = __decorate([
|
|
|
4643
6173
|
__decorateParam(2, inject(RequestToWebhookItemMapper)),
|
|
4644
6174
|
__decorateMetadata("design:paramtypes", [
|
|
4645
6175
|
Object,
|
|
4646
|
-
typeof (_ref$
|
|
6176
|
+
typeof (_ref$19 = typeof RunIntentService !== "undefined" && RunIntentService) === "function" ? _ref$19 : Object,
|
|
4647
6177
|
typeof (_ref2$2 = typeof RequestToWebhookItemMapper !== "undefined" && RequestToWebhookItemMapper) === "function" ? _ref2$2 : Object
|
|
4648
6178
|
])
|
|
4649
6179
|
], WebhookHttpRouteHandler);
|
|
4650
6180
|
|
|
4651
6181
|
//#endregion
|
|
4652
6182
|
//#region src/presentation/http/hono/registrars/WebhookHonoApiRouteRegistrar.ts
|
|
4653
|
-
var _ref$
|
|
6183
|
+
var _ref$18;
|
|
4654
6184
|
let WebhookHonoApiRouteRegistrar = class WebhookHonoApiRouteRegistrar$1 {
|
|
4655
6185
|
constructor(handler) {
|
|
4656
6186
|
this.handler = handler;
|
|
@@ -4672,12 +6202,12 @@ WebhookHonoApiRouteRegistrar = __decorate([
|
|
|
4672
6202
|
useClass: WebhookHonoApiRouteRegistrar
|
|
4673
6203
|
}]),
|
|
4674
6204
|
__decorateParam(0, inject(WebhookHttpRouteHandler)),
|
|
4675
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6205
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$18 = typeof WebhookHttpRouteHandler !== "undefined" && WebhookHttpRouteHandler) === "function" ? _ref$18 : Object])
|
|
4676
6206
|
], WebhookHonoApiRouteRegistrar);
|
|
4677
6207
|
|
|
4678
6208
|
//#endregion
|
|
4679
6209
|
//#region src/presentation/http/hono/registrars/WhitelabelHonoApiRouteRegistrar.ts
|
|
4680
|
-
var _ref$
|
|
6210
|
+
var _ref$17;
|
|
4681
6211
|
let WhitelabelHonoApiRouteRegistrar = class WhitelabelHonoApiRouteRegistrar$1 {
|
|
4682
6212
|
constructor(whitelabelLogoHttpRouteHandler) {
|
|
4683
6213
|
this.whitelabelLogoHttpRouteHandler = whitelabelLogoHttpRouteHandler;
|
|
@@ -4693,12 +6223,12 @@ WhitelabelHonoApiRouteRegistrar = __decorate([
|
|
|
4693
6223
|
useClass: WhitelabelHonoApiRouteRegistrar
|
|
4694
6224
|
}]),
|
|
4695
6225
|
__decorateParam(0, inject(WhitelabelLogoHttpRouteHandler)),
|
|
4696
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6226
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$17 = typeof WhitelabelLogoHttpRouteHandler !== "undefined" && WhitelabelLogoHttpRouteHandler) === "function" ? _ref$17 : Object])
|
|
4697
6227
|
], WhitelabelHonoApiRouteRegistrar);
|
|
4698
6228
|
|
|
4699
6229
|
//#endregion
|
|
4700
6230
|
//#region src/presentation/http/routeHandlers/WorkflowHttpRouteHandler.ts
|
|
4701
|
-
var _ref$
|
|
6231
|
+
var _ref$16;
|
|
4702
6232
|
let WorkflowHttpRouteHandler = class WorkflowHttpRouteHandler$1 {
|
|
4703
6233
|
constructor(queryBus, commandBus, workflowDefinitionMapper) {
|
|
4704
6234
|
this.queryBus = queryBus;
|
|
@@ -4772,13 +6302,13 @@ WorkflowHttpRouteHandler = __decorate([
|
|
|
4772
6302
|
__decorateMetadata("design:paramtypes", [
|
|
4773
6303
|
Object,
|
|
4774
6304
|
Object,
|
|
4775
|
-
typeof (_ref$
|
|
6305
|
+
typeof (_ref$16 = typeof WorkflowDefinitionMapper !== "undefined" && WorkflowDefinitionMapper) === "function" ? _ref$16 : Object
|
|
4776
6306
|
])
|
|
4777
6307
|
], WorkflowHttpRouteHandler);
|
|
4778
6308
|
|
|
4779
6309
|
//#endregion
|
|
4780
6310
|
//#region src/presentation/http/hono/registrars/WorkflowHonoApiRouteRegistrar.ts
|
|
4781
|
-
var _ref$
|
|
6311
|
+
var _ref$15;
|
|
4782
6312
|
let WorkflowHonoApiRouteRegistrar = class WorkflowHonoApiRouteRegistrar$1 {
|
|
4783
6313
|
constructor(handler) {
|
|
4784
6314
|
this.handler = handler;
|
|
@@ -4800,7 +6330,7 @@ WorkflowHonoApiRouteRegistrar = __decorate([
|
|
|
4800
6330
|
useClass: WorkflowHonoApiRouteRegistrar
|
|
4801
6331
|
}]),
|
|
4802
6332
|
__decorateParam(0, inject(WorkflowHttpRouteHandler)),
|
|
4803
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6333
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$15 = typeof WorkflowHttpRouteHandler !== "undefined" && WorkflowHttpRouteHandler) === "function" ? _ref$15 : Object])
|
|
4804
6334
|
], WorkflowHonoApiRouteRegistrar);
|
|
4805
6335
|
|
|
4806
6336
|
//#endregion
|
|
@@ -4841,7 +6371,7 @@ CodemationIdFactory = __decorate([injectable()], CodemationIdFactory);
|
|
|
4841
6371
|
|
|
4842
6372
|
//#endregion
|
|
4843
6373
|
//#region src/infrastructure/di/InMemoryCommandBus.ts
|
|
4844
|
-
var _ref$
|
|
6374
|
+
var _ref$14;
|
|
4845
6375
|
let InMemoryCommandBus = class InMemoryCommandBus$1 {
|
|
4846
6376
|
handlersByCommandType;
|
|
4847
6377
|
constructor(handlers) {
|
|
@@ -4866,7 +6396,7 @@ let InMemoryCommandBus = class InMemoryCommandBus$1 {
|
|
|
4866
6396
|
InMemoryCommandBus = __decorate([
|
|
4867
6397
|
injectable(),
|
|
4868
6398
|
__decorateParam(0, injectAll(ApplicationTokens.CommandHandler)),
|
|
4869
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6399
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$14 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$14 : Object])
|
|
4870
6400
|
], InMemoryCommandBus);
|
|
4871
6401
|
|
|
4872
6402
|
//#endregion
|
|
@@ -4875,7 +6405,7 @@ const domainEventHandlerMetadataKey = Symbol.for("codemation.infrastructure.di.D
|
|
|
4875
6405
|
|
|
4876
6406
|
//#endregion
|
|
4877
6407
|
//#region src/infrastructure/di/InMemoryDomainEventBus.ts
|
|
4878
|
-
var _ref$
|
|
6408
|
+
var _ref$13;
|
|
4879
6409
|
let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
|
|
4880
6410
|
handlersByEventType;
|
|
4881
6411
|
constructor(handlers) {
|
|
@@ -4900,12 +6430,12 @@ let InMemoryDomainEventBus = class InMemoryDomainEventBus$1 {
|
|
|
4900
6430
|
InMemoryDomainEventBus = __decorate([
|
|
4901
6431
|
injectable(),
|
|
4902
6432
|
__decorateParam(0, injectAll(ApplicationTokens.DomainEventHandler)),
|
|
4903
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6433
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$13 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$13 : Object])
|
|
4904
6434
|
], InMemoryDomainEventBus);
|
|
4905
6435
|
|
|
4906
6436
|
//#endregion
|
|
4907
6437
|
//#region src/infrastructure/di/InMemoryQueryBus.ts
|
|
4908
|
-
var _ref$
|
|
6438
|
+
var _ref$12;
|
|
4909
6439
|
let InMemoryQueryBus = class InMemoryQueryBus$1 {
|
|
4910
6440
|
handlersByQueryType;
|
|
4911
6441
|
constructor(handlers) {
|
|
@@ -4930,7 +6460,7 @@ let InMemoryQueryBus = class InMemoryQueryBus$1 {
|
|
|
4930
6460
|
InMemoryQueryBus = __decorate([
|
|
4931
6461
|
injectable(),
|
|
4932
6462
|
__decorateParam(0, injectAll(ApplicationTokens.QueryHandler)),
|
|
4933
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6463
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$12 = typeof ReadonlyArray !== "undefined" && ReadonlyArray) === "function" ? _ref$12 : Object])
|
|
4934
6464
|
], InMemoryQueryBus);
|
|
4935
6465
|
|
|
4936
6466
|
//#endregion
|
|
@@ -5141,7 +6671,7 @@ var CodemationBetterAuthBaseUrlPolicy = class {
|
|
|
5141
6671
|
|
|
5142
6672
|
//#endregion
|
|
5143
6673
|
//#region src/infrastructure/auth/CodemationSessionVerifier.ts
|
|
5144
|
-
var _ref$
|
|
6674
|
+
var _ref$11;
|
|
5145
6675
|
let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
|
|
5146
6676
|
constructor(betterAuthApiSessionVerifier) {
|
|
5147
6677
|
this.betterAuthApiSessionVerifier = betterAuthApiSessionVerifier;
|
|
@@ -5153,7 +6683,7 @@ let CodemationSessionVerifier = class CodemationSessionVerifier$1 {
|
|
|
5153
6683
|
CodemationSessionVerifier = __decorate([
|
|
5154
6684
|
injectable(),
|
|
5155
6685
|
__decorateParam(0, inject(BetterAuthApiSessionVerifier)),
|
|
5156
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
6686
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$11 = typeof BetterAuthApiSessionVerifier !== "undefined" && BetterAuthApiSessionVerifier) === "function" ? _ref$11 : Object])
|
|
5157
6687
|
], CodemationSessionVerifier);
|
|
5158
6688
|
|
|
5159
6689
|
//#endregion
|
|
@@ -5536,6 +7066,234 @@ let InMemoryTriggerSetupStateRepository = class InMemoryTriggerSetupStateReposit
|
|
|
5536
7066
|
};
|
|
5537
7067
|
InMemoryTriggerSetupStateRepository = __decorate([injectable()], InMemoryTriggerSetupStateRepository);
|
|
5538
7068
|
|
|
7069
|
+
//#endregion
|
|
7070
|
+
//#region src/infrastructure/persistence/InMemoryRunTraceContextRepository.ts
|
|
7071
|
+
var _ref$10;
|
|
7072
|
+
let InMemoryRunTraceContextRepository = class InMemoryRunTraceContextRepository$1 {
|
|
7073
|
+
rows = /* @__PURE__ */ new Map();
|
|
7074
|
+
constructor(otelIdentityFactory) {
|
|
7075
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7076
|
+
}
|
|
7077
|
+
async load(runId) {
|
|
7078
|
+
return this.rows.get(decodeURIComponent(runId));
|
|
7079
|
+
}
|
|
7080
|
+
async getOrCreate(args) {
|
|
7081
|
+
const key = decodeURIComponent(args.runId);
|
|
7082
|
+
const existing = this.rows.get(key);
|
|
7083
|
+
if (existing) return existing;
|
|
7084
|
+
const created = {
|
|
7085
|
+
runId: key,
|
|
7086
|
+
workflowId: decodeURIComponent(args.workflowId),
|
|
7087
|
+
traceId: this.otelIdentityFactory.createTraceId(key),
|
|
7088
|
+
rootSpanId: this.otelIdentityFactory.createRootSpanId(key),
|
|
7089
|
+
serviceName: args.serviceName,
|
|
7090
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
7091
|
+
};
|
|
7092
|
+
this.rows.set(key, created);
|
|
7093
|
+
return created;
|
|
7094
|
+
}
|
|
7095
|
+
async upsertExpiry(args) {
|
|
7096
|
+
const key = decodeURIComponent(args.runId);
|
|
7097
|
+
const existing = this.rows.get(key);
|
|
7098
|
+
if (!existing) return;
|
|
7099
|
+
this.rows.set(key, {
|
|
7100
|
+
...existing,
|
|
7101
|
+
expiresAt: this.resolveLaterExpiry(existing.expiresAt, args.expiresAt)
|
|
7102
|
+
});
|
|
7103
|
+
}
|
|
7104
|
+
resolveLaterExpiry(current, candidate) {
|
|
7105
|
+
if (!current) return candidate;
|
|
7106
|
+
if (!candidate) return current;
|
|
7107
|
+
return current >= candidate ? current : candidate;
|
|
7108
|
+
}
|
|
7109
|
+
};
|
|
7110
|
+
InMemoryRunTraceContextRepository = __decorate([
|
|
7111
|
+
injectable(),
|
|
7112
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7113
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$10 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$10 : Object])
|
|
7114
|
+
], InMemoryRunTraceContextRepository);
|
|
7115
|
+
|
|
7116
|
+
//#endregion
|
|
7117
|
+
//#region src/infrastructure/persistence/InMemoryTelemetryArtifactStore.ts
|
|
7118
|
+
var _ref$9;
|
|
7119
|
+
let InMemoryTelemetryArtifactStore = class InMemoryTelemetryArtifactStore$1 {
|
|
7120
|
+
rows = /* @__PURE__ */ new Map();
|
|
7121
|
+
constructor(otelIdentityFactory) {
|
|
7122
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7123
|
+
}
|
|
7124
|
+
async save(record) {
|
|
7125
|
+
const created = {
|
|
7126
|
+
artifactId: this.otelIdentityFactory.createArtifactId(),
|
|
7127
|
+
traceId: record.traceId,
|
|
7128
|
+
spanId: record.spanId,
|
|
7129
|
+
runId: record.runId,
|
|
7130
|
+
workflowId: record.workflowId,
|
|
7131
|
+
nodeId: record.nodeId,
|
|
7132
|
+
activationId: record.activationId,
|
|
7133
|
+
kind: record.kind,
|
|
7134
|
+
contentType: record.contentType,
|
|
7135
|
+
previewText: record.previewText,
|
|
7136
|
+
previewJson: record.previewJson,
|
|
7137
|
+
payloadText: record.payloadText,
|
|
7138
|
+
payloadJson: record.payloadJson,
|
|
7139
|
+
bytes: record.bytes,
|
|
7140
|
+
truncated: record.truncated,
|
|
7141
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
7142
|
+
expiresAt: record.expiresAt?.toISOString(),
|
|
7143
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
7144
|
+
};
|
|
7145
|
+
this.rows.set(created.artifactId, created);
|
|
7146
|
+
return created;
|
|
7147
|
+
}
|
|
7148
|
+
async listByTraceId(traceId) {
|
|
7149
|
+
return [...this.rows.values()].filter((row) => row.traceId === traceId).sort((left, right) => left.createdAt.localeCompare(right.createdAt));
|
|
7150
|
+
}
|
|
7151
|
+
async pruneExpired(args) {
|
|
7152
|
+
const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7153
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7154
|
+
return candidates.length;
|
|
7155
|
+
}
|
|
7156
|
+
};
|
|
7157
|
+
InMemoryTelemetryArtifactStore = __decorate([
|
|
7158
|
+
injectable(),
|
|
7159
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7160
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$9 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$9 : Object])
|
|
7161
|
+
], InMemoryTelemetryArtifactStore);
|
|
7162
|
+
|
|
7163
|
+
//#endregion
|
|
7164
|
+
//#region src/infrastructure/persistence/InMemoryTelemetryMetricPointStore.ts
|
|
7165
|
+
var _ref$8;
|
|
7166
|
+
let InMemoryTelemetryMetricPointStore = class InMemoryTelemetryMetricPointStore$1 {
|
|
7167
|
+
rows = /* @__PURE__ */ new Map();
|
|
7168
|
+
constructor(otelIdentityFactory) {
|
|
7169
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
7170
|
+
}
|
|
7171
|
+
async save(record) {
|
|
7172
|
+
const created = {
|
|
7173
|
+
metricPointId: this.otelIdentityFactory.createArtifactId(),
|
|
7174
|
+
traceId: record.traceId,
|
|
7175
|
+
spanId: record.spanId,
|
|
7176
|
+
runId: record.runId,
|
|
7177
|
+
workflowId: record.workflowId,
|
|
7178
|
+
nodeId: record.nodeId,
|
|
7179
|
+
activationId: record.activationId,
|
|
7180
|
+
metricName: record.name,
|
|
7181
|
+
value: record.value,
|
|
7182
|
+
unit: record.unit,
|
|
7183
|
+
observedAt: record.observedAt,
|
|
7184
|
+
workflowFolder: record.workflowFolder,
|
|
7185
|
+
nodeType: record.nodeType,
|
|
7186
|
+
nodeRole: record.nodeRole,
|
|
7187
|
+
modelName: record.modelName,
|
|
7188
|
+
dimensions: record.attributes,
|
|
7189
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
7190
|
+
};
|
|
7191
|
+
this.rows.set(created.metricPointId, created);
|
|
7192
|
+
return created;
|
|
7193
|
+
}
|
|
7194
|
+
async list(args = {}) {
|
|
7195
|
+
return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
|
|
7196
|
+
const observedCompare = left.observedAt.localeCompare(right.observedAt);
|
|
7197
|
+
if (observedCompare !== 0) return observedCompare;
|
|
7198
|
+
return left.metricPointId.localeCompare(right.metricPointId);
|
|
7199
|
+
}).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7200
|
+
}
|
|
7201
|
+
async pruneExpired(args) {
|
|
7202
|
+
const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7203
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7204
|
+
return candidates.length;
|
|
7205
|
+
}
|
|
7206
|
+
matches(row, args) {
|
|
7207
|
+
if (args.traceId && row.traceId !== args.traceId) return false;
|
|
7208
|
+
if (args.runId && row.runId !== args.runId) return false;
|
|
7209
|
+
if (args.runIds && args.runIds.length > 0 && (!row.runId || !args.runIds.includes(row.runId))) return false;
|
|
7210
|
+
if (args.workflowId && row.workflowId !== args.workflowId) return false;
|
|
7211
|
+
if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
|
|
7212
|
+
if (args.nodeId && row.nodeId !== args.nodeId) return false;
|
|
7213
|
+
if (args.metricNames && args.metricNames.length > 0 && !args.metricNames.includes(row.metricName)) return false;
|
|
7214
|
+
if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
|
|
7215
|
+
if (args.observedAtGte && row.observedAt < args.observedAtGte) return false;
|
|
7216
|
+
if (args.observedAtLte && row.observedAt > args.observedAtLte) return false;
|
|
7217
|
+
return true;
|
|
7218
|
+
}
|
|
7219
|
+
};
|
|
7220
|
+
InMemoryTelemetryMetricPointStore = __decorate([
|
|
7221
|
+
injectable(),
|
|
7222
|
+
__decorateParam(0, inject(OtelIdentityFactory)),
|
|
7223
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$8 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$8 : Object])
|
|
7224
|
+
], InMemoryTelemetryMetricPointStore);
|
|
7225
|
+
|
|
7226
|
+
//#endregion
|
|
7227
|
+
//#region src/infrastructure/persistence/InMemoryTelemetrySpanStore.ts
|
|
7228
|
+
let InMemoryTelemetrySpanStore = class InMemoryTelemetrySpanStore$1 {
|
|
7229
|
+
rows = /* @__PURE__ */ new Map();
|
|
7230
|
+
async upsert(record) {
|
|
7231
|
+
const key = this.createKey(record.traceId, record.spanId);
|
|
7232
|
+
const existing = this.rows.get(key);
|
|
7233
|
+
this.rows.set(key, this.merge(existing, record));
|
|
7234
|
+
}
|
|
7235
|
+
async list(args = {}) {
|
|
7236
|
+
return [...this.rows.values()].filter((row) => this.matches(row, args)).sort((left, right) => {
|
|
7237
|
+
const startCompare = (left.startTime ?? "").localeCompare(right.startTime ?? "");
|
|
7238
|
+
if (startCompare !== 0) return startCompare;
|
|
7239
|
+
return left.spanId.localeCompare(right.spanId);
|
|
7240
|
+
}).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7241
|
+
}
|
|
7242
|
+
async listByTraceId(traceId) {
|
|
7243
|
+
return await this.list({ traceId });
|
|
7244
|
+
}
|
|
7245
|
+
createKey(traceId, spanId) {
|
|
7246
|
+
return `${traceId}:${spanId}`;
|
|
7247
|
+
}
|
|
7248
|
+
merge(existing, update) {
|
|
7249
|
+
return {
|
|
7250
|
+
traceId: update.traceId,
|
|
7251
|
+
spanId: update.spanId,
|
|
7252
|
+
parentSpanId: update.parentSpanId ?? existing?.parentSpanId,
|
|
7253
|
+
runId: update.runId,
|
|
7254
|
+
workflowId: update.workflowId,
|
|
7255
|
+
nodeId: update.nodeId ?? existing?.nodeId,
|
|
7256
|
+
activationId: update.activationId ?? existing?.activationId,
|
|
7257
|
+
connectionInvocationId: update.connectionInvocationId ?? existing?.connectionInvocationId,
|
|
7258
|
+
name: update.name ?? existing?.name ?? "codemation.span",
|
|
7259
|
+
kind: update.kind ?? existing?.kind ?? "internal",
|
|
7260
|
+
status: update.status ?? existing?.status,
|
|
7261
|
+
statusMessage: update.statusMessage ?? existing?.statusMessage,
|
|
7262
|
+
startTime: update.startTime ?? existing?.startTime,
|
|
7263
|
+
endTime: update.endTime ?? existing?.endTime,
|
|
7264
|
+
workflowFolder: update.workflowFolder ?? existing?.workflowFolder,
|
|
7265
|
+
nodeType: update.nodeType ?? existing?.nodeType,
|
|
7266
|
+
nodeRole: update.nodeRole ?? existing?.nodeRole,
|
|
7267
|
+
modelName: update.modelName ?? existing?.modelName,
|
|
7268
|
+
attributes: {
|
|
7269
|
+
...existing?.attributes ?? {},
|
|
7270
|
+
...update.attributes ?? {}
|
|
7271
|
+
},
|
|
7272
|
+
events: [...existing?.events ?? [], ...update.events ?? []],
|
|
7273
|
+
retentionExpiresAt: update.retentionExpiresAt ?? existing?.retentionExpiresAt
|
|
7274
|
+
};
|
|
7275
|
+
}
|
|
7276
|
+
matches(row, args) {
|
|
7277
|
+
if (args.traceId && row.traceId !== args.traceId) return false;
|
|
7278
|
+
if (args.runId && row.runId !== args.runId) return false;
|
|
7279
|
+
if (args.runIds && args.runIds.length > 0 && !args.runIds.includes(row.runId)) return false;
|
|
7280
|
+
if (args.workflowId && row.workflowId !== args.workflowId) return false;
|
|
7281
|
+
if (args.workflowIds && args.workflowIds.length > 0 && !args.workflowIds.includes(row.workflowId)) return false;
|
|
7282
|
+
if (args.statuses && args.statuses.length > 0 && (!row.status || !args.statuses.includes(row.status))) return false;
|
|
7283
|
+
if (args.names && args.names.length > 0 && !args.names.includes(row.name)) return false;
|
|
7284
|
+
if (args.modelNames && args.modelNames.length > 0 && (!row.modelName || !args.modelNames.includes(row.modelName))) return false;
|
|
7285
|
+
if (args.startTimeGte && row.startTime && row.startTime < args.startTimeGte) return false;
|
|
7286
|
+
if (args.endTimeLte && row.endTime && row.endTime > args.endTimeLte) return false;
|
|
7287
|
+
return true;
|
|
7288
|
+
}
|
|
7289
|
+
async pruneExpired(args) {
|
|
7290
|
+
const candidates = [...this.rows.entries()].filter(([, row]) => row.retentionExpiresAt !== void 0 && row.retentionExpiresAt <= args.nowIso).sort((left, right) => (left[1].retentionExpiresAt ?? "").localeCompare(right[1].retentionExpiresAt ?? "")).slice(0, args.limit ?? Number.MAX_SAFE_INTEGER);
|
|
7291
|
+
for (const [key] of candidates) this.rows.delete(key);
|
|
7292
|
+
return candidates.length;
|
|
7293
|
+
}
|
|
7294
|
+
};
|
|
7295
|
+
InMemoryTelemetrySpanStore = __decorate([injectable()], InMemoryTelemetrySpanStore);
|
|
7296
|
+
|
|
5539
7297
|
//#endregion
|
|
5540
7298
|
//#region src/infrastructure/persistence/InMemoryWorkflowActivationRepository.ts
|
|
5541
7299
|
let InMemoryWorkflowActivationRepository = class InMemoryWorkflowActivationRepository$1 {
|
|
@@ -5668,7 +7426,9 @@ let InMemoryWorkflowRunRepository = class InMemoryWorkflowRunRepository$1 {
|
|
|
5668
7426
|
for (const s of this.runs.values()) {
|
|
5669
7427
|
if (s.status !== "completed" && s.status !== "failed") continue;
|
|
5670
7428
|
const finishedAt = RunFinishedAtFactory.resolveIso(s);
|
|
5671
|
-
|
|
7429
|
+
const retentionSeconds = s.policySnapshot?.retentionSeconds ?? args.defaultRetentionSeconds;
|
|
7430
|
+
const cutoffIso = (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
|
|
7431
|
+
if (!finishedAt || finishedAt >= cutoffIso) continue;
|
|
5672
7432
|
out.push({
|
|
5673
7433
|
runId: s.runId,
|
|
5674
7434
|
workflowId: s.workflowId,
|
|
@@ -13607,6 +15367,79 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13607
15367
|
updatedAt: "updatedAt",
|
|
13608
15368
|
stateJson: "stateJson"
|
|
13609
15369
|
};
|
|
15370
|
+
exports.Prisma.RunTraceContextScalarFieldEnum = {
|
|
15371
|
+
runId: "runId",
|
|
15372
|
+
workflowId: "workflowId",
|
|
15373
|
+
traceId: "traceId",
|
|
15374
|
+
rootSpanId: "rootSpanId",
|
|
15375
|
+
serviceName: "serviceName",
|
|
15376
|
+
createdAt: "createdAt",
|
|
15377
|
+
expiresAt: "expiresAt"
|
|
15378
|
+
};
|
|
15379
|
+
exports.Prisma.TelemetrySpanScalarFieldEnum = {
|
|
15380
|
+
telemetrySpanId: "telemetrySpanId",
|
|
15381
|
+
traceId: "traceId",
|
|
15382
|
+
spanId: "spanId",
|
|
15383
|
+
parentSpanId: "parentSpanId",
|
|
15384
|
+
runId: "runId",
|
|
15385
|
+
workflowId: "workflowId",
|
|
15386
|
+
nodeId: "nodeId",
|
|
15387
|
+
activationId: "activationId",
|
|
15388
|
+
connectionInvocationId: "connectionInvocationId",
|
|
15389
|
+
name: "name",
|
|
15390
|
+
kind: "kind",
|
|
15391
|
+
status: "status",
|
|
15392
|
+
statusMessage: "statusMessage",
|
|
15393
|
+
startTime: "startTime",
|
|
15394
|
+
endTime: "endTime",
|
|
15395
|
+
workflowFolder: "workflowFolder",
|
|
15396
|
+
nodeType: "nodeType",
|
|
15397
|
+
nodeRole: "nodeRole",
|
|
15398
|
+
modelName: "modelName",
|
|
15399
|
+
attributesJson: "attributesJson",
|
|
15400
|
+
eventsJson: "eventsJson",
|
|
15401
|
+
retentionExpiresAt: "retentionExpiresAt",
|
|
15402
|
+
updatedAt: "updatedAt"
|
|
15403
|
+
};
|
|
15404
|
+
exports.Prisma.TelemetryArtifactScalarFieldEnum = {
|
|
15405
|
+
artifactId: "artifactId",
|
|
15406
|
+
traceId: "traceId",
|
|
15407
|
+
spanId: "spanId",
|
|
15408
|
+
runId: "runId",
|
|
15409
|
+
workflowId: "workflowId",
|
|
15410
|
+
nodeId: "nodeId",
|
|
15411
|
+
activationId: "activationId",
|
|
15412
|
+
kind: "kind",
|
|
15413
|
+
contentType: "contentType",
|
|
15414
|
+
previewText: "previewText",
|
|
15415
|
+
previewJson: "previewJson",
|
|
15416
|
+
payloadText: "payloadText",
|
|
15417
|
+
payloadJson: "payloadJson",
|
|
15418
|
+
bytes: "bytes",
|
|
15419
|
+
truncated: "truncated",
|
|
15420
|
+
createdAt: "createdAt",
|
|
15421
|
+
expiresAt: "expiresAt",
|
|
15422
|
+
retentionExpiresAt: "retentionExpiresAt"
|
|
15423
|
+
};
|
|
15424
|
+
exports.Prisma.TelemetryMetricPointScalarFieldEnum = {
|
|
15425
|
+
metricPointId: "metricPointId",
|
|
15426
|
+
traceId: "traceId",
|
|
15427
|
+
spanId: "spanId",
|
|
15428
|
+
runId: "runId",
|
|
15429
|
+
workflowId: "workflowId",
|
|
15430
|
+
nodeId: "nodeId",
|
|
15431
|
+
activationId: "activationId",
|
|
15432
|
+
metricName: "metricName",
|
|
15433
|
+
value: "value",
|
|
15434
|
+
unit: "unit",
|
|
15435
|
+
observedAt: "observedAt",
|
|
15436
|
+
workflowFolder: "workflowFolder",
|
|
15437
|
+
nodeType: "nodeType",
|
|
15438
|
+
nodeRole: "nodeRole",
|
|
15439
|
+
modelName: "modelName",
|
|
15440
|
+
dimensionsJson: "dimensionsJson",
|
|
15441
|
+
retentionExpiresAt: "retentionExpiresAt"
|
|
15442
|
+
};
|
|
13610
15443
|
exports.Prisma.CredentialInstanceScalarFieldEnum = {
|
|
13611
15444
|
instanceId: "instanceId",
|
|
13612
15445
|
typeId: "typeId",
|
|
@@ -13734,6 +15567,10 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13734
15567
|
WorkflowDebuggerOverlay: "WorkflowDebuggerOverlay",
|
|
13735
15568
|
WorkflowActivation: "WorkflowActivation",
|
|
13736
15569
|
TriggerSetupState: "TriggerSetupState",
|
|
15570
|
+
RunTraceContext: "RunTraceContext",
|
|
15571
|
+
TelemetrySpan: "TelemetrySpan",
|
|
15572
|
+
TelemetryArtifact: "TelemetryArtifact",
|
|
15573
|
+
TelemetryMetricPoint: "TelemetryMetricPoint",
|
|
13737
15574
|
CredentialInstance: "CredentialInstance",
|
|
13738
15575
|
CredentialSecretMaterial: "CredentialSecretMaterial",
|
|
13739
15576
|
CredentialOAuth2Material: "CredentialOAuth2Material",
|
|
@@ -13754,13 +15591,13 @@ var require_prisma_sqlite_client = /* @__PURE__ */ __commonJS({ "src/infrastruct
|
|
|
13754
15591
|
"clientVersion": "7.5.0",
|
|
13755
15592
|
"engineVersion": "280c870be64f457428992c43c1f6d557fab6e29e",
|
|
13756
15593
|
"activeProvider": "sqlite",
|
|
13757
|
-
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/infrastructure/persistence/generated/prisma-sqlite-client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel Run {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n startedAt String @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n status String\n revision Int @default(0)\n parentJson String? @map(\"parent_json\")\n executionOptionsJson String? @map(\"execution_options_json\")\n controlJson String? @map(\"control_json\")\n workflowSnapshotJson String? @map(\"workflow_snapshot_json\")\n policySnapshotJson String? @map(\"policy_snapshot_json\")\n engineCountersJson String? @map(\"engine_counters_json\")\n mutableStateJson String? @map(\"mutable_state_json\")\n outputsByNodeJson String @map(\"outputs_by_node_json\")\n updatedAt String @map(\"updated_at\")\n\n workItems RunWorkItem[]\n executionInstances ExecutionInstance[]\n slotProjection RunSlotProjection?\n\n @@index([workflowId, startedAt])\n @@index([workflowId, status, finishedAt])\n}\n\nmodel RunWorkItem {\n workItemId String @id @map(\"work_item_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n status String\n targetNodeId String @map(\"target_node_id\")\n batchId String @map(\"batch_id\")\n queueName String? @map(\"queue_name\")\n claimToken String? @map(\"claim_token\")\n claimedBy String? @map(\"claimed_by\")\n claimedAt String? @map(\"claimed_at\")\n availableAt String @map(\"available_at\")\n enqueuedAt String @map(\"enqueued_at\")\n completedAt String? @map(\"completed_at\")\n failedAt String? @map(\"failed_at\")\n sourceInstanceId String? @map(\"source_instance_id\")\n parentInstanceId String? @map(\"parent_instance_id\")\n itemsIn Int @map(\"items_in\")\n inputsByPortJson String @map(\"inputs_by_port_json\")\n errorJson String? @map(\"error_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([runId, status, availableAt])\n @@index([runId, targetNodeId, batchId])\n}\n\nmodel ExecutionInstance {\n instanceId String @id @map(\"instance_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n slotNodeId String @map(\"slot_node_id\")\n workflowNodeId String @map(\"workflow_node_id\")\n kind String\n connectionKind String? @map(\"connection_kind\")\n activationId String? @map(\"activation_id\")\n batchId String @map(\"batch_id\")\n runIndex Int @map(\"run_index\")\n parentInstanceId String? @map(\"parent_instance_id\")\n parentRunId String? @map(\"parent_run_id\")\n workerClaimToken String? @map(\"worker_claim_token\")\n status String\n queuedAt String? @map(\"queued_at\")\n startedAt String? @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n updatedAt String @map(\"updated_at\")\n itemCount Int @map(\"item_count\")\n inputJson String? @map(\"input_json\")\n outputJson String? @map(\"output_json\")\n errorJson String? @map(\"error_json\")\n inputItemIndicesJson String? @map(\"input_item_indices_json\")\n outputItemCount Int? @map(\"output_item_count\")\n successfulItemCount Int? @map(\"successful_item_count\")\n failedItemCount Int? @map(\"failed_item_count\")\n inputStorageKind String? @map(\"input_storage_kind\")\n outputStorageKind String? @map(\"output_storage_kind\")\n inputBytes Int? @map(\"input_bytes\")\n outputBytes Int? @map(\"output_bytes\")\n inputPreviewJson String? @map(\"input_preview_json\")\n outputPreviewJson String? @map(\"output_preview_json\")\n inputPayloadRef String? @map(\"input_payload_ref\")\n outputPayloadRef String? @map(\"output_payload_ref\")\n inputTruncated Boolean? @map(\"input_truncated\")\n outputTruncated Boolean? @map(\"output_truncated\")\n usedPinnedOutput Boolean? @map(\"used_pinned_output\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@unique([runId, slotNodeId, runIndex])\n @@index([runId, slotNodeId, updatedAt])\n @@index([runId, parentInstanceId, updatedAt])\n @@index([runId, kind, updatedAt])\n}\n\nmodel RunSlotProjection {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n revision Int\n updatedAt String @map(\"updated_at\")\n slotStatesJson String @map(\"slot_states_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([workflowId, updatedAt])\n}\n\nmodel WorkflowDebuggerOverlay {\n workflowId String @id @map(\"workflow_id\")\n updatedAt String @map(\"updated_at\")\n copiedFromRunId String? @map(\"copied_from_run_id\")\n stateJson String @map(\"state_json\")\n}\n\nmodel WorkflowActivation {\n workflowId String @id @map(\"workflow_id\")\n isActive Boolean @default(false) @map(\"is_active\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel TriggerSetupState {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n updatedAt String @map(\"updated_at\")\n stateJson String @map(\"state_json\")\n\n @@id([workflowId, nodeId])\n}\n\nmodel CredentialInstance {\n instanceId String @id @map(\"instance_id\")\n typeId String @map(\"type_id\")\n displayName String @map(\"display_name\")\n sourceKind String @map(\"source_kind\")\n publicConfigJson String @map(\"public_config_json\")\n secretRefJson String @map(\"secret_ref_json\")\n tagsJson String @map(\"tags_json\")\n setupStatus String @map(\"setup_status\")\n createdAt String @map(\"created_at\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialSecretMaterial {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2Material {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n providerId String @map(\"provider_id\")\n connectedEmail String? @map(\"connected_email\")\n connectedAt String? @map(\"connected_at\")\n scopesJson String @map(\"scopes_json\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2State {\n state String @id\n instanceId String @map(\"instance_id\")\n codeVerifier String? @map(\"code_verifier\")\n providerId String? @map(\"provider_id\")\n requestedScopesJson String @map(\"requested_scopes_json\")\n createdAt String @map(\"created_at\")\n expiresAt String @map(\"expires_at\")\n\n @@index([instanceId])\n @@index([expiresAt])\n}\n\nmodel CredentialBinding {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n slotKey String @map(\"slot_key\")\n instanceId String @map(\"instance_id\")\n updatedAt String @map(\"updated_at\")\n\n @@id([workflowId, nodeId, slotKey])\n @@index([instanceId])\n}\n\nmodel CredentialTestResult {\n testId String @id @map(\"test_id\")\n instanceId String @map(\"instance_id\")\n status String\n message String?\n detailsJson String @map(\"details_json\")\n testedAt String @map(\"tested_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([instanceId, testedAt])\n}\n\n/// Better Auth user directory (DB sessions + optional OAuth linking)\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false) @map(\"email_verified\")\n image String?\n passwordHash String? @map(\"password_hash\")\n /// invited | active | inactive (local directory / invite flow)\n accountStatus String @default(\"active\") @map(\"account_status\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n accounts Account[]\n sessions Session[]\n invites UserInvite[]\n\n @@map(\"codemation_auth_user\")\n}\n\nmodel UserInvite {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @map(\"created_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"codemation_auth_user_invite\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n /// Legacy Auth.js discriminator; Better Auth omits it on create — default keeps OAuth/credential rows valid.\n type String @default(\"oauth\")\n provider String\n providerAccountId String @map(\"provider_account_id\")\n /// Better Auth email/password (credential provider) hash; kept in sync with `User.passwordHash` for local flows.\n password String? @map(\"password\")\n refresh_token String?\n access_token String?\n expires_at Int?\n accessTokenExpiresAt DateTime? @map(\"access_token_expires_at\")\n refreshTokenExpiresAt DateTime? @map(\"refresh_token_expires_at\")\n token_type String?\n scope String?\n id_token String?\n session_state String?\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n @@map(\"codemation_auth_account\")\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique @map(\"session_token\")\n userId String @map(\"user_id\")\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n ipAddress String? @map(\"ip_address\")\n userAgent String? @map(\"user_agent\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"codemation_auth_session\")\n}\n\nmodel VerificationToken {\n id String @id @default(cuid())\n identifier String\n token String\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@unique([identifier, token])\n @@map(\"codemation_auth_verification_token\")\n}\n"
|
|
15594
|
+
"inlineSchema": "generator client {\n provider = \"prisma-client-js\"\n output = \"../src/infrastructure/persistence/generated/prisma-sqlite-client\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\nmodel Run {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n startedAt String @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n status String\n revision Int @default(0)\n parentJson String? @map(\"parent_json\")\n executionOptionsJson String? @map(\"execution_options_json\")\n controlJson String? @map(\"control_json\")\n workflowSnapshotJson String? @map(\"workflow_snapshot_json\")\n policySnapshotJson String? @map(\"policy_snapshot_json\")\n engineCountersJson String? @map(\"engine_counters_json\")\n mutableStateJson String? @map(\"mutable_state_json\")\n outputsByNodeJson String @map(\"outputs_by_node_json\")\n updatedAt String @map(\"updated_at\")\n\n workItems RunWorkItem[]\n executionInstances ExecutionInstance[]\n slotProjection RunSlotProjection?\n\n @@index([workflowId, startedAt])\n @@index([workflowId, status, finishedAt])\n}\n\nmodel RunWorkItem {\n workItemId String @id @map(\"work_item_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n status String\n targetNodeId String @map(\"target_node_id\")\n batchId String @map(\"batch_id\")\n queueName String? @map(\"queue_name\")\n claimToken String? @map(\"claim_token\")\n claimedBy String? @map(\"claimed_by\")\n claimedAt String? @map(\"claimed_at\")\n availableAt String @map(\"available_at\")\n enqueuedAt String @map(\"enqueued_at\")\n completedAt String? @map(\"completed_at\")\n failedAt String? @map(\"failed_at\")\n sourceInstanceId String? @map(\"source_instance_id\")\n parentInstanceId String? @map(\"parent_instance_id\")\n itemsIn Int @map(\"items_in\")\n inputsByPortJson String @map(\"inputs_by_port_json\")\n errorJson String? @map(\"error_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([runId, status, availableAt])\n @@index([runId, targetNodeId, batchId])\n}\n\nmodel ExecutionInstance {\n instanceId String @id @map(\"instance_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n slotNodeId String @map(\"slot_node_id\")\n workflowNodeId String @map(\"workflow_node_id\")\n kind String\n connectionKind String? @map(\"connection_kind\")\n activationId String? @map(\"activation_id\")\n batchId String @map(\"batch_id\")\n runIndex Int @map(\"run_index\")\n parentInstanceId String? @map(\"parent_instance_id\")\n parentRunId String? @map(\"parent_run_id\")\n workerClaimToken String? @map(\"worker_claim_token\")\n status String\n queuedAt String? @map(\"queued_at\")\n startedAt String? @map(\"started_at\")\n finishedAt String? @map(\"finished_at\")\n updatedAt String @map(\"updated_at\")\n itemCount Int @map(\"item_count\")\n inputJson String? @map(\"input_json\")\n outputJson String? @map(\"output_json\")\n errorJson String? @map(\"error_json\")\n inputItemIndicesJson String? @map(\"input_item_indices_json\")\n outputItemCount Int? @map(\"output_item_count\")\n successfulItemCount Int? @map(\"successful_item_count\")\n failedItemCount Int? @map(\"failed_item_count\")\n inputStorageKind String? @map(\"input_storage_kind\")\n outputStorageKind String? @map(\"output_storage_kind\")\n inputBytes Int? @map(\"input_bytes\")\n outputBytes Int? @map(\"output_bytes\")\n inputPreviewJson String? @map(\"input_preview_json\")\n outputPreviewJson String? @map(\"output_preview_json\")\n inputPayloadRef String? @map(\"input_payload_ref\")\n outputPayloadRef String? @map(\"output_payload_ref\")\n inputTruncated Boolean? @map(\"input_truncated\")\n outputTruncated Boolean? @map(\"output_truncated\")\n usedPinnedOutput Boolean? @map(\"used_pinned_output\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@unique([runId, slotNodeId, runIndex])\n @@index([runId, slotNodeId, updatedAt])\n @@index([runId, parentInstanceId, updatedAt])\n @@index([runId, kind, updatedAt])\n}\n\nmodel RunSlotProjection {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n revision Int\n updatedAt String @map(\"updated_at\")\n slotStatesJson String @map(\"slot_states_json\")\n\n run Run @relation(fields: [runId], references: [runId], onDelete: Cascade)\n\n @@index([workflowId, updatedAt])\n}\n\nmodel WorkflowDebuggerOverlay {\n workflowId String @id @map(\"workflow_id\")\n updatedAt String @map(\"updated_at\")\n copiedFromRunId String? @map(\"copied_from_run_id\")\n stateJson String @map(\"state_json\")\n}\n\nmodel WorkflowActivation {\n workflowId String @id @map(\"workflow_id\")\n isActive Boolean @default(false) @map(\"is_active\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel TriggerSetupState {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n updatedAt String @map(\"updated_at\")\n stateJson String @map(\"state_json\")\n\n @@id([workflowId, nodeId])\n}\n\nmodel RunTraceContext {\n runId String @id @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n traceId String @unique @map(\"trace_id\")\n rootSpanId String @map(\"root_span_id\")\n serviceName String? @map(\"service_name\")\n createdAt String @map(\"created_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([workflowId, createdAt])\n}\n\nmodel TelemetrySpan {\n telemetrySpanId String @id @map(\"telemetry_span_id\")\n traceId String @map(\"trace_id\")\n spanId String @map(\"span_id\")\n parentSpanId String? @map(\"parent_span_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n connectionInvocationId String? @map(\"connection_invocation_id\")\n name String\n kind String\n status String?\n statusMessage String? @map(\"status_message\")\n startTime String? @map(\"start_time\")\n endTime String? @map(\"end_time\")\n workflowFolder String? @map(\"workflow_folder\")\n nodeType String? @map(\"node_type\")\n nodeRole String? @map(\"node_role\")\n modelName String? @map(\"model_name\")\n attributesJson String? @map(\"attributes_json\")\n eventsJson String? @map(\"events_json\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n updatedAt String @map(\"updated_at\")\n\n @@unique([traceId, spanId])\n @@index([traceId, startTime])\n @@index([workflowId, endTime])\n @@index([workflowId, status, endTime])\n @@index([runId, endTime])\n @@index([modelName, endTime])\n @@index([connectionInvocationId])\n @@index([retentionExpiresAt])\n}\n\nmodel TelemetryArtifact {\n artifactId String @id @map(\"artifact_id\")\n traceId String @map(\"trace_id\")\n spanId String @map(\"span_id\")\n runId String @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n kind String\n contentType String @map(\"content_type\")\n previewText String? @map(\"preview_text\")\n previewJson String? @map(\"preview_json\")\n payloadText String? @map(\"payload_text\")\n payloadJson String? @map(\"payload_json\")\n bytes Int?\n truncated Boolean?\n createdAt String @map(\"created_at\")\n expiresAt String? @map(\"expires_at\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n\n @@index([traceId, createdAt])\n @@index([spanId, createdAt])\n @@index([runId, createdAt])\n @@index([retentionExpiresAt])\n}\n\nmodel TelemetryMetricPoint {\n metricPointId String @id @map(\"metric_point_id\")\n traceId String? @map(\"trace_id\")\n spanId String? @map(\"span_id\")\n runId String? @map(\"run_id\")\n workflowId String @map(\"workflow_id\")\n nodeId String? @map(\"node_id\")\n activationId String? @map(\"activation_id\")\n metricName String @map(\"metric_name\")\n value Float\n unit String?\n observedAt String @map(\"observed_at\")\n workflowFolder String? @map(\"workflow_folder\")\n nodeType String? @map(\"node_type\")\n nodeRole String? @map(\"node_role\")\n modelName String? @map(\"model_name\")\n dimensionsJson String? @map(\"dimensions_json\")\n retentionExpiresAt String? @map(\"retention_expires_at\")\n\n @@index([workflowId, observedAt])\n @@index([workflowId, metricName, observedAt])\n @@index([runId, observedAt])\n @@index([traceId, observedAt])\n @@index([modelName, observedAt])\n @@index([retentionExpiresAt])\n}\n\nmodel CredentialInstance {\n instanceId String @id @map(\"instance_id\")\n typeId String @map(\"type_id\")\n displayName String @map(\"display_name\")\n sourceKind String @map(\"source_kind\")\n publicConfigJson String @map(\"public_config_json\")\n secretRefJson String @map(\"secret_ref_json\")\n tagsJson String @map(\"tags_json\")\n setupStatus String @map(\"setup_status\")\n createdAt String @map(\"created_at\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialSecretMaterial {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2Material {\n instanceId String @id @map(\"instance_id\")\n encryptedJson String @map(\"encrypted_json\")\n encryptionKeyId String @map(\"encryption_key_id\")\n schemaVersion Int @map(\"schema_version\")\n providerId String @map(\"provider_id\")\n connectedEmail String? @map(\"connected_email\")\n connectedAt String? @map(\"connected_at\")\n scopesJson String @map(\"scopes_json\")\n updatedAt String @map(\"updated_at\")\n}\n\nmodel CredentialOAuth2State {\n state String @id\n instanceId String @map(\"instance_id\")\n codeVerifier String? @map(\"code_verifier\")\n providerId String? @map(\"provider_id\")\n requestedScopesJson String @map(\"requested_scopes_json\")\n createdAt String @map(\"created_at\")\n expiresAt String @map(\"expires_at\")\n\n @@index([instanceId])\n @@index([expiresAt])\n}\n\nmodel CredentialBinding {\n workflowId String @map(\"workflow_id\")\n nodeId String @map(\"node_id\")\n slotKey String @map(\"slot_key\")\n instanceId String @map(\"instance_id\")\n updatedAt String @map(\"updated_at\")\n\n @@id([workflowId, nodeId, slotKey])\n @@index([instanceId])\n}\n\nmodel CredentialTestResult {\n testId String @id @map(\"test_id\")\n instanceId String @map(\"instance_id\")\n status String\n message String?\n detailsJson String @map(\"details_json\")\n testedAt String @map(\"tested_at\")\n expiresAt String? @map(\"expires_at\")\n\n @@index([instanceId, testedAt])\n}\n\n/// Better Auth user directory (DB sessions + optional OAuth linking)\nmodel User {\n id String @id @default(cuid())\n name String?\n email String? @unique\n emailVerified Boolean @default(false) @map(\"email_verified\")\n image String?\n passwordHash String? @map(\"password_hash\")\n /// invited | active | inactive (local directory / invite flow)\n accountStatus String @default(\"active\") @map(\"account_status\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n accounts Account[]\n sessions Session[]\n invites UserInvite[]\n\n @@map(\"codemation_auth_user\")\n}\n\nmodel UserInvite {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n createdAt DateTime @map(\"created_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId])\n @@map(\"codemation_auth_user_invite\")\n}\n\nmodel Account {\n id String @id @default(cuid())\n userId String @map(\"user_id\")\n /// Legacy Auth.js discriminator; Better Auth omits it on create — default keeps OAuth/credential rows valid.\n type String @default(\"oauth\")\n provider String\n providerAccountId String @map(\"provider_account_id\")\n /// Better Auth email/password (credential provider) hash; kept in sync with `User.passwordHash` for local flows.\n password String? @map(\"password\")\n refresh_token String?\n access_token String?\n expires_at Int?\n accessTokenExpiresAt DateTime? @map(\"access_token_expires_at\")\n refreshTokenExpiresAt DateTime? @map(\"refresh_token_expires_at\")\n token_type String?\n scope String?\n id_token String?\n session_state String?\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([provider, providerAccountId])\n @@map(\"codemation_auth_account\")\n}\n\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique @map(\"session_token\")\n userId String @map(\"user_id\")\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n ipAddress String? @map(\"ip_address\")\n userAgent String? @map(\"user_agent\")\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"codemation_auth_session\")\n}\n\nmodel VerificationToken {\n id String @id @default(cuid())\n identifier String\n token String\n expires DateTime\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@unique([identifier, token])\n @@map(\"codemation_auth_verification_token\")\n}\n"
|
|
13758
15595
|
};
|
|
13759
|
-
config.runtimeDataModel = JSON.parse("{\"models\":{\"Run\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_json\"},{\"name\":\"executionOptionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"execution_options_json\"},{\"name\":\"controlJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"control_json\"},{\"name\":\"workflowSnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_snapshot_json\"},{\"name\":\"policySnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"policy_snapshot_json\"},{\"name\":\"engineCountersJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"engine_counters_json\"},{\"name\":\"mutableStateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mutable_state_json\"},{\"name\":\"outputsByNodeJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"outputs_by_node_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"workItems\",\"kind\":\"object\",\"type\":\"RunWorkItem\",\"relationName\":\"RunToRunWorkItem\"},{\"name\":\"executionInstances\",\"kind\":\"object\",\"type\":\"ExecutionInstance\",\"relationName\":\"ExecutionInstanceToRun\"},{\"name\":\"slotProjection\",\"kind\":\"object\",\"type\":\"RunSlotProjection\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"RunWorkItem\":{\"fields\":[{\"name\":\"workItemId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"work_item_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_node_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"queueName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queue_name\"},{\"name\":\"claimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claim_token\"},{\"name\":\"claimedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_by\"},{\"name\":\"claimedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_at\"},{\"name\":\"availableAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"available_at\"},{\"name\":\"enqueuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"enqueued_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"completed_at\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"failed_at\"},{\"name\":\"sourceInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_instance_id\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"itemsIn\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"items_in\"},{\"name\":\"inputsByPortJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"inputs_by_port_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunWorkItem\"}],\"dbName\":null},\"ExecutionInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"slotNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_node_id\"},{\"name\":\"workflowNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_node_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"connectionKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_kind\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"runIndex\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"run_index\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"parentRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_run_id\"},{\"name\":\"workerClaimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"worker_claim_token\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"queuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queued_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"itemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"item_count\"},{\"name\":\"inputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_json\"},{\"name\":\"outputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"inputItemIndicesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_item_indices_json\"},{\"name\":\"outputItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_item_count\"},{\"name\":\"successfulItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"successful_item_count\"},{\"name\":\"failedItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"failed_item_count\"},{\"name\":\"inputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_storage_kind\"},{\"name\":\"outputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_storage_kind\"},{\"name\":\"inputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"input_bytes\"},{\"name\":\"outputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_bytes\"},{\"name\":\"inputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_preview_json\"},{\"name\":\"outputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_preview_json\"},{\"name\":\"inputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_payload_ref\"},{\"name\":\"outputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_payload_ref\"},{\"name\":\"inputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"input_truncated\"},{\"name\":\"outputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"output_truncated\"},{\"name\":\"usedPinnedOutput\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"used_pinned_output\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"ExecutionInstanceToRun\"}],\"dbName\":null},\"RunSlotProjection\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"slotStatesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_states_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"WorkflowDebuggerOverlay\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"copiedFromRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"copied_from_run_id\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"WorkflowActivation\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TriggerSetupState\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"CredentialInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"type_id\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"display_name\"},{\"name\":\"sourceKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_kind\"},{\"name\":\"publicConfigJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"public_config_json\"},{\"name\":\"secretRefJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"secret_ref_json\"},{\"name\":\"tagsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tags_json\"},{\"name\":\"setupStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"setup_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialSecretMaterial\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2Material\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"connectedEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_email\"},{\"name\":\"connectedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_at\"},{\"name\":\"scopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"scopes_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2State\":{\"fields\":[{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"codeVerifier\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"code_verifier\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"requestedScopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"requested_scopes_json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"CredentialBinding\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialTestResult\":{\"fields\":[{\"name\":\"testId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"test_id\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"detailsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"details_json\"},{\"name\":\"testedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tested_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"email_verified\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"accountStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"account_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"invites\",\"kind\":\"object\",\"type\":\"UserInvite\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user\"},\"UserInvite\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user_invite\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_account_id\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"access_token_expires_at\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"refresh_token_expires_at\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":\"codemation_auth_account\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_token\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"codemation_auth_session\"},\"VerificationToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"codemation_auth_verification_token\"}},\"enums\":{},\"types\":{}}");
|
|
15596
|
+
config.runtimeDataModel = JSON.parse("{\"models\":{\"Run\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"parentJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_json\"},{\"name\":\"executionOptionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"execution_options_json\"},{\"name\":\"controlJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"control_json\"},{\"name\":\"workflowSnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_snapshot_json\"},{\"name\":\"policySnapshotJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"policy_snapshot_json\"},{\"name\":\"engineCountersJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"engine_counters_json\"},{\"name\":\"mutableStateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"mutable_state_json\"},{\"name\":\"outputsByNodeJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"outputs_by_node_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"workItems\",\"kind\":\"object\",\"type\":\"RunWorkItem\",\"relationName\":\"RunToRunWorkItem\"},{\"name\":\"executionInstances\",\"kind\":\"object\",\"type\":\"ExecutionInstance\",\"relationName\":\"ExecutionInstanceToRun\"},{\"name\":\"slotProjection\",\"kind\":\"object\",\"type\":\"RunSlotProjection\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"RunWorkItem\":{\"fields\":[{\"name\":\"workItemId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"work_item_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"targetNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"target_node_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"queueName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queue_name\"},{\"name\":\"claimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claim_token\"},{\"name\":\"claimedBy\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_by\"},{\"name\":\"claimedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"claimed_at\"},{\"name\":\"availableAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"available_at\"},{\"name\":\"enqueuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"enqueued_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"completed_at\"},{\"name\":\"failedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"failed_at\"},{\"name\":\"sourceInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_instance_id\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"itemsIn\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"items_in\"},{\"name\":\"inputsByPortJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"inputs_by_port_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunWorkItem\"}],\"dbName\":null},\"ExecutionInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"slotNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_node_id\"},{\"name\":\"workflowNodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_node_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"connectionKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_kind\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"batchId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"batch_id\"},{\"name\":\"runIndex\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"run_index\"},{\"name\":\"parentInstanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_instance_id\"},{\"name\":\"parentRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_run_id\"},{\"name\":\"workerClaimToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"worker_claim_token\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"queuedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"queued_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"started_at\"},{\"name\":\"finishedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"finished_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"itemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"item_count\"},{\"name\":\"inputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_json\"},{\"name\":\"outputJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_json\"},{\"name\":\"errorJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"error_json\"},{\"name\":\"inputItemIndicesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_item_indices_json\"},{\"name\":\"outputItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_item_count\"},{\"name\":\"successfulItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"successful_item_count\"},{\"name\":\"failedItemCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"failed_item_count\"},{\"name\":\"inputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_storage_kind\"},{\"name\":\"outputStorageKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_storage_kind\"},{\"name\":\"inputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"input_bytes\"},{\"name\":\"outputBytes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"output_bytes\"},{\"name\":\"inputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_preview_json\"},{\"name\":\"outputPreviewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_preview_json\"},{\"name\":\"inputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"input_payload_ref\"},{\"name\":\"outputPayloadRef\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"output_payload_ref\"},{\"name\":\"inputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"input_truncated\"},{\"name\":\"outputTruncated\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"output_truncated\"},{\"name\":\"usedPinnedOutput\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"used_pinned_output\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"ExecutionInstanceToRun\"}],\"dbName\":null},\"RunSlotProjection\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"revision\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"slotStatesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_states_json\"},{\"name\":\"run\",\"kind\":\"object\",\"type\":\"Run\",\"relationName\":\"RunToRunSlotProjection\"}],\"dbName\":null},\"WorkflowDebuggerOverlay\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"copiedFromRunId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"copied_from_run_id\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"WorkflowActivation\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TriggerSetupState\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"},{\"name\":\"stateJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state_json\"}],\"dbName\":null},\"RunTraceContext\":{\"fields\":[{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"rootSpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"root_span_id\"},{\"name\":\"serviceName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"service_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"TelemetrySpan\":{\"fields\":[{\"name\":\"telemetrySpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"telemetry_span_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"parentSpanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"parent_span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"connectionInvocationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connection_invocation_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"statusMessage\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"status_message\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"workflowFolder\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_folder\"},{\"name\":\"nodeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_type\"},{\"name\":\"nodeRole\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_role\"},{\"name\":\"modelName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"model_name\"},{\"name\":\"attributesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"attributes_json\"},{\"name\":\"eventsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"events_json\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"TelemetryArtifact\":{\"fields\":[{\"name\":\"artifactId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"artifact_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"kind\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"contentType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"content_type\"},{\"name\":\"previewText\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"preview_text\"},{\"name\":\"previewJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"preview_json\"},{\"name\":\"payloadText\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"payload_text\"},{\"name\":\"payloadJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"payload_json\"},{\"name\":\"bytes\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"truncated\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"}],\"dbName\":null},\"TelemetryMetricPoint\":{\"fields\":[{\"name\":\"metricPointId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"metric_point_id\"},{\"name\":\"traceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"trace_id\"},{\"name\":\"spanId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"span_id\"},{\"name\":\"runId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"run_id\"},{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"activationId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"activation_id\"},{\"name\":\"metricName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"metric_name\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"Float\"},{\"name\":\"unit\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"observedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"observed_at\"},{\"name\":\"workflowFolder\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_folder\"},{\"name\":\"nodeType\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_type\"},{\"name\":\"nodeRole\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_role\"},{\"name\":\"modelName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"model_name\"},{\"name\":\"dimensionsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"dimensions_json\"},{\"name\":\"retentionExpiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"retention_expires_at\"}],\"dbName\":null},\"CredentialInstance\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"typeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"type_id\"},{\"name\":\"displayName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"display_name\"},{\"name\":\"sourceKind\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"source_kind\"},{\"name\":\"publicConfigJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"public_config_json\"},{\"name\":\"secretRefJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"secret_ref_json\"},{\"name\":\"tagsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tags_json\"},{\"name\":\"setupStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"setup_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialSecretMaterial\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2Material\":{\"fields\":[{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"encryptedJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encrypted_json\"},{\"name\":\"encryptionKeyId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"encryption_key_id\"},{\"name\":\"schemaVersion\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"schema_version\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"connectedEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_email\"},{\"name\":\"connectedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"connected_at\"},{\"name\":\"scopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"scopes_json\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialOAuth2State\":{\"fields\":[{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"codeVerifier\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"code_verifier\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_id\"},{\"name\":\"requestedScopesJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"requested_scopes_json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"created_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"CredentialBinding\":{\"fields\":[{\"name\":\"workflowId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"workflow_id\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"node_id\"},{\"name\":\"slotKey\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"slot_key\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"updated_at\"}],\"dbName\":null},\"CredentialTestResult\":{\"fields\":[{\"name\":\"testId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"test_id\"},{\"name\":\"instanceId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"instance_id\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"detailsJson\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"details_json\"},{\"name\":\"testedAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tested_at\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"expires_at\"}],\"dbName\":null},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"email_verified\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"passwordHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password_hash\"},{\"name\":\"accountStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"account_status\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"invites\",\"kind\":\"object\",\"type\":\"UserInvite\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user\"},\"UserInvite\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"UserToUserInvite\"}],\"dbName\":\"codemation_auth_user_invite\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerAccountId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"provider_account_id\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"password\"},{\"name\":\"refresh_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"access_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"access_token_expires_at\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"refresh_token_expires_at\"},{\"name\":\"token_type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"id_token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"session_state\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"}],\"dbName\":\"codemation_auth_account\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"session_token\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"ip_address\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_agent\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"codemation_auth_session\"},\"VerificationToken\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"codemation_auth_verification_token\"}},\"enums\":{},\"types\":{}}");
|
|
13760
15597
|
defineDmmfProperty(exports.Prisma, config.runtimeDataModel);
|
|
13761
15598
|
config.parameterizationSchema = {
|
|
13762
|
-
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"run\",\"workItems\",\"executionInstances\",\"slotProjection\",\"_count\",\"Run.findUnique\",\"Run.findUniqueOrThrow\",\"Run.findFirst\",\"Run.findFirstOrThrow\",\"Run.findMany\",\"data\",\"Run.createOne\",\"Run.createMany\",\"Run.createManyAndReturn\",\"Run.updateOne\",\"Run.updateMany\",\"Run.updateManyAndReturn\",\"create\",\"update\",\"Run.upsertOne\",\"Run.deleteOne\",\"Run.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Run.groupBy\",\"Run.aggregate\",\"RunWorkItem.findUnique\",\"RunWorkItem.findUniqueOrThrow\",\"RunWorkItem.findFirst\",\"RunWorkItem.findFirstOrThrow\",\"RunWorkItem.findMany\",\"RunWorkItem.createOne\",\"RunWorkItem.createMany\",\"RunWorkItem.createManyAndReturn\",\"RunWorkItem.updateOne\",\"RunWorkItem.updateMany\",\"RunWorkItem.updateManyAndReturn\",\"RunWorkItem.upsertOne\",\"RunWorkItem.deleteOne\",\"RunWorkItem.deleteMany\",\"RunWorkItem.groupBy\",\"RunWorkItem.aggregate\",\"ExecutionInstance.findUnique\",\"ExecutionInstance.findUniqueOrThrow\",\"ExecutionInstance.findFirst\",\"ExecutionInstance.findFirstOrThrow\",\"ExecutionInstance.findMany\",\"ExecutionInstance.createOne\",\"ExecutionInstance.createMany\",\"ExecutionInstance.createManyAndReturn\",\"ExecutionInstance.updateOne\",\"ExecutionInstance.updateMany\",\"ExecutionInstance.updateManyAndReturn\",\"ExecutionInstance.upsertOne\",\"ExecutionInstance.deleteOne\",\"ExecutionInstance.deleteMany\",\"ExecutionInstance.groupBy\",\"ExecutionInstance.aggregate\",\"RunSlotProjection.findUnique\",\"RunSlotProjection.findUniqueOrThrow\",\"RunSlotProjection.findFirst\",\"RunSlotProjection.findFirstOrThrow\",\"RunSlotProjection.findMany\",\"RunSlotProjection.createOne\",\"RunSlotProjection.createMany\",\"RunSlotProjection.createManyAndReturn\",\"RunSlotProjection.updateOne\",\"RunSlotProjection.updateMany\",\"RunSlotProjection.updateManyAndReturn\",\"RunSlotProjection.upsertOne\",\"RunSlotProjection.deleteOne\",\"RunSlotProjection.deleteMany\",\"RunSlotProjection.groupBy\",\"RunSlotProjection.aggregate\",\"WorkflowDebuggerOverlay.findUnique\",\"WorkflowDebuggerOverlay.findUniqueOrThrow\",\"WorkflowDebuggerOverlay.findFirst\",\"WorkflowDebuggerOverlay.findFirstOrThrow\",\"WorkflowDebuggerOverlay.findMany\",\"WorkflowDebuggerOverlay.createOne\",\"WorkflowDebuggerOverlay.createMany\",\"WorkflowDebuggerOverlay.createManyAndReturn\",\"WorkflowDebuggerOverlay.updateOne\",\"WorkflowDebuggerOverlay.updateMany\",\"WorkflowDebuggerOverlay.updateManyAndReturn\",\"WorkflowDebuggerOverlay.upsertOne\",\"WorkflowDebuggerOverlay.deleteOne\",\"WorkflowDebuggerOverlay.deleteMany\",\"WorkflowDebuggerOverlay.groupBy\",\"WorkflowDebuggerOverlay.aggregate\",\"WorkflowActivation.findUnique\",\"WorkflowActivation.findUniqueOrThrow\",\"WorkflowActivation.findFirst\",\"WorkflowActivation.findFirstOrThrow\",\"WorkflowActivation.findMany\",\"WorkflowActivation.createOne\",\"WorkflowActivation.createMany\",\"WorkflowActivation.createManyAndReturn\",\"WorkflowActivation.updateOne\",\"WorkflowActivation.updateMany\",\"WorkflowActivation.updateManyAndReturn\",\"WorkflowActivation.upsertOne\",\"WorkflowActivation.deleteOne\",\"WorkflowActivation.deleteMany\",\"WorkflowActivation.groupBy\",\"WorkflowActivation.aggregate\",\"TriggerSetupState.findUnique\",\"TriggerSetupState.findUniqueOrThrow\",\"TriggerSetupState.findFirst\",\"TriggerSetupState.findFirstOrThrow\",\"TriggerSetupState.findMany\",\"TriggerSetupState.createOne\",\"TriggerSetupState.createMany\",\"TriggerSetupState.createManyAndReturn\",\"TriggerSetupState.updateOne\",\"TriggerSetupState.updateMany\",\"TriggerSetupState.updateManyAndReturn\",\"TriggerSetupState.upsertOne\",\"TriggerSetupState.deleteOne\",\"TriggerSetupState.deleteMany\",\"TriggerSetupState.groupBy\",\"TriggerSetupState.aggregate\",\"CredentialInstance.findUnique\",\"CredentialInstance.findUniqueOrThrow\",\"CredentialInstance.findFirst\",\"CredentialInstance.findFirstOrThrow\",\"CredentialInstance.findMany\",\"CredentialInstance.createOne\",\"CredentialInstance.createMany\",\"CredentialInstance.createManyAndReturn\",\"CredentialInstance.updateOne\",\"CredentialInstance.updateMany\",\"CredentialInstance.updateManyAndReturn\",\"CredentialInstance.upsertOne\",\"CredentialInstance.deleteOne\",\"CredentialInstance.deleteMany\",\"CredentialInstance.groupBy\",\"CredentialInstance.aggregate\",\"CredentialSecretMaterial.findUnique\",\"CredentialSecretMaterial.findUniqueOrThrow\",\"CredentialSecretMaterial.findFirst\",\"CredentialSecretMaterial.findFirstOrThrow\",\"CredentialSecretMaterial.findMany\",\"CredentialSecretMaterial.createOne\",\"CredentialSecretMaterial.createMany\",\"CredentialSecretMaterial.createManyAndReturn\",\"CredentialSecretMaterial.updateOne\",\"CredentialSecretMaterial.updateMany\",\"CredentialSecretMaterial.updateManyAndReturn\",\"CredentialSecretMaterial.upsertOne\",\"CredentialSecretMaterial.deleteOne\",\"CredentialSecretMaterial.deleteMany\",\"CredentialSecretMaterial.groupBy\",\"CredentialSecretMaterial.aggregate\",\"CredentialOAuth2Material.findUnique\",\"CredentialOAuth2Material.findUniqueOrThrow\",\"CredentialOAuth2Material.findFirst\",\"CredentialOAuth2Material.findFirstOrThrow\",\"CredentialOAuth2Material.findMany\",\"CredentialOAuth2Material.createOne\",\"CredentialOAuth2Material.createMany\",\"CredentialOAuth2Material.createManyAndReturn\",\"CredentialOAuth2Material.updateOne\",\"CredentialOAuth2Material.updateMany\",\"CredentialOAuth2Material.updateManyAndReturn\",\"CredentialOAuth2Material.upsertOne\",\"CredentialOAuth2Material.deleteOne\",\"CredentialOAuth2Material.deleteMany\",\"CredentialOAuth2Material.groupBy\",\"CredentialOAuth2Material.aggregate\",\"CredentialOAuth2State.findUnique\",\"CredentialOAuth2State.findUniqueOrThrow\",\"CredentialOAuth2State.findFirst\",\"CredentialOAuth2State.findFirstOrThrow\",\"CredentialOAuth2State.findMany\",\"CredentialOAuth2State.createOne\",\"CredentialOAuth2State.createMany\",\"CredentialOAuth2State.createManyAndReturn\",\"CredentialOAuth2State.updateOne\",\"CredentialOAuth2State.updateMany\",\"CredentialOAuth2State.updateManyAndReturn\",\"CredentialOAuth2State.upsertOne\",\"CredentialOAuth2State.deleteOne\",\"CredentialOAuth2State.deleteMany\",\"CredentialOAuth2State.groupBy\",\"CredentialOAuth2State.aggregate\",\"CredentialBinding.findUnique\",\"CredentialBinding.findUniqueOrThrow\",\"CredentialBinding.findFirst\",\"CredentialBinding.findFirstOrThrow\",\"CredentialBinding.findMany\",\"CredentialBinding.createOne\",\"CredentialBinding.createMany\",\"CredentialBinding.createManyAndReturn\",\"CredentialBinding.updateOne\",\"CredentialBinding.updateMany\",\"CredentialBinding.updateManyAndReturn\",\"CredentialBinding.upsertOne\",\"CredentialBinding.deleteOne\",\"CredentialBinding.deleteMany\",\"CredentialBinding.groupBy\",\"CredentialBinding.aggregate\",\"CredentialTestResult.findUnique\",\"CredentialTestResult.findUniqueOrThrow\",\"CredentialTestResult.findFirst\",\"CredentialTestResult.findFirstOrThrow\",\"CredentialTestResult.findMany\",\"CredentialTestResult.createOne\",\"CredentialTestResult.createMany\",\"CredentialTestResult.createManyAndReturn\",\"CredentialTestResult.updateOne\",\"CredentialTestResult.updateMany\",\"CredentialTestResult.updateManyAndReturn\",\"CredentialTestResult.upsertOne\",\"CredentialTestResult.deleteOne\",\"CredentialTestResult.deleteMany\",\"CredentialTestResult.groupBy\",\"CredentialTestResult.aggregate\",\"user\",\"accounts\",\"sessions\",\"invites\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserInvite.findUnique\",\"UserInvite.findUniqueOrThrow\",\"UserInvite.findFirst\",\"UserInvite.findFirstOrThrow\",\"UserInvite.findMany\",\"UserInvite.createOne\",\"UserInvite.createMany\",\"UserInvite.createManyAndReturn\",\"UserInvite.updateOne\",\"UserInvite.updateMany\",\"UserInvite.updateManyAndReturn\",\"UserInvite.upsertOne\",\"UserInvite.deleteOne\",\"UserInvite.deleteMany\",\"UserInvite.groupBy\",\"UserInvite.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"VerificationToken.findUnique\",\"VerificationToken.findUniqueOrThrow\",\"VerificationToken.findFirst\",\"VerificationToken.findFirstOrThrow\",\"VerificationToken.findMany\",\"VerificationToken.createOne\",\"VerificationToken.createMany\",\"VerificationToken.createManyAndReturn\",\"VerificationToken.updateOne\",\"VerificationToken.updateMany\",\"VerificationToken.updateManyAndReturn\",\"VerificationToken.upsertOne\",\"VerificationToken.deleteOne\",\"VerificationToken.deleteMany\",\"VerificationToken.groupBy\",\"VerificationToken.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"identifier\",\"token\",\"expires\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"identifier_token\",\"sessionToken\",\"userId\",\"ipAddress\",\"userAgent\",\"type\",\"provider\",\"providerAccountId\",\"password\",\"refresh_token\",\"access_token\",\"expires_at\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"tokenHash\",\"expiresAt\",\"revokedAt\",\"name\",\"email\",\"emailVerified\",\"image\",\"passwordHash\",\"accountStatus\",\"every\",\"some\",\"none\",\"provider_providerAccountId\",\"testId\",\"instanceId\",\"status\",\"message\",\"detailsJson\",\"testedAt\",\"workflowId\",\"nodeId\",\"slotKey\",\"workflowId_nodeId_slotKey\",\"state\",\"codeVerifier\",\"providerId\",\"requestedScopesJson\",\"encryptedJson\",\"encryptionKeyId\",\"schemaVersion\",\"connectedEmail\",\"connectedAt\",\"scopesJson\",\"typeId\",\"displayName\",\"sourceKind\",\"publicConfigJson\",\"secretRefJson\",\"tagsJson\",\"setupStatus\",\"stateJson\",\"workflowId_nodeId\",\"isActive\",\"copiedFromRunId\",\"runId\",\"revision\",\"slotStatesJson\",\"slotNodeId\",\"workflowNodeId\",\"kind\",\"connectionKind\",\"activationId\",\"batchId\",\"runIndex\",\"parentInstanceId\",\"parentRunId\",\"workerClaimToken\",\"queuedAt\",\"startedAt\",\"finishedAt\",\"itemCount\",\"inputJson\",\"outputJson\",\"errorJson\",\"inputItemIndicesJson\",\"outputItemCount\",\"successfulItemCount\",\"failedItemCount\",\"inputStorageKind\",\"outputStorageKind\",\"inputBytes\",\"outputBytes\",\"inputPreviewJson\",\"outputPreviewJson\",\"inputPayloadRef\",\"outputPayloadRef\",\"inputTruncated\",\"outputTruncated\",\"usedPinnedOutput\",\"workItemId\",\"targetNodeId\",\"queueName\",\"claimToken\",\"claimedBy\",\"claimedAt\",\"availableAt\",\"enqueuedAt\",\"completedAt\",\"failedAt\",\"sourceInstanceId\",\"itemsIn\",\"inputsByPortJson\",\"parentJson\",\"executionOptionsJson\",\"controlJson\",\"workflowSnapshotJson\",\"policySnapshotJson\",\"engineCountersJson\",\"mutableStateJson\",\"outputsByNodeJson\",\"runId_slotNodeId_runIndex\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
13763
|
-
graph: "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_ADAZAACAAQAgAwAAAG0AIAEAAG4AMAIAAGoAIAa0AgAAjQQAMLUCAACGAQAQtgIAAI0EADC8AgEA1wMAIe0CAQAAAAGEAyAA7QMAIQEAAACDAQAgAQAAAIMBACAGtAIAAI0EADC1AgAAhgEAELYCAACNBAAwvAIBANcDACHtAgEA1wMAIYQDIADtAwAhAAMAAACGAQAgAQAAhwEAMAIAAIMBACADAAAAhgEAIAEAAIcBADACAACDAQAgAwAAAIYBACABAACHAQAwAgAAgwEAIAO8AgEAAAAB7QIBAAAAAYQDIAAAAAEBDQAAiwEAIAO8AgEAAAAB7QIBAAAAAYQDIAAAAAEBDQAAjQEAMAENAACNAQAwA7wCAQCkBAAh7QIBAKQEACGEAyAAvgQAIQIAAACDAQAgDQAAkAEAIAO8AgEApAQAIe0CAQCkBAAhhAMgAL4EACECAAAAhgEAIA0AAJIBACACAAAAhgEAIA0AAJIBACADAAAAgwEAIBQAAIsBACAVAACQAQAgAQAAAIMBACABAAAAhgEAIAMHAACHBQAgHAAAiQUAIB0AAIgFACAGtAIAAIwEADC1AgAAmQEAELYCAACMBAAwvAIBAM8DACHtAgEAzwMAIYQDIADoAwAhAwAAAIYBACABAACYAQAwGQAAmQEAIAMAAACGAQAgAQAAhwEAMAIAAIMBACAItAIAAIoEADC1AgAAnwEAELYCAACKBAAwvAIBANcDACHtAgEA1wMAIe4CAQDXAwAhggMBANcDACGDAwAAiwQAIAEAAACcAQAgAQAAAJwBACAHtAIAAIoEADC1AgAAnwEAELYCAACKBAAwvAIBANcDACHtAgEA1wMAIe4CAQDXAwAhggMBANcDACEAAwAAAJ8BACABAACgAQAwAgAAnAEAIAMAAACfAQAgAQAAoAEAMAIAAJwBACADAAAAnwEAIAEAAKABADACAACcAQAgBLwCAQAAAAHtAgEAAAAB7gIBAAAAAYIDAQAAAAEBDQAApAEAIAS8AgEAAAAB7QIBAAAAAe4CAQAAAAGCAwEAAAABAQ0AAKYBADABDQAApgEAMAS8AgEApAQAIe0CAQCkBAAh7gIBAKQEACGCAwEApAQAIQIAAACcAQAgDQAAqQEAIAS8AgEApAQAIe0CAQCkBAAh7gIBAKQEACGCAwEApAQAIQIAAACfAQAgDQAAqwEAIAIAAACfAQAgDQAAqwEAIAMAAACcAQAgFAAApAEAIBUAAKkBACABAAAAnAEAIAEAAACfAQAgAwcAAIQFACAcAACGBQAgHQAAhQUAIAe0AgAAiQQAMLUCAACyAQAQtgIAAIkEADC8AgEAzwMAIe0CAQDPAwAh7gIBAM8DACGCAwEAzwMAIQMAAACfAQAgAQAAsQEAMBkAALIBACADAAAAnwEAIAEAAKABADACAACcAQAgDbQCAACIBAAwtQIAALgBABC2AgAAiAQAMLsCAQDXAwAhvAIBANcDACHoAgEAAAAB-wIBANcDACH8AgEA1wMAIf0CAQDXAwAh_gIBANcDACH_AgEA1wMAIYADAQDXAwAhgQMBANcDACEBAAAAtQEAIAEAAAC1AQAgDbQCAACIBAAwtQIAALgBABC2AgAAiAQAMLsCAQDXAwAhvAIBANcDACHoAgEA1wMAIfsCAQDXAwAh_AIBANcDACH9AgEA1wMAIf4CAQDXAwAh_wIBANcDACGAAwEA1wMAIYEDAQDXAwAhAAMAAAC4AQAgAQAAuQEAMAIAALUBACADAAAAuAEAIAEAALkBADACAAC1AQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAq7AgEAAAABvAIBAAAAAegCAQAAAAH7AgEAAAAB_AIBAAAAAf0CAQAAAAH-AgEAAAAB_wIBAAAAAYADAQAAAAGBAwEAAAABAQ0AAL0BACAKuwIBAAAAAbwCAQAAAAHoAgEAAAAB-wIBAAAAAfwCAQAAAAH9AgEAAAAB_gIBAAAAAf8CAQAAAAGAAwEAAAABgQMBAAAAAQENAAC_AQAwAQ0AAL8BADAKuwIBAKQEACG8AgEApAQAIegCAQCkBAAh-wIBAKQEACH8AgEApAQAIf0CAQCkBAAh_gIBAKQEACH_AgEApAQAIYADAQCkBAAhgQMBAKQEACECAAAAtQEAIA0AAMIBACAKuwIBAKQEACG8AgEApAQAIegCAQCkBAAh-wIBAKQEACH8AgEApAQAIf0CAQCkBAAh_gIBAKQEACH_AgEApAQAIYADAQCkBAAhgQMBAKQEACECAAAAuAEAIA0AAMQBACACAAAAuAEAIA0AAMQBACADAAAAtQEAIBQAAL0BACAVAADCAQAgAQAAALUBACABAAAAuAEAIAMHAACBBQAgHAAAgwUAIB0AAIIFACANtAIAAIcEADC1AgAAywEAELYCAACHBAAwuwIBAM8DACG8AgEAzwMAIegCAQDPAwAh-wIBAM8DACH8AgEAzwMAIf0CAQDPAwAh_gIBAM8DACH_AgEAzwMAIYADAQDPAwAhgQMBAM8DACEDAAAAuAEAIAEAAMoBADAZAADLAQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAi0AgAAhgQAMLUCAADRAQAQtgIAAIYEADC8AgEA1wMAIegCAQAAAAH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACEBAAAAzgEAIAEAAADOAQAgCLQCAACGBAAwtQIAANEBABC2AgAAhgQAMLwCAQDXAwAh6AIBANcDACH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACEAAwAAANEBACABAADSAQAwAgAAzgEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACADAAAA0QEAIAEAANIBADACAADOAQAgBbwCAQAAAAHoAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAABAQ0AANYBACAFvAIBAAAAAegCAQAAAAH1AgEAAAAB9gIBAAAAAfcCAgAAAAEBDQAA2AEAMAENAADYAQAwBbwCAQCkBAAh6AIBAKQEACH1AgEApAQAIfYCAQCkBAAh9wICAPsEACECAAAAzgEAIA0AANsBACAFvAIBAKQEACHoAgEApAQAIfUCAQCkBAAh9gIBAKQEACH3AgIA-wQAIQIAAADRAQAgDQAA3QEAIAIAAADRAQAgDQAA3QEAIAMAAADOAQAgFAAA1gEAIBUAANsBACABAAAAzgEAIAEAAADRAQAgBQcAAPwEACAaAAD9BAAgGwAAgAUAIBwAAP8EACAdAAD-BAAgCLQCAACFBAAwtQIAAOQBABC2AgAAhQQAMLwCAQDPAwAh6AIBAM8DACH1AgEAzwMAIfYCAQDPAwAh9wICAIAEACEDAAAA0QEAIAEAAOMBADAZAADkAQAgAwAAANEBACABAADSAQAwAgAAzgEAIAy0AgAAgwQAMLUCAADqAQAQtgIAAIMEADC8AgEA1wMAIegCAQAAAAHzAgEA1wMAIfUCAQDXAwAh9gIBANcDACH3AgIAhAQAIfgCAQDsAwAh-QIBAOwDACH6AgEA1wMAIQEAAADnAQAgAQAAAOcBACAMtAIAAIMEADC1AgAA6gEAELYCAACDBAAwvAIBANcDACHoAgEA1wMAIfMCAQDXAwAh9QIBANcDACH2AgEA1wMAIfcCAgCEBAAh-AIBAOwDACH5AgEA7AMAIfoCAQDXAwAhAvgCAACmBAAg-QIAAKYEACADAAAA6gEAIAEAAOsBADACAADnAQAgAwAAAOoBACABAADrAQAwAgAA5wEAIAMAAADqAQAgAQAA6wEAMAIAAOcBACAJvAIBAAAAAegCAQAAAAHzAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAAB-AIBAAAAAfkCAQAAAAH6AgEAAAABAQ0AAO8BACAJvAIBAAAAAegCAQAAAAHzAgEAAAAB9QIBAAAAAfYCAQAAAAH3AgIAAAAB-AIBAAAAAfkCAQAAAAH6AgEAAAABAQ0AAPEBADABDQAA8QEAMAm8AgEApAQAIegCAQCkBAAh8wIBAKQEACH1AgEApAQAIfYCAQCkBAAh9wICAPsEACH4AgEAqgQAIfkCAQCqBAAh-gIBAKQEACECAAAA5wEAIA0AAPQBACAJvAIBAKQEACHoAgEApAQAIfMCAQCkBAAh9QIBAKQEACH2AgEApAQAIfcCAgD7BAAh-AIBAKoEACH5AgEAqgQAIfoCAQCkBAAhAgAAAOoBACANAAD2AQAgAgAAAOoBACANAAD2AQAgAwAAAOcBACAUAADvAQAgFQAA9AEAIAEAAADnAQAgAQAAAOoBACAHBwAA9gQAIBoAAPcEACAbAAD6BAAgHAAA-QQAIB0AAPgEACD4AgAApgQAIPkCAACmBAAgDLQCAAD_AwAwtQIAAP0BABC2AgAA_wMAMLwCAQDPAwAh6AIBAM8DACHzAgEAzwMAIfUCAQDPAwAh9gIBAM8DACH3AgIAgAQAIfgCAQDbAwAh-QIBANsDACH6AgEAzwMAIQMAAADqAQAgAQAA_AEAMBkAAP0BACADAAAA6gEAIAEAAOsBADACAADnAQAgCrQCAAD-AwAwtQIAAIMCABC2AgAA_gMAMLsCAQDXAwAh2wIBANcDACHoAgEA1wMAIfECAQAAAAHyAgEA7AMAIfMCAQDsAwAh9AIBANcDACEBAAAAgAIAIAEAAACAAgAgCrQCAAD-AwAwtQIAAIMCABC2AgAA_gMAMLsCAQDXAwAh2wIBANcDACHoAgEA1wMAIfECAQDXAwAh8gIBAOwDACHzAgEA7AMAIfQCAQDXAwAhAvICAACmBAAg8wIAAKYEACADAAAAgwIAIAEAAIQCADACAACAAgAgAwAAAIMCACABAACEAgAwAgAAgAIAIAMAAACDAgAgAQAAhAIAMAIAAIACACAHuwIBAAAAAdsCAQAAAAHoAgEAAAAB8QIBAAAAAfICAQAAAAHzAgEAAAAB9AIBAAAAAQENAACIAgAgB7sCAQAAAAHbAgEAAAAB6AIBAAAAAfECAQAAAAHyAgEAAAAB8wIBAAAAAfQCAQAAAAEBDQAAigIAMAENAACKAgAwB7sCAQCkBAAh2wIBAKQEACHoAgEApAQAIfECAQCkBAAh8gIBAKoEACHzAgEAqgQAIfQCAQCkBAAhAgAAAIACACANAACNAgAgB7sCAQCkBAAh2wIBAKQEACHoAgEApAQAIfECAQCkBAAh8gIBAKoEACHzAgEAqgQAIfQCAQCkBAAhAgAAAIMCACANAACPAgAgAgAAAIMCACANAACPAgAgAwAAAIACACAUAACIAgAgFQAAjQIAIAEAAACAAgAgAQAAAIMCACAFBwAA8wQAIBwAAPUEACAdAAD0BAAg8gIAAKYEACDzAgAApgQAIAq0AgAA_QMAMLUCAACWAgAQtgIAAP0DADC7AgEAzwMAIdsCAQDPAwAh6AIBAM8DACHxAgEAzwMAIfICAQDbAwAh8wIBANsDACH0AgEAzwMAIQMAAACDAgAgAQAAlQIAMBkAAJYCACADAAAAgwIAIAEAAIQCADACAACAAgAgCbQCAAD7AwAwtQIAAJwCABC2AgAA-wMAMLwCAQDXAwAh6AIBANcDACHtAgEA1wMAIe4CAQDXAwAh7wIBANcDACHwAgAA_AMAIAEAAACZAgAgAQAAAJkCACAItAIAAPsDADC1AgAAnAIAELYCAAD7AwAwvAIBANcDACHoAgEA1wMAIe0CAQDXAwAh7gIBANcDACHvAgEA1wMAIQADAAAAnAIAIAEAAJ0CADACAACZAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAMAAACcAgAgAQAAnQIAMAIAAJkCACAFvAIBAAAAAegCAQAAAAHtAgEAAAAB7gIBAAAAAe8CAQAAAAEBDQAAoQIAIAW8AgEAAAAB6AIBAAAAAe0CAQAAAAHuAgEAAAAB7wIBAAAAAQENAACjAgAwAQ0AAKMCADAFvAIBAKQEACHoAgEApAQAIe0CAQCkBAAh7gIBAKQEACHvAgEApAQAIQIAAACZAgAgDQAApgIAIAW8AgEApAQAIegCAQCkBAAh7QIBAKQEACHuAgEApAQAIe8CAQCkBAAhAgAAAJwCACANAACoAgAgAgAAAJwCACANAACoAgAgAwAAAJkCACAUAAChAgAgFQAApgIAIAEAAACZAgAgAQAAAJwCACADBwAA8AQAIBwAAPIEACAdAADxBAAgCLQCAAD6AwAwtQIAAK8CABC2AgAA-gMAMLwCAQDPAwAh6AIBAM8DACHtAgEAzwMAIe4CAQDPAwAh7wIBAM8DACEDAAAAnAIAIAEAAK4CADAZAACvAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAq0AgAA-QMAMLUCAAC1AgAQtgIAAPkDADDbAgEA7AMAIecCAQAAAAHoAgEA1wMAIekCAQDXAwAh6gIBAOwDACHrAgEA1wMAIewCAQDXAwAhAQAAALICACABAAAAsgIAIAq0AgAA-QMAMLUCAAC1AgAQtgIAAPkDADDbAgEA7AMAIecCAQDXAwAh6AIBANcDACHpAgEA1wMAIeoCAQDsAwAh6wIBANcDACHsAgEA1wMAIQLbAgAApgQAIOoCAACmBAAgAwAAALUCACABAAC2AgAwAgAAsgIAIAMAAAC1AgAgAQAAtgIAMAIAALICACADAAAAtQIAIAEAALYCADACAACyAgAgB9sCAQAAAAHnAgEAAAAB6AIBAAAAAekCAQAAAAHqAgEAAAAB6wIBAAAAAewCAQAAAAEBDQAAugIAIAfbAgEAAAAB5wIBAAAAAegCAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAgEAAAABAQ0AALwCADABDQAAvAIAMAfbAgEAqgQAIecCAQCkBAAh6AIBAKQEACHpAgEApAQAIeoCAQCqBAAh6wIBAKQEACHsAgEApAQAIQIAAACyAgAgDQAAvwIAIAfbAgEAqgQAIecCAQCkBAAh6AIBAKQEACHpAgEApAQAIeoCAQCqBAAh6wIBAKQEACHsAgEApAQAIQIAAAC1AgAgDQAAwQIAIAIAAAC1AgAgDQAAwQIAIAMAAACyAgAgFAAAugIAIBUAAL8CACABAAAAsgIAIAEAAAC1AgAgBQcAAO0EACAcAADvBAAgHQAA7gQAINsCAACmBAAg6gIAAKYEACAKtAIAAPgDADC1AgAAyAIAELYCAAD4AwAw2wIBANsDACHnAgEAzwMAIegCAQDPAwAh6QIBAM8DACHqAgEA2wMAIesCAQDPAwAh7AIBAM8DACEDAAAAtQIAIAEAAMcCADAZAADIAgAgAwAAALUCACABAAC2AgAwAgAAsgIAIA_hAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEAAAABuwJAANgDACG8AkAA2AMAId0CAQDsAwAh3gIBAAAAAd8CIADtAwAh4AIBAOwDACHhAgEA7AMAIeICAQDXAwAhAQAAAMsCACAV4AEAAPMDACC0AgAA9gMAMLUCAADNAgAQtgIAAPYDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHKAgEA1wMAIc0CAQDXAwAhzgIBANcDACHPAgEA1wMAIdACAQDsAwAh0QIBAOwDACHSAgEA7AMAIdMCAgD3AwAh1AJAAPIDACHVAkAA8gMAIdYCAQDsAwAh1wIBAOwDACHYAgEA7AMAIdkCAQDsAwAhC-ABAADsBAAg0AIAAKYEACDRAgAApgQAINICAACmBAAg0wIAAKYEACDUAgAApgQAINUCAACmBAAg1gIAAKYEACDXAgAApgQAINgCAACmBAAg2QIAAKYEACAW4AEAAPMDACC0AgAA9gMAMLUCAADNAgAQtgIAAPYDADC3AgEAAAABuwJAANgDACG8AkAA2AMAIcoCAQDXAwAhzQIBANcDACHOAgEA1wMAIc8CAQDXAwAh0AIBAOwDACHRAgEA7AMAIdICAQDsAwAh0wICAPcDACHUAkAA8gMAIdUCQADyAwAh1gIBAOwDACHXAgEA7AMAIdgCAQDsAwAh2QIBAOwDACHmAgAA9QMAIAMAAADNAgAgAQAAzgIAMAIAAM8CACAM4AEAAPMDACC0AgAA9AMAMLUCAADRAgAQtgIAAPQDADC3AgEA1wMAIboCQADYAwAhuwJAANgDACG8AkAA2AMAIckCAQDXAwAhygIBANcDACHLAgEA7AMAIcwCAQDsAwAhA-ABAADsBAAgywIAAKYEACDMAgAApgQAIAzgAQAA8wMAILQCAAD0AwAwtQIAANECABC2AgAA9AMAMLcCAQAAAAG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHJAgEAAAABygIBANcDACHLAgEA7AMAIcwCAQDsAwAhAwAAANECACABAADSAgAwAgAA0wIAIArgAQAA8wMAILQCAADxAwAwtQIAANUCABC2AgAA8QMAMLcCAQDXAwAhuwJAANgDACHKAgEA1wMAIdoCAQDXAwAh2wJAANgDACHcAkAA8gMAIQLgAQAA7AQAINwCAACmBAAgCuABAADzAwAgtAIAAPEDADC1AgAA1QIAELYCAADxAwAwtwIBAAAAAbsCQADYAwAhygIBANcDACHaAgEAAAAB2wJAANgDACHcAkAA8gMAIQMAAADVAgAgAQAA1gIAMAIAANcCACABAAAAzQIAIAEAAADRAgAgAQAAANUCACABAAAAywIAIA_hAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHdAgEA7AMAId4CAQDsAwAh3wIgAO0DACHgAgEA7AMAIeECAQDsAwAh4gIBANcDACEH4QEAAOkEACDiAQAA6gQAIOMBAADrBAAg3QIAAKYEACDeAgAApgQAIOACAACmBAAg4QIAAKYEACADAAAA3QIAIAEAAN4CADACAADLAgAgAwAAAN0CACABAADeAgAwAgAAywIAIAMAAADdAgAgAQAA3gIAMAIAAMsCACAM4QEAAOYEACDiAQAA5wQAIOMBAADoBAAgtwIBAAAAAbsCQAAAAAG8AkAAAAAB3QIBAAAAAd4CAQAAAAHfAiAAAAAB4AIBAAAAAeECAQAAAAHiAgEAAAABAQ0AAOICACAJtwIBAAAAAbsCQAAAAAG8AkAAAAAB3QIBAAAAAd4CAQAAAAHfAiAAAAAB4AIBAAAAAeECAQAAAAHiAgEAAAABAQ0AAOQCADABDQAA5AIAMAzhAQAAvwQAIOIBAADABAAg4wEAAMEEACC3AgEApAQAIbsCQAClBAAhvAJAAKUEACHdAgEAqgQAId4CAQCqBAAh3wIgAL4EACHgAgEAqgQAIeECAQCqBAAh4gIBAKQEACECAAAAywIAIA0AAOcCACAJtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhAgAAAN0CACANAADpAgAgAgAAAN0CACANAADpAgAgAwAAAMsCACAUAADiAgAgFQAA5wIAIAEAAADLAgAgAQAAAN0CACAHBwAAuwQAIBwAAL0EACAdAAC8BAAg3QIAAKYEACDeAgAApgQAIOACAACmBAAg4QIAAKYEACAMtAIAAOcDADC1AgAA8AIAELYCAADnAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAh3QIBANsDACHeAgEA2wMAId8CIADoAwAh4AIBANsDACHhAgEA2wMAIeICAQDPAwAhAwAAAN0CACABAADvAgAwGQAA8AIAIAMAAADdAgAgAQAA3gIAMAIAAMsCACABAAAA1wIAIAEAAADXAgAgAwAAANUCACABAADWAgAwAgAA1wIAIAMAAADVAgAgAQAA1gIAMAIAANcCACADAAAA1QIAIAEAANYCADACAADXAgAgB-ABAAC6BAAgtwIBAAAAAbsCQAAAAAHKAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABAQ0AAPgCACAGtwIBAAAAAbsCQAAAAAHKAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABAQ0AAPoCADABDQAA-gIAMAfgAQAAuQQAILcCAQCkBAAhuwJAAKUEACHKAgEApAQAIdoCAQCkBAAh2wJAAKUEACHcAkAAswQAIQIAAADXAgAgDQAA_QIAIAa3AgEApAQAIbsCQAClBAAhygIBAKQEACHaAgEApAQAIdsCQAClBAAh3AJAALMEACECAAAA1QIAIA0AAP8CACACAAAA1QIAIA0AAP8CACADAAAA1wIAIBQAAPgCACAVAAD9AgAgAQAAANcCACABAAAA1QIAIAQHAAC2BAAgHAAAuAQAIB0AALcEACDcAgAApgQAIAm0AgAA5gMAMLUCAACGAwAQtgIAAOYDADC3AgEAzwMAIbsCQADQAwAhygIBAM8DACHaAgEAzwMAIdsCQADQAwAh3AJAAOEDACEDAAAA1QIAIAEAAIUDADAZAACGAwAgAwAAANUCACABAADWAgAwAgAA1wIAIAEAAADPAgAgAQAAAM8CACADAAAAzQIAIAEAAM4CADACAADPAgAgAwAAAM0CACABAADOAgAwAgAAzwIAIAMAAADNAgAgAQAAzgIAMAIAAM8CACAS4AEAALUEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHKAgEAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wICAAAAAdQCQAAAAAHVAkAAAAAB1gIBAAAAAdcCAQAAAAHYAgEAAAAB2QIBAAAAAQENAACOAwAgEbcCAQAAAAG7AkAAAAABvAJAAAAAAcoCAQAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgIAAAAB1AJAAAAAAdUCQAAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAABAQ0AAJADADABDQAAkAMAMBLgAQAAtAQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAIcoCAQCkBAAhzQIBAKQEACHOAgEApAQAIc8CAQCkBAAh0AIBAKoEACHRAgEAqgQAIdICAQCqBAAh0wICALIEACHUAkAAswQAIdUCQACzBAAh1gIBAKoEACHXAgEAqgQAIdgCAQCqBAAh2QIBAKoEACECAAAAzwIAIA0AAJMDACARtwIBAKQEACG7AkAApQQAIbwCQAClBAAhygIBAKQEACHNAgEApAQAIc4CAQCkBAAhzwIBAKQEACHQAgEAqgQAIdECAQCqBAAh0gIBAKoEACHTAgIAsgQAIdQCQACzBAAh1QJAALMEACHWAgEAqgQAIdcCAQCqBAAh2AIBAKoEACHZAgEAqgQAIQIAAADNAgAgDQAAlQMAIAIAAADNAgAgDQAAlQMAIAMAAADPAgAgFAAAjgMAIBUAAJMDACABAAAAzwIAIAEAAADNAgAgDwcAAK0EACAaAACuBAAgGwAAsQQAIBwAALAEACAdAACvBAAg0AIAAKYEACDRAgAApgQAINICAACmBAAg0wIAAKYEACDUAgAApgQAINUCAACmBAAg1gIAAKYEACDXAgAApgQAINgCAACmBAAg2QIAAKYEACAUtAIAAN8DADC1AgAAnAMAELYCAADfAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAhygIBAM8DACHNAgEAzwMAIc4CAQDPAwAhzwIBAM8DACHQAgEA2wMAIdECAQDbAwAh0gIBANsDACHTAgIA4AMAIdQCQADhAwAh1QJAAOEDACHWAgEA2wMAIdcCAQDbAwAh2AIBANsDACHZAgEA2wMAIQMAAADNAgAgAQAAmwMAMBkAAJwDACADAAAAzQIAIAEAAM4CADACAADPAgAgAQAAANMCACABAAAA0wIAIAMAAADRAgAgAQAA0gIAMAIAANMCACADAAAA0QIAIAEAANICADACAADTAgAgAwAAANECACABAADSAgAwAgAA0wIAIAngAQAArAQAILcCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAHJAgEAAAABygIBAAAAAcsCAQAAAAHMAgEAAAABAQ0AAKQDACAItwIBAAAAAboCQAAAAAG7AkAAAAABvAJAAAAAAckCAQAAAAHKAgEAAAABywIBAAAAAcwCAQAAAAEBDQAApgMAMAENAACmAwAwCeABAACrBAAgtwIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACHJAgEApAQAIcoCAQCkBAAhywIBAKoEACHMAgEAqgQAIQIAAADTAgAgDQAAqQMAIAi3AgEApAQAIboCQAClBAAhuwJAAKUEACG8AkAApQQAIckCAQCkBAAhygIBAKQEACHLAgEAqgQAIcwCAQCqBAAhAgAAANECACANAACrAwAgAgAAANECACANAACrAwAgAwAAANMCACAUAACkAwAgFQAAqQMAIAEAAADTAgAgAQAAANECACAFBwAApwQAIBwAAKkEACAdAACoBAAgywIAAKYEACDMAgAApgQAIAu0AgAA2gMAMLUCAACyAwAQtgIAANoDADC3AgEAzwMAIboCQADQAwAhuwJAANADACG8AkAA0AMAIckCAQDPAwAhygIBAM8DACHLAgEA2wMAIcwCAQDbAwAhAwAAANECACABAACxAwAwGQAAsgMAIAMAAADRAgAgAQAA0gIAMAIAANMCACAKtAIAANYDADC1AgAAuAMAELYCAADWAwAwtwIBAAAAAbgCAQDXAwAhuQIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHIAgAA2QMAIAEAAAC1AwAgAQAAALUDACAJtAIAANYDADC1AgAAuAMAELYCAADWAwAwtwIBANcDACG4AgEA1wMAIbkCAQDXAwAhugJAANgDACG7AkAA2AMAIbwCQADYAwAhAAMAAAC4AwAgAQAAuQMAMAIAALUDACADAAAAuAMAIAEAALkDADACAAC1AwAgAwAAALgDACABAAC5AwAwAgAAtQMAIAa3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAEBDQAAvQMAIAa3AgEAAAABuAIBAAAAAbkCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAEBDQAAvwMAMAENAAC_AwAwBrcCAQCkBAAhuAIBAKQEACG5AgEApAQAIboCQAClBAAhuwJAAKUEACG8AkAApQQAIQIAAAC1AwAgDQAAwgMAIAa3AgEApAQAIbgCAQCkBAAhuQIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACECAAAAuAMAIA0AAMQDACACAAAAuAMAIA0AAMQDACADAAAAtQMAIBQAAL0DACAVAADCAwAgAQAAALUDACABAAAAuAMAIAMHAAChBAAgHAAAowQAIB0AAKIEACAJtAIAAM4DADC1AgAAywMAELYCAADOAwAwtwIBAM8DACG4AgEAzwMAIbkCAQDPAwAhugJAANADACG7AkAA0AMAIbwCQADQAwAhAwAAALgDACABAADKAwAwGQAAywMAIAMAAAC4AwAgAQAAuQMAMAIAALUDACAJtAIAAM4DADC1AgAAywMAELYCAADOAwAwtwIBAM8DACG4AgEAzwMAIbkCAQDPAwAhugJAANADACG7AkAA0AMAIbwCQADQAwAhDgcAANIDACAcAADVAwAgHQAA1QMAIL0CAQAAAAG-AgEAAAAEvwIBAAAABMACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA1AMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQsHAADSAwAgHAAA0wMAIB0AANMDACC9AkAAAAABvgJAAAAABL8CQAAAAATAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAANEDACELBwAA0gMAIBwAANMDACAdAADTAwAgvQJAAAAAAb4CQAAAAAS_AkAAAAAEwAJAAAAAAcECQAAAAAHCAkAAAAABwwJAAAAAAcQCQADRAwAhCL0CAgAAAAG-AgIAAAAEvwICAAAABMACAgAAAAHBAgIAAAABwgICAAAAAcMCAgAAAAHEAgIA0gMAIQi9AkAAAAABvgJAAAAABL8CQAAAAATAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAANMDACEOBwAA0gMAIBwAANUDACAdAADVAwAgvQIBAAAAAb4CAQAAAAS_AgEAAAAEwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQDUAwAhxQIBAAAAAcYCAQAAAAHHAgEAAAABC70CAQAAAAG-AgEAAAAEvwIBAAAABMACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA1QMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQm0AgAA1gMAMLUCAAC4AwAQtgIAANYDADC3AgEA1wMAIbgCAQDXAwAhuQIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACELvQIBAAAAAb4CAQAAAAS_AgEAAAAEwAIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQDVAwAhxQIBAAAAAcYCAQAAAAHHAgEAAAABCL0CQAAAAAG-AkAAAAAEvwJAAAAABMACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA0wMAIQK4AgEAAAABuQIBAAAAAQu0AgAA2gMAMLUCAACyAwAQtgIAANoDADC3AgEAzwMAIboCQADQAwAhuwJAANADACG8AkAA0AMAIckCAQDPAwAhygIBAM8DACHLAgEA2wMAIcwCAQDbAwAhDgcAAN0DACAcAADeAwAgHQAA3gMAIL0CAQAAAAG-AgEAAAAFvwIBAAAABcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA3AMAIcUCAQAAAAHGAgEAAAABxwIBAAAAAQ4HAADdAwAgHAAA3gMAIB0AAN4DACC9AgEAAAABvgIBAAAABb8CAQAAAAXAAgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBANwDACHFAgEAAAABxgIBAAAAAccCAQAAAAEIvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDdAwAhC70CAQAAAAG-AgEAAAAFvwIBAAAABcACAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEA3gMAIcUCAQAAAAHGAgEAAAABxwIBAAAAARS0AgAA3wMAMLUCAACcAwAQtgIAAN8DADC3AgEAzwMAIbsCQADQAwAhvAJAANADACHKAgEAzwMAIc0CAQDPAwAhzgIBAM8DACHPAgEAzwMAIdACAQDbAwAh0QIBANsDACHSAgEA2wMAIdMCAgDgAwAh1AJAAOEDACHVAkAA4QMAIdYCAQDbAwAh1wIBANsDACHYAgEA2wMAIdkCAQDbAwAhDQcAAN0DACAaAADlAwAgGwAA3QMAIBwAAN0DACAdAADdAwAgvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDkAwAhCwcAAN0DACAcAADjAwAgHQAA4wMAIL0CQAAAAAG-AkAAAAAFvwJAAAAABcACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA4gMAIQsHAADdAwAgHAAA4wMAIB0AAOMDACC9AkAAAAABvgJAAAAABb8CQAAAAAXAAkAAAAABwQJAAAAAAcICQAAAAAHDAkAAAAABxAJAAOIDACEIvQJAAAAAAb4CQAAAAAW_AkAAAAAFwAJAAAAAAcECQAAAAAHCAkAAAAABwwJAAAAAAcQCQADjAwAhDQcAAN0DACAaAADlAwAgGwAA3QMAIBwAAN0DACAdAADdAwAgvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDkAwAhCL0CCAAAAAG-AggAAAAFvwIIAAAABcACCAAAAAHBAggAAAABwgIIAAAAAcMCCAAAAAHEAggA5QMAIQm0AgAA5gMAMLUCAACGAwAQtgIAAOYDADC3AgEAzwMAIbsCQADQAwAhygIBAM8DACHaAgEAzwMAIdsCQADQAwAh3AJAAOEDACEMtAIAAOcDADC1AgAA8AIAELYCAADnAwAwtwIBAM8DACG7AkAA0AMAIbwCQADQAwAh3QIBANsDACHeAgEA2wMAId8CIADoAwAh4AIBANsDACHhAgEA2wMAIeICAQDPAwAhBQcAANIDACAcAADqAwAgHQAA6gMAIL0CIAAAAAHEAiAA6QMAIQUHAADSAwAgHAAA6gMAIB0AAOoDACC9AiAAAAABxAIgAOkDACECvQIgAAAAAcQCIADqAwAhD-EBAADuAwAg4gEAAO8DACDjAQAA8AMAILQCAADrAwAwtQIAAN0CABC2AgAA6wMAMLcCAQDXAwAhuwJAANgDACG8AkAA2AMAId0CAQDsAwAh3gIBAOwDACHfAiAA7QMAIeACAQDsAwAh4QIBAOwDACHiAgEA1wMAIQu9AgEAAAABvgIBAAAABb8CAQAAAAXAAgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAN4DACHFAgEAAAABxgIBAAAAAccCAQAAAAECvQIgAAAAAcQCIADqAwAhA-MCAADNAgAg5AIAAM0CACDlAgAAzQIAIAPjAgAA0QIAIOQCAADRAgAg5QIAANECACAD4wIAANUCACDkAgAA1QIAIOUCAADVAgAgCuABAADzAwAgtAIAAPEDADC1AgAA1QIAELYCAADxAwAwtwIBANcDACG7AkAA2AMAIcoCAQDXAwAh2gIBANcDACHbAkAA2AMAIdwCQADyAwAhCL0CQAAAAAG-AkAAAAAFvwJAAAAABcACQAAAAAHBAkAAAAABwgJAAAAAAcMCQAAAAAHEAkAA4wMAIRHhAQAA7gMAIOIBAADvAwAg4wEAAPADACC0AgAA6wMAMLUCAADdAgAQtgIAAOsDADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHdAgEA7AMAId4CAQDsAwAh3wIgAO0DACHgAgEA7AMAIeECAQDsAwAh4gIBANcDACG_AwAA3QIAIMADAADdAgAgDOABAADzAwAgtAIAAPQDADC1AgAA0QIAELYCAAD0AwAwtwIBANcDACG6AkAA2AMAIbsCQADYAwAhvAJAANgDACHJAgEA1wMAIcoCAQDXAwAhywIBAOwDACHMAgEA7AMAIQLOAgEAAAABzwIBAAAAARXgAQAA8wMAILQCAAD2AwAwtQIAAM0CABC2AgAA9gMAMLcCAQDXAwAhuwJAANgDACG8AkAA2AMAIcoCAQDXAwAhzQIBANcDACHOAgEA1wMAIc8CAQDXAwAh0AIBAOwDACHRAgEA7AMAIdICAQDsAwAh0wICAPcDACHUAkAA8gMAIdUCQADyAwAh1gIBAOwDACHXAgEA7AMAIdgCAQDsAwAh2QIBAOwDACEIvQICAAAAAb4CAgAAAAW_AgIAAAAFwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDdAwAhCrQCAAD4AwAwtQIAAMgCABC2AgAA-AMAMNsCAQDbAwAh5wIBAM8DACHoAgEAzwMAIekCAQDPAwAh6gIBANsDACHrAgEAzwMAIewCAQDPAwAhCrQCAAD5AwAwtQIAALUCABC2AgAA-QMAMNsCAQDsAwAh5wIBANcDACHoAgEA1wMAIekCAQDXAwAh6gIBAOwDACHrAgEA1wMAIewCAQDXAwAhCLQCAAD6AwAwtQIAAK8CABC2AgAA-gMAMLwCAQDPAwAh6AIBAM8DACHtAgEAzwMAIe4CAQDPAwAh7wIBAM8DACEItAIAAPsDADC1AgAAnAIAELYCAAD7AwAwvAIBANcDACHoAgEA1wMAIe0CAQDXAwAh7gIBANcDACHvAgEA1wMAIQPtAgEAAAAB7gIBAAAAAe8CAQAAAAEKtAIAAP0DADC1AgAAlgIAELYCAAD9AwAwuwIBAM8DACHbAgEAzwMAIegCAQDPAwAh8QIBAM8DACHyAgEA2wMAIfMCAQDbAwAh9AIBAM8DACEKtAIAAP4DADC1AgAAgwIAELYCAAD-AwAwuwIBANcDACHbAgEA1wMAIegCAQDXAwAh8QIBANcDACHyAgEA7AMAIfMCAQDsAwAh9AIBANcDACEMtAIAAP8DADC1AgAA_QEAELYCAAD_AwAwvAIBAM8DACHoAgEAzwMAIfMCAQDPAwAh9QIBAM8DACH2AgEAzwMAIfcCAgCABAAh-AIBANsDACH5AgEA2wMAIfoCAQDPAwAhDQcAANIDACAaAACCBAAgGwAA0gMAIBwAANIDACAdAADSAwAgvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgCBBAAhDQcAANIDACAaAACCBAAgGwAA0gMAIBwAANIDACAdAADSAwAgvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgCBBAAhCL0CCAAAAAG-AggAAAAEvwIIAAAABMACCAAAAAHBAggAAAABwgIIAAAAAcMCCAAAAAHEAggAggQAIQy0AgAAgwQAMLUCAADqAQAQtgIAAIMEADC8AgEA1wMAIegCAQDXAwAh8wIBANcDACH1AgEA1wMAIfYCAQDXAwAh9wICAIQEACH4AgEA7AMAIfkCAQDsAwAh-gIBANcDACEIvQICAAAAAb4CAgAAAAS_AgIAAAAEwAICAAAAAcECAgAAAAHCAgIAAAABwwICAAAAAcQCAgDSAwAhCLQCAACFBAAwtQIAAOQBABC2AgAAhQQAMLwCAQDPAwAh6AIBAM8DACH1AgEAzwMAIfYCAQDPAwAh9wICAIAEACEItAIAAIYEADC1AgAA0QEAELYCAACGBAAwvAIBANcDACHoAgEA1wMAIfUCAQDXAwAh9gIBANcDACH3AgIAhAQAIQ20AgAAhwQAMLUCAADLAQAQtgIAAIcEADC7AgEAzwMAIbwCAQDPAwAh6AIBAM8DACH7AgEAzwMAIfwCAQDPAwAh_QIBAM8DACH-AgEAzwMAIf8CAQDPAwAhgAMBAM8DACGBAwEAzwMAIQ20AgAAiAQAMLUCAAC4AQAQtgIAAIgEADC7AgEA1wMAIbwCAQDXAwAh6AIBANcDACH7AgEA1wMAIfwCAQDXAwAh_QIBANcDACH-AgEA1wMAIf8CAQDXAwAhgAMBANcDACGBAwEA1wMAIQe0AgAAiQQAMLUCAACyAQAQtgIAAIkEADC8AgEAzwMAIe0CAQDPAwAh7gIBAM8DACGCAwEAzwMAIQe0AgAAigQAMLUCAACfAQAQtgIAAIoEADC8AgEA1wMAIe0CAQDXAwAh7gIBANcDACGCAwEA1wMAIQLtAgEAAAAB7gIBAAAAAQa0AgAAjAQAMLUCAACZAQAQtgIAAIwEADC8AgEAzwMAIe0CAQDPAwAhhAMgAOgDACEGtAIAAI0EADC1AgAAhgEAELYCAACNBAAwvAIBANcDACHtAgEA1wMAIYQDIADtAwAhB7QCAACOBAAwtQIAAIABABC2AgAAjgQAMLwCAQDPAwAh7QIBAM8DACGCAwEAzwMAIYUDAQDbAwAhB7QCAACPBAAwtQIAAG0AELYCAACPBAAwvAIBANcDACHtAgEA1wMAIYIDAQDXAwAhhQMBAOwDACEItAIAAJAEADC1AgAAZwAQtgIAAJAEADC8AgEAzwMAIe0CAQDPAwAhhgMBAM8DACGHAwIAgAQAIYgDAQDPAwAhCQMAAJIEACC0AgAAkQQAMLUCAAALABC2AgAAkQQAMLwCAQDXAwAh7QIBANcDACGGAwEA1wMAIYcDAgCEBAAhiAMBANcDACEXBAAAmgQAIAUAAJsEACAGAACcBAAgtAIAAJkEADC1AgAAEAAQtgIAAJkEADC8AgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYcDAgCEBAAhlAMBANcDACGVAwEA7AMAIbYDAQDsAwAhtwMBAOwDACG4AwEA7AMAIbkDAQDsAwAhugMBAOwDACG7AwEA7AMAIbwDAQDsAwAhvQMBANcDACG_AwAAEAAgwAMAABAAICi0AgAAkwQAMLUCAABPABC2AgAAkwQAMLwCAQDPAwAh6AIBAM8DACHpAgEAzwMAIe0CAQDPAwAhhgMBAM8DACGJAwEAzwMAIYoDAQDPAwAhiwMBAM8DACGMAwEA2wMAIY0DAQDbAwAhjgMBAM8DACGPAwIAgAQAIZADAQDbAwAhkQMBANsDACGSAwEA2wMAIZMDAQDbAwAhlAMBANsDACGVAwEA2wMAIZYDAgCABAAhlwMBANsDACGYAwEA2wMAIZkDAQDbAwAhmgMBANsDACGbAwIA4AMAIZwDAgDgAwAhnQMCAOADACGeAwEA2wMAIZ8DAQDbAwAhoAMCAOADACGhAwIA4AMAIaIDAQDbAwAhowMBANsDACGkAwEA2wMAIaUDAQDbAwAhpgMgAJQEACGnAyAAlAQAIagDIACUBAAhBQcAAN0DACAcAACWBAAgHQAAlgQAIL0CIAAAAAHEAiAAlQQAIQUHAADdAwAgHAAAlgQAIB0AAJYEACC9AiAAAAABxAIgAJUEACECvQIgAAAAAcQCIACWBAAhFrQCAACXBAAwtQIAADkAELYCAACXBAAw6QIBAM8DACHtAgEAzwMAIYYDAQDPAwAhjgMBAM8DACGQAwEA2wMAIZkDAQDbAwAhqQMBAM8DACGqAwEAzwMAIasDAQDbAwAhrAMBANsDACGtAwEA2wMAIa4DAQDbAwAhrwMBAM8DACGwAwEAzwMAIbEDAQDbAwAhsgMBANsDACGzAwEA2wMAIbQDAgCABAAhtQMBAM8DACEStAIAAJgEADC1AgAAIwAQtgIAAJgEADC8AgEAzwMAIekCAQDPAwAh7QIBAM8DACGGAwEAzwMAIYcDAgCABAAhlAMBAM8DACGVAwEA2wMAIbYDAQDbAwAhtwMBANsDACG4AwEA2wMAIbkDAQDbAwAhugMBANsDACG7AwEA2wMAIbwDAQDbAwAhvQMBAM8DACEVBAAAmgQAIAUAAJsEACAGAACcBAAgtAIAAJkEADC1AgAAEAAQtgIAAJkEADC8AgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYcDAgCEBAAhlAMBANcDACGVAwEA7AMAIbYDAQDsAwAhtwMBAOwDACG4AwEA7AMAIbkDAQDsAwAhugMBAOwDACG7AwEA7AMAIbwDAQDsAwAhvQMBANcDACED4wIAAAMAIOQCAAADACDlAgAAAwAgA-MCAAAHACDkAgAABwAg5QIAAAcAIAsDAACSBAAgtAIAAJEEADC1AgAACwAQtgIAAJEEADC8AgEA1wMAIe0CAQDXAwAhhgMBANcDACGHAwIAhAQAIYgDAQDXAwAhvwMAAAsAIMADAAALACADhgMBAAAAAYkDAQAAAAGPAwIAAAABKQMAAJIEACC0AgAAngQAMLUCAAAHABC2AgAAngQAMLwCAQDXAwAh6AIBANcDACHpAgEA1wMAIe0CAQDXAwAhhgMBANcDACGJAwEA1wMAIYoDAQDXAwAhiwMBANcDACGMAwEA7AMAIY0DAQDsAwAhjgMBANcDACGPAwIAhAQAIZADAQDsAwAhkQMBAOwDACGSAwEA7AMAIZMDAQDsAwAhlAMBAOwDACGVAwEA7AMAIZYDAgCEBAAhlwMBAOwDACGYAwEA7AMAIZkDAQDsAwAhmgMBAOwDACGbAwIA9wMAIZwDAgD3AwAhnQMCAPcDACGeAwEA7AMAIZ8DAQDsAwAhoAMCAPcDACGhAwIA9wMAIaIDAQDsAwAhowMBAOwDACGkAwEA7AMAIaUDAQDsAwAhpgMgAJ8EACGnAyAAnwQAIagDIACfBAAhAr0CIAAAAAHEAiAAlgQAIRcDAACSBAAgtAIAAKAEADC1AgAAAwAQtgIAAKAEADDpAgEA1wMAIe0CAQDXAwAhhgMBANcDACGOAwEA1wMAIZADAQDsAwAhmQMBAOwDACGpAwEA1wMAIaoDAQDXAwAhqwMBAOwDACGsAwEA7AMAIa0DAQDsAwAhrgMBAOwDACGvAwEA1wMAIbADAQDXAwAhsQMBAOwDACGyAwEA7AMAIbMDAQDsAwAhtAMCAIQEACG1AwEA1wMAIQAAAAHEAwEAAAABAcQDQAAAAAEAAAAAAcQDAQAAAAEFFAAA7QUAIBUAAPAFACDBAwAA7gUAIMIDAADvBQAgxwMAAMsCACADFAAA7QUAIMEDAADuBQAgxwMAAMsCACAAAAAAAAXEAwIAAAABygMCAAAAAcsDAgAAAAHMAwIAAAABzQMCAAAAAQHEA0AAAAABBRQAAOgFACAVAADrBQAgwQMAAOkFACDCAwAA6gUAIMcDAADLAgAgAxQAAOgFACDBAwAA6QUAIMcDAADLAgAgAAAABRQAAOMFACAVAADmBQAgwQMAAOQFACDCAwAA5QUAIMcDAADLAgAgAxQAAOMFACDBAwAA5AUAIMcDAADLAgAgAAAAAcQDIAAAAAELFAAA2gQAMBUAAN8EADDBAwAA2wQAMMIDAADcBAAwwwMAAN0EACDEAwAA3gQAMMUDAADeBAAwxgMAAN4EADDHAwAA3gQAMMgDAADgBAAwyQMAAOEEADALFAAAzgQAMBUAANMEADDBAwAAzwQAMMIDAADQBAAwwwMAANEEACDEAwAA0gQAMMUDAADSBAAwxgMAANIEADDHAwAA0gQAMMgDAADUBAAwyQMAANUEADALFAAAwgQAMBUAAMcEADDBAwAAwwQAMMIDAADEBAAwwwMAAMUEACDEAwAAxgQAMMUDAADGBAAwxgMAAMYEADDHAwAAxgQAMMgDAADIBAAwyQMAAMkEADAFtwIBAAAAAbsCQAAAAAHaAgEAAAAB2wJAAAAAAdwCQAAAAAECAAAA1wIAIBQAAM0EACADAAAA1wIAIBQAAM0EACAVAADMBAAgAQ0AAOIFADAK4AEAAPMDACC0AgAA8QMAMLUCAADVAgAQtgIAAPEDADC3AgEAAAABuwJAANgDACHKAgEA1wMAIdoCAQAAAAHbAkAA2AMAIdwCQADyAwAhAgAAANcCACANAADMBAAgAgAAAMoEACANAADLBAAgCbQCAADJBAAwtQIAAMoEABC2AgAAyQQAMLcCAQDXAwAhuwJAANgDACHKAgEA1wMAIdoCAQDXAwAh2wJAANgDACHcAkAA8gMAIQm0AgAAyQQAMLUCAADKBAAQtgIAAMkEADC3AgEA1wMAIbsCQADYAwAhygIBANcDACHaAgEA1wMAIdsCQADYAwAh3AJAAPIDACEFtwIBAKQEACG7AkAApQQAIdoCAQCkBAAh2wJAAKUEACHcAkAAswQAIQW3AgEApAQAIbsCQAClBAAh2gIBAKQEACHbAkAApQQAIdwCQACzBAAhBbcCAQAAAAG7AkAAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABB7cCAQAAAAG6AkAAAAABuwJAAAAAAbwCQAAAAAHJAgEAAAABywIBAAAAAcwCAQAAAAECAAAA0wIAIBQAANkEACADAAAA0wIAIBQAANkEACAVAADYBAAgAQ0AAOEFADAM4AEAAPMDACC0AgAA9AMAMLUCAADRAgAQtgIAAPQDADC3AgEAAAABugJAANgDACG7AkAA2AMAIbwCQADYAwAhyQIBAAAAAcoCAQDXAwAhywIBAOwDACHMAgEA7AMAIQIAAADTAgAgDQAA2AQAIAIAAADWBAAgDQAA1wQAIAu0AgAA1QQAMLUCAADWBAAQtgIAANUEADC3AgEA1wMAIboCQADYAwAhuwJAANgDACG8AkAA2AMAIckCAQDXAwAhygIBANcDACHLAgEA7AMAIcwCAQDsAwAhC7QCAADVBAAwtQIAANYEABC2AgAA1QQAMLcCAQDXAwAhugJAANgDACG7AkAA2AMAIbwCQADYAwAhyQIBANcDACHKAgEA1wMAIcsCAQDsAwAhzAIBAOwDACEHtwIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACHJAgEApAQAIcsCAQCqBAAhzAIBAKoEACEHtwIBAKQEACG6AkAApQQAIbsCQAClBAAhvAJAAKUEACHJAgEApAQAIcsCAQCqBAAhzAIBAKoEACEHtwIBAAAAAboCQAAAAAG7AkAAAAABvAJAAAAAAckCAQAAAAHLAgEAAAABzAIBAAAAARC3AgEAAAABuwJAAAAAAbwCQAAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgIAAAAB1AJAAAAAAdUCQAAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAABAgAAAM8CACAUAADlBAAgAwAAAM8CACAUAADlBAAgFQAA5AQAIAENAADgBQAwFuABAADzAwAgtAIAAPYDADC1AgAAzQIAELYCAAD2AwAwtwIBAAAAAbsCQADYAwAhvAJAANgDACHKAgEA1wMAIc0CAQDXAwAhzgIBANcDACHPAgEA1wMAIdACAQDsAwAh0QIBAOwDACHSAgEA7AMAIdMCAgD3AwAh1AJAAPIDACHVAkAA8gMAIdYCAQDsAwAh1wIBAOwDACHYAgEA7AMAIdkCAQDsAwAh5gIAAPUDACACAAAAzwIAIA0AAOQEACACAAAA4gQAIA0AAOMEACAUtAIAAOEEADC1AgAA4gQAELYCAADhBAAwtwIBANcDACG7AkAA2AMAIbwCQADYAwAhygIBANcDACHNAgEA1wMAIc4CAQDXAwAhzwIBANcDACHQAgEA7AMAIdECAQDsAwAh0gIBAOwDACHTAgIA9wMAIdQCQADyAwAh1QJAAPIDACHWAgEA7AMAIdcCAQDsAwAh2AIBAOwDACHZAgEA7AMAIRS0AgAA4QQAMLUCAADiBAAQtgIAAOEEADC3AgEA1wMAIbsCQADYAwAhvAJAANgDACHKAgEA1wMAIc0CAQDXAwAhzgIBANcDACHPAgEA1wMAIdACAQDsAwAh0QIBAOwDACHSAgEA7AMAIdMCAgD3AwAh1AJAAPIDACHVAkAA8gMAIdYCAQDsAwAh1wIBAOwDACHYAgEA7AMAIdkCAQDsAwAhELcCAQCkBAAhuwJAAKUEACG8AkAApQQAIc0CAQCkBAAhzgIBAKQEACHPAgEApAQAIdACAQCqBAAh0QIBAKoEACHSAgEAqgQAIdMCAgCyBAAh1AJAALMEACHVAkAAswQAIdYCAQCqBAAh1wIBAKoEACHYAgEAqgQAIdkCAQCqBAAhELcCAQCkBAAhuwJAAKUEACG8AkAApQQAIc0CAQCkBAAhzgIBAKQEACHPAgEApAQAIdACAQCqBAAh0QIBAKoEACHSAgEAqgQAIdMCAgCyBAAh1AJAALMEACHVAkAAswQAIdYCAQCqBAAh1wIBAKoEACHYAgEAqgQAIdkCAQCqBAAhELcCAQAAAAG7AkAAAAABvAJAAAAAAc0CAQAAAAHOAgEAAAABzwIBAAAAAdACAQAAAAHRAgEAAAAB0gIBAAAAAdMCAgAAAAHUAkAAAAAB1QJAAAAAAdYCAQAAAAHXAgEAAAAB2AIBAAAAAdkCAQAAAAEEFAAA2gQAMMEDAADbBAAwwwMAAN0EACDHAwAA3gQAMAQUAADOBAAwwQMAAM8EADDDAwAA0QQAIMcDAADSBAAwBBQAAMIEADDBAwAAwwQAMMMDAADFBAAgxwMAAMYEADAAAAAH4QEAAOkEACDiAQAA6gQAIOMBAADrBAAg3QIAAKYEACDeAgAApgQAIOACAACmBAAg4QIAAKYEACAAAAAAAAAAAAAAAAAAAAXEAwIAAAABygMCAAAAAcsDAgAAAAHMAwIAAAABzQMCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFFAAA2wUAIBUAAN4FACDBAwAA3AUAIMIDAADdBQAgxwMAAAEAIAMUAADbBQAgwQMAANwFACDHAwAAAQAgCwQAAMwFACAFAADNBQAgBgAAzgUAIJUDAACmBAAgtgMAAKYEACC3AwAApgQAILgDAACmBAAguQMAAKYEACC6AwAApgQAILsDAACmBAAgvAMAAKYEACAAAAAAAAHEAyAAAAABBRQAANYFACAVAADZBQAgwQMAANcFACDCAwAA2AUAIMcDAAABACADFAAA1gUAIMEDAADXBQAgxwMAAAEAIAAAAAAABRQAANEFACAVAADUBQAgwQMAANIFACDCAwAA0wUAIMcDAAABACADFAAA0QUAIMEDAADSBQAgxwMAAAEAIAAAAAAACxQAAL0FADAVAADCBQAwwQMAAL4FADDCAwAAvwUAMMMDAADABQAgxAMAAMEFADDFAwAAwQUAMMYDAADBBQAwxwMAAMEFADDIAwAAwwUAMMkDAADEBQAwCxQAALEFADAVAAC2BQAwwQMAALIFADDCAwAAswUAMMMDAAC0BQAgxAMAALUFADDFAwAAtQUAMMYDAAC1BQAwxwMAALUFADDIAwAAtwUAMMkDAAC4BQAwBxQAAKwFACAVAACvBQAgwQMAAK0FACDCAwAArgUAIMUDAAALACDGAwAACwAgxwMAAFIAIAS8AgEAAAAB7QIBAAAAAYcDAgAAAAGIAwEAAAABAgAAAFIAIBQAAKwFACADAAAACwAgFAAArAUAIBUAALAFACAGAAAACwAgDQAAsAUAILwCAQCkBAAh7QIBAKQEACGHAwIA-wQAIYgDAQCkBAAhBLwCAQCkBAAh7QIBAKQEACGHAwIA-wQAIYgDAQCkBAAhJLwCAQAAAAHoAgEAAAAB6QIBAAAAAe0CAQAAAAGJAwEAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAGPAwIAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGVAwEAAAABlgMCAAAAAZcDAQAAAAGYAwEAAAABmQMBAAAAAZoDAQAAAAGbAwIAAAABnAMCAAAAAZ0DAgAAAAGeAwEAAAABnwMBAAAAAaADAgAAAAGhAwIAAAABogMBAAAAAaMDAQAAAAGkAwEAAAABpQMBAAAAAaYDIAAAAAGnAyAAAAABqAMgAAAAAQIAAAAJACAUAAC8BQAgAwAAAAkAIBQAALwFACAVAAC7BQAgAQ0AANAFADAqAwAAkgQAILQCAACeBAAwtQIAAAcAELYCAACeBAAwvAIBANcDACHoAgEAAAAB6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhiQMBANcDACGKAwEA1wMAIYsDAQDXAwAhjAMBAOwDACGNAwEA7AMAIY4DAQDXAwAhjwMCAIQEACGQAwEA7AMAIZEDAQDsAwAhkgMBAOwDACGTAwEA7AMAIZQDAQDsAwAhlQMBAOwDACGWAwIAhAQAIZcDAQDsAwAhmAMBAOwDACGZAwEA7AMAIZoDAQDsAwAhmwMCAPcDACGcAwIA9wMAIZ0DAgD3AwAhngMBAOwDACGfAwEA7AMAIaADAgD3AwAhoQMCAPcDACGiAwEA7AMAIaMDAQDsAwAhpAMBAOwDACGlAwEA7AMAIaYDIACfBAAhpwMgAJ8EACGoAyAAnwQAIb4DAACdBAAgAgAAAAkAIA0AALsFACACAAAAuQUAIA0AALoFACAotAIAALgFADC1AgAAuQUAELYCAAC4BQAwvAIBANcDACHoAgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYkDAQDXAwAhigMBANcDACGLAwEA1wMAIYwDAQDsAwAhjQMBAOwDACGOAwEA1wMAIY8DAgCEBAAhkAMBAOwDACGRAwEA7AMAIZIDAQDsAwAhkwMBAOwDACGUAwEA7AMAIZUDAQDsAwAhlgMCAIQEACGXAwEA7AMAIZgDAQDsAwAhmQMBAOwDACGaAwEA7AMAIZsDAgD3AwAhnAMCAPcDACGdAwIA9wMAIZ4DAQDsAwAhnwMBAOwDACGgAwIA9wMAIaEDAgD3AwAhogMBAOwDACGjAwEA7AMAIaQDAQDsAwAhpQMBAOwDACGmAyAAnwQAIacDIACfBAAhqAMgAJ8EACEotAIAALgFADC1AgAAuQUAELYCAAC4BQAwvAIBANcDACHoAgEA1wMAIekCAQDXAwAh7QIBANcDACGGAwEA1wMAIYkDAQDXAwAhigMBANcDACGLAwEA1wMAIYwDAQDsAwAhjQMBAOwDACGOAwEA1wMAIY8DAgCEBAAhkAMBAOwDACGRAwEA7AMAIZIDAQDsAwAhkwMBAOwDACGUAwEA7AMAIZUDAQDsAwAhlgMCAIQEACGXAwEA7AMAIZgDAQDsAwAhmQMBAOwDACGaAwEA7AMAIZsDAgD3AwAhnAMCAPcDACGdAwIA9wMAIZ4DAQDsAwAhnwMBAOwDACGgAwIA9wMAIaEDAgD3AwAhogMBAOwDACGjAwEA7AMAIaQDAQDsAwAhpQMBAOwDACGmAyAAnwQAIacDIACfBAAhqAMgAJ8EACEkvAIBAKQEACHoAgEApAQAIekCAQCkBAAh7QIBAKQEACGJAwEApAQAIYoDAQCkBAAhiwMBAKQEACGMAwEAqgQAIY0DAQCqBAAhjgMBAKQEACGPAwIA-wQAIZADAQCqBAAhkQMBAKoEACGSAwEAqgQAIZMDAQCqBAAhlAMBAKoEACGVAwEAqgQAIZYDAgD7BAAhlwMBAKoEACGYAwEAqgQAIZkDAQCqBAAhmgMBAKoEACGbAwIAsgQAIZwDAgCyBAAhnQMCALIEACGeAwEAqgQAIZ8DAQCqBAAhoAMCALIEACGhAwIAsgQAIaIDAQCqBAAhowMBAKoEACGkAwEAqgQAIaUDAQCqBAAhpgMgAJoFACGnAyAAmgUAIagDIACaBQAhJLwCAQCkBAAh6AIBAKQEACHpAgEApAQAIe0CAQCkBAAhiQMBAKQEACGKAwEApAQAIYsDAQCkBAAhjAMBAKoEACGNAwEAqgQAIY4DAQCkBAAhjwMCAPsEACGQAwEAqgQAIZEDAQCqBAAhkgMBAKoEACGTAwEAqgQAIZQDAQCqBAAhlQMBAKoEACGWAwIA-wQAIZcDAQCqBAAhmAMBAKoEACGZAwEAqgQAIZoDAQCqBAAhmwMCALIEACGcAwIAsgQAIZ0DAgCyBAAhngMBAKoEACGfAwEAqgQAIaADAgCyBAAhoQMCALIEACGiAwEAqgQAIaMDAQCqBAAhpAMBAKoEACGlAwEAqgQAIaYDIACaBQAhpwMgAJoFACGoAyAAmgUAISS8AgEAAAAB6AIBAAAAAekCAQAAAAHtAgEAAAABiQMBAAAAAYoDAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwMCAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAgAAAAGXAwEAAAABmAMBAAAAAZkDAQAAAAGaAwEAAAABmwMCAAAAAZwDAgAAAAGdAwIAAAABngMBAAAAAZ8DAQAAAAGgAwIAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMBAAAAAaUDAQAAAAGmAyAAAAABpwMgAAAAAagDIAAAAAES6QIBAAAAAe0CAQAAAAGOAwEAAAABkAMBAAAAAZkDAQAAAAGpAwEAAAABqgMBAAAAAasDAQAAAAGsAwEAAAABrQMBAAAAAa4DAQAAAAGvAwEAAAABsAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDAgAAAAG1AwEAAAABAgAAAAUAIBQAAMgFACADAAAABQAgFAAAyAUAIBUAAMcFACABDQAAzwUAMBcDAACSBAAgtAIAAKAEADC1AgAAAwAQtgIAAKAEADDpAgEA1wMAIe0CAQDXAwAhhgMBANcDACGOAwEA1wMAIZADAQDsAwAhmQMBAOwDACGpAwEAAAABqgMBANcDACGrAwEA7AMAIawDAQDsAwAhrQMBAOwDACGuAwEA7AMAIa8DAQDXAwAhsAMBANcDACGxAwEA7AMAIbIDAQDsAwAhswMBAOwDACG0AwIAhAQAIbUDAQDXAwAhAgAAAAUAIA0AAMcFACACAAAAxQUAIA0AAMYFACAWtAIAAMQFADC1AgAAxQUAELYCAADEBQAw6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhjgMBANcDACGQAwEA7AMAIZkDAQDsAwAhqQMBANcDACGqAwEA1wMAIasDAQDsAwAhrAMBAOwDACGtAwEA7AMAIa4DAQDsAwAhrwMBANcDACGwAwEA1wMAIbEDAQDsAwAhsgMBAOwDACGzAwEA7AMAIbQDAgCEBAAhtQMBANcDACEWtAIAAMQFADC1AgAAxQUAELYCAADEBQAw6QIBANcDACHtAgEA1wMAIYYDAQDXAwAhjgMBANcDACGQAwEA7AMAIZkDAQDsAwAhqQMBANcDACGqAwEA1wMAIasDAQDsAwAhrAMBAOwDACGtAwEA7AMAIa4DAQDsAwAhrwMBANcDACGwAwEA1wMAIbEDAQDsAwAhsgMBAOwDACGzAwEA7AMAIbQDAgCEBAAhtQMBANcDACES6QIBAKQEACHtAgEApAQAIY4DAQCkBAAhkAMBAKoEACGZAwEAqgQAIakDAQCkBAAhqgMBAKQEACGrAwEAqgQAIawDAQCqBAAhrQMBAKoEACGuAwEAqgQAIa8DAQCkBAAhsAMBAKQEACGxAwEAqgQAIbIDAQCqBAAhswMBAKoEACG0AwIA-wQAIbUDAQCkBAAhEukCAQCkBAAh7QIBAKQEACGOAwEApAQAIZADAQCqBAAhmQMBAKoEACGpAwEApAQAIaoDAQCkBAAhqwMBAKoEACGsAwEAqgQAIa0DAQCqBAAhrgMBAKoEACGvAwEApAQAIbADAQCkBAAhsQMBAKoEACGyAwEAqgQAIbMDAQCqBAAhtAMCAPsEACG1AwEApAQAIRLpAgEAAAAB7QIBAAAAAY4DAQAAAAGQAwEAAAABmQMBAAAAAakDAQAAAAGqAwEAAAABqwMBAAAAAawDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAGwAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtAMCAAAAAbUDAQAAAAEEFAAAvQUAMMEDAAC-BQAwwwMAAMAFACDHAwAAwQUAMAQUAACxBQAwwQMAALIFADDDAwAAtAUAIMcDAAC1BQAwAxQAAKwFACDBAwAArQUAIMcDAABSACAAAAEDAACUBQAgEukCAQAAAAHtAgEAAAABjgMBAAAAAZADAQAAAAGZAwEAAAABqQMBAAAAAaoDAQAAAAGrAwEAAAABrAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAbADAQAAAAGxAwEAAAABsgMBAAAAAbMDAQAAAAG0AwIAAAABtQMBAAAAASS8AgEAAAAB6AIBAAAAAekCAQAAAAHtAgEAAAABiQMBAAAAAYoDAQAAAAGLAwEAAAABjAMBAAAAAY0DAQAAAAGOAwEAAAABjwMCAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABlQMBAAAAAZYDAgAAAAGXAwEAAAABmAMBAAAAAZkDAQAAAAGaAwEAAAABmwMCAAAAAZwDAgAAAAGdAwIAAAABngMBAAAAAZ8DAQAAAAGgAwIAAAABoQMCAAAAAaIDAQAAAAGjAwEAAAABpAMBAAAAAaUDAQAAAAGmAyAAAAABpwMgAAAAAagDIAAAAAERBQAAygUAIAYAAMsFACC8AgEAAAAB6QIBAAAAAe0CAQAAAAGGAwEAAAABhwMCAAAAAZQDAQAAAAGVAwEAAAABtgMBAAAAAbcDAQAAAAG4AwEAAAABuQMBAAAAAboDAQAAAAG7AwEAAAABvAMBAAAAAb0DAQAAAAECAAAAAQAgFAAA0QUAIAMAAAAQACAUAADRBQAgFQAA1QUAIBMAAAAQACAFAACqBQAgBgAAqwUAIA0AANUFACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACERBQAAqgUAIAYAAKsFACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACERBAAAyQUAIAYAAMsFACC8AgEAAAAB6QIBAAAAAe0CAQAAAAGGAwEAAAABhwMCAAAAAZQDAQAAAAGVAwEAAAABtgMBAAAAAbcDAQAAAAG4AwEAAAABuQMBAAAAAboDAQAAAAG7AwEAAAABvAMBAAAAAb0DAQAAAAECAAAAAQAgFAAA1gUAIAMAAAAQACAUAADWBQAgFQAA2gUAIBMAAAAQACAEAACpBQAgBgAAqwUAIA0AANoFACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACERBAAAqQUAIAYAAKsFACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACERBAAAyQUAIAUAAMoFACC8AgEAAAAB6QIBAAAAAe0CAQAAAAGGAwEAAAABhwMCAAAAAZQDAQAAAAGVAwEAAAABtgMBAAAAAbcDAQAAAAG4AwEAAAABuQMBAAAAAboDAQAAAAG7AwEAAAABvAMBAAAAAb0DAQAAAAECAAAAAQAgFAAA2wUAIAMAAAAQACAUAADbBQAgFQAA3wUAIBMAAAAQACAEAACpBQAgBQAAqgUAIA0AAN8FACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACERBAAAqQUAIAUAAKoFACC8AgEApAQAIekCAQCkBAAh7QIBAKQEACGGAwEApAQAIYcDAgD7BAAhlAMBAKQEACGVAwEAqgQAIbYDAQCqBAAhtwMBAKoEACG4AwEAqgQAIbkDAQCqBAAhugMBAKoEACG7AwEAqgQAIbwDAQCqBAAhvQMBAKQEACEQtwIBAAAAAbsCQAAAAAG8AkAAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wICAAAAAdQCQAAAAAHVAkAAAAAB1gIBAAAAAdcCAQAAAAHYAgEAAAAB2QIBAAAAAQe3AgEAAAABugJAAAAAAbsCQAAAAAG8AkAAAAAByQIBAAAAAcsCAQAAAAHMAgEAAAABBbcCAQAAAAG7AkAAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAABC-EBAADmBAAg4gEAAOcEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHdAgEAAAAB3gIBAAAAAd8CIAAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAECAAAAywIAIBQAAOMFACADAAAA3QIAIBQAAOMFACAVAADnBQAgDQAAAN0CACANAADnBQAg4QEAAL8EACDiAQAAwAQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAId0CAQCqBAAh3gIBAKoEACHfAiAAvgQAIeACAQCqBAAh4QIBAKoEACHiAgEApAQAIQvhAQAAvwQAIOIBAADABAAgtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhC-IBAADnBAAg4wEAAOgEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHdAgEAAAAB3gIBAAAAAd8CIAAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAECAAAAywIAIBQAAOgFACADAAAA3QIAIBQAAOgFACAVAADsBQAgDQAAAN0CACANAADsBQAg4gEAAMAEACDjAQAAwQQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAId0CAQCqBAAh3gIBAKoEACHfAiAAvgQAIeACAQCqBAAh4QIBAKoEACHiAgEApAQAIQviAQAAwAQAIOMBAADBBAAgtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhC-EBAADmBAAg4wEAAOgEACC3AgEAAAABuwJAAAAAAbwCQAAAAAHdAgEAAAAB3gIBAAAAAd8CIAAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAECAAAAywIAIBQAAO0FACADAAAA3QIAIBQAAO0FACAVAADxBQAgDQAAAN0CACANAADxBQAg4QEAAL8EACDjAQAAwQQAILcCAQCkBAAhuwJAAKUEACG8AkAApQQAId0CAQCqBAAh3gIBAKoEACHfAiAAvgQAIeACAQCqBAAh4QIBAKoEACHiAgEApAQAIQvhAQAAvwQAIOMBAADBBAAgtwIBAKQEACG7AkAApQQAIbwCQAClBAAh3QIBAKoEACHeAgEAqgQAId8CIAC-BAAh4AIBAKoEACHhAgEAqgQAIeICAQCkBAAhBAQGAgUKAwYMBAcABQEDAAEBAwABAQMAAQIEDQAFDgAAAAAFBwAKGgALGwAMHAANHQAOAAAAAAAFBwAKGgALGwAMHAANHQAOAQMAAQEDAAEFBwATGgAUGwAVHAAWHQAXAAAAAAAFBwATGgAUGwAVHAAWHQAXAQMAAQEDAAEFBwAcGgAdGwAeHAAfHQAgAAAAAAAFBwAcGgAdGwAeHAAfHQAgAQMAAQEDAAEFBwAlGgAmGwAnHAAoHQApAAAAAAAFBwAlGgAmGwAnHAAoHQApAAAAAwcALxwAMB0AMQAAAAMHAC8cADAdADEAAAADBwA3HAA4HQA5AAAAAwcANxwAOB0AOQAAAAMHAD8cAEAdAEEAAAADBwA_HABAHQBBAAAAAwcARxwASB0ASQAAAAMHAEccAEgdAEkAAAAFBwBPGgBQGwBRHABSHQBTAAAAAAAFBwBPGgBQGwBRHABSHQBTAAAABQcAWRoAWhsAWxwAXB0AXQAAAAAABQcAWRoAWhsAWxwAXB0AXQAAAAMHAGMcAGQdAGUAAAADBwBjHABkHQBlAAAAAwcAaxwAbB0AbQAAAAMHAGscAGwdAG0AAAADBwBzHAB0HQB1AAAAAwcAcxwAdB0AdQQHAHvhAdACeOIB1AJ54wHYAnoB4AEAdwHgAQB3AeABAHcD4QHZAgDiAdoCAOMB2wIAAAADBwB_HACAAR0AgQEAAAADBwB_HACAAR0AgQEB4AEAdwHgAQB3AwcAhgEcAIcBHQCIAQAAAAMHAIYBHACHAR0AiAEB4AEAdwHgAQB3BQcAjQEaAI4BGwCPARwAkAEdAJEBAAAAAAAFBwCNARoAjgEbAI8BHACQAR0AkQEB4AEAdwHgAQB3AwcAlgEcAJcBHQCYAQAAAAMHAJYBHACXAR0AmAEAAAADBwCeARwAnwEdAKABAAAAAwcAngEcAJ8BHQCgAQgCAQkPAQoSAQsTAQwUAQ4WAQ8YBhAZBxEbARIdBhMeCBYfARcgARghBh4kCR8lDyAmAiEnAiIoAiMpAiQqAiUsAiYuBicvECgxAikzBio0ESs1Aiw2Ai03Bi46Ei87GDA8AzE9AzI-AzM_AzRAAzVCAzZEBjdFGThHAzlJBjpKGjtLAzxMAz1NBj5QGz9RIUBTBEFUBEJWBENXBERYBEVaBEZcBkddIkhfBElhBkpiI0tjBExkBE1lBk5oJE9pKlBrK1FsK1JvK1NwK1RxK1VzK1Z1Bld2LFh4K1l6Blp7LVt8K1x9K11-Bl6BAS5fggEyYIQBM2GFATNiiAEzY4kBM2SKATNljAEzZo4BBmePATRokQEzaZMBBmqUATVrlQEzbJYBM22XAQZumgE2b5sBOnCdATtxngE7cqEBO3OiATt0owE7daUBO3anAQZ3qAE8eKoBO3msAQZ6rQE9e64BO3yvATt9sAEGfrMBPn-0AUKAAbYBQ4EBtwFDggG6AUODAbsBQ4QBvAFDhQG-AUOGAcABBocBwQFEiAHDAUOJAcUBBooBxgFFiwHHAUOMAcgBQ40ByQEGjgHMAUaPAc0BSpABzwFLkQHQAUuSAdMBS5MB1AFLlAHVAUuVAdcBS5YB2QEGlwHaAUyYAdwBS5kB3gEGmgHfAU2bAeABS5wB4QFLnQHiAQaeAeUBTp8B5gFUoAHoAVWhAekBVaIB7AFVowHtAVWkAe4BVaUB8AFVpgHyAQanAfMBVqgB9QFVqQH3AQaqAfgBV6sB-QFVrAH6AVWtAfsBBq4B_gFYrwH_AV6wAYECX7EBggJfsgGFAl-zAYYCX7QBhwJftQGJAl-2AYsCBrcBjAJguAGOAl-5AZACBroBkQJhuwGSAl-8AZMCX70BlAIGvgGXAmK_AZgCZsABmgJnwQGbAmfCAZ4CZ8MBnwJnxAGgAmfFAaICZ8YBpAIGxwGlAmjIAacCZ8kBqQIGygGqAmnLAasCZ8wBrAJnzQGtAgbOAbACas8BsQJu0AGzAm_RAbQCb9IBtwJv0wG4Am_UAbkCb9UBuwJv1gG9AgbXAb4CcNgBwAJv2QHCAgbaAcMCcdsBxAJv3AHFAm_dAcYCBt4ByQJy3wHKAnbkAcwCd-UB3AJ35gHfAnfnAeACd-gB4QJ36QHjAnfqAeUCBusB5gJ87AHoAnftAeoCBu4B6wJ97wHsAnfwAe0Cd_EB7gIG8gHxAn7zAfICggH0AfMCevUB9AJ69gH1Anr3AfYCevgB9wJ6-QH5Anr6AfsCBvsB_AKDAfwB_gJ6_QGAAwb-AYEDhAH_AYIDeoACgwN6gQKEAwaCAocDhQGDAogDiQGEAokDeIUCigN4hgKLA3iHAowDeIgCjQN4iQKPA3iKApEDBosCkgOKAYwClAN4jQKWAwaOApcDiwGPApgDeJACmQN4kQKaAwaSAp0DjAGTAp4DkgGUAp8DeZUCoAN5lgKhA3mXAqIDeZgCowN5mQKlA3maAqcDBpsCqAOTAZwCqgN5nQKsAwaeAq0DlAGfAq4DeaACrwN5oQKwAwaiArMDlQGjArQDmQGkArYDmgGlArcDmgGmAroDmgGnArsDmgGoArwDmgGpAr4DmgGqAsADBqsCwQObAawCwwOaAa0CxQMGrgLGA5wBrwLHA5oBsALIA5oBsQLJAwayAswDnQGzAs0DoQE"
|
|
15599
|
+
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"run\",\"workItems\",\"executionInstances\",\"slotProjection\",\"_count\",\"Run.findUnique\",\"Run.findUniqueOrThrow\",\"Run.findFirst\",\"Run.findFirstOrThrow\",\"Run.findMany\",\"data\",\"Run.createOne\",\"Run.createMany\",\"Run.createManyAndReturn\",\"Run.updateOne\",\"Run.updateMany\",\"Run.updateManyAndReturn\",\"create\",\"update\",\"Run.upsertOne\",\"Run.deleteOne\",\"Run.deleteMany\",\"having\",\"_avg\",\"_sum\",\"_min\",\"_max\",\"Run.groupBy\",\"Run.aggregate\",\"RunWorkItem.findUnique\",\"RunWorkItem.findUniqueOrThrow\",\"RunWorkItem.findFirst\",\"RunWorkItem.findFirstOrThrow\",\"RunWorkItem.findMany\",\"RunWorkItem.createOne\",\"RunWorkItem.createMany\",\"RunWorkItem.createManyAndReturn\",\"RunWorkItem.updateOne\",\"RunWorkItem.updateMany\",\"RunWorkItem.updateManyAndReturn\",\"RunWorkItem.upsertOne\",\"RunWorkItem.deleteOne\",\"RunWorkItem.deleteMany\",\"RunWorkItem.groupBy\",\"RunWorkItem.aggregate\",\"ExecutionInstance.findUnique\",\"ExecutionInstance.findUniqueOrThrow\",\"ExecutionInstance.findFirst\",\"ExecutionInstance.findFirstOrThrow\",\"ExecutionInstance.findMany\",\"ExecutionInstance.createOne\",\"ExecutionInstance.createMany\",\"ExecutionInstance.createManyAndReturn\",\"ExecutionInstance.updateOne\",\"ExecutionInstance.updateMany\",\"ExecutionInstance.updateManyAndReturn\",\"ExecutionInstance.upsertOne\",\"ExecutionInstance.deleteOne\",\"ExecutionInstance.deleteMany\",\"ExecutionInstance.groupBy\",\"ExecutionInstance.aggregate\",\"RunSlotProjection.findUnique\",\"RunSlotProjection.findUniqueOrThrow\",\"RunSlotProjection.findFirst\",\"RunSlotProjection.findFirstOrThrow\",\"RunSlotProjection.findMany\",\"RunSlotProjection.createOne\",\"RunSlotProjection.createMany\",\"RunSlotProjection.createManyAndReturn\",\"RunSlotProjection.updateOne\",\"RunSlotProjection.updateMany\",\"RunSlotProjection.updateManyAndReturn\",\"RunSlotProjection.upsertOne\",\"RunSlotProjection.deleteOne\",\"RunSlotProjection.deleteMany\",\"RunSlotProjection.groupBy\",\"RunSlotProjection.aggregate\",\"WorkflowDebuggerOverlay.findUnique\",\"WorkflowDebuggerOverlay.findUniqueOrThrow\",\"WorkflowDebuggerOverlay.findFirst\",\"WorkflowDebuggerOverlay.findFirstOrThrow\",\"WorkflowDebuggerOverlay.findMany\",\"WorkflowDebuggerOverlay.createOne\",\"WorkflowDebuggerOverlay.createMany\",\"WorkflowDebuggerOverlay.createManyAndReturn\",\"WorkflowDebuggerOverlay.updateOne\",\"WorkflowDebuggerOverlay.updateMany\",\"WorkflowDebuggerOverlay.updateManyAndReturn\",\"WorkflowDebuggerOverlay.upsertOne\",\"WorkflowDebuggerOverlay.deleteOne\",\"WorkflowDebuggerOverlay.deleteMany\",\"WorkflowDebuggerOverlay.groupBy\",\"WorkflowDebuggerOverlay.aggregate\",\"WorkflowActivation.findUnique\",\"WorkflowActivation.findUniqueOrThrow\",\"WorkflowActivation.findFirst\",\"WorkflowActivation.findFirstOrThrow\",\"WorkflowActivation.findMany\",\"WorkflowActivation.createOne\",\"WorkflowActivation.createMany\",\"WorkflowActivation.createManyAndReturn\",\"WorkflowActivation.updateOne\",\"WorkflowActivation.updateMany\",\"WorkflowActivation.updateManyAndReturn\",\"WorkflowActivation.upsertOne\",\"WorkflowActivation.deleteOne\",\"WorkflowActivation.deleteMany\",\"WorkflowActivation.groupBy\",\"WorkflowActivation.aggregate\",\"TriggerSetupState.findUnique\",\"TriggerSetupState.findUniqueOrThrow\",\"TriggerSetupState.findFirst\",\"TriggerSetupState.findFirstOrThrow\",\"TriggerSetupState.findMany\",\"TriggerSetupState.createOne\",\"TriggerSetupState.createMany\",\"TriggerSetupState.createManyAndReturn\",\"TriggerSetupState.updateOne\",\"TriggerSetupState.updateMany\",\"TriggerSetupState.updateManyAndReturn\",\"TriggerSetupState.upsertOne\",\"TriggerSetupState.deleteOne\",\"TriggerSetupState.deleteMany\",\"TriggerSetupState.groupBy\",\"TriggerSetupState.aggregate\",\"RunTraceContext.findUnique\",\"RunTraceContext.findUniqueOrThrow\",\"RunTraceContext.findFirst\",\"RunTraceContext.findFirstOrThrow\",\"RunTraceContext.findMany\",\"RunTraceContext.createOne\",\"RunTraceContext.createMany\",\"RunTraceContext.createManyAndReturn\",\"RunTraceContext.updateOne\",\"RunTraceContext.updateMany\",\"RunTraceContext.updateManyAndReturn\",\"RunTraceContext.upsertOne\",\"RunTraceContext.deleteOne\",\"RunTraceContext.deleteMany\",\"RunTraceContext.groupBy\",\"RunTraceContext.aggregate\",\"TelemetrySpan.findUnique\",\"TelemetrySpan.findUniqueOrThrow\",\"TelemetrySpan.findFirst\",\"TelemetrySpan.findFirstOrThrow\",\"TelemetrySpan.findMany\",\"TelemetrySpan.createOne\",\"TelemetrySpan.createMany\",\"TelemetrySpan.createManyAndReturn\",\"TelemetrySpan.updateOne\",\"TelemetrySpan.updateMany\",\"TelemetrySpan.updateManyAndReturn\",\"TelemetrySpan.upsertOne\",\"TelemetrySpan.deleteOne\",\"TelemetrySpan.deleteMany\",\"TelemetrySpan.groupBy\",\"TelemetrySpan.aggregate\",\"TelemetryArtifact.findUnique\",\"TelemetryArtifact.findUniqueOrThrow\",\"TelemetryArtifact.findFirst\",\"TelemetryArtifact.findFirstOrThrow\",\"TelemetryArtifact.findMany\",\"TelemetryArtifact.createOne\",\"TelemetryArtifact.createMany\",\"TelemetryArtifact.createManyAndReturn\",\"TelemetryArtifact.updateOne\",\"TelemetryArtifact.updateMany\",\"TelemetryArtifact.updateManyAndReturn\",\"TelemetryArtifact.upsertOne\",\"TelemetryArtifact.deleteOne\",\"TelemetryArtifact.deleteMany\",\"TelemetryArtifact.groupBy\",\"TelemetryArtifact.aggregate\",\"TelemetryMetricPoint.findUnique\",\"TelemetryMetricPoint.findUniqueOrThrow\",\"TelemetryMetricPoint.findFirst\",\"TelemetryMetricPoint.findFirstOrThrow\",\"TelemetryMetricPoint.findMany\",\"TelemetryMetricPoint.createOne\",\"TelemetryMetricPoint.createMany\",\"TelemetryMetricPoint.createManyAndReturn\",\"TelemetryMetricPoint.updateOne\",\"TelemetryMetricPoint.updateMany\",\"TelemetryMetricPoint.updateManyAndReturn\",\"TelemetryMetricPoint.upsertOne\",\"TelemetryMetricPoint.deleteOne\",\"TelemetryMetricPoint.deleteMany\",\"TelemetryMetricPoint.groupBy\",\"TelemetryMetricPoint.aggregate\",\"CredentialInstance.findUnique\",\"CredentialInstance.findUniqueOrThrow\",\"CredentialInstance.findFirst\",\"CredentialInstance.findFirstOrThrow\",\"CredentialInstance.findMany\",\"CredentialInstance.createOne\",\"CredentialInstance.createMany\",\"CredentialInstance.createManyAndReturn\",\"CredentialInstance.updateOne\",\"CredentialInstance.updateMany\",\"CredentialInstance.updateManyAndReturn\",\"CredentialInstance.upsertOne\",\"CredentialInstance.deleteOne\",\"CredentialInstance.deleteMany\",\"CredentialInstance.groupBy\",\"CredentialInstance.aggregate\",\"CredentialSecretMaterial.findUnique\",\"CredentialSecretMaterial.findUniqueOrThrow\",\"CredentialSecretMaterial.findFirst\",\"CredentialSecretMaterial.findFirstOrThrow\",\"CredentialSecretMaterial.findMany\",\"CredentialSecretMaterial.createOne\",\"CredentialSecretMaterial.createMany\",\"CredentialSecretMaterial.createManyAndReturn\",\"CredentialSecretMaterial.updateOne\",\"CredentialSecretMaterial.updateMany\",\"CredentialSecretMaterial.updateManyAndReturn\",\"CredentialSecretMaterial.upsertOne\",\"CredentialSecretMaterial.deleteOne\",\"CredentialSecretMaterial.deleteMany\",\"CredentialSecretMaterial.groupBy\",\"CredentialSecretMaterial.aggregate\",\"CredentialOAuth2Material.findUnique\",\"CredentialOAuth2Material.findUniqueOrThrow\",\"CredentialOAuth2Material.findFirst\",\"CredentialOAuth2Material.findFirstOrThrow\",\"CredentialOAuth2Material.findMany\",\"CredentialOAuth2Material.createOne\",\"CredentialOAuth2Material.createMany\",\"CredentialOAuth2Material.createManyAndReturn\",\"CredentialOAuth2Material.updateOne\",\"CredentialOAuth2Material.updateMany\",\"CredentialOAuth2Material.updateManyAndReturn\",\"CredentialOAuth2Material.upsertOne\",\"CredentialOAuth2Material.deleteOne\",\"CredentialOAuth2Material.deleteMany\",\"CredentialOAuth2Material.groupBy\",\"CredentialOAuth2Material.aggregate\",\"CredentialOAuth2State.findUnique\",\"CredentialOAuth2State.findUniqueOrThrow\",\"CredentialOAuth2State.findFirst\",\"CredentialOAuth2State.findFirstOrThrow\",\"CredentialOAuth2State.findMany\",\"CredentialOAuth2State.createOne\",\"CredentialOAuth2State.createMany\",\"CredentialOAuth2State.createManyAndReturn\",\"CredentialOAuth2State.updateOne\",\"CredentialOAuth2State.updateMany\",\"CredentialOAuth2State.updateManyAndReturn\",\"CredentialOAuth2State.upsertOne\",\"CredentialOAuth2State.deleteOne\",\"CredentialOAuth2State.deleteMany\",\"CredentialOAuth2State.groupBy\",\"CredentialOAuth2State.aggregate\",\"CredentialBinding.findUnique\",\"CredentialBinding.findUniqueOrThrow\",\"CredentialBinding.findFirst\",\"CredentialBinding.findFirstOrThrow\",\"CredentialBinding.findMany\",\"CredentialBinding.createOne\",\"CredentialBinding.createMany\",\"CredentialBinding.createManyAndReturn\",\"CredentialBinding.updateOne\",\"CredentialBinding.updateMany\",\"CredentialBinding.updateManyAndReturn\",\"CredentialBinding.upsertOne\",\"CredentialBinding.deleteOne\",\"CredentialBinding.deleteMany\",\"CredentialBinding.groupBy\",\"CredentialBinding.aggregate\",\"CredentialTestResult.findUnique\",\"CredentialTestResult.findUniqueOrThrow\",\"CredentialTestResult.findFirst\",\"CredentialTestResult.findFirstOrThrow\",\"CredentialTestResult.findMany\",\"CredentialTestResult.createOne\",\"CredentialTestResult.createMany\",\"CredentialTestResult.createManyAndReturn\",\"CredentialTestResult.updateOne\",\"CredentialTestResult.updateMany\",\"CredentialTestResult.updateManyAndReturn\",\"CredentialTestResult.upsertOne\",\"CredentialTestResult.deleteOne\",\"CredentialTestResult.deleteMany\",\"CredentialTestResult.groupBy\",\"CredentialTestResult.aggregate\",\"user\",\"accounts\",\"sessions\",\"invites\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"UserInvite.findUnique\",\"UserInvite.findUniqueOrThrow\",\"UserInvite.findFirst\",\"UserInvite.findFirstOrThrow\",\"UserInvite.findMany\",\"UserInvite.createOne\",\"UserInvite.createMany\",\"UserInvite.createManyAndReturn\",\"UserInvite.updateOne\",\"UserInvite.updateMany\",\"UserInvite.updateManyAndReturn\",\"UserInvite.upsertOne\",\"UserInvite.deleteOne\",\"UserInvite.deleteMany\",\"UserInvite.groupBy\",\"UserInvite.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"VerificationToken.findUnique\",\"VerificationToken.findUniqueOrThrow\",\"VerificationToken.findFirst\",\"VerificationToken.findFirstOrThrow\",\"VerificationToken.findMany\",\"VerificationToken.createOne\",\"VerificationToken.createMany\",\"VerificationToken.createManyAndReturn\",\"VerificationToken.updateOne\",\"VerificationToken.updateMany\",\"VerificationToken.updateManyAndReturn\",\"VerificationToken.upsertOne\",\"VerificationToken.deleteOne\",\"VerificationToken.deleteMany\",\"VerificationToken.groupBy\",\"VerificationToken.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"identifier\",\"token\",\"expires\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"identifier_token\",\"sessionToken\",\"userId\",\"ipAddress\",\"userAgent\",\"type\",\"provider\",\"providerAccountId\",\"password\",\"refresh_token\",\"access_token\",\"expires_at\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"token_type\",\"scope\",\"id_token\",\"session_state\",\"tokenHash\",\"expiresAt\",\"revokedAt\",\"name\",\"email\",\"emailVerified\",\"image\",\"passwordHash\",\"accountStatus\",\"every\",\"some\",\"none\",\"provider_providerAccountId\",\"testId\",\"instanceId\",\"status\",\"message\",\"detailsJson\",\"testedAt\",\"workflowId\",\"nodeId\",\"slotKey\",\"workflowId_nodeId_slotKey\",\"state\",\"codeVerifier\",\"providerId\",\"requestedScopesJson\",\"encryptedJson\",\"encryptionKeyId\",\"schemaVersion\",\"connectedEmail\",\"connectedAt\",\"scopesJson\",\"typeId\",\"displayName\",\"sourceKind\",\"publicConfigJson\",\"secretRefJson\",\"tagsJson\",\"setupStatus\",\"metricPointId\",\"traceId\",\"spanId\",\"runId\",\"activationId\",\"metricName\",\"value\",\"unit\",\"observedAt\",\"workflowFolder\",\"nodeType\",\"nodeRole\",\"modelName\",\"dimensionsJson\",\"retentionExpiresAt\",\"artifactId\",\"kind\",\"contentType\",\"previewText\",\"previewJson\",\"payloadText\",\"payloadJson\",\"bytes\",\"truncated\",\"telemetrySpanId\",\"parentSpanId\",\"connectionInvocationId\",\"statusMessage\",\"startTime\",\"endTime\",\"attributesJson\",\"eventsJson\",\"traceId_spanId\",\"rootSpanId\",\"serviceName\",\"stateJson\",\"workflowId_nodeId\",\"isActive\",\"copiedFromRunId\",\"revision\",\"slotStatesJson\",\"slotNodeId\",\"workflowNodeId\",\"connectionKind\",\"batchId\",\"runIndex\",\"parentInstanceId\",\"parentRunId\",\"workerClaimToken\",\"queuedAt\",\"startedAt\",\"finishedAt\",\"itemCount\",\"inputJson\",\"outputJson\",\"errorJson\",\"inputItemIndicesJson\",\"outputItemCount\",\"successfulItemCount\",\"failedItemCount\",\"inputStorageKind\",\"outputStorageKind\",\"inputBytes\",\"outputBytes\",\"inputPreviewJson\",\"outputPreviewJson\",\"inputPayloadRef\",\"outputPayloadRef\",\"inputTruncated\",\"outputTruncated\",\"usedPinnedOutput\",\"workItemId\",\"targetNodeId\",\"queueName\",\"claimToken\",\"claimedBy\",\"claimedAt\",\"availableAt\",\"enqueuedAt\",\"completedAt\",\"failedAt\",\"sourceInstanceId\",\"itemsIn\",\"inputsByPortJson\",\"parentJson\",\"executionOptionsJson\",\"controlJson\",\"workflowSnapshotJson\",\"policySnapshotJson\",\"engineCountersJson\",\"mutableStateJson\",\"outputsByNodeJson\",\"runId_slotNodeId_runIndex\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
15600
|
+
graph: "8gbFAeACFQQAAIsFACAFAACMBQAgBgAAjQUAIPQCAACKBQAw9QIAABAAEPYCAACKBQAw_AIBALsEACGpAwEAuwQAIa0DAQC7BAAhxQMBAAAAAekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACEBAAAAAQAgFwMAAIYFACD0AgAAkAUAMPUCAAADABD2AgAAkAUAMKkDAQC7BAAhrQMBALsEACHFAwEAuwQAIe4DAQC7BAAh8AMBANAEACH5AwEA0AQAIYkEAQC7BAAhigQBALsEACGLBAEA0AQAIYwEAQDQBAAhjQQBANAEACGOBAEA0AQAIY8EAQC7BAAhkAQBALsEACGRBAEA0AQAIZIEAQDQBAAhkwQBANAEACGUBAIA6AQAIZUEAQC7BAAhCgMAAJYGACDwAwAAlgUAIPkDAACWBQAgiwQAAJYFACCMBAAAlgUAII0EAACWBQAgjgQAAJYFACCRBAAAlgUAIJIEAACWBQAgkwQAAJYFACAXAwAAhgUAIPQCAACQBQAw9QIAAAMAEPYCAACQBQAwqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh7gMBALsEACHwAwEA0AQAIfkDAQDQBAAhiQQBAAAAAYoEAQC7BAAhiwQBANAEACGMBAEA0AQAIY0EAQDQBAAhjgQBANAEACGPBAEAuwQAIZAEAQC7BAAhkQQBANAEACGSBAEA0AQAIZMEAQDQBAAhlAQCAOgEACGVBAEAuwQAIQMAAAADACABAAAEADACAAAFACApAwAAhgUAIPQCAACPBQAw9QIAAAcAEPYCAACPBQAw_AIBALsEACGoAwEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIcYDAQDQBAAh0gMBALsEACHrAwEAuwQAIewDAQC7BAAh7QMBANAEACHuAwEAuwQAIe8DAgDoBAAh8AMBANAEACHxAwEA0AQAIfIDAQDQBAAh8wMBANAEACH0AwEA0AQAIfUDAQDQBAAh9gMCAOgEACH3AwEA0AQAIfgDAQDQBAAh-QMBANAEACH6AwEA0AQAIfsDAgDbBAAh_AMCANsEACH9AwIA2wQAIf4DAQDQBAAh_wMBANAEACGABAIA2wQAIYEEAgDbBAAhggQBANAEACGDBAEA0AQAIYQEAQDQBAAhhQQBANAEACGGBCAA9wQAIYcEIAD3BAAhiAQgAPcEACEbAwAAlgYAIMYDAACWBQAg7QMAAJYFACDwAwAAlgUAIPEDAACWBQAg8gMAAJYFACDzAwAAlgUAIPQDAACWBQAg9QMAAJYFACD3AwAAlgUAIPgDAACWBQAg-QMAAJYFACD6AwAAlgUAIPsDAACWBQAg_AMAAJYFACD9AwAAlgUAIP4DAACWBQAg_wMAAJYFACCABAAAlgUAIIEEAACWBQAgggQAAJYFACCDBAAAlgUAIIQEAACWBQAghQQAAJYFACCGBAAAlgUAIIcEAACWBQAgiAQAAJYFACAqAwAAhgUAIPQCAACPBQAw9QIAAAcAEPYCAACPBQAw_AIBALsEACGoAwEAAAABqQMBALsEACGtAwEAuwQAIcUDAQC7BAAhxgMBANAEACHSAwEAuwQAIesDAQC7BAAh7AMBALsEACHtAwEA0AQAIe4DAQC7BAAh7wMCAOgEACHwAwEA0AQAIfEDAQDQBAAh8gMBANAEACHzAwEA0AQAIfQDAQDQBAAh9QMBANAEACH2AwIA6AQAIfcDAQDQBAAh-AMBANAEACH5AwEA0AQAIfoDAQDQBAAh-wMCANsEACH8AwIA2wQAIf0DAgDbBAAh_gMBANAEACH_AwEA0AQAIYAEAgDbBAAhgQQCANsEACGCBAEA0AQAIYMEAQDQBAAhhAQBANAEACGFBAEA0AQAIYYEIAD3BAAhhwQgAPcEACGIBCAA9wQAIZ4EAACOBQAgAwAAAAcAIAEAAAgAMAIAAAkAIAkDAACGBQAg9AIAAIUFADD1AgAACwAQ9gIAAIUFADD8AgEAuwQAIa0DAQC7BAAhxQMBALsEACHpAwIA6AQAIeoDAQC7BAAhAQAAAAsAIAEAAAADACABAAAABwAgAQAAAAEAIBUEAACLBQAgBQAAjAUAIAYAAI0FACD0AgAAigUAMPUCAAAQABD2AgAAigUAMPwCAQC7BAAhqQMBALsEACGtAwEAuwQAIcUDAQC7BAAh6QMCAOgEACH0AwEAuwQAIfUDAQDQBAAhlgQBANAEACGXBAEA0AQAIZgEAQDQBAAhmQQBANAEACGaBAEA0AQAIZsEAQDQBAAhnAQBANAEACGdBAEAuwQAIQsEAADNBgAgBQAAzgYAIAYAAM8GACD1AwAAlgUAIJYEAACWBQAglwQAAJYFACCYBAAAlgUAIJkEAACWBQAgmgQAAJYFACCbBAAAlgUAIJwEAACWBQAgAwAAABAAIAEAABEAMAIAAAEAIAMAAAAQACABAAARADACAAABACADAAAAEAAgAQAAEQAwAgAAAQAgEgQAAMoGACAFAADLBgAgBgAAzAYAIPwCAQAAAAGpAwEAAAABrQMBAAAAAcUDAQAAAAHpAwIAAAAB9AMBAAAAAfUDAQAAAAGWBAEAAAABlwQBAAAAAZgEAQAAAAGZBAEAAAABmgQBAAAAAZsEAQAAAAGcBAEAAAABnQQBAAAAAQENAAAVACAP_AIBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAekDAgAAAAH0AwEAAAAB9QMBAAAAAZYEAQAAAAGXBAEAAAABmAQBAAAAAZkEAQAAAAGaBAEAAAABmwQBAAAAAZwEAQAAAAGdBAEAAAABAQ0AABcAMAENAAAXADASBAAAqgYAIAUAAKsGACAGAACsBgAg_AIBAJQFACGpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHpAwIA6wUAIfQDAQCUBQAh9QMBAJoFACGWBAEAmgUAIZcEAQCaBQAhmAQBAJoFACGZBAEAmgUAIZoEAQCaBQAhmwQBAJoFACGcBAEAmgUAIZ0EAQCUBQAhAgAAAAEAIA0AABoAIA_8AgEAlAUAIakDAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh9AMBAJQFACH1AwEAmgUAIZYEAQCaBQAhlwQBAJoFACGYBAEAmgUAIZkEAQCaBQAhmgQBAJoFACGbBAEAmgUAIZwEAQCaBQAhnQQBAJQFACECAAAAEAAgDQAAHAAgAgAAABAAIA0AABwAIAMAAAABACAUAAAVACAVAAAaACABAAAAAQAgAQAAABAAIA0HAAClBgAgGgAApgYAIBsAAKkGACAcAACoBgAgHQAApwYAIPUDAACWBQAglgQAAJYFACCXBAAAlgUAIJgEAACWBQAgmQQAAJYFACCaBAAAlgUAIJsEAACWBQAgnAQAAJYFACAS9AIAAIkFADD1AgAAIwAQ9gIAAIkFADD8AgEAswQAIakDAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh9AMBALMEACH1AwEAvwQAIZYEAQC_BAAhlwQBAL8EACGYBAEAvwQAIZkEAQC_BAAhmgQBAL8EACGbBAEAvwQAIZwEAQC_BAAhnQQBALMEACEDAAAAEAAgAQAAIgAwGQAAIwAgAwAAABAAIAEAABEAMAIAAAEAIAEAAAAFACABAAAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgFAMAAKQGACCpAwEAAAABrQMBAAAAAcUDAQAAAAHuAwEAAAAB8AMBAAAAAfkDAQAAAAGJBAEAAAABigQBAAAAAYsEAQAAAAGMBAEAAAABjQQBAAAAAY4EAQAAAAGPBAEAAAABkAQBAAAAAZEEAQAAAAGSBAEAAAABkwQBAAAAAZQEAgAAAAGVBAEAAAABAQ0AACsAIBOpAwEAAAABrQMBAAAAAcUDAQAAAAHuAwEAAAAB8AMBAAAAAfkDAQAAAAGJBAEAAAABigQBAAAAAYsEAQAAAAGMBAEAAAABjQQBAAAAAY4EAQAAAAGPBAEAAAABkAQBAAAAAZEEAQAAAAGSBAEAAAABkwQBAAAAAZQEAgAAAAGVBAEAAAABAQ0AAC0AMAENAAAtADAUAwAAowYAIKkDAQCUBQAhrQMBAJQFACHFAwEAlAUAIe4DAQCUBQAh8AMBAJoFACH5AwEAmgUAIYkEAQCUBQAhigQBAJQFACGLBAEAmgUAIYwEAQCaBQAhjQQBAJoFACGOBAEAmgUAIY8EAQCUBQAhkAQBAJQFACGRBAEAmgUAIZIEAQCaBQAhkwQBAJoFACGUBAIA6wUAIZUEAQCUBQAhAgAAAAUAIA0AADAAIBOpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHuAwEAlAUAIfADAQCaBQAh-QMBAJoFACGJBAEAlAUAIYoEAQCUBQAhiwQBAJoFACGMBAEAmgUAIY0EAQCaBQAhjgQBAJoFACGPBAEAlAUAIZAEAQCUBQAhkQQBAJoFACGSBAEAmgUAIZMEAQCaBQAhlAQCAOsFACGVBAEAlAUAIQIAAAADACANAAAyACACAAAAAwAgDQAAMgAgAwAAAAUAIBQAACsAIBUAADAAIAEAAAAFACABAAAAAwAgDgcAAJ4GACAaAACfBgAgGwAAogYAIBwAAKEGACAdAACgBgAg8AMAAJYFACD5AwAAlgUAIIsEAACWBQAgjAQAAJYFACCNBAAAlgUAII4EAACWBQAgkQQAAJYFACCSBAAAlgUAIJMEAACWBQAgFvQCAACIBQAw9QIAADkAEPYCAACIBQAwqQMBALMEACGtAwEAswQAIcUDAQCzBAAh7gMBALMEACHwAwEAvwQAIfkDAQC_BAAhiQQBALMEACGKBAEAswQAIYsEAQC_BAAhjAQBAL8EACGNBAEAvwQAIY4EAQC_BAAhjwQBALMEACGQBAEAswQAIZEEAQC_BAAhkgQBAL8EACGTBAEAvwQAIZQEAgDkBAAhlQQBALMEACEDAAAAAwAgAQAAOAAwGQAAOQAgAwAAAAMAIAEAAAQAMAIAAAUAIAEAAAAJACABAAAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgJgMAAJ0GACD8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAcYDAQAAAAHSAwEAAAAB6wMBAAAAAewDAQAAAAHtAwEAAAAB7gMBAAAAAe8DAgAAAAHwAwEAAAAB8QMBAAAAAfIDAQAAAAHzAwEAAAAB9AMBAAAAAfUDAQAAAAH2AwIAAAAB9wMBAAAAAfgDAQAAAAH5AwEAAAAB-gMBAAAAAfsDAgAAAAH8AwIAAAAB_QMCAAAAAf4DAQAAAAH_AwEAAAABgAQCAAAAAYEEAgAAAAGCBAEAAAABgwQBAAAAAYQEAQAAAAGFBAEAAAABhgQgAAAAAYcEIAAAAAGIBCAAAAABAQ0AAEEAICX8AgEAAAABqAMBAAAAAakDAQAAAAGtAwEAAAABxQMBAAAAAcYDAQAAAAHSAwEAAAAB6wMBAAAAAewDAQAAAAHtAwEAAAAB7gMBAAAAAe8DAgAAAAHwAwEAAAAB8QMBAAAAAfIDAQAAAAHzAwEAAAAB9AMBAAAAAfUDAQAAAAH2AwIAAAAB9wMBAAAAAfgDAQAAAAH5AwEAAAAB-gMBAAAAAfsDAgAAAAH8AwIAAAAB_QMCAAAAAf4DAQAAAAH_AwEAAAABgAQCAAAAAYEEAgAAAAGCBAEAAAABgwQBAAAAAYQEAQAAAAGFBAEAAAABhgQgAAAAAYcEIAAAAAGIBCAAAAABAQ0AAEMAMAENAABDADAmAwAAnAYAIPwCAQCUBQAhqAMBAJQFACGpAwEAlAUAIa0DAQCUBQAhxQMBAJQFACHGAwEAmgUAIdIDAQCUBQAh6wMBAJQFACHsAwEAlAUAIe0DAQCaBQAh7gMBAJQFACHvAwIA6wUAIfADAQCaBQAh8QMBAJoFACHyAwEAmgUAIfMDAQCaBQAh9AMBAJoFACH1AwEAmgUAIfYDAgDrBQAh9wMBAJoFACH4AwEAmgUAIfkDAQCaBQAh-gMBAJoFACH7AwIAogUAIfwDAgCiBQAh_QMCAKIFACH-AwEAmgUAIf8DAQCaBQAhgAQCAKIFACGBBAIAogUAIYIEAQCaBQAhgwQBAJoFACGEBAEAmgUAIYUEAQCaBQAhhgQgAP8FACGHBCAA_wUAIYgEIAD_BQAhAgAAAAkAIA0AAEYAICX8AgEAlAUAIagDAQCUBQAhqQMBAJQFACGtAwEAlAUAIcUDAQCUBQAhxgMBAJoFACHSAwEAlAUAIesDAQCUBQAh7AMBAJQFACHtAwEAmgUAIe4DAQCUBQAh7wMCAOsFACHwAwEAmgUAIfEDAQCaBQAh8gMBAJoFACHzAwEAmgUAIfQDAQCaBQAh9QMBAJoFACH2AwIA6wUAIfcDAQCaBQAh-AMBAJoFACH5AwEAmgUAIfoDAQCaBQAh-wMCAKIFACH8AwIAogUAIf0DAgCiBQAh_gMBAJoFACH_AwEAmgUAIYAEAgCiBQAhgQQCAKIFACGCBAEAmgUAIYMEAQCaBQAhhAQBAJoFACGFBAEAmgUAIYYEIAD_BQAhhwQgAP8FACGIBCAA_wUAIQIAAAAHACANAABIACACAAAABwAgDQAASAAgAwAAAAkAIBQAAEEAIBUAAEYAIAEAAAAJACABAAAABwAgHwcAAJcGACAaAACYBgAgGwAAmwYAIBwAAJoGACAdAACZBgAgxgMAAJYFACDtAwAAlgUAIPADAACWBQAg8QMAAJYFACDyAwAAlgUAIPMDAACWBQAg9AMAAJYFACD1AwAAlgUAIPcDAACWBQAg-AMAAJYFACD5AwAAlgUAIPoDAACWBQAg-wMAAJYFACD8AwAAlgUAIP0DAACWBQAg_gMAAJYFACD_AwAAlgUAIIAEAACWBQAggQQAAJYFACCCBAAAlgUAIIMEAACWBQAghAQAAJYFACCFBAAAlgUAIIYEAACWBQAghwQAAJYFACCIBAAAlgUAICj0AgAAhwUAMPUCAABPABD2AgAAhwUAMPwCAQCzBAAhqAMBALMEACGpAwEAswQAIa0DAQCzBAAhxQMBALMEACHGAwEAvwQAIdIDAQCzBAAh6wMBALMEACHsAwEAswQAIe0DAQC_BAAh7gMBALMEACHvAwIA5AQAIfADAQC_BAAh8QMBAL8EACHyAwEAvwQAIfMDAQC_BAAh9AMBAL8EACH1AwEAvwQAIfYDAgDkBAAh9wMBAL8EACH4AwEAvwQAIfkDAQC_BAAh-gMBAL8EACH7AwIAxAQAIfwDAgDEBAAh_QMCAMQEACH-AwEAvwQAIf8DAQC_BAAhgAQCAMQEACGBBAIAxAQAIYIEAQC_BAAhgwQBAL8EACGEBAEAvwQAIYUEAQC_BAAhhgQgAPMEACGHBCAA8wQAIYgEIADzBAAhAwAAAAcAIAEAAE4AMBkAAE8AIAMAAAAHACABAAAIADACAAAJACAJAwAAhgUAIPQCAACFBQAw9QIAAAsAEPYCAACFBQAw_AIBALsEACGtAwEAuwQAIcUDAQAAAAHpAwIA6AQAIeoDAQC7BAAhAQAAAFIAIAEAAABSACABAwAAlgYAIAMAAAALACABAABVADACAABSACADAAAACwAgAQAAVQAwAgAAUgAgAwAAAAsAIAEAAFUAMAIAAFIAIAYDAACVBgAg_AIBAAAAAa0DAQAAAAHFAwEAAAAB6QMCAAAAAeoDAQAAAAEBDQAAWQAgBfwCAQAAAAGtAwEAAAABxQMBAAAAAekDAgAAAAHqAwEAAAABAQ0AAFsAMAENAABbADAGAwAAlAYAIPwCAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh6gMBAJQFACECAAAAUgAgDQAAXgAgBfwCAQCUBQAhrQMBAJQFACHFAwEAlAUAIekDAgDrBQAh6gMBAJQFACECAAAACwAgDQAAYAAgAgAAAAsAIA0AAGAAIAMAAABSACAUAABZACAVAABeACABAAAAUgAgAQAAAAsAIAUHAACPBgAgGgAAkAYAIBsAAJMGACAcAACSBgAgHQAAkQYAIAj0AgAAhAUAMPUCAABnABD2AgAAhAUAMPwCAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh6gMBALMEACEDAAAACwAgAQAAZgAwGQAAZwAgAwAAAAsAIAEAAFUAMAIAAFIAIAf0AgAAgwUAMPUCAABtABD2AgAAgwUAMPwCAQC7BAAhrQMBAAAAAeUDAQC7BAAh6AMBANAEACEBAAAAagAgAQAAAGoAIAf0AgAAgwUAMPUCAABtABD2AgAAgwUAMPwCAQC7BAAhrQMBALsEACHlAwEAuwQAIegDAQDQBAAhAegDAACWBQAgAwAAAG0AIAEAAG4AMAIAAGoAIAMAAABtACABAABuADACAABqACADAAAAbQAgAQAAbgAwAgAAagAgBPwCAQAAAAGtAwEAAAAB5QMBAAAAAegDAQAAAAEBDQAAcgAgBPwCAQAAAAGtAwEAAAAB5QMBAAAAAegDAQAAAAEBDQAAdAAwAQ0AAHQAMAT8AgEAlAUAIa0DAQCUBQAh5QMBAJQFACHoAwEAmgUAIQIAAABqACANAAB3ACAE_AIBAJQFACGtAwEAlAUAIeUDAQCUBQAh6AMBAJoFACECAAAAbQAgDQAAeQAgAgAAAG0AIA0AAHkAIAMAAABqACAUAAByACAVAAB3ACABAAAAagAgAQAAAG0AIAQHAACMBgAgHAAAjgYAIB0AAI0GACDoAwAAlgUAIAf0AgAAggUAMPUCAACAAQAQ9gIAAIIFADD8AgEAswQAIa0DAQCzBAAh5QMBALMEACHoAwEAvwQAIQMAAABtACABAAB_ADAZAACAAQAgAwAAAG0AIAEAAG4AMAIAAGoAIAb0AgAAgQUAMPUCAACGAQAQ9gIAAIEFADD8AgEAuwQAIa0DAQAAAAHnAyAA0QQAIQEAAACDAQAgAQAAAIMBACAG9AIAAIEFADD1AgAAhgEAEPYCAACBBQAw_AIBALsEACGtAwEAuwQAIecDIADRBAAhAAMAAACGAQAgAQAAhwEAMAIAAIMBACADAAAAhgEAIAEAAIcBADACAACDAQAgAwAAAIYBACABAACHAQAwAgAAgwEAIAP8AgEAAAABrQMBAAAAAecDIAAAAAEBDQAAiwEAIAP8AgEAAAABrQMBAAAAAecDIAAAAAEBDQAAjQEAMAENAACNAQAwA_wCAQCUBQAhrQMBAJQFACHnAyAArgUAIQIAAACDAQAgDQAAkAEAIAP8AgEAlAUAIa0DAQCUBQAh5wMgAK4FACECAAAAhgEAIA0AAJIBACACAAAAhgEAIA0AAJIBACADAAAAgwEAIBQAAIsBACAVAACQAQAgAQAAAIMBACABAAAAhgEAIAMHAACJBgAgHAAAiwYAIB0AAIoGACAG9AIAAIAFADD1AgAAmQEAEPYCAACABQAw_AIBALMEACGtAwEAswQAIecDIADMBAAhAwAAAIYBACABAACYAQAwGQAAmQEAIAMAAACGAQAgAQAAhwEAMAIAAIMBACAI9AIAAP4EADD1AgAAnwEAEPYCAAD-BAAw_AIBALsEACGtAwEAuwQAIa4DAQC7BAAh5QMBALsEACHmAwAA_wQAIAEAAACcAQAgAQAAAJwBACAH9AIAAP4EADD1AgAAnwEAEPYCAAD-BAAw_AIBALsEACGtAwEAuwQAIa4DAQC7BAAh5QMBALsEACEAAwAAAJ8BACABAACgAQAwAgAAnAEAIAMAAACfAQAgAQAAoAEAMAIAAJwBACADAAAAnwEAIAEAAKABADACAACcAQAgBPwCAQAAAAGtAwEAAAABrgMBAAAAAeUDAQAAAAEBDQAApAEAIAT8AgEAAAABrQMBAAAAAa4DAQAAAAHlAwEAAAABAQ0AAKYBADABDQAApgEAMAT8AgEAlAUAIa0DAQCUBQAhrgMBAJQFACHlAwEAlAUAIQIAAACcAQAgDQAAqQEAIAT8AgEAlAUAIa0DAQCUBQAhrgMBAJQFACHlAwEAlAUAIQIAAACfAQAgDQAAqwEAIAIAAACfAQAgDQAAqwEAIAMAAACcAQAgFAAApAEAIBUAAKkBACABAAAAnAEAIAEAAACfAQAgAwcAAIYGACAcAACIBgAgHQAAhwYAIAf0AgAA_QQAMPUCAACyAQAQ9gIAAP0EADD8AgEAswQAIa0DAQCzBAAhrgMBALMEACHlAwEAswQAIQMAAACfAQAgAQAAsQEAMBkAALIBACADAAAAnwEAIAEAAKABADACAACcAQAgCvQCAAD8BAAw9QIAALgBABD2AgAA_AQAMPsCAQC7BAAhmwMBANAEACGtAwEAuwQAIcMDAQAAAAHFAwEAAAAB4wMBALsEACHkAwEA0AQAIQEAAAC1AQAgAQAAALUBACAK9AIAAPwEADD1AgAAuAEAEPYCAAD8BAAw-wIBALsEACGbAwEA0AQAIa0DAQC7BAAhwwMBALsEACHFAwEAuwQAIeMDAQC7BAAh5AMBANAEACECmwMAAJYFACDkAwAAlgUAIAMAAAC4AQAgAQAAuQEAMAIAALUBACADAAAAuAEAIAEAALkBADACAAC1AQAgAwAAALgBACABAAC5AQAwAgAAtQEAIAf7AgEAAAABmwMBAAAAAa0DAQAAAAHDAwEAAAABxQMBAAAAAeMDAQAAAAHkAwEAAAABAQ0AAL0BACAH-wIBAAAAAZsDAQAAAAGtAwEAAAABwwMBAAAAAcUDAQAAAAHjAwEAAAAB5AMBAAAAAQENAAC_AQAwAQ0AAL8BADAH-wIBAJQFACGbAwEAmgUAIa0DAQCUBQAhwwMBAJQFACHFAwEAlAUAIeMDAQCUBQAh5AMBAJoFACECAAAAtQEAIA0AAMIBACAH-wIBAJQFACGbAwEAmgUAIa0DAQCUBQAhwwMBAJQFACHFAwEAlAUAIeMDAQCUBQAh5AMBAJoFACECAAAAuAEAIA0AAMQBACACAAAAuAEAIA0AAMQBACADAAAAtQEAIBQAAL0BACAVAADCAQAgAQAAALUBACABAAAAuAEAIAUHAACDBgAgHAAAhQYAIB0AAIQGACCbAwAAlgUAIOQDAACWBQAgCvQCAAD7BAAw9QIAAMsBABD2AgAA-wQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIcMDAQCzBAAhxQMBALMEACHjAwEAswQAIeQDAQC_BAAhAwAAALgBACABAADKAQAwGQAAywEAIAMAAAC4AQAgAQAAuQEAMAIAALUBACAb9AIAAPkEADD1AgAA0QEAEPYCAAD5BAAw_AIBALsEACGdAwEAuwQAIakDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAhywMBANAEACHMAwEA0AQAIc0DAQDQBAAhzgMBANAEACHQAwEA0AQAIdIDAQC7BAAh2gMBAAAAAdsDAQDQBAAh3AMBANAEACHdAwEA0AQAId4DAQDQBAAh3wMBANAEACHgAwEA0AQAIeEDAQDQBAAh4gMAAPoEACABAAAAzgEAIAEAAADOAQAgGvQCAAD5BAAw9QIAANEBABD2AgAA-QQAMPwCAQC7BAAhnQMBALsEACGpAwEA0AQAIa0DAQC7BAAhrgMBANAEACHDAwEAuwQAIcQDAQC7BAAhxQMBALsEACHGAwEA0AQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAh0AMBANAEACHSAwEAuwQAIdoDAQC7BAAh2wMBANAEACHcAwEA0AQAId0DAQDQBAAh3gMBANAEACHfAwEA0AQAIeADAQDQBAAh4QMBANAEACEPqQMAAJYFACCuAwAAlgUAIMYDAACWBQAgywMAAJYFACDMAwAAlgUAIM0DAACWBQAgzgMAAJYFACDQAwAAlgUAINsDAACWBQAg3AMAAJYFACDdAwAAlgUAIN4DAACWBQAg3wMAAJYFACDgAwAAlgUAIOEDAACWBQAgAwAAANEBACABAADSAQAwAgAAzgEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACADAAAA0QEAIAEAANIBADACAADOAQAgF_wCAQAAAAGdAwEAAAABqQMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAcsDAQAAAAHMAwEAAAABzQMBAAAAAc4DAQAAAAHQAwEAAAAB0gMBAAAAAdoDAQAAAAHbAwEAAAAB3AMBAAAAAd0DAQAAAAHeAwEAAAAB3wMBAAAAAeADAQAAAAHhAwEAAAABAQ0AANYBACAX_AIBAAAAAZ0DAQAAAAGpAwEAAAABrQMBAAAAAa4DAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGAwEAAAABywMBAAAAAcwDAQAAAAHNAwEAAAABzgMBAAAAAdADAQAAAAHSAwEAAAAB2gMBAAAAAdsDAQAAAAHcAwEAAAAB3QMBAAAAAd4DAQAAAAHfAwEAAAAB4AMBAAAAAeEDAQAAAAEBDQAA2AEAMAENAADYAQAwF_wCAQCUBQAhnQMBAJQFACGpAwEAmgUAIa0DAQCUBQAhrgMBAJoFACHDAwEAlAUAIcQDAQCUBQAhxQMBAJQFACHGAwEAmgUAIcsDAQCaBQAhzAMBAJoFACHNAwEAmgUAIc4DAQCaBQAh0AMBAJoFACHSAwEAlAUAIdoDAQCUBQAh2wMBAJoFACHcAwEAmgUAId0DAQCaBQAh3gMBAJoFACHfAwEAmgUAIeADAQCaBQAh4QMBAJoFACECAAAAzgEAIA0AANsBACAX_AIBAJQFACGdAwEAlAUAIakDAQCaBQAhrQMBAJQFACGuAwEAmgUAIcMDAQCUBQAhxAMBAJQFACHFAwEAlAUAIcYDAQCaBQAhywMBAJoFACHMAwEAmgUAIc0DAQCaBQAhzgMBAJoFACHQAwEAmgUAIdIDAQCUBQAh2gMBAJQFACHbAwEAmgUAIdwDAQCaBQAh3QMBAJoFACHeAwEAmgUAId8DAQCaBQAh4AMBAJoFACHhAwEAmgUAIQIAAADRAQAgDQAA3QEAIAIAAADRAQAgDQAA3QEAIAMAAADOAQAgFAAA1gEAIBUAANsBACABAAAAzgEAIAEAAADRAQAgEgcAAIAGACAcAACCBgAgHQAAgQYAIKkDAACWBQAgrgMAAJYFACDGAwAAlgUAIMsDAACWBQAgzAMAAJYFACDNAwAAlgUAIM4DAACWBQAg0AMAAJYFACDbAwAAlgUAINwDAACWBQAg3QMAAJYFACDeAwAAlgUAIN8DAACWBQAg4AMAAJYFACDhAwAAlgUAIBr0AgAA-AQAMPUCAADkAQAQ9gIAAPgEADD8AgEAswQAIZ0DAQCzBAAhqQMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHLAwEAvwQAIcwDAQC_BAAhzQMBAL8EACHOAwEAvwQAIdADAQC_BAAh0gMBALMEACHaAwEAswQAIdsDAQC_BAAh3AMBAL8EACHdAwEAvwQAId4DAQC_BAAh3wMBAL8EACHgAwEAvwQAIeEDAQC_BAAhAwAAANEBACABAADjAQAwGQAA5AEAIAMAAADRAQAgAQAA0gEAMAIAAM4BACAV9AIAAPYEADD1AgAA6gEAEPYCAAD2BAAw-wIBALsEACGbAwEA0AQAIa0DAQC7BAAhrgMBANAEACHDAwEAuwQAIcQDAQC7BAAhxQMBALsEACHGAwEA0AQAIdADAQDQBAAh0QMBAAAAAdIDAQC7BAAh0wMBALsEACHUAwEA0AQAIdUDAQDQBAAh1gMBANAEACHXAwEA0AQAIdgDAgDbBAAh2QMgAPcEACEBAAAA5wEAIAEAAADnAQAgFfQCAAD2BAAw9QIAAOoBABD2AgAA9gQAMPsCAQC7BAAhmwMBANAEACGtAwEAuwQAIa4DAQDQBAAhwwMBALsEACHEAwEAuwQAIcUDAQC7BAAhxgMBANAEACHQAwEA0AQAIdEDAQC7BAAh0gMBALsEACHTAwEAuwQAIdQDAQDQBAAh1QMBANAEACHWAwEA0AQAIdcDAQDQBAAh2AMCANsEACHZAyAA9wQAIQqbAwAAlgUAIK4DAACWBQAgxgMAAJYFACDQAwAAlgUAINQDAACWBQAg1QMAAJYFACDWAwAAlgUAINcDAACWBQAg2AMAAJYFACDZAwAAlgUAIAMAAADqAQAgAQAA6wEAMAIAAOcBACADAAAA6gEAIAEAAOsBADACAADnAQAgAwAAAOoBACABAADrAQAwAgAA5wEAIBL7AgEAAAABmwMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAdADAQAAAAHRAwEAAAAB0gMBAAAAAdMDAQAAAAHUAwEAAAAB1QMBAAAAAdYDAQAAAAHXAwEAAAAB2AMCAAAAAdkDIAAAAAEBDQAA7wEAIBL7AgEAAAABmwMBAAAAAa0DAQAAAAGuAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAdADAQAAAAHRAwEAAAAB0gMBAAAAAdMDAQAAAAHUAwEAAAAB1QMBAAAAAdYDAQAAAAHXAwEAAAAB2AMCAAAAAdkDIAAAAAEBDQAA8QEAMAENAADxAQAwEvsCAQCUBQAhmwMBAJoFACGtAwEAlAUAIa4DAQCaBQAhwwMBAJQFACHEAwEAlAUAIcUDAQCUBQAhxgMBAJoFACHQAwEAmgUAIdEDAQCUBQAh0gMBAJQFACHTAwEAlAUAIdQDAQCaBQAh1QMBAJoFACHWAwEAmgUAIdcDAQCaBQAh2AMCAKIFACHZAyAA_wUAIQIAAADnAQAgDQAA9AEAIBL7AgEAlAUAIZsDAQCaBQAhrQMBAJQFACGuAwEAmgUAIcMDAQCUBQAhxAMBAJQFACHFAwEAlAUAIcYDAQCaBQAh0AMBAJoFACHRAwEAlAUAIdIDAQCUBQAh0wMBAJQFACHUAwEAmgUAIdUDAQCaBQAh1gMBAJoFACHXAwEAmgUAIdgDAgCiBQAh2QMgAP8FACECAAAA6gEAIA0AAPYBACACAAAA6gEAIA0AAPYBACADAAAA5wEAIBQAAO8BACAVAAD0AQAgAQAAAOcBACABAAAA6gEAIA8HAAD6BQAgGgAA-wUAIBsAAP4FACAcAAD9BQAgHQAA_AUAIJsDAACWBQAgrgMAAJYFACDGAwAAlgUAINADAACWBQAg1AMAAJYFACDVAwAAlgUAINYDAACWBQAg1wMAAJYFACDYAwAAlgUAINkDAACWBQAgFfQCAADyBAAw9QIAAP0BABD2AgAA8gQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHQAwEAvwQAIdEDAQCzBAAh0gMBALMEACHTAwEAswQAIdQDAQC_BAAh1QMBAL8EACHWAwEAvwQAIdcDAQC_BAAh2AMCAMQEACHZAyAA8wQAIQMAAADqAQAgAQAA_AEAMBkAAP0BACADAAAA6gEAIAEAAOsBADACAADnAQAgFPQCAADwBAAw9QIAAIMCABD2AgAA8AQAMK0DAQC7BAAhrgMBANAEACHCAwEAAAABwwMBANAEACHEAwEA0AQAIcUDAQDQBAAhxgMBANAEACHHAwEAuwQAIcgDCADxBAAhyQMBANAEACHKAwEAuwQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAhzwMBANAEACHQAwEA0AQAIQEAAACAAgAgAQAAAIACACAU9AIAAPAEADD1AgAAgwIAEPYCAADwBAAwrQMBALsEACGuAwEA0AQAIcIDAQC7BAAhwwMBANAEACHEAwEA0AQAIcUDAQDQBAAhxgMBANAEACHHAwEAuwQAIcgDCADxBAAhyQMBANAEACHKAwEAuwQAIcsDAQDQBAAhzAMBANAEACHNAwEA0AQAIc4DAQDQBAAhzwMBANAEACHQAwEA0AQAIQyuAwAAlgUAIMMDAACWBQAgxAMAAJYFACDFAwAAlgUAIMYDAACWBQAgyQMAAJYFACDLAwAAlgUAIMwDAACWBQAgzQMAAJYFACDOAwAAlgUAIM8DAACWBQAg0AMAAJYFACADAAAAgwIAIAEAAIQCADACAACAAgAgAwAAAIMCACABAACEAgAwAgAAgAIAIAMAAACDAgAgAQAAhAIAMAIAAIACACARrQMBAAAAAa4DAQAAAAHCAwEAAAABwwMBAAAAAcQDAQAAAAHFAwEAAAABxgMBAAAAAccDAQAAAAHIAwgAAAAByQMBAAAAAcoDAQAAAAHLAwEAAAABzAMBAAAAAc0DAQAAAAHOAwEAAAABzwMBAAAAAdADAQAAAAEBDQAAiAIAIBGtAwEAAAABrgMBAAAAAcIDAQAAAAHDAwEAAAABxAMBAAAAAcUDAQAAAAHGAwEAAAABxwMBAAAAAcgDCAAAAAHJAwEAAAABygMBAAAAAcsDAQAAAAHMAwEAAAABzQMBAAAAAc4DAQAAAAHPAwEAAAAB0AMBAAAAAQENAACKAgAwAQ0AAIoCADARrQMBAJQFACGuAwEAmgUAIcIDAQCUBQAhwwMBAJoFACHEAwEAmgUAIcUDAQCaBQAhxgMBAJoFACHHAwEAlAUAIcgDCAD5BQAhyQMBAJoFACHKAwEAlAUAIcsDAQCaBQAhzAMBAJoFACHNAwEAmgUAIc4DAQCaBQAhzwMBAJoFACHQAwEAmgUAIQIAAACAAgAgDQAAjQIAIBGtAwEAlAUAIa4DAQCaBQAhwgMBAJQFACHDAwEAmgUAIcQDAQCaBQAhxQMBAJoFACHGAwEAmgUAIccDAQCUBQAhyAMIAPkFACHJAwEAmgUAIcoDAQCUBQAhywMBAJoFACHMAwEAmgUAIc0DAQCaBQAhzgMBAJoFACHPAwEAmgUAIdADAQCaBQAhAgAAAIMCACANAACPAgAgAgAAAIMCACANAACPAgAgAwAAAIACACAUAACIAgAgFQAAjQIAIAEAAACAAgAgAQAAAIMCACARBwAA9AUAIBoAAPUFACAbAAD4BQAgHAAA9wUAIB0AAPYFACCuAwAAlgUAIMMDAACWBQAgxAMAAJYFACDFAwAAlgUAIMYDAACWBQAgyQMAAJYFACDLAwAAlgUAIMwDAACWBQAgzQMAAJYFACDOAwAAlgUAIM8DAACWBQAg0AMAAJYFACAU9AIAAO0EADD1AgAAlgIAEPYCAADtBAAwrQMBALMEACGuAwEAvwQAIcIDAQCzBAAhwwMBAL8EACHEAwEAvwQAIcUDAQC_BAAhxgMBAL8EACHHAwEAswQAIcgDCADuBAAhyQMBAL8EACHKAwEAswQAIcsDAQC_BAAhzAMBAL8EACHNAwEAvwQAIc4DAQC_BAAhzwMBAL8EACHQAwEAvwQAIQMAAACDAgAgAQAAlQIAMBkAAJYCACADAAAAgwIAIAEAAIQCADACAACAAgAgDfQCAADsBAAw9QIAAJwCABD2AgAA7AQAMPsCAQC7BAAh_AIBALsEACGoAwEAAAABuwMBALsEACG8AwEAuwQAIb0DAQC7BAAhvgMBALsEACG_AwEAuwQAIcADAQC7BAAhwQMBALsEACEBAAAAmQIAIAEAAACZAgAgDfQCAADsBAAw9QIAAJwCABD2AgAA7AQAMPsCAQC7BAAh_AIBALsEACGoAwEAuwQAIbsDAQC7BAAhvAMBALsEACG9AwEAuwQAIb4DAQC7BAAhvwMBALsEACHAAwEAuwQAIcEDAQC7BAAhAAMAAACcAgAgAQAAnQIAMAIAAJkCACADAAAAnAIAIAEAAJ0CADACAACZAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAr7AgEAAAAB_AIBAAAAAagDAQAAAAG7AwEAAAABvAMBAAAAAb0DAQAAAAG-AwEAAAABvwMBAAAAAcADAQAAAAHBAwEAAAABAQ0AAKECACAK-wIBAAAAAfwCAQAAAAGoAwEAAAABuwMBAAAAAbwDAQAAAAG9AwEAAAABvgMBAAAAAb8DAQAAAAHAAwEAAAABwQMBAAAAAQENAACjAgAwAQ0AAKMCADAK-wIBAJQFACH8AgEAlAUAIagDAQCUBQAhuwMBAJQFACG8AwEAlAUAIb0DAQCUBQAhvgMBAJQFACG_AwEAlAUAIcADAQCUBQAhwQMBAJQFACECAAAAmQIAIA0AAKYCACAK-wIBAJQFACH8AgEAlAUAIagDAQCUBQAhuwMBAJQFACG8AwEAlAUAIb0DAQCUBQAhvgMBAJQFACG_AwEAlAUAIcADAQCUBQAhwQMBAJQFACECAAAAnAIAIA0AAKgCACACAAAAnAIAIA0AAKgCACADAAAAmQIAIBQAAKECACAVAACmAgAgAQAAAJkCACABAAAAnAIAIAMHAADxBQAgHAAA8wUAIB0AAPIFACAN9AIAAOsEADD1AgAArwIAEPYCAADrBAAw-wIBALMEACH8AgEAswQAIagDAQCzBAAhuwMBALMEACG8AwEAswQAIb0DAQCzBAAhvgMBALMEACG_AwEAswQAIcADAQCzBAAhwQMBALMEACEDAAAAnAIAIAEAAK4CADAZAACvAgAgAwAAAJwCACABAACdAgAwAgAAmQIAIAj0AgAA6gQAMPUCAAC1AgAQ9gIAAOoEADD8AgEAuwQAIagDAQAAAAG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACEBAAAAsgIAIAEAAACyAgAgCPQCAADqBAAw9QIAALUCABD2AgAA6gQAMPwCAQC7BAAhqAMBALsEACG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACEAAwAAALUCACABAAC2AgAwAgAAsgIAIAMAAAC1AgAgAQAAtgIAMAIAALICACADAAAAtQIAIAEAALYCADACAACyAgAgBfwCAQAAAAGoAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABAQ0AALoCACAF_AIBAAAAAagDAQAAAAG1AwEAAAABtgMBAAAAAbcDAgAAAAEBDQAAvAIAMAENAAC8AgAwBfwCAQCUBQAhqAMBAJQFACG1AwEAlAUAIbYDAQCUBQAhtwMCAOsFACECAAAAsgIAIA0AAL8CACAF_AIBAJQFACGoAwEAlAUAIbUDAQCUBQAhtgMBAJQFACG3AwIA6wUAIQIAAAC1AgAgDQAAwQIAIAIAAAC1AgAgDQAAwQIAIAMAAACyAgAgFAAAugIAIBUAAL8CACABAAAAsgIAIAEAAAC1AgAgBQcAAOwFACAaAADtBQAgGwAA8AUAIBwAAO8FACAdAADuBQAgCPQCAADpBAAw9QIAAMgCABD2AgAA6QQAMPwCAQCzBAAhqAMBALMEACG1AwEAswQAIbYDAQCzBAAhtwMCAOQEACEDAAAAtQIAIAEAAMcCADAZAADIAgAgAwAAALUCACABAAC2AgAwAgAAsgIAIAz0AgAA5wQAMPUCAADOAgAQ9gIAAOcEADD8AgEAuwQAIagDAQAAAAGzAwEAuwQAIbUDAQC7BAAhtgMBALsEACG3AwIA6AQAIbgDAQDQBAAhuQMBANAEACG6AwEAuwQAIQEAAADLAgAgAQAAAMsCACAM9AIAAOcEADD1AgAAzgIAEPYCAADnBAAw_AIBALsEACGoAwEAuwQAIbMDAQC7BAAhtQMBALsEACG2AwEAuwQAIbcDAgDoBAAhuAMBANAEACG5AwEA0AQAIboDAQC7BAAhArgDAACWBQAguQMAAJYFACADAAAAzgIAIAEAAM8CADACAADLAgAgAwAAAM4CACABAADPAgAwAgAAywIAIAMAAADOAgAgAQAAzwIAMAIAAMsCACAJ_AIBAAAAAagDAQAAAAGzAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABuAMBAAAAAbkDAQAAAAG6AwEAAAABAQ0AANMCACAJ_AIBAAAAAagDAQAAAAGzAwEAAAABtQMBAAAAAbYDAQAAAAG3AwIAAAABuAMBAAAAAbkDAQAAAAG6AwEAAAABAQ0AANUCADABDQAA1QIAMAn8AgEAlAUAIagDAQCUBQAhswMBAJQFACG1AwEAlAUAIbYDAQCUBQAhtwMCAOsFACG4AwEAmgUAIbkDAQCaBQAhugMBAJQFACECAAAAywIAIA0AANgCACAJ_AIBAJQFACGoAwEAlAUAIbMDAQCUBQAhtQMBAJQFACG2AwEAlAUAIbcDAgDrBQAhuAMBAJoFACG5AwEAmgUAIboDAQCUBQAhAgAAAM4CACANAADaAgAgAgAAAM4CACANAADaAgAgAwAAAMsCACAUAADTAgAgFQAA2AIAIAEAAADLAgAgAQAAAM4CACAHBwAA5gUAIBoAAOcFACAbAADqBQAgHAAA6QUAIB0AAOgFACC4AwAAlgUAILkDAACWBQAgDPQCAADjBAAw9QIAAOECABD2AgAA4wQAMPwCAQCzBAAhqAMBALMEACGzAwEAswQAIbUDAQCzBAAhtgMBALMEACG3AwIA5AQAIbgDAQC_BAAhuQMBAL8EACG6AwEAswQAIQMAAADOAgAgAQAA4AIAMBkAAOECACADAAAAzgIAIAEAAM8CADACAADLAgAgCvQCAADiBAAw9QIAAOcCABD2AgAA4gQAMPsCAQC7BAAhmwMBALsEACGoAwEAuwQAIbEDAQAAAAGyAwEA0AQAIbMDAQDQBAAhtAMBALsEACEBAAAA5AIAIAEAAADkAgAgCvQCAADiBAAw9QIAAOcCABD2AgAA4gQAMPsCAQC7BAAhmwMBALsEACGoAwEAuwQAIbEDAQC7BAAhsgMBANAEACGzAwEA0AQAIbQDAQC7BAAhArIDAACWBQAgswMAAJYFACADAAAA5wIAIAEAAOgCADACAADkAgAgAwAAAOcCACABAADoAgAwAgAA5AIAIAMAAADnAgAgAQAA6AIAMAIAAOQCACAH-wIBAAAAAZsDAQAAAAGoAwEAAAABsQMBAAAAAbIDAQAAAAGzAwEAAAABtAMBAAAAAQENAADsAgAgB_sCAQAAAAGbAwEAAAABqAMBAAAAAbEDAQAAAAGyAwEAAAABswMBAAAAAbQDAQAAAAEBDQAA7gIAMAENAADuAgAwB_sCAQCUBQAhmwMBAJQFACGoAwEAlAUAIbEDAQCUBQAhsgMBAJoFACGzAwEAmgUAIbQDAQCUBQAhAgAAAOQCACANAADxAgAgB_sCAQCUBQAhmwMBAJQFACGoAwEAlAUAIbEDAQCUBQAhsgMBAJoFACGzAwEAmgUAIbQDAQCUBQAhAgAAAOcCACANAADzAgAgAgAAAOcCACANAADzAgAgAwAAAOQCACAUAADsAgAgFQAA8QIAIAEAAADkAgAgAQAAAOcCACAFBwAA4wUAIBwAAOUFACAdAADkBQAgsgMAAJYFACCzAwAAlgUAIAr0AgAA4QQAMPUCAAD6AgAQ9gIAAOEEADD7AgEAswQAIZsDAQCzBAAhqAMBALMEACGxAwEAswQAIbIDAQC_BAAhswMBAL8EACG0AwEAswQAIQMAAADnAgAgAQAA-QIAMBkAAPoCACADAAAA5wIAIAEAAOgCADACAADkAgAgCfQCAADfBAAw9QIAAIADABD2AgAA3wQAMPwCAQC7BAAhqAMBALsEACGtAwEAuwQAIa4DAQC7BAAhrwMBALsEACGwAwAA4AQAIAEAAAD9AgAgAQAAAP0CACAI9AIAAN8EADD1AgAAgAMAEPYCAADfBAAw_AIBALsEACGoAwEAuwQAIa0DAQC7BAAhrgMBALsEACGvAwEAuwQAIQADAAAAgAMAIAEAAIEDADACAAD9AgAgAwAAAIADACABAACBAwAwAgAA_QIAIAMAAACAAwAgAQAAgQMAMAIAAP0CACAF_AIBAAAAAagDAQAAAAGtAwEAAAABrgMBAAAAAa8DAQAAAAEBDQAAhQMAIAX8AgEAAAABqAMBAAAAAa0DAQAAAAGuAwEAAAABrwMBAAAAAQENAACHAwAwAQ0AAIcDADAF_AIBAJQFACGoAwEAlAUAIa0DAQCUBQAhrgMBAJQFACGvAwEAlAUAIQIAAAD9AgAgDQAAigMAIAX8AgEAlAUAIagDAQCUBQAhrQMBAJQFACGuAwEAlAUAIa8DAQCUBQAhAgAAAIADACANAACMAwAgAgAAAIADACANAACMAwAgAwAAAP0CACAUAACFAwAgFQAAigMAIAEAAAD9AgAgAQAAAIADACADBwAA4AUAIBwAAOIFACAdAADhBQAgCPQCAADeBAAw9QIAAJMDABD2AgAA3gQAMPwCAQCzBAAhqAMBALMEACGtAwEAswQAIa4DAQCzBAAhrwMBALMEACEDAAAAgAMAIAEAAJIDADAZAACTAwAgAwAAAIADACABAACBAwAwAgAA_QIAIAr0AgAA3QQAMPUCAACZAwAQ9gIAAN0EADCbAwEA0AQAIacDAQAAAAGoAwEAuwQAIakDAQC7BAAhqgMBANAEACGrAwEAuwQAIawDAQC7BAAhAQAAAJYDACABAAAAlgMAIAr0AgAA3QQAMPUCAACZAwAQ9gIAAN0EADCbAwEA0AQAIacDAQC7BAAhqAMBALsEACGpAwEAuwQAIaoDAQDQBAAhqwMBALsEACGsAwEAuwQAIQKbAwAAlgUAIKoDAACWBQAgAwAAAJkDACABAACaAwAwAgAAlgMAIAMAAACZAwAgAQAAmgMAMAIAAJYDACADAAAAmQMAIAEAAJoDADACAACWAwAgB5sDAQAAAAGnAwEAAAABqAMBAAAAAakDAQAAAAGqAwEAAAABqwMBAAAAAawDAQAAAAEBDQAAngMAIAebAwEAAAABpwMBAAAAAagDAQAAAAGpAwEAAAABqgMBAAAAAasDAQAAAAGsAwEAAAABAQ0AAKADADABDQAAoAMAMAebAwEAmgUAIacDAQCUBQAhqAMBAJQFACGpAwEAlAUAIaoDAQCaBQAhqwMBAJQFACGsAwEAlAUAIQIAAACWAwAgDQAAowMAIAebAwEAmgUAIacDAQCUBQAhqAMBAJQFACGpAwEAlAUAIaoDAQCaBQAhqwMBAJQFACGsAwEAlAUAIQIAAACZAwAgDQAApQMAIAIAAACZAwAgDQAApQMAIAMAAACWAwAgFAAAngMAIBUAAKMDACABAAAAlgMAIAEAAACZAwAgBQcAAN0FACAcAADfBQAgHQAA3gUAIJsDAACWBQAgqgMAAJYFACAK9AIAANwEADD1AgAArAMAEPYCAADcBAAwmwMBAL8EACGnAwEAswQAIagDAQCzBAAhqQMBALMEACGqAwEAvwQAIasDAQCzBAAhrAMBALMEACEDAAAAmQMAIAEAAKsDADAZAACsAwAgAwAAAJkDACABAACaAwAwAgAAlgMAIA-hAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIZ0DAQDQBAAhngMBAAAAAZ8DIADRBAAhoAMBANAEACGhAwEA0AQAIaIDAQC7BAAhAQAAAK8DACAVoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGKAwEAuwQAIY0DAQC7BAAhjgMBALsEACGPAwEAuwQAIZADAQDQBAAhkQMBANAEACGSAwEA0AQAIZMDAgDbBAAhlANAANYEACGVA0AA1gQAIZYDAQDQBAAhlwMBANAEACGYAwEA0AQAIZkDAQDQBAAhC6ACAADcBQAgkAMAAJYFACCRAwAAlgUAIJIDAACWBQAgkwMAAJYFACCUAwAAlgUAIJUDAACWBQAglgMAAJYFACCXAwAAlgUAIJgDAACWBQAgmQMAAJYFACAWoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACGmAwAA2QQAIAMAAACxAwAgAQAAsgMAMAIAALMDACAMoAIAANcEACD0AgAA2AQAMPUCAAC1AwAQ9gIAANgEADD3AgEAuwQAIfoCQAC8BAAh-wJAALwEACH8AkAAvAQAIYkDAQC7BAAhigMBALsEACGLAwEA0AQAIYwDAQDQBAAhA6ACAADcBQAgiwMAAJYFACCMAwAAlgUAIAygAgAA1wQAIPQCAADYBAAw9QIAALUDABD2AgAA2AQAMPcCAQAAAAH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAAAABigMBALsEACGLAwEA0AQAIYwDAQDQBAAhAwAAALUDACABAAC2AwAwAgAAtwMAIAqgAgAA1wQAIPQCAADVBAAw9QIAALkDABD2AgAA1QQAMPcCAQC7BAAh-wJAALwEACGKAwEAuwQAIZoDAQC7BAAhmwNAALwEACGcA0AA1gQAIQKgAgAA3AUAIJwDAACWBQAgCqACAADXBAAg9AIAANUEADD1AgAAuQMAEPYCAADVBAAw9wIBAAAAAfsCQAC8BAAhigMBALsEACGaAwEAAAABmwNAALwEACGcA0AA1gQAIQMAAAC5AwAgAQAAugMAMAIAALsDACABAAAAsQMAIAEAAAC1AwAgAQAAALkDACABAAAArwMAIA-hAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGdAwEA0AQAIZ4DAQDQBAAhnwMgANEEACGgAwEA0AQAIaEDAQDQBAAhogMBALsEACEHoQIAANkFACCiAgAA2gUAIKMCAADbBQAgnQMAAJYFACCeAwAAlgUAIKADAACWBQAgoQMAAJYFACADAAAAwQMAIAEAAMIDADACAACvAwAgAwAAAMEDACABAADCAwAwAgAArwMAIAMAAADBAwAgAQAAwgMAMAIAAK8DACAMoQIAANYFACCiAgAA1wUAIKMCAADYBQAg9wIBAAAAAfsCQAAAAAH8AkAAAAABnQMBAAAAAZ4DAQAAAAGfAyAAAAABoAMBAAAAAaEDAQAAAAGiAwEAAAABAQ0AAMYDACAJ9wIBAAAAAfsCQAAAAAH8AkAAAAABnQMBAAAAAZ4DAQAAAAGfAyAAAAABoAMBAAAAAaEDAQAAAAGiAwEAAAABAQ0AAMgDADABDQAAyAMAMAyhAgAArwUAIKICAACwBQAgowIAALEFACD3AgEAlAUAIfsCQACVBQAh_AJAAJUFACGdAwEAmgUAIZ4DAQCaBQAhnwMgAK4FACGgAwEAmgUAIaEDAQCaBQAhogMBAJQFACECAAAArwMAIA0AAMsDACAJ9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhnQMBAJoFACGeAwEAmgUAIZ8DIACuBQAhoAMBAJoFACGhAwEAmgUAIaIDAQCUBQAhAgAAAMEDACANAADNAwAgAgAAAMEDACANAADNAwAgAwAAAK8DACAUAADGAwAgFQAAywMAIAEAAACvAwAgAQAAAMEDACAHBwAAqwUAIBwAAK0FACAdAACsBQAgnQMAAJYFACCeAwAAlgUAIKADAACWBQAgoQMAAJYFACAM9AIAAMsEADD1AgAA1AMAEPYCAADLBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhnQMBAL8EACGeAwEAvwQAIZ8DIADMBAAhoAMBAL8EACGhAwEAvwQAIaIDAQCzBAAhAwAAAMEDACABAADTAwAwGQAA1AMAIAMAAADBAwAgAQAAwgMAMAIAAK8DACABAAAAuwMAIAEAAAC7AwAgAwAAALkDACABAAC6AwAwAgAAuwMAIAMAAAC5AwAgAQAAugMAMAIAALsDACADAAAAuQMAIAEAALoDADACAAC7AwAgB6ACAACqBQAg9wIBAAAAAfsCQAAAAAGKAwEAAAABmgMBAAAAAZsDQAAAAAGcA0AAAAABAQ0AANwDACAG9wIBAAAAAfsCQAAAAAGKAwEAAAABmgMBAAAAAZsDQAAAAAGcA0AAAAABAQ0AAN4DADABDQAA3gMAMAegAgAAqQUAIPcCAQCUBQAh-wJAAJUFACGKAwEAlAUAIZoDAQCUBQAhmwNAAJUFACGcA0AAowUAIQIAAAC7AwAgDQAA4QMAIAb3AgEAlAUAIfsCQACVBQAhigMBAJQFACGaAwEAlAUAIZsDQACVBQAhnANAAKMFACECAAAAuQMAIA0AAOMDACACAAAAuQMAIA0AAOMDACADAAAAuwMAIBQAANwDACAVAADhAwAgAQAAALsDACABAAAAuQMAIAQHAACmBQAgHAAAqAUAIB0AAKcFACCcAwAAlgUAIAn0AgAAygQAMPUCAADqAwAQ9gIAAMoEADD3AgEAswQAIfsCQAC0BAAhigMBALMEACGaAwEAswQAIZsDQAC0BAAhnANAAMUEACEDAAAAuQMAIAEAAOkDADAZAADqAwAgAwAAALkDACABAAC6AwAwAgAAuwMAIAEAAACzAwAgAQAAALMDACADAAAAsQMAIAEAALIDADACAACzAwAgAwAAALEDACABAACyAwAwAgAAswMAIAMAAACxAwAgAQAAsgMAMAIAALMDACASoAIAAKUFACD3AgEAAAAB-wJAAAAAAfwCQAAAAAGKAwEAAAABjQMBAAAAAY4DAQAAAAGPAwEAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMCAAAAAZQDQAAAAAGVA0AAAAABlgMBAAAAAZcDAQAAAAGYAwEAAAABmQMBAAAAAQENAADyAwAgEfcCAQAAAAH7AkAAAAAB_AJAAAAAAYoDAQAAAAGNAwEAAAABjgMBAAAAAY8DAQAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwIAAAABlANAAAAAAZUDQAAAAAGWAwEAAAABlwMBAAAAAZgDAQAAAAGZAwEAAAABAQ0AAPQDADABDQAA9AMAMBKgAgAApAUAIPcCAQCUBQAh-wJAAJUFACH8AkAAlQUAIYoDAQCUBQAhjQMBAJQFACGOAwEAlAUAIY8DAQCUBQAhkAMBAJoFACGRAwEAmgUAIZIDAQCaBQAhkwMCAKIFACGUA0AAowUAIZUDQACjBQAhlgMBAJoFACGXAwEAmgUAIZgDAQCaBQAhmQMBAJoFACECAAAAswMAIA0AAPcDACAR9wIBAJQFACH7AkAAlQUAIfwCQACVBQAhigMBAJQFACGNAwEAlAUAIY4DAQCUBQAhjwMBAJQFACGQAwEAmgUAIZEDAQCaBQAhkgMBAJoFACGTAwIAogUAIZQDQACjBQAhlQNAAKMFACGWAwEAmgUAIZcDAQCaBQAhmAMBAJoFACGZAwEAmgUAIQIAAACxAwAgDQAA-QMAIAIAAACxAwAgDQAA-QMAIAMAAACzAwAgFAAA8gMAIBUAAPcDACABAAAAswMAIAEAAACxAwAgDwcAAJ0FACAaAACeBQAgGwAAoQUAIBwAAKAFACAdAACfBQAgkAMAAJYFACCRAwAAlgUAIJIDAACWBQAgkwMAAJYFACCUAwAAlgUAIJUDAACWBQAglgMAAJYFACCXAwAAlgUAIJgDAACWBQAgmQMAAJYFACAU9AIAAMMEADD1AgAAgAQAEPYCAADDBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhigMBALMEACGNAwEAswQAIY4DAQCzBAAhjwMBALMEACGQAwEAvwQAIZEDAQC_BAAhkgMBAL8EACGTAwIAxAQAIZQDQADFBAAhlQNAAMUEACGWAwEAvwQAIZcDAQC_BAAhmAMBAL8EACGZAwEAvwQAIQMAAACxAwAgAQAA_wMAMBkAAIAEACADAAAAsQMAIAEAALIDADACAACzAwAgAQAAALcDACABAAAAtwMAIAMAAAC1AwAgAQAAtgMAMAIAALcDACADAAAAtQMAIAEAALYDADACAAC3AwAgAwAAALUDACABAAC2AwAwAgAAtwMAIAmgAgAAnAUAIPcCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAGJAwEAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABAQ0AAIgEACAI9wIBAAAAAfoCQAAAAAH7AkAAAAAB_AJAAAAAAYkDAQAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAEBDQAAigQAMAENAACKBAAwCaACAACbBQAg9wIBAJQFACH6AkAAlQUAIfsCQACVBQAh_AJAAJUFACGJAwEAlAUAIYoDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQIAAAC3AwAgDQAAjQQAIAj3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhigMBAJQFACGLAwEAmgUAIYwDAQCaBQAhAgAAALUDACANAACPBAAgAgAAALUDACANAACPBAAgAwAAALcDACAUAACIBAAgFQAAjQQAIAEAAAC3AwAgAQAAALUDACAFBwAAlwUAIBwAAJkFACAdAACYBQAgiwMAAJYFACCMAwAAlgUAIAv0AgAAvgQAMPUCAACWBAAQ9gIAAL4EADD3AgEAswQAIfoCQAC0BAAh-wJAALQEACH8AkAAtAQAIYkDAQCzBAAhigMBALMEACGLAwEAvwQAIYwDAQC_BAAhAwAAALUDACABAACVBAAwGQAAlgQAIAMAAAC1AwAgAQAAtgMAMAIAALcDACAK9AIAALoEADD1AgAAnAQAEPYCAAC6BAAw9wIBAAAAAfgCAQC7BAAh-QIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGIAwAAvQQAIAEAAACZBAAgAQAAAJkEACAJ9AIAALoEADD1AgAAnAQAEPYCAAC6BAAw9wIBALsEACH4AgEAuwQAIfkCAQC7BAAh-gJAALwEACH7AkAAvAQAIfwCQAC8BAAhAAMAAACcBAAgAQAAnQQAMAIAAJkEACADAAAAnAQAIAEAAJ0EADACAACZBAAgAwAAAJwEACABAACdBAAwAgAAmQQAIAb3AgEAAAAB-AIBAAAAAfkCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAEBDQAAoQQAIAb3AgEAAAAB-AIBAAAAAfkCAQAAAAH6AkAAAAAB-wJAAAAAAfwCQAAAAAEBDQAAowQAMAENAACjBAAwBvcCAQCUBQAh-AIBAJQFACH5AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIQIAAACZBAAgDQAApgQAIAb3AgEAlAUAIfgCAQCUBQAh-QIBAJQFACH6AkAAlQUAIfsCQACVBQAh_AJAAJUFACECAAAAnAQAIA0AAKgEACACAAAAnAQAIA0AAKgEACADAAAAmQQAIBQAAKEEACAVAACmBAAgAQAAAJkEACABAAAAnAQAIAMHAACRBQAgHAAAkwUAIB0AAJIFACAJ9AIAALIEADD1AgAArwQAEPYCAACyBAAw9wIBALMEACH4AgEAswQAIfkCAQCzBAAh-gJAALQEACH7AkAAtAQAIfwCQAC0BAAhAwAAAJwEACABAACuBAAwGQAArwQAIAMAAACcBAAgAQAAnQQAMAIAAJkEACAJ9AIAALIEADD1AgAArwQAEPYCAACyBAAw9wIBALMEACH4AgEAswQAIfkCAQCzBAAh-gJAALQEACH7AkAAtAQAIfwCQAC0BAAhDgcAALYEACAcAAC5BAAgHQAAuQQAIP0CAQAAAAH-AgEAAAAE_wIBAAAABIADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAuAQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQsHAAC2BAAgHAAAtwQAIB0AALcEACD9AkAAAAAB_gJAAAAABP8CQAAAAASAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAALUEACELBwAAtgQAIBwAALcEACAdAAC3BAAg_QJAAAAAAf4CQAAAAAT_AkAAAAAEgANAAAAAAYEDQAAAAAGCA0AAAAABgwNAAAAAAYQDQAC1BAAhCP0CAgAAAAH-AgIAAAAE_wICAAAABIADAgAAAAGBAwIAAAABggMCAAAAAYMDAgAAAAGEAwIAtgQAIQj9AkAAAAAB_gJAAAAABP8CQAAAAASAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAALcEACEOBwAAtgQAIBwAALkEACAdAAC5BAAg_QIBAAAAAf4CAQAAAAT_AgEAAAAEgAMBAAAAAYEDAQAAAAGCAwEAAAABgwMBAAAAAYQDAQC4BAAhhQMBAAAAAYYDAQAAAAGHAwEAAAABC_0CAQAAAAH-AgEAAAAE_wIBAAAABIADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAuQQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQn0AgAAugQAMPUCAACcBAAQ9gIAALoEADD3AgEAuwQAIfgCAQC7BAAh-QIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACEL_QIBAAAAAf4CAQAAAAT_AgEAAAAEgAMBAAAAAYEDAQAAAAGCAwEAAAABgwMBAAAAAYQDAQC5BAAhhQMBAAAAAYYDAQAAAAGHAwEAAAABCP0CQAAAAAH-AkAAAAAE_wJAAAAABIADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAtwQAIQL4AgEAAAAB-QIBAAAAAQv0AgAAvgQAMPUCAACWBAAQ9gIAAL4EADD3AgEAswQAIfoCQAC0BAAh-wJAALQEACH8AkAAtAQAIYkDAQCzBAAhigMBALMEACGLAwEAvwQAIYwDAQC_BAAhDgcAAMEEACAcAADCBAAgHQAAwgQAIP0CAQAAAAH-AgEAAAAF_wIBAAAABYADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAwAQAIYUDAQAAAAGGAwEAAAABhwMBAAAAAQ4HAADBBAAgHAAAwgQAIB0AAMIEACD9AgEAAAAB_gIBAAAABf8CAQAAAAWAAwEAAAABgQMBAAAAAYIDAQAAAAGDAwEAAAABhAMBAMAEACGFAwEAAAABhgMBAAAAAYcDAQAAAAEI_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDBBAAhC_0CAQAAAAH-AgEAAAAF_wIBAAAABYADAQAAAAGBAwEAAAABggMBAAAAAYMDAQAAAAGEAwEAwgQAIYUDAQAAAAGGAwEAAAABhwMBAAAAART0AgAAwwQAMPUCAACABAAQ9gIAAMMEADD3AgEAswQAIfsCQAC0BAAh_AJAALQEACGKAwEAswQAIY0DAQCzBAAhjgMBALMEACGPAwEAswQAIZADAQC_BAAhkQMBAL8EACGSAwEAvwQAIZMDAgDEBAAhlANAAMUEACGVA0AAxQQAIZYDAQC_BAAhlwMBAL8EACGYAwEAvwQAIZkDAQC_BAAhDQcAAMEEACAaAADJBAAgGwAAwQQAIBwAAMEEACAdAADBBAAg_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDIBAAhCwcAAMEEACAcAADHBAAgHQAAxwQAIP0CQAAAAAH-AkAAAAAF_wJAAAAABYADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAxgQAIQsHAADBBAAgHAAAxwQAIB0AAMcEACD9AkAAAAAB_gJAAAAABf8CQAAAAAWAA0AAAAABgQNAAAAAAYIDQAAAAAGDA0AAAAABhANAAMYEACEI_QJAAAAAAf4CQAAAAAX_AkAAAAAFgANAAAAAAYEDQAAAAAGCA0AAAAABgwNAAAAAAYQDQADHBAAhDQcAAMEEACAaAADJBAAgGwAAwQQAIBwAAMEEACAdAADBBAAg_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDIBAAhCP0CCAAAAAH-AggAAAAF_wIIAAAABYADCAAAAAGBAwgAAAABggMIAAAAAYMDCAAAAAGEAwgAyQQAIQn0AgAAygQAMPUCAADqAwAQ9gIAAMoEADD3AgEAswQAIfsCQAC0BAAhigMBALMEACGaAwEAswQAIZsDQAC0BAAhnANAAMUEACEM9AIAAMsEADD1AgAA1AMAEPYCAADLBAAw9wIBALMEACH7AkAAtAQAIfwCQAC0BAAhnQMBAL8EACGeAwEAvwQAIZ8DIADMBAAhoAMBAL8EACGhAwEAvwQAIaIDAQCzBAAhBQcAALYEACAcAADOBAAgHQAAzgQAIP0CIAAAAAGEAyAAzQQAIQUHAAC2BAAgHAAAzgQAIB0AAM4EACD9AiAAAAABhAMgAM0EACEC_QIgAAAAAYQDIADOBAAhD6ECAADSBAAgogIAANMEACCjAgAA1AQAIPQCAADPBAAw9QIAAMEDABD2AgAAzwQAMPcCAQC7BAAh-wJAALwEACH8AkAAvAQAIZ0DAQDQBAAhngMBANAEACGfAyAA0QQAIaADAQDQBAAhoQMBANAEACGiAwEAuwQAIQv9AgEAAAAB_gIBAAAABf8CAQAAAAWAAwEAAAABgQMBAAAAAYIDAQAAAAGDAwEAAAABhAMBAMIEACGFAwEAAAABhgMBAAAAAYcDAQAAAAEC_QIgAAAAAYQDIADOBAAhA6MDAACxAwAgpAMAALEDACClAwAAsQMAIAOjAwAAtQMAIKQDAAC1AwAgpQMAALUDACADowMAALkDACCkAwAAuQMAIKUDAAC5AwAgCqACAADXBAAg9AIAANUEADD1AgAAuQMAEPYCAADVBAAw9wIBALsEACH7AkAAvAQAIYoDAQC7BAAhmgMBALsEACGbA0AAvAQAIZwDQADWBAAhCP0CQAAAAAH-AkAAAAAF_wJAAAAABYADQAAAAAGBA0AAAAABggNAAAAAAYMDQAAAAAGEA0AAxwQAIRGhAgAA0gQAIKICAADTBAAgowIAANQEACD0AgAAzwQAMPUCAADBAwAQ9gIAAM8EADD3AgEAuwQAIfsCQAC8BAAh_AJAALwEACGdAwEA0AQAIZ4DAQDQBAAhnwMgANEEACGgAwEA0AQAIaEDAQDQBAAhogMBALsEACGfBAAAwQMAIKAEAADBAwAgDKACAADXBAAg9AIAANgEADD1AgAAtQMAEPYCAADYBAAw9wIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAuwQAIYoDAQC7BAAhiwMBANAEACGMAwEA0AQAIQKOAwEAAAABjwMBAAAAARWgAgAA1wQAIPQCAADaBAAw9QIAALEDABD2AgAA2gQAMPcCAQC7BAAh-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACEI_QICAAAAAf4CAgAAAAX_AgIAAAAFgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDBBAAhCvQCAADcBAAw9QIAAKwDABD2AgAA3AQAMJsDAQC_BAAhpwMBALMEACGoAwEAswQAIakDAQCzBAAhqgMBAL8EACGrAwEAswQAIawDAQCzBAAhCvQCAADdBAAw9QIAAJkDABD2AgAA3QQAMJsDAQDQBAAhpwMBALsEACGoAwEAuwQAIakDAQC7BAAhqgMBANAEACGrAwEAuwQAIawDAQC7BAAhCPQCAADeBAAw9QIAAJMDABD2AgAA3gQAMPwCAQCzBAAhqAMBALMEACGtAwEAswQAIa4DAQCzBAAhrwMBALMEACEI9AIAAN8EADD1AgAAgAMAEPYCAADfBAAw_AIBALsEACGoAwEAuwQAIa0DAQC7BAAhrgMBALsEACGvAwEAuwQAIQOtAwEAAAABrgMBAAAAAa8DAQAAAAEK9AIAAOEEADD1AgAA-gIAEPYCAADhBAAw-wIBALMEACGbAwEAswQAIagDAQCzBAAhsQMBALMEACGyAwEAvwQAIbMDAQC_BAAhtAMBALMEACEK9AIAAOIEADD1AgAA5wIAEPYCAADiBAAw-wIBALsEACGbAwEAuwQAIagDAQC7BAAhsQMBALsEACGyAwEA0AQAIbMDAQDQBAAhtAMBALsEACEM9AIAAOMEADD1AgAA4QIAEPYCAADjBAAw_AIBALMEACGoAwEAswQAIbMDAQCzBAAhtQMBALMEACG2AwEAswQAIbcDAgDkBAAhuAMBAL8EACG5AwEAvwQAIboDAQCzBAAhDQcAALYEACAaAADmBAAgGwAAtgQAIBwAALYEACAdAAC2BAAg_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDlBAAhDQcAALYEACAaAADmBAAgGwAAtgQAIBwAALYEACAdAAC2BAAg_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgDlBAAhCP0CCAAAAAH-AggAAAAE_wIIAAAABIADCAAAAAGBAwgAAAABggMIAAAAAYMDCAAAAAGEAwgA5gQAIQz0AgAA5wQAMPUCAADOAgAQ9gIAAOcEADD8AgEAuwQAIagDAQC7BAAhswMBALsEACG1AwEAuwQAIbYDAQC7BAAhtwMCAOgEACG4AwEA0AQAIbkDAQDQBAAhugMBALsEACEI_QICAAAAAf4CAgAAAAT_AgIAAAAEgAMCAAAAAYEDAgAAAAGCAwIAAAABgwMCAAAAAYQDAgC2BAAhCPQCAADpBAAw9QIAAMgCABD2AgAA6QQAMPwCAQCzBAAhqAMBALMEACG1AwEAswQAIbYDAQCzBAAhtwMCAOQEACEI9AIAAOoEADD1AgAAtQIAEPYCAADqBAAw_AIBALsEACGoAwEAuwQAIbUDAQC7BAAhtgMBALsEACG3AwIA6AQAIQ30AgAA6wQAMPUCAACvAgAQ9gIAAOsEADD7AgEAswQAIfwCAQCzBAAhqAMBALMEACG7AwEAswQAIbwDAQCzBAAhvQMBALMEACG-AwEAswQAIb8DAQCzBAAhwAMBALMEACHBAwEAswQAIQ30AgAA7AQAMPUCAACcAgAQ9gIAAOwEADD7AgEAuwQAIfwCAQC7BAAhqAMBALsEACG7AwEAuwQAIbwDAQC7BAAhvQMBALsEACG-AwEAuwQAIb8DAQC7BAAhwAMBALsEACHBAwEAuwQAIRT0AgAA7QQAMPUCAACWAgAQ9gIAAO0EADCtAwEAswQAIa4DAQC_BAAhwgMBALMEACHDAwEAvwQAIcQDAQC_BAAhxQMBAL8EACHGAwEAvwQAIccDAQCzBAAhyAMIAO4EACHJAwEAvwQAIcoDAQCzBAAhywMBAL8EACHMAwEAvwQAIc0DAQC_BAAhzgMBAL8EACHPAwEAvwQAIdADAQC_BAAhDQcAALYEACAaAADmBAAgGwAA5gQAIBwAAOYEACAdAADmBAAg_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADvBAAhDQcAALYEACAaAADmBAAgGwAA5gQAIBwAAOYEACAdAADmBAAg_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADvBAAhFPQCAADwBAAw9QIAAIMCABD2AgAA8AQAMK0DAQC7BAAhrgMBANAEACHCAwEAuwQAIcMDAQDQBAAhxAMBANAEACHFAwEA0AQAIcYDAQDQBAAhxwMBALsEACHIAwgA8QQAIckDAQDQBAAhygMBALsEACHLAwEA0AQAIcwDAQDQBAAhzQMBANAEACHOAwEA0AQAIc8DAQDQBAAh0AMBANAEACEI_QIIAAAAAf4CCAAAAAT_AggAAAAEgAMIAAAAAYEDCAAAAAGCAwgAAAABgwMIAAAAAYQDCADmBAAhFfQCAADyBAAw9QIAAP0BABD2AgAA8gQAMPsCAQCzBAAhmwMBAL8EACGtAwEAswQAIa4DAQC_BAAhwwMBALMEACHEAwEAswQAIcUDAQCzBAAhxgMBAL8EACHQAwEAvwQAIdEDAQCzBAAh0gMBALMEACHTAwEAswQAIdQDAQC_BAAh1QMBAL8EACHWAwEAvwQAIdcDAQC_BAAh2AMCAMQEACHZAyAA8wQAIQUHAADBBAAgHAAA9QQAIB0AAPUEACD9AiAAAAABhAMgAPQEACEFBwAAwQQAIBwAAPUEACAdAAD1BAAg_QIgAAAAAYQDIAD0BAAhAv0CIAAAAAGEAyAA9QQAIRX0AgAA9gQAMPUCAADqAQAQ9gIAAPYEADD7AgEAuwQAIZsDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAh0AMBANAEACHRAwEAuwQAIdIDAQC7BAAh0wMBALsEACHUAwEA0AQAIdUDAQDQBAAh1gMBANAEACHXAwEA0AQAIdgDAgDbBAAh2QMgAPcEACEC_QIgAAAAAYQDIAD1BAAhGvQCAAD4BAAw9QIAAOQBABD2AgAA-AQAMPwCAQCzBAAhnQMBALMEACGpAwEAvwQAIa0DAQCzBAAhrgMBAL8EACHDAwEAswQAIcQDAQCzBAAhxQMBALMEACHGAwEAvwQAIcsDAQC_BAAhzAMBAL8EACHNAwEAvwQAIc4DAQC_BAAh0AMBAL8EACHSAwEAswQAIdoDAQCzBAAh2wMBAL8EACHcAwEAvwQAId0DAQC_BAAh3gMBAL8EACHfAwEAvwQAIeADAQC_BAAh4QMBAL8EACEa9AIAAPkEADD1AgAA0QEAEPYCAAD5BAAw_AIBALsEACGdAwEAuwQAIakDAQDQBAAhrQMBALsEACGuAwEA0AQAIcMDAQC7BAAhxAMBALsEACHFAwEAuwQAIcYDAQDQBAAhywMBANAEACHMAwEA0AQAIc0DAQDQBAAhzgMBANAEACHQAwEA0AQAIdIDAQC7BAAh2gMBALsEACHbAwEA0AQAIdwDAQDQBAAh3QMBANAEACHeAwEA0AQAId8DAQDQBAAh4AMBANAEACHhAwEA0AQAIQLDAwEAAAABxAMBAAAAAQr0AgAA-wQAMPUCAADLAQAQ9gIAAPsEADD7AgEAswQAIZsDAQC_BAAhrQMBALMEACHDAwEAswQAIcUDAQCzBAAh4wMBALMEACHkAwEAvwQAIQr0AgAA_AQAMPUCAAC4AQAQ9gIAAPwEADD7AgEAuwQAIZsDAQDQBAAhrQMBALsEACHDAwEAuwQAIcUDAQC7BAAh4wMBALsEACHkAwEA0AQAIQf0AgAA_QQAMPUCAACyAQAQ9gIAAP0EADD8AgEAswQAIa0DAQCzBAAhrgMBALMEACHlAwEAswQAIQf0AgAA_gQAMPUCAACfAQAQ9gIAAP4EADD8AgEAuwQAIa0DAQC7BAAhrgMBALsEACHlAwEAuwQAIQKtAwEAAAABrgMBAAAAAQb0AgAAgAUAMPUCAACZAQAQ9gIAAIAFADD8AgEAswQAIa0DAQCzBAAh5wMgAMwEACEG9AIAAIEFADD1AgAAhgEAEPYCAACBBQAw_AIBALsEACGtAwEAuwQAIecDIADRBAAhB_QCAACCBQAw9QIAAIABABD2AgAAggUAMPwCAQCzBAAhrQMBALMEACHlAwEAswQAIegDAQC_BAAhB_QCAACDBQAw9QIAAG0AEPYCAACDBQAw_AIBALsEACGtAwEAuwQAIeUDAQC7BAAh6AMBANAEACEI9AIAAIQFADD1AgAAZwAQ9gIAAIQFADD8AgEAswQAIa0DAQCzBAAhxQMBALMEACHpAwIA5AQAIeoDAQCzBAAhCQMAAIYFACD0AgAAhQUAMPUCAAALABD2AgAAhQUAMPwCAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh6gMBALsEACEXBAAAiwUAIAUAAIwFACAGAACNBQAg9AIAAIoFADD1AgAAEAAQ9gIAAIoFADD8AgEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACGfBAAAEAAgoAQAABAAICj0AgAAhwUAMPUCAABPABD2AgAAhwUAMPwCAQCzBAAhqAMBALMEACGpAwEAswQAIa0DAQCzBAAhxQMBALMEACHGAwEAvwQAIdIDAQCzBAAh6wMBALMEACHsAwEAswQAIe0DAQC_BAAh7gMBALMEACHvAwIA5AQAIfADAQC_BAAh8QMBAL8EACHyAwEAvwQAIfMDAQC_BAAh9AMBAL8EACH1AwEAvwQAIfYDAgDkBAAh9wMBAL8EACH4AwEAvwQAIfkDAQC_BAAh-gMBAL8EACH7AwIAxAQAIfwDAgDEBAAh_QMCAMQEACH-AwEAvwQAIf8DAQC_BAAhgAQCAMQEACGBBAIAxAQAIYIEAQC_BAAhgwQBAL8EACGEBAEAvwQAIYUEAQC_BAAhhgQgAPMEACGHBCAA8wQAIYgEIADzBAAhFvQCAACIBQAw9QIAADkAEPYCAACIBQAwqQMBALMEACGtAwEAswQAIcUDAQCzBAAh7gMBALMEACHwAwEAvwQAIfkDAQC_BAAhiQQBALMEACGKBAEAswQAIYsEAQC_BAAhjAQBAL8EACGNBAEAvwQAIY4EAQC_BAAhjwQBALMEACGQBAEAswQAIZEEAQC_BAAhkgQBAL8EACGTBAEAvwQAIZQEAgDkBAAhlQQBALMEACES9AIAAIkFADD1AgAAIwAQ9gIAAIkFADD8AgEAswQAIakDAQCzBAAhrQMBALMEACHFAwEAswQAIekDAgDkBAAh9AMBALMEACH1AwEAvwQAIZYEAQC_BAAhlwQBAL8EACGYBAEAvwQAIZkEAQC_BAAhmgQBAL8EACGbBAEAvwQAIZwEAQC_BAAhnQQBALMEACEVBAAAiwUAIAUAAIwFACAGAACNBQAg9AIAAIoFADD1AgAAEAAQ9gIAAIoFADD8AgEAuwQAIakDAQC7BAAhrQMBALsEACHFAwEAuwQAIekDAgDoBAAh9AMBALsEACH1AwEA0AQAIZYEAQDQBAAhlwQBANAEACGYBAEA0AQAIZkEAQDQBAAhmgQBANAEACGbBAEA0AQAIZwEAQDQBAAhnQQBALsEACEDowMAAAMAIKQDAAADACClAwAAAwAgA6MDAAAHACCkAwAABwAgpQMAAAcAIAsDAACGBQAg9AIAAIUFADD1AgAACwAQ9gIAAIUFADD8AgEAuwQAIa0DAQC7BAAhxQMBALsEACHpAwIA6AQAIeoDAQC7BAAhnwQAAAsAIKAEAAALACADxQMBAAAAAesDAQAAAAHvAwIAAAABKQMAAIYFACD0AgAAjwUAMPUCAAAHABD2AgAAjwUAMPwCAQC7BAAhqAMBALsEACGpAwEAuwQAIa0DAQC7BAAhxQMBALsEACHGAwEA0AQAIdIDAQC7BAAh6wMBALsEACHsAwEAuwQAIe0DAQDQBAAh7gMBALsEACHvAwIA6AQAIfADAQDQBAAh8QMBANAEACHyAwEA0AQAIfMDAQDQBAAh9AMBANAEACH1AwEA0AQAIfYDAgDoBAAh9wMBANAEACH4AwEA0AQAIfkDAQDQBAAh-gMBANAEACH7AwIA2wQAIfwDAgDbBAAh_QMCANsEACH-AwEA0AQAIf8DAQDQBAAhgAQCANsEACGBBAIA2wQAIYIEAQDQBAAhgwQBANAEACGEBAEA0AQAIYUEAQDQBAAhhgQgAPcEACGHBCAA9wQAIYgEIAD3BAAhFwMAAIYFACD0AgAAkAUAMPUCAAADABD2AgAAkAUAMKkDAQC7BAAhrQMBALsEACHFAwEAuwQAIe4DAQC7BAAh8AMBANAEACH5AwEA0AQAIYkEAQC7BAAhigQBALsEACGLBAEA0AQAIYwEAQDQBAAhjQQBANAEACGOBAEA0AQAIY8EAQC7BAAhkAQBALsEACGRBAEA0AQAIZIEAQDQBAAhkwQBANAEACGUBAIA6AQAIZUEAQC7BAAhAAAAAaQEAQAAAAEBpARAAAAAAQAAAAABpAQBAAAAAQUUAADuBgAgFQAA8QYAIKEEAADvBgAgogQAAPAGACCnBAAArwMAIAMUAADuBgAgoQQAAO8GACCnBAAArwMAIAAAAAAABaQEAgAAAAGqBAIAAAABqwQCAAAAAawEAgAAAAGtBAIAAAABAaQEQAAAAAEFFAAA6QYAIBUAAOwGACChBAAA6gYAIKIEAADrBgAgpwQAAK8DACADFAAA6QYAIKEEAADqBgAgpwQAAK8DACAAAAAFFAAA5AYAIBUAAOcGACChBAAA5QYAIKIEAADmBgAgpwQAAK8DACADFAAA5AYAIKEEAADlBgAgpwQAAK8DACAAAAABpAQgAAAAAQsUAADKBQAwFQAAzwUAMKEEAADLBQAwogQAAMwFADCjBAAAzQUAIKQEAADOBQAwpQQAAM4FADCmBAAAzgUAMKcEAADOBQAwqAQAANAFADCpBAAA0QUAMAsUAAC-BQAwFQAAwwUAMKEEAAC_BQAwogQAAMAFADCjBAAAwQUAIKQEAADCBQAwpQQAAMIFADCmBAAAwgUAMKcEAADCBQAwqAQAAMQFADCpBAAAxQUAMAsUAACyBQAwFQAAtwUAMKEEAACzBQAwogQAALQFADCjBAAAtQUAIKQEAAC2BQAwpQQAALYFADCmBAAAtgUAMKcEAAC2BQAwqAQAALgFADCpBAAAuQUAMAX3AgEAAAAB-wJAAAAAAZoDAQAAAAGbA0AAAAABnANAAAAAAQIAAAC7AwAgFAAAvQUAIAMAAAC7AwAgFAAAvQUAIBUAALwFACABDQAA4wYAMAqgAgAA1wQAIPQCAADVBAAw9QIAALkDABD2AgAA1QQAMPcCAQAAAAH7AkAAvAQAIYoDAQC7BAAhmgMBAAAAAZsDQAC8BAAhnANAANYEACECAAAAuwMAIA0AALwFACACAAAAugUAIA0AALsFACAJ9AIAALkFADD1AgAAugUAEPYCAAC5BQAw9wIBALsEACH7AkAAvAQAIYoDAQC7BAAhmgMBALsEACGbA0AAvAQAIZwDQADWBAAhCfQCAAC5BQAw9QIAALoFABD2AgAAuQUAMPcCAQC7BAAh-wJAALwEACGKAwEAuwQAIZoDAQC7BAAhmwNAALwEACGcA0AA1gQAIQX3AgEAlAUAIfsCQACVBQAhmgMBAJQFACGbA0AAlQUAIZwDQACjBQAhBfcCAQCUBQAh-wJAAJUFACGaAwEAlAUAIZsDQACVBQAhnANAAKMFACEF9wIBAAAAAfsCQAAAAAGaAwEAAAABmwNAAAAAAZwDQAAAAAEH9wIBAAAAAfoCQAAAAAH7AkAAAAAB_AJAAAAAAYkDAQAAAAGLAwEAAAABjAMBAAAAAQIAAAC3AwAgFAAAyQUAIAMAAAC3AwAgFAAAyQUAIBUAAMgFACABDQAA4gYAMAygAgAA1wQAIPQCAADYBAAw9QIAALUDABD2AgAA2AQAMPcCAQAAAAH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAAAABigMBALsEACGLAwEA0AQAIYwDAQDQBAAhAgAAALcDACANAADIBQAgAgAAAMYFACANAADHBQAgC_QCAADFBQAw9QIAAMYFABD2AgAAxQUAMPcCAQC7BAAh-gJAALwEACH7AkAAvAQAIfwCQAC8BAAhiQMBALsEACGKAwEAuwQAIYsDAQDQBAAhjAMBANAEACEL9AIAAMUFADD1AgAAxgUAEPYCAADFBQAw9wIBALsEACH6AkAAvAQAIfsCQAC8BAAh_AJAALwEACGJAwEAuwQAIYoDAQC7BAAhiwMBANAEACGMAwEA0AQAIQf3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQf3AgEAlAUAIfoCQACVBQAh-wJAAJUFACH8AkAAlQUAIYkDAQCUBQAhiwMBAJoFACGMAwEAmgUAIQf3AgEAAAAB-gJAAAAAAfsCQAAAAAH8AkAAAAABiQMBAAAAAYsDAQAAAAGMAwEAAAABEPcCAQAAAAH7AkAAAAAB_AJAAAAAAY0DAQAAAAGOAwEAAAABjwMBAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAgAAAAGUA0AAAAABlQNAAAAAAZYDAQAAAAGXAwEAAAABmAMBAAAAAZkDAQAAAAECAAAAswMAIBQAANUFACADAAAAswMAIBQAANUFACAVAADUBQAgAQ0AAOEGADAWoAIAANcEACD0AgAA2gQAMPUCAACxAwAQ9gIAANoEADD3AgEAAAAB-wJAALwEACH8AkAAvAQAIYoDAQC7BAAhjQMBALsEACGOAwEAuwQAIY8DAQC7BAAhkAMBANAEACGRAwEA0AQAIZIDAQDQBAAhkwMCANsEACGUA0AA1gQAIZUDQADWBAAhlgMBANAEACGXAwEA0AQAIZgDAQDQBAAhmQMBANAEACGmAwAA2QQAIAIAAACzAwAgDQAA1AUAIAIAAADSBQAgDQAA0wUAIBT0AgAA0QUAMPUCAADSBQAQ9gIAANEFADD3AgEAuwQAIfsCQAC8BAAh_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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
15601
|
};
|
|
13765
15602
|
config.compilerWasm = {
|
|
13766
15603
|
getRuntime: async () => require_query_compiler_fast_bg(),
|
|
@@ -13849,6 +15686,403 @@ PrismaTriggerSetupStateRepository = __decorate([
|
|
|
13849
15686
|
__decorateMetadata("design:paramtypes", [Object])
|
|
13850
15687
|
], PrismaTriggerSetupStateRepository);
|
|
13851
15688
|
|
|
15689
|
+
//#endregion
|
|
15690
|
+
//#region src/infrastructure/persistence/PrismaRunTraceContextRepository.ts
|
|
15691
|
+
var _ref$7;
|
|
15692
|
+
let PrismaRunTraceContextRepository = class PrismaRunTraceContextRepository$1 {
|
|
15693
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15694
|
+
this.prisma = prisma;
|
|
15695
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15696
|
+
}
|
|
15697
|
+
async load(runId) {
|
|
15698
|
+
const row = await this.prisma.runTraceContext.findUnique({ where: { runId: decodeURIComponent(runId) } });
|
|
15699
|
+
if (!row) return;
|
|
15700
|
+
return {
|
|
15701
|
+
runId: row.runId,
|
|
15702
|
+
workflowId: row.workflowId,
|
|
15703
|
+
traceId: row.traceId,
|
|
15704
|
+
rootSpanId: row.rootSpanId,
|
|
15705
|
+
serviceName: row.serviceName ?? void 0,
|
|
15706
|
+
createdAt: row.createdAt,
|
|
15707
|
+
expiresAt: row.expiresAt ?? void 0
|
|
15708
|
+
};
|
|
15709
|
+
}
|
|
15710
|
+
async getOrCreate(args) {
|
|
15711
|
+
const existing = await this.load(args.runId);
|
|
15712
|
+
if (existing) return existing;
|
|
15713
|
+
const created = {
|
|
15714
|
+
runId: decodeURIComponent(args.runId),
|
|
15715
|
+
workflowId: decodeURIComponent(args.workflowId),
|
|
15716
|
+
traceId: this.otelIdentityFactory.createTraceId(args.runId),
|
|
15717
|
+
rootSpanId: this.otelIdentityFactory.createRootSpanId(args.runId),
|
|
15718
|
+
serviceName: args.serviceName,
|
|
15719
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
15720
|
+
};
|
|
15721
|
+
await this.prisma.runTraceContext.create({ data: {
|
|
15722
|
+
runId: created.runId,
|
|
15723
|
+
workflowId: created.workflowId,
|
|
15724
|
+
traceId: created.traceId,
|
|
15725
|
+
rootSpanId: created.rootSpanId,
|
|
15726
|
+
serviceName: created.serviceName ?? null,
|
|
15727
|
+
createdAt: created.createdAt,
|
|
15728
|
+
expiresAt: null
|
|
15729
|
+
} });
|
|
15730
|
+
return created;
|
|
15731
|
+
}
|
|
15732
|
+
async upsertExpiry(args) {
|
|
15733
|
+
if (!args.expiresAt) return;
|
|
15734
|
+
const runId = decodeURIComponent(args.runId);
|
|
15735
|
+
const existing = await this.prisma.runTraceContext.findUnique({
|
|
15736
|
+
where: { runId },
|
|
15737
|
+
select: { expiresAt: true }
|
|
15738
|
+
});
|
|
15739
|
+
if (!existing) return;
|
|
15740
|
+
const expiresAt = this.resolveLaterExpiry(existing.expiresAt ?? void 0, args.expiresAt);
|
|
15741
|
+
await this.prisma.runTraceContext.update({
|
|
15742
|
+
where: { runId },
|
|
15743
|
+
data: { expiresAt: expiresAt ?? null }
|
|
15744
|
+
});
|
|
15745
|
+
}
|
|
15746
|
+
resolveLaterExpiry(current, candidate) {
|
|
15747
|
+
if (!current) return candidate;
|
|
15748
|
+
if (!candidate) return current;
|
|
15749
|
+
return current >= candidate ? current : candidate;
|
|
15750
|
+
}
|
|
15751
|
+
};
|
|
15752
|
+
PrismaRunTraceContextRepository = __decorate([
|
|
15753
|
+
injectable(),
|
|
15754
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15755
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15756
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$7 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$7 : Object])
|
|
15757
|
+
], PrismaRunTraceContextRepository);
|
|
15758
|
+
|
|
15759
|
+
//#endregion
|
|
15760
|
+
//#region src/infrastructure/persistence/PrismaTelemetryArtifactStore.ts
|
|
15761
|
+
var _ref$6;
|
|
15762
|
+
let PrismaTelemetryArtifactStore = class PrismaTelemetryArtifactStore$1 {
|
|
15763
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15764
|
+
this.prisma = prisma;
|
|
15765
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15766
|
+
}
|
|
15767
|
+
async save(record) {
|
|
15768
|
+
const artifactId = this.otelIdentityFactory.createArtifactId();
|
|
15769
|
+
const createdAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
15770
|
+
await this.prisma.telemetryArtifact.create({ data: {
|
|
15771
|
+
artifactId,
|
|
15772
|
+
traceId: record.traceId,
|
|
15773
|
+
spanId: record.spanId,
|
|
15774
|
+
runId: record.runId,
|
|
15775
|
+
workflowId: record.workflowId,
|
|
15776
|
+
nodeId: record.nodeId ?? null,
|
|
15777
|
+
activationId: record.activationId ?? null,
|
|
15778
|
+
kind: record.kind,
|
|
15779
|
+
contentType: record.contentType,
|
|
15780
|
+
previewText: record.previewText ?? null,
|
|
15781
|
+
previewJson: record.previewJson !== void 0 ? JSON.stringify(record.previewJson) : null,
|
|
15782
|
+
payloadText: record.payloadText ?? null,
|
|
15783
|
+
payloadJson: record.payloadJson !== void 0 ? JSON.stringify(record.payloadJson) : null,
|
|
15784
|
+
bytes: record.bytes ?? null,
|
|
15785
|
+
truncated: record.truncated ?? null,
|
|
15786
|
+
createdAt,
|
|
15787
|
+
expiresAt: record.expiresAt?.toISOString() ?? null,
|
|
15788
|
+
retentionExpiresAt: record.retentionExpiresAt ?? null
|
|
15789
|
+
} });
|
|
15790
|
+
return {
|
|
15791
|
+
artifactId,
|
|
15792
|
+
traceId: record.traceId,
|
|
15793
|
+
spanId: record.spanId,
|
|
15794
|
+
runId: record.runId,
|
|
15795
|
+
workflowId: record.workflowId,
|
|
15796
|
+
nodeId: record.nodeId,
|
|
15797
|
+
activationId: record.activationId,
|
|
15798
|
+
kind: record.kind,
|
|
15799
|
+
contentType: record.contentType,
|
|
15800
|
+
previewText: record.previewText,
|
|
15801
|
+
previewJson: record.previewJson,
|
|
15802
|
+
payloadText: record.payloadText,
|
|
15803
|
+
payloadJson: record.payloadJson,
|
|
15804
|
+
bytes: record.bytes,
|
|
15805
|
+
truncated: record.truncated,
|
|
15806
|
+
createdAt,
|
|
15807
|
+
expiresAt: record.expiresAt?.toISOString(),
|
|
15808
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
15809
|
+
};
|
|
15810
|
+
}
|
|
15811
|
+
async listByTraceId(traceId) {
|
|
15812
|
+
return (await this.prisma.telemetryArtifact.findMany({
|
|
15813
|
+
where: { traceId },
|
|
15814
|
+
orderBy: [{ createdAt: "asc" }, { artifactId: "asc" }]
|
|
15815
|
+
})).map((row) => ({
|
|
15816
|
+
artifactId: row.artifactId,
|
|
15817
|
+
traceId: row.traceId,
|
|
15818
|
+
spanId: row.spanId,
|
|
15819
|
+
runId: row.runId,
|
|
15820
|
+
workflowId: row.workflowId,
|
|
15821
|
+
nodeId: row.nodeId ?? void 0,
|
|
15822
|
+
activationId: row.activationId ?? void 0,
|
|
15823
|
+
kind: row.kind,
|
|
15824
|
+
contentType: row.contentType,
|
|
15825
|
+
previewText: row.previewText ?? void 0,
|
|
15826
|
+
previewJson: this.parseJson(row.previewJson),
|
|
15827
|
+
payloadText: row.payloadText ?? void 0,
|
|
15828
|
+
payloadJson: this.parseJson(row.payloadJson),
|
|
15829
|
+
bytes: row.bytes ?? void 0,
|
|
15830
|
+
truncated: row.truncated ?? void 0,
|
|
15831
|
+
createdAt: row.createdAt,
|
|
15832
|
+
expiresAt: row.expiresAt ?? void 0,
|
|
15833
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
15834
|
+
}));
|
|
15835
|
+
}
|
|
15836
|
+
async pruneExpired(args) {
|
|
15837
|
+
const rows = await this.prisma.telemetryArtifact.findMany({
|
|
15838
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
15839
|
+
select: { artifactId: true },
|
|
15840
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { artifactId: "asc" }],
|
|
15841
|
+
...args.limit ? { take: args.limit } : {}
|
|
15842
|
+
});
|
|
15843
|
+
if (rows.length === 0) return 0;
|
|
15844
|
+
return (await this.prisma.telemetryArtifact.deleteMany({ where: { artifactId: { in: rows.map((row) => row.artifactId) } } })).count;
|
|
15845
|
+
}
|
|
15846
|
+
parseJson(value) {
|
|
15847
|
+
if (!value) return;
|
|
15848
|
+
return JSON.parse(value);
|
|
15849
|
+
}
|
|
15850
|
+
};
|
|
15851
|
+
PrismaTelemetryArtifactStore = __decorate([
|
|
15852
|
+
injectable(),
|
|
15853
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15854
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15855
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$6 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$6 : Object])
|
|
15856
|
+
], PrismaTelemetryArtifactStore);
|
|
15857
|
+
|
|
15858
|
+
//#endregion
|
|
15859
|
+
//#region src/infrastructure/persistence/PrismaTelemetryMetricPointStore.ts
|
|
15860
|
+
var _ref$5;
|
|
15861
|
+
let PrismaTelemetryMetricPointStore = class PrismaTelemetryMetricPointStore$1 {
|
|
15862
|
+
constructor(prisma, otelIdentityFactory) {
|
|
15863
|
+
this.prisma = prisma;
|
|
15864
|
+
this.otelIdentityFactory = otelIdentityFactory;
|
|
15865
|
+
}
|
|
15866
|
+
async save(record) {
|
|
15867
|
+
const metricPointId = this.otelIdentityFactory.createArtifactId();
|
|
15868
|
+
await this.prisma.telemetryMetricPoint.create({ data: {
|
|
15869
|
+
metricPointId,
|
|
15870
|
+
traceId: record.traceId ?? null,
|
|
15871
|
+
spanId: record.spanId ?? null,
|
|
15872
|
+
runId: record.runId ?? null,
|
|
15873
|
+
workflowId: record.workflowId,
|
|
15874
|
+
nodeId: record.nodeId ?? null,
|
|
15875
|
+
activationId: record.activationId ?? null,
|
|
15876
|
+
metricName: record.name,
|
|
15877
|
+
value: record.value,
|
|
15878
|
+
unit: record.unit ?? null,
|
|
15879
|
+
observedAt: record.observedAt,
|
|
15880
|
+
workflowFolder: record.workflowFolder ?? null,
|
|
15881
|
+
nodeType: record.nodeType ?? null,
|
|
15882
|
+
nodeRole: record.nodeRole ?? null,
|
|
15883
|
+
modelName: record.modelName ?? null,
|
|
15884
|
+
dimensionsJson: record.attributes ? JSON.stringify(record.attributes) : null,
|
|
15885
|
+
retentionExpiresAt: record.retentionExpiresAt ?? null
|
|
15886
|
+
} });
|
|
15887
|
+
return {
|
|
15888
|
+
metricPointId,
|
|
15889
|
+
traceId: record.traceId,
|
|
15890
|
+
spanId: record.spanId,
|
|
15891
|
+
runId: record.runId,
|
|
15892
|
+
workflowId: record.workflowId,
|
|
15893
|
+
nodeId: record.nodeId,
|
|
15894
|
+
activationId: record.activationId,
|
|
15895
|
+
metricName: record.name,
|
|
15896
|
+
value: record.value,
|
|
15897
|
+
unit: record.unit,
|
|
15898
|
+
observedAt: record.observedAt,
|
|
15899
|
+
workflowFolder: record.workflowFolder,
|
|
15900
|
+
nodeType: record.nodeType,
|
|
15901
|
+
nodeRole: record.nodeRole,
|
|
15902
|
+
modelName: record.modelName,
|
|
15903
|
+
dimensions: record.attributes,
|
|
15904
|
+
retentionExpiresAt: record.retentionExpiresAt
|
|
15905
|
+
};
|
|
15906
|
+
}
|
|
15907
|
+
async list(args = {}) {
|
|
15908
|
+
return (await this.prisma.telemetryMetricPoint.findMany({
|
|
15909
|
+
where: {
|
|
15910
|
+
...args.traceId ? { traceId: args.traceId } : {},
|
|
15911
|
+
...args.runId ? { runId: args.runId } : {},
|
|
15912
|
+
...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
|
|
15913
|
+
...args.workflowId ? { workflowId: args.workflowId } : {},
|
|
15914
|
+
...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
|
|
15915
|
+
...args.nodeId ? { nodeId: args.nodeId } : {},
|
|
15916
|
+
...args.metricNames && args.metricNames.length > 0 ? { metricName: { in: [...args.metricNames] } } : {},
|
|
15917
|
+
...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
|
|
15918
|
+
...args.observedAtGte ? { observedAt: { gte: args.observedAtGte } } : {},
|
|
15919
|
+
...args.observedAtLte ? { observedAt: { lte: args.observedAtLte } } : {}
|
|
15920
|
+
},
|
|
15921
|
+
orderBy: [{ observedAt: "asc" }, { metricPointId: "asc" }],
|
|
15922
|
+
...args.limit ? { take: args.limit } : {}
|
|
15923
|
+
})).map((row) => ({
|
|
15924
|
+
metricPointId: row.metricPointId,
|
|
15925
|
+
traceId: row.traceId ?? void 0,
|
|
15926
|
+
spanId: row.spanId ?? void 0,
|
|
15927
|
+
runId: row.runId ?? void 0,
|
|
15928
|
+
workflowId: row.workflowId,
|
|
15929
|
+
nodeId: row.nodeId ?? void 0,
|
|
15930
|
+
activationId: row.activationId ?? void 0,
|
|
15931
|
+
metricName: row.metricName,
|
|
15932
|
+
value: row.value,
|
|
15933
|
+
unit: row.unit ?? void 0,
|
|
15934
|
+
observedAt: row.observedAt,
|
|
15935
|
+
workflowFolder: row.workflowFolder ?? void 0,
|
|
15936
|
+
nodeType: row.nodeType ?? void 0,
|
|
15937
|
+
nodeRole: row.nodeRole ?? void 0,
|
|
15938
|
+
modelName: row.modelName ?? void 0,
|
|
15939
|
+
dimensions: this.parseJson(row.dimensionsJson),
|
|
15940
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
15941
|
+
}));
|
|
15942
|
+
}
|
|
15943
|
+
async pruneExpired(args) {
|
|
15944
|
+
const rows = await this.prisma.telemetryMetricPoint.findMany({
|
|
15945
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
15946
|
+
select: { metricPointId: true },
|
|
15947
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { metricPointId: "asc" }],
|
|
15948
|
+
...args.limit ? { take: args.limit } : {}
|
|
15949
|
+
});
|
|
15950
|
+
if (rows.length === 0) return 0;
|
|
15951
|
+
return (await this.prisma.telemetryMetricPoint.deleteMany({ where: { metricPointId: { in: rows.map((row) => row.metricPointId) } } })).count;
|
|
15952
|
+
}
|
|
15953
|
+
parseJson(value) {
|
|
15954
|
+
if (!value) return;
|
|
15955
|
+
return JSON.parse(value);
|
|
15956
|
+
}
|
|
15957
|
+
};
|
|
15958
|
+
PrismaTelemetryMetricPointStore = __decorate([
|
|
15959
|
+
injectable(),
|
|
15960
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
15961
|
+
__decorateParam(1, inject(OtelIdentityFactory)),
|
|
15962
|
+
__decorateMetadata("design:paramtypes", [Object, typeof (_ref$5 = typeof OtelIdentityFactory !== "undefined" && OtelIdentityFactory) === "function" ? _ref$5 : Object])
|
|
15963
|
+
], PrismaTelemetryMetricPointStore);
|
|
15964
|
+
|
|
15965
|
+
//#endregion
|
|
15966
|
+
//#region src/infrastructure/persistence/PrismaTelemetrySpanStore.ts
|
|
15967
|
+
let PrismaTelemetrySpanStore = class PrismaTelemetrySpanStore$1 {
|
|
15968
|
+
constructor(prisma) {
|
|
15969
|
+
this.prisma = prisma;
|
|
15970
|
+
}
|
|
15971
|
+
async upsert(record) {
|
|
15972
|
+
const telemetrySpanId = this.createTelemetrySpanId(record.traceId, record.spanId);
|
|
15973
|
+
const existing = await this.prisma.telemetrySpan.findUnique({ where: { telemetrySpanId } });
|
|
15974
|
+
const attributes = this.mergeAttributes(this.parseJson(existing?.attributesJson ?? null), record.attributes);
|
|
15975
|
+
const events = this.mergeEvents(this.parseJson(existing?.eventsJson ?? null), record.events);
|
|
15976
|
+
const data = {
|
|
15977
|
+
traceId: record.traceId,
|
|
15978
|
+
spanId: record.spanId,
|
|
15979
|
+
parentSpanId: record.parentSpanId ?? existing?.parentSpanId ?? null,
|
|
15980
|
+
runId: record.runId,
|
|
15981
|
+
workflowId: record.workflowId,
|
|
15982
|
+
nodeId: record.nodeId ?? existing?.nodeId ?? null,
|
|
15983
|
+
activationId: record.activationId ?? existing?.activationId ?? null,
|
|
15984
|
+
connectionInvocationId: record.connectionInvocationId ?? existing?.connectionInvocationId ?? null,
|
|
15985
|
+
name: record.name ?? existing?.name ?? "codemation.span",
|
|
15986
|
+
kind: record.kind ?? existing?.kind ?? "internal",
|
|
15987
|
+
status: record.status ?? existing?.status ?? null,
|
|
15988
|
+
statusMessage: record.statusMessage ?? existing?.statusMessage ?? null,
|
|
15989
|
+
startTime: record.startTime ?? existing?.startTime ?? null,
|
|
15990
|
+
endTime: record.endTime ?? existing?.endTime ?? null,
|
|
15991
|
+
workflowFolder: record.workflowFolder ?? existing?.workflowFolder ?? null,
|
|
15992
|
+
nodeType: record.nodeType ?? existing?.nodeType ?? null,
|
|
15993
|
+
nodeRole: record.nodeRole ?? existing?.nodeRole ?? null,
|
|
15994
|
+
modelName: record.modelName ?? existing?.modelName ?? null,
|
|
15995
|
+
attributesJson: attributes ? JSON.stringify(attributes) : null,
|
|
15996
|
+
eventsJson: events.length > 0 ? JSON.stringify(events) : null,
|
|
15997
|
+
retentionExpiresAt: record.retentionExpiresAt ?? existing?.retentionExpiresAt ?? null,
|
|
15998
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
15999
|
+
};
|
|
16000
|
+
await this.prisma.telemetrySpan.upsert({
|
|
16001
|
+
where: { telemetrySpanId },
|
|
16002
|
+
create: {
|
|
16003
|
+
telemetrySpanId,
|
|
16004
|
+
...data
|
|
16005
|
+
},
|
|
16006
|
+
update: data
|
|
16007
|
+
});
|
|
16008
|
+
}
|
|
16009
|
+
async list(args = {}) {
|
|
16010
|
+
return (await this.prisma.telemetrySpan.findMany({
|
|
16011
|
+
where: {
|
|
16012
|
+
...args.traceId ? { traceId: args.traceId } : {},
|
|
16013
|
+
...args.runId ? { runId: args.runId } : {},
|
|
16014
|
+
...args.runIds && args.runIds.length > 0 ? { runId: { in: [...args.runIds] } } : {},
|
|
16015
|
+
...args.workflowId ? { workflowId: args.workflowId } : {},
|
|
16016
|
+
...args.workflowIds && args.workflowIds.length > 0 ? { workflowId: { in: [...args.workflowIds] } } : {},
|
|
16017
|
+
...args.statuses && args.statuses.length > 0 ? { status: { in: [...args.statuses] } } : {},
|
|
16018
|
+
...args.names && args.names.length > 0 ? { name: { in: [...args.names] } } : {},
|
|
16019
|
+
...args.modelNames && args.modelNames.length > 0 ? { modelName: { in: [...args.modelNames] } } : {},
|
|
16020
|
+
...args.startTimeGte ? { startTime: { gte: args.startTimeGte } } : {},
|
|
16021
|
+
...args.endTimeLte ? { endTime: { lte: args.endTimeLte } } : {}
|
|
16022
|
+
},
|
|
16023
|
+
orderBy: [{ startTime: "asc" }, { spanId: "asc" }],
|
|
16024
|
+
...args.limit ? { take: args.limit } : {}
|
|
16025
|
+
})).map((row) => ({
|
|
16026
|
+
traceId: row.traceId,
|
|
16027
|
+
spanId: row.spanId,
|
|
16028
|
+
parentSpanId: row.parentSpanId ?? void 0,
|
|
16029
|
+
runId: row.runId,
|
|
16030
|
+
workflowId: row.workflowId,
|
|
16031
|
+
nodeId: row.nodeId ?? void 0,
|
|
16032
|
+
activationId: row.activationId ?? void 0,
|
|
16033
|
+
connectionInvocationId: row.connectionInvocationId ?? void 0,
|
|
16034
|
+
name: row.name,
|
|
16035
|
+
kind: row.kind,
|
|
16036
|
+
status: row.status ? row.status : void 0,
|
|
16037
|
+
statusMessage: row.statusMessage ?? void 0,
|
|
16038
|
+
startTime: row.startTime ?? void 0,
|
|
16039
|
+
endTime: row.endTime ?? void 0,
|
|
16040
|
+
workflowFolder: row.workflowFolder ?? void 0,
|
|
16041
|
+
nodeType: row.nodeType ?? void 0,
|
|
16042
|
+
nodeRole: row.nodeRole ?? void 0,
|
|
16043
|
+
modelName: row.modelName ?? void 0,
|
|
16044
|
+
attributes: this.parseJson(row.attributesJson),
|
|
16045
|
+
events: this.parseJson(row.eventsJson) ?? [],
|
|
16046
|
+
retentionExpiresAt: row.retentionExpiresAt ?? void 0
|
|
16047
|
+
}));
|
|
16048
|
+
}
|
|
16049
|
+
async listByTraceId(traceId) {
|
|
16050
|
+
return await this.list({ traceId });
|
|
16051
|
+
}
|
|
16052
|
+
async pruneExpired(args) {
|
|
16053
|
+
const rows = await this.prisma.telemetrySpan.findMany({
|
|
16054
|
+
where: { retentionExpiresAt: { lte: args.nowIso } },
|
|
16055
|
+
select: { telemetrySpanId: true },
|
|
16056
|
+
orderBy: [{ retentionExpiresAt: "asc" }, { telemetrySpanId: "asc" }],
|
|
16057
|
+
...args.limit ? { take: args.limit } : {}
|
|
16058
|
+
});
|
|
16059
|
+
if (rows.length === 0) return 0;
|
|
16060
|
+
return (await this.prisma.telemetrySpan.deleteMany({ where: { telemetrySpanId: { in: rows.map((row) => row.telemetrySpanId) } } })).count;
|
|
16061
|
+
}
|
|
16062
|
+
createTelemetrySpanId(traceId, spanId) {
|
|
16063
|
+
return `${traceId}:${spanId}`;
|
|
16064
|
+
}
|
|
16065
|
+
parseJson(value) {
|
|
16066
|
+
if (!value) return;
|
|
16067
|
+
return JSON.parse(value);
|
|
16068
|
+
}
|
|
16069
|
+
mergeAttributes(existing, update) {
|
|
16070
|
+
if (!existing && !update) return;
|
|
16071
|
+
return {
|
|
16072
|
+
...existing ?? {},
|
|
16073
|
+
...update ?? {}
|
|
16074
|
+
};
|
|
16075
|
+
}
|
|
16076
|
+
mergeEvents(existing, update) {
|
|
16077
|
+
return [...existing ?? [], ...update ?? []];
|
|
16078
|
+
}
|
|
16079
|
+
};
|
|
16080
|
+
PrismaTelemetrySpanStore = __decorate([
|
|
16081
|
+
injectable(),
|
|
16082
|
+
__decorateParam(0, inject(PrismaDatabaseClientToken)),
|
|
16083
|
+
__decorateMetadata("design:paramtypes", [Object])
|
|
16084
|
+
], PrismaTelemetrySpanStore);
|
|
16085
|
+
|
|
13852
16086
|
//#endregion
|
|
13853
16087
|
//#region src/infrastructure/persistence/PrismaWorkflowActivationRepository.ts
|
|
13854
16088
|
let PrismaWorkflowActivationRepository = class PrismaWorkflowActivationRepository$1 {
|
|
@@ -14221,13 +16455,22 @@ let PrismaWorkflowRunRepository = class PrismaWorkflowRunRepository$1 {
|
|
|
14221
16455
|
async listRunsOlderThan(args) {
|
|
14222
16456
|
const limit = args.limit ?? 100;
|
|
14223
16457
|
return (await this.prisma.run.findMany({
|
|
14224
|
-
where: {
|
|
14225
|
-
|
|
14226
|
-
|
|
16458
|
+
where: { status: { in: ["completed", "failed"] } },
|
|
16459
|
+
select: {
|
|
16460
|
+
runId: true,
|
|
16461
|
+
workflowId: true,
|
|
16462
|
+
startedAt: true,
|
|
16463
|
+
finishedAt: true,
|
|
16464
|
+
updatedAt: true,
|
|
16465
|
+
policySnapshotJson: true
|
|
14227
16466
|
},
|
|
14228
16467
|
orderBy: { updatedAt: "asc" },
|
|
14229
|
-
take: limit
|
|
14230
|
-
})).
|
|
16468
|
+
take: limit * 4
|
|
16469
|
+
})).filter((row) => {
|
|
16470
|
+
const finishedAt = row.finishedAt ?? row.updatedAt;
|
|
16471
|
+
const retentionSeconds = this.parseJson(row.policySnapshotJson)?.retentionSeconds ?? args.defaultRetentionSeconds;
|
|
16472
|
+
return finishedAt < (/* @__PURE__ */ new Date(new Date(args.nowIso).getTime() - retentionSeconds * 1e3)).toISOString();
|
|
16473
|
+
}).slice(0, limit).map((row) => this.rowToPruneCandidate(row));
|
|
14231
16474
|
}
|
|
14232
16475
|
instancesToDomain(runId, workflowId, instances) {
|
|
14233
16476
|
const nodeSnapshotsByNodeId = {};
|
|
@@ -14604,7 +16847,7 @@ PrismaWorkflowRunRepository = __decorate([
|
|
|
14604
16847
|
|
|
14605
16848
|
//#endregion
|
|
14606
16849
|
//#region src/infrastructure/persistence/WorkflowDefinitionRepositoryAdapter.ts
|
|
14607
|
-
var _ref$
|
|
16850
|
+
var _ref$4;
|
|
14608
16851
|
let WorkflowDefinitionRepositoryAdapter = class WorkflowDefinitionRepositoryAdapter$1 {
|
|
14609
16852
|
constructor(engine, workflowRepository) {
|
|
14610
16853
|
this.engine = engine;
|
|
@@ -14627,7 +16870,7 @@ WorkflowDefinitionRepositoryAdapter = __decorate([
|
|
|
14627
16870
|
injectable(),
|
|
14628
16871
|
__decorateParam(0, inject(Engine)),
|
|
14629
16872
|
__decorateParam(1, inject(CoreTokens.WorkflowRepository)),
|
|
14630
|
-
__decorateMetadata("design:paramtypes", [typeof (_ref$
|
|
16873
|
+
__decorateMetadata("design:paramtypes", [typeof (_ref$4 = typeof Engine !== "undefined" && Engine) === "function" ? _ref$4 : Object, Object])
|
|
14631
16874
|
], WorkflowDefinitionRepositoryAdapter);
|
|
14632
16875
|
|
|
14633
16876
|
//#endregion
|
|
@@ -14785,6 +17028,141 @@ var LocalFilesystemBinaryStorage = class {
|
|
|
14785
17028
|
}
|
|
14786
17029
|
};
|
|
14787
17030
|
|
|
17031
|
+
//#endregion
|
|
17032
|
+
//#region src/application/runs/WorkflowRunRetentionPruneScheduler.ts
|
|
17033
|
+
var _ref$3, _WorkflowRunRetentionPruneScheduler;
|
|
17034
|
+
let WorkflowRunRetentionPruneScheduler = class WorkflowRunRetentionPruneScheduler$1 {
|
|
17035
|
+
static {
|
|
17036
|
+
_WorkflowRunRetentionPruneScheduler = this;
|
|
17037
|
+
}
|
|
17038
|
+
static defaultIntervalMs = 3600 * 1e3;
|
|
17039
|
+
timer;
|
|
17040
|
+
logger;
|
|
17041
|
+
constructor(clock, runs, binaryStorage, telemetrySpanStore, telemetryArtifactStore, telemetryMetricPointStore, appConfig, loggerFactory) {
|
|
17042
|
+
this.clock = clock;
|
|
17043
|
+
this.runs = runs;
|
|
17044
|
+
this.binaryStorage = binaryStorage;
|
|
17045
|
+
this.telemetrySpanStore = telemetrySpanStore;
|
|
17046
|
+
this.telemetryArtifactStore = telemetryArtifactStore;
|
|
17047
|
+
this.telemetryMetricPointStore = telemetryMetricPointStore;
|
|
17048
|
+
this.appConfig = appConfig;
|
|
17049
|
+
this.logger = loggerFactory.create("codemation.runRetentionPrune");
|
|
17050
|
+
}
|
|
17051
|
+
start() {
|
|
17052
|
+
if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED === "false" && this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED === "false") return;
|
|
17053
|
+
if (this.timer) return;
|
|
17054
|
+
const intervalMs = Number(this.appConfig.env.CODEMATION_RUN_PRUNE_INTERVAL_MS ?? _WorkflowRunRetentionPruneScheduler.defaultIntervalMs);
|
|
17055
|
+
this.runScheduledTick();
|
|
17056
|
+
this.timer = setInterval(() => {
|
|
17057
|
+
this.runScheduledTick();
|
|
17058
|
+
}, intervalMs);
|
|
17059
|
+
}
|
|
17060
|
+
stop() {
|
|
17061
|
+
if (this.timer) {
|
|
17062
|
+
clearInterval(this.timer);
|
|
17063
|
+
this.timer = void 0;
|
|
17064
|
+
}
|
|
17065
|
+
}
|
|
17066
|
+
/** Exposed for tests; production path is the interval started by {@link start}. */
|
|
17067
|
+
async runOnce() {
|
|
17068
|
+
const defaultRetentionSec = Number(this.appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS ?? 86400);
|
|
17069
|
+
const nowIso = this.clock.now().toISOString();
|
|
17070
|
+
let foundCount = 0;
|
|
17071
|
+
let prunedCount = 0;
|
|
17072
|
+
if (this.appConfig.env.CODEMATION_RUN_PRUNE_ENABLED !== "false") {
|
|
17073
|
+
const candidates = await this.runs.listRunsOlderThan?.({
|
|
17074
|
+
nowIso,
|
|
17075
|
+
defaultRetentionSeconds: defaultRetentionSec,
|
|
17076
|
+
limit: 500
|
|
17077
|
+
}) ?? (await this.runs.listRuns({ limit: 500 })).filter((summary) => summary.status === "completed" || summary.status === "failed");
|
|
17078
|
+
for (const candidate of candidates) {
|
|
17079
|
+
const runId = candidate.runId;
|
|
17080
|
+
const workflowId = candidate.workflowId;
|
|
17081
|
+
foundCount += 1;
|
|
17082
|
+
const storageKeys = await this.runs.listBinaryStorageKeys?.(runId) ?? await this.loadStorageKeysFromRunStateFallback(runId);
|
|
17083
|
+
for (const key of storageKeys) await this.binaryStorage.delete(key);
|
|
17084
|
+
await this.runs.deleteRun(runId);
|
|
17085
|
+
prunedCount += 1;
|
|
17086
|
+
this.logger.debug(`Run retention prune: pruned run ${runId} for workflow ${workflowId}`);
|
|
17087
|
+
}
|
|
17088
|
+
}
|
|
17089
|
+
let prunedSpanCount = 0;
|
|
17090
|
+
let prunedArtifactCount = 0;
|
|
17091
|
+
let prunedMetricCount = 0;
|
|
17092
|
+
if (this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_ENABLED !== "false") {
|
|
17093
|
+
const telemetryLimit = Number(this.appConfig.env.CODEMATION_TELEMETRY_PRUNE_LIMIT ?? 2e3);
|
|
17094
|
+
prunedSpanCount = await this.telemetrySpanStore.pruneExpired({
|
|
17095
|
+
nowIso,
|
|
17096
|
+
limit: telemetryLimit
|
|
17097
|
+
});
|
|
17098
|
+
prunedArtifactCount = await this.telemetryArtifactStore.pruneExpired({
|
|
17099
|
+
nowIso,
|
|
17100
|
+
limit: telemetryLimit
|
|
17101
|
+
});
|
|
17102
|
+
prunedMetricCount = await this.telemetryMetricPointStore.pruneExpired({
|
|
17103
|
+
nowIso,
|
|
17104
|
+
limit: telemetryLimit
|
|
17105
|
+
});
|
|
17106
|
+
}
|
|
17107
|
+
if (foundCount + prunedCount + prunedSpanCount + prunedArtifactCount + prunedMetricCount === 0) return;
|
|
17108
|
+
this.logger.info(`Run retention prune: found ${foundCount} run(s) to prune`);
|
|
17109
|
+
this.logger.info(`Run retention prune: pruned ${prunedCount} run(s)`);
|
|
17110
|
+
this.logger.info(`Run retention prune: pruned ${prunedSpanCount} telemetry span(s)`);
|
|
17111
|
+
this.logger.info(`Run retention prune: pruned ${prunedArtifactCount} telemetry artifact(s)`);
|
|
17112
|
+
this.logger.info(`Run retention prune: pruned ${prunedMetricCount} telemetry metric point(s)`);
|
|
17113
|
+
}
|
|
17114
|
+
async runScheduledTick() {
|
|
17115
|
+
try {
|
|
17116
|
+
await this.runOnce();
|
|
17117
|
+
} catch (error) {
|
|
17118
|
+
this.logger.warn(`Run retention prune tick failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
17119
|
+
}
|
|
17120
|
+
}
|
|
17121
|
+
async loadStorageKeysFromRunStateFallback(runId) {
|
|
17122
|
+
const state = await this.runs.load(runId);
|
|
17123
|
+
if (!state) return [];
|
|
17124
|
+
const keys = /* @__PURE__ */ new Set();
|
|
17125
|
+
this.collectStorageKeysFromValue(state.outputsByNode, keys);
|
|
17126
|
+
this.collectStorageKeysFromValue(state.nodeSnapshotsByNodeId, keys);
|
|
17127
|
+
this.collectStorageKeysFromValue(state.mutableState, keys);
|
|
17128
|
+
return [...keys];
|
|
17129
|
+
}
|
|
17130
|
+
collectStorageKeysFromValue(value, keys) {
|
|
17131
|
+
if (Array.isArray(value)) {
|
|
17132
|
+
for (const entry of value) this.collectStorageKeysFromValue(entry, keys);
|
|
17133
|
+
return;
|
|
17134
|
+
}
|
|
17135
|
+
if (!value || typeof value !== "object") return;
|
|
17136
|
+
const record = value;
|
|
17137
|
+
if (typeof record.id === "string" && typeof record.storageKey === "string" && typeof record.mimeType === "string" && typeof record.size === "number") {
|
|
17138
|
+
if (record.storageKey.length > 0) keys.add(record.storageKey);
|
|
17139
|
+
return;
|
|
17140
|
+
}
|
|
17141
|
+
for (const child of Object.values(record)) this.collectStorageKeysFromValue(child, keys);
|
|
17142
|
+
}
|
|
17143
|
+
};
|
|
17144
|
+
WorkflowRunRetentionPruneScheduler = _WorkflowRunRetentionPruneScheduler = __decorate([
|
|
17145
|
+
injectable(),
|
|
17146
|
+
__decorateParam(0, inject(ApplicationTokens.Clock)),
|
|
17147
|
+
__decorateParam(1, inject(ApplicationTokens.WorkflowRunRepository)),
|
|
17148
|
+
__decorateParam(2, inject(CoreTokens.BinaryStorage)),
|
|
17149
|
+
__decorateParam(3, inject(ApplicationTokens.TelemetrySpanStore)),
|
|
17150
|
+
__decorateParam(4, inject(ApplicationTokens.TelemetryArtifactStore)),
|
|
17151
|
+
__decorateParam(5, inject(ApplicationTokens.TelemetryMetricPointStore)),
|
|
17152
|
+
__decorateParam(6, inject(ApplicationTokens.AppConfig)),
|
|
17153
|
+
__decorateParam(7, inject(ServerLoggerFactory)),
|
|
17154
|
+
__decorateMetadata("design:paramtypes", [
|
|
17155
|
+
Object,
|
|
17156
|
+
Object,
|
|
17157
|
+
Object,
|
|
17158
|
+
Object,
|
|
17159
|
+
Object,
|
|
17160
|
+
Object,
|
|
17161
|
+
Object,
|
|
17162
|
+
typeof (_ref$3 = typeof ServerLoggerFactory !== "undefined" && ServerLoggerFactory) === "function" ? _ref$3 : Object
|
|
17163
|
+
])
|
|
17164
|
+
], WorkflowRunRetentionPruneScheduler);
|
|
17165
|
+
|
|
14788
17166
|
//#endregion
|
|
14789
17167
|
//#region src/bootstrap/AppContainerLifecycle.ts
|
|
14790
17168
|
var AppContainerLifecycle = class {
|
|
@@ -14795,6 +17173,8 @@ var AppContainerLifecycle = class {
|
|
|
14795
17173
|
async stop(args) {
|
|
14796
17174
|
if (this.container.isRegistered(Engine, true)) await this.container.resolve(Engine).stop();
|
|
14797
17175
|
if (this.container.isRegistered(WorkflowRunEventWebsocketRelay, true)) await this.container.resolve(WorkflowRunEventWebsocketRelay).stop();
|
|
17176
|
+
if (this.container.isRegistered(RunEventBusTelemetryReporter, true)) await this.container.resolve(RunEventBusTelemetryReporter).stop();
|
|
17177
|
+
if (this.container.isRegistered(WorkflowRunRetentionPruneScheduler, true)) this.container.resolve(WorkflowRunRetentionPruneScheduler).stop();
|
|
14798
17178
|
if (args?.stopWebsocketServer !== false && this.container.isRegistered(WorkflowWebsocketServer, true)) await this.container.resolve(WorkflowWebsocketServer).stop();
|
|
14799
17179
|
if (this.ownedPrismaClient) await this.ownedPrismaClient.$disconnect();
|
|
14800
17180
|
}
|
|
@@ -14821,9 +17201,9 @@ DatabaseMigrations = __decorate([
|
|
|
14821
17201
|
|
|
14822
17202
|
//#endregion
|
|
14823
17203
|
//#region src/bootstrap/runtime/FrontendRuntime.ts
|
|
14824
|
-
var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5;
|
|
17204
|
+
var _ref$1, _ref2$1, _ref3$1, _ref4$1, _ref5$1, _ref6$1, _ref7;
|
|
14825
17205
|
let FrontendRuntime = class FrontendRuntime$1 {
|
|
14826
|
-
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, engine) {
|
|
17206
|
+
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, workflowWebsocketServer, workflowRunEventWebsocketRelay, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, engine) {
|
|
14827
17207
|
this.appConfig = appConfig;
|
|
14828
17208
|
this.databaseMigrations = databaseMigrations;
|
|
14829
17209
|
this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
|
|
@@ -14831,6 +17211,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
|
|
|
14831
17211
|
this.workflowRepository = workflowRepository;
|
|
14832
17212
|
this.workflowWebsocketServer = workflowWebsocketServer;
|
|
14833
17213
|
this.workflowRunEventWebsocketRelay = workflowRunEventWebsocketRelay;
|
|
17214
|
+
this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
|
|
17215
|
+
this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
|
|
14834
17216
|
this.engine = engine;
|
|
14835
17217
|
}
|
|
14836
17218
|
async start(args) {
|
|
@@ -14839,6 +17221,8 @@ let FrontendRuntime = class FrontendRuntime$1 {
|
|
|
14839
17221
|
if (args?.skipPresentationServers === true) return;
|
|
14840
17222
|
await this.engine.start([...this.workflowRepository.list()]);
|
|
14841
17223
|
await this.workflowWebsocketServer.start();
|
|
17224
|
+
await this.runEventBusTelemetryReporter.start();
|
|
17225
|
+
this.workflowRunRetentionPruneScheduler.start();
|
|
14842
17226
|
await this.workflowRunEventWebsocketRelay.start();
|
|
14843
17227
|
}
|
|
14844
17228
|
};
|
|
@@ -14851,7 +17235,9 @@ FrontendRuntime = __decorate([
|
|
|
14851
17235
|
__decorateParam(4, inject(CoreTokens.WorkflowRepository)),
|
|
14852
17236
|
__decorateParam(5, inject(WorkflowWebsocketServer)),
|
|
14853
17237
|
__decorateParam(6, inject(WorkflowRunEventWebsocketRelay)),
|
|
14854
|
-
__decorateParam(7, inject(
|
|
17238
|
+
__decorateParam(7, inject(RunEventBusTelemetryReporter)),
|
|
17239
|
+
__decorateParam(8, inject(WorkflowRunRetentionPruneScheduler)),
|
|
17240
|
+
__decorateParam(9, inject(Engine)),
|
|
14855
17241
|
__decorateMetadata("design:paramtypes", [
|
|
14856
17242
|
Object,
|
|
14857
17243
|
typeof (_ref$1 = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref$1 : Object,
|
|
@@ -14860,21 +17246,25 @@ FrontendRuntime = __decorate([
|
|
|
14860
17246
|
Object,
|
|
14861
17247
|
typeof (_ref3$1 = typeof WorkflowWebsocketServer !== "undefined" && WorkflowWebsocketServer) === "function" ? _ref3$1 : Object,
|
|
14862
17248
|
typeof (_ref4$1 = typeof WorkflowRunEventWebsocketRelay !== "undefined" && WorkflowRunEventWebsocketRelay) === "function" ? _ref4$1 : Object,
|
|
14863
|
-
typeof (_ref5 = typeof
|
|
17249
|
+
typeof (_ref5$1 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref5$1 : Object,
|
|
17250
|
+
typeof (_ref6$1 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref6$1 : Object,
|
|
17251
|
+
typeof (_ref7 = typeof Engine !== "undefined" && Engine) === "function" ? _ref7 : Object
|
|
14864
17252
|
])
|
|
14865
17253
|
], FrontendRuntime);
|
|
14866
17254
|
|
|
14867
17255
|
//#endregion
|
|
14868
17256
|
//#region src/bootstrap/runtime/WorkerRuntime.ts
|
|
14869
|
-
var _ref, _ref2, _ref3, _ref4;
|
|
17257
|
+
var _ref, _ref2, _ref3, _ref4, _ref5, _ref6;
|
|
14870
17258
|
let WorkerRuntime = class WorkerRuntime$1 {
|
|
14871
|
-
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, scheduler, lifecycle) {
|
|
17259
|
+
constructor(appConfig, databaseMigrations, runtimeWorkflowActivationPolicy, workflowActivationRepository, workflowRepository, engine, runEventBusTelemetryReporter, workflowRunRetentionPruneScheduler, scheduler, lifecycle) {
|
|
14872
17260
|
this.appConfig = appConfig;
|
|
14873
17261
|
this.databaseMigrations = databaseMigrations;
|
|
14874
17262
|
this.runtimeWorkflowActivationPolicy = runtimeWorkflowActivationPolicy;
|
|
14875
17263
|
this.workflowActivationRepository = workflowActivationRepository;
|
|
14876
17264
|
this.workflowRepository = workflowRepository;
|
|
14877
17265
|
this.engine = engine;
|
|
17266
|
+
this.runEventBusTelemetryReporter = runEventBusTelemetryReporter;
|
|
17267
|
+
this.workflowRunRetentionPruneScheduler = workflowRunRetentionPruneScheduler;
|
|
14878
17268
|
this.scheduler = scheduler;
|
|
14879
17269
|
this.lifecycle = lifecycle;
|
|
14880
17270
|
}
|
|
@@ -14883,6 +17273,8 @@ let WorkerRuntime = class WorkerRuntime$1 {
|
|
|
14883
17273
|
await this.runtimeWorkflowActivationPolicy.hydrateFromRepository(this.workflowActivationRepository);
|
|
14884
17274
|
const workflows = [...this.workflowRepository.list()];
|
|
14885
17275
|
await this.engine.start(workflows);
|
|
17276
|
+
await this.runEventBusTelemetryReporter.start();
|
|
17277
|
+
this.workflowRunRetentionPruneScheduler.start();
|
|
14886
17278
|
const worker = this.scheduler.createWorker({
|
|
14887
17279
|
queues,
|
|
14888
17280
|
requestHandler: this.engine
|
|
@@ -14902,8 +17294,10 @@ WorkerRuntime = __decorate([
|
|
|
14902
17294
|
__decorateParam(3, inject(ApplicationTokens.WorkflowActivationRepository)),
|
|
14903
17295
|
__decorateParam(4, inject(CoreTokens.WorkflowRepository)),
|
|
14904
17296
|
__decorateParam(5, inject(Engine)),
|
|
14905
|
-
__decorateParam(6, inject(
|
|
14906
|
-
__decorateParam(7, inject(
|
|
17297
|
+
__decorateParam(6, inject(RunEventBusTelemetryReporter)),
|
|
17298
|
+
__decorateParam(7, inject(WorkflowRunRetentionPruneScheduler)),
|
|
17299
|
+
__decorateParam(8, inject(ApplicationTokens.WorkerRuntimeScheduler)),
|
|
17300
|
+
__decorateParam(9, inject(AppContainerLifecycle)),
|
|
14907
17301
|
__decorateMetadata("design:paramtypes", [
|
|
14908
17302
|
Object,
|
|
14909
17303
|
typeof (_ref = typeof DatabaseMigrations !== "undefined" && DatabaseMigrations) === "function" ? _ref : Object,
|
|
@@ -14911,8 +17305,10 @@ WorkerRuntime = __decorate([
|
|
|
14911
17305
|
Object,
|
|
14912
17306
|
Object,
|
|
14913
17307
|
typeof (_ref3 = typeof Engine !== "undefined" && Engine) === "function" ? _ref3 : Object,
|
|
17308
|
+
typeof (_ref4 = typeof RunEventBusTelemetryReporter !== "undefined" && RunEventBusTelemetryReporter) === "function" ? _ref4 : Object,
|
|
17309
|
+
typeof (_ref5 = typeof WorkflowRunRetentionPruneScheduler !== "undefined" && WorkflowRunRetentionPruneScheduler) === "function" ? _ref5 : Object,
|
|
14914
17310
|
Object,
|
|
14915
|
-
typeof (
|
|
17311
|
+
typeof (_ref6 = typeof AppContainerLifecycle !== "undefined" && AppContainerLifecycle) === "function" ? _ref6 : Object
|
|
14916
17312
|
])
|
|
14917
17313
|
], WorkerRuntime);
|
|
14918
17314
|
|
|
@@ -15045,6 +17441,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15045
17441
|
ListUserAccountsQueryHandler,
|
|
15046
17442
|
VerifyUserInviteQueryHandler,
|
|
15047
17443
|
GetRunBinaryAttachmentQueryHandler,
|
|
17444
|
+
GetTelemetryDashboardDimensionsQueryHandler,
|
|
17445
|
+
GetTelemetryDashboardRunsQueryHandler,
|
|
17446
|
+
GetTelemetryRunTraceQueryHandler,
|
|
17447
|
+
GetTelemetryDashboardSummaryQueryHandler,
|
|
17448
|
+
GetTelemetryDashboardTimeseriesQueryHandler,
|
|
15048
17449
|
GetRunStateQueryHandler,
|
|
15049
17450
|
GetWorkflowRunDetailQueryHandler,
|
|
15050
17451
|
GetWorkflowDebuggerOverlayQueryHandler,
|
|
@@ -15082,6 +17483,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15082
17483
|
DevHonoApiRouteRegistrar,
|
|
15083
17484
|
OAuth2HonoApiRouteRegistrar,
|
|
15084
17485
|
RunHonoApiRouteRegistrar,
|
|
17486
|
+
TelemetryHonoApiRouteRegistrar,
|
|
15085
17487
|
UserHonoApiRouteRegistrar,
|
|
15086
17488
|
WebhookHonoApiRouteRegistrar,
|
|
15087
17489
|
WhitelabelHonoApiRouteRegistrar,
|
|
@@ -15156,6 +17558,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15156
17558
|
container$1.registerInstance(CoreTokens.WorkflowActivationPolicy, runtimeWorkflowActivationPolicy);
|
|
15157
17559
|
new EngineRuntimeRegistrar().register(container$1, {
|
|
15158
17560
|
resolveEngineExecutionLimits: () => inputs.appConfig.engineExecutionLimits,
|
|
17561
|
+
workflowPolicyRuntimeDefaults: this.createWorkflowPolicyRuntimeDefaults(inputs.appConfig),
|
|
15159
17562
|
webhookTriggerMatcherProvider: { createMatcher: (dependencyContainer) => {
|
|
15160
17563
|
const webhookRoutingLogger = dependencyContainer.resolve(ServerLoggerFactory).create("codemation.webhooks.routing");
|
|
15161
17564
|
return new WorkflowRepositoryWebhookTriggerMatcher(dependencyContainer.resolve(CoreTokens.WorkflowRepository), dependencyContainer.resolve(CoreTokens.WorkflowActivationPolicy), {
|
|
@@ -15244,6 +17647,22 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15244
17647
|
}) });
|
|
15245
17648
|
}
|
|
15246
17649
|
registerRepositoriesAndBuses(container$1) {
|
|
17650
|
+
container$1.register(OtelIdentityFactory, { useClass: OtelIdentityFactory });
|
|
17651
|
+
container$1.register(TelemetryPrivacyPolicy, { useClass: TelemetryPrivacyPolicy });
|
|
17652
|
+
container$1.register(TelemetryEnricherChain, { useClass: TelemetryEnricherChain });
|
|
17653
|
+
container$1.register(TelemetryRetentionTimestampFactory, { useClass: TelemetryRetentionTimestampFactory });
|
|
17654
|
+
container$1.register(TelemetryQueryService, { useClass: TelemetryQueryService });
|
|
17655
|
+
container$1.register(NoOpTelemetryExporter, { useClass: NoOpTelemetryExporter });
|
|
17656
|
+
container$1.register(CompositeTelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => new CompositeTelemetryExporter([dependencyContainer.resolve(NoOpTelemetryExporter)])) });
|
|
17657
|
+
container$1.register(OtelExecutionTelemetryFactory, { useClass: OtelExecutionTelemetryFactory });
|
|
17658
|
+
container$1.register(InMemoryRunTraceContextRepository, { useClass: InMemoryRunTraceContextRepository });
|
|
17659
|
+
container$1.register(InMemoryTelemetrySpanStore, { useClass: InMemoryTelemetrySpanStore });
|
|
17660
|
+
container$1.register(InMemoryTelemetryArtifactStore, { useClass: InMemoryTelemetryArtifactStore });
|
|
17661
|
+
container$1.register(InMemoryTelemetryMetricPointStore, { useClass: InMemoryTelemetryMetricPointStore });
|
|
17662
|
+
container$1.register(PrismaRunTraceContextRepository, { useClass: PrismaRunTraceContextRepository });
|
|
17663
|
+
container$1.register(PrismaTelemetrySpanStore, { useClass: PrismaTelemetrySpanStore });
|
|
17664
|
+
container$1.register(PrismaTelemetryArtifactStore, { useClass: PrismaTelemetryArtifactStore });
|
|
17665
|
+
container$1.register(PrismaTelemetryMetricPointStore, { useClass: PrismaTelemetryMetricPointStore });
|
|
15247
17666
|
container$1.register(WorkflowDefinitionRepositoryAdapter, { useClass: WorkflowDefinitionRepositoryAdapter });
|
|
15248
17667
|
container$1.register(InMemoryWorkflowRunRepository, { useClass: InMemoryWorkflowRunRepository });
|
|
15249
17668
|
container$1.register(InMemoryTriggerSetupStateRepository, { useClass: InMemoryTriggerSetupStateRepository });
|
|
@@ -15264,6 +17683,7 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15264
17683
|
container$1.register(ApplicationTokens.QueryBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryQueryBus)) });
|
|
15265
17684
|
container$1.register(ApplicationTokens.CommandBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryCommandBus)) });
|
|
15266
17685
|
container$1.register(ApplicationTokens.DomainEventBus, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(InMemoryDomainEventBus)) });
|
|
17686
|
+
container$1.register(ApplicationTokens.TelemetryExporter, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(CompositeTelemetryExporter)) });
|
|
15267
17687
|
}
|
|
15268
17688
|
registerApplicationServicesAndRoutes(container$1) {
|
|
15269
17689
|
container$1.register(DevBootstrapSummaryAssembler, { useClass: DevBootstrapSummaryAssembler });
|
|
@@ -15278,6 +17698,8 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15278
17698
|
registerOperationalInfrastructure(container$1) {
|
|
15279
17699
|
container$1.register(ApplicationTokens.WorkflowWebsocketPublisher, { useFactory: instanceCachingFactory((dependencyContainer) => dependencyContainer.resolve(WorkflowWebsocketServer)) });
|
|
15280
17700
|
container$1.register(WorkflowRunEventWebsocketRelay, { useClass: WorkflowRunEventWebsocketRelay });
|
|
17701
|
+
container$1.register(RunEventBusTelemetryReporter, { useClass: RunEventBusTelemetryReporter });
|
|
17702
|
+
container$1.register(WorkflowRunRetentionPruneScheduler, { useClass: WorkflowRunRetentionPruneScheduler });
|
|
15281
17703
|
}
|
|
15282
17704
|
async registerRuntimeInfrastructure(container$1, appConfig) {
|
|
15283
17705
|
const queuePrefix = appConfig.scheduler.queuePrefix ?? appConfig.eventing.queuePrefix ?? "codemation";
|
|
@@ -15286,7 +17708,6 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15286
17708
|
const binaryStorage = this.createBinaryStorage(appConfig.repoRoot);
|
|
15287
17709
|
container$1.registerInstance(CoreTokens.RunDataFactory, new InMemoryRunDataFactory());
|
|
15288
17710
|
container$1.registerInstance(CoreTokens.BinaryStorage, binaryStorage);
|
|
15289
|
-
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage));
|
|
15290
17711
|
container$1.registerInstance(ApplicationTokens.Clock, new SystemClock());
|
|
15291
17712
|
if (appConfig.persistence.kind === "none") {
|
|
15292
17713
|
const workflowRunRepository$1 = container$1.resolve(InMemoryWorkflowRunRepository);
|
|
@@ -15296,6 +17717,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15296
17717
|
container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, container$1.resolve(InMemoryWorkflowDebuggerOverlayRepository));
|
|
15297
17718
|
container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(InMemoryWorkflowActivationRepository));
|
|
15298
17719
|
container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(InMemoryCredentialStore));
|
|
17720
|
+
container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, container$1.resolve(InMemoryRunTraceContextRepository));
|
|
17721
|
+
container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, container$1.resolve(InMemoryTelemetrySpanStore));
|
|
17722
|
+
container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, container$1.resolve(InMemoryTelemetryArtifactStore));
|
|
17723
|
+
container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, container$1.resolve(InMemoryTelemetryMetricPointStore));
|
|
17724
|
+
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
|
|
15299
17725
|
this.registerRuntimeNodeActivationScheduler(container$1);
|
|
15300
17726
|
return { ownedPrismaClient: null };
|
|
15301
17727
|
}
|
|
@@ -15305,6 +17731,10 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15305
17731
|
const workflowRunRepository = childContainer.resolve(PrismaWorkflowRunRepository);
|
|
15306
17732
|
const triggerSetupStateRepository = childContainer.resolve(PrismaTriggerSetupStateRepository);
|
|
15307
17733
|
const workflowDebuggerOverlayRepository = childContainer.resolve(PrismaWorkflowDebuggerOverlayRepository);
|
|
17734
|
+
const runTraceContextRepository = childContainer.resolve(PrismaRunTraceContextRepository);
|
|
17735
|
+
const telemetrySpanStore = childContainer.resolve(PrismaTelemetrySpanStore);
|
|
17736
|
+
const telemetryArtifactStore = childContainer.resolve(PrismaTelemetryArtifactStore);
|
|
17737
|
+
const telemetryMetricPointStore = childContainer.resolve(PrismaTelemetryMetricPointStore);
|
|
15308
17738
|
container$1.registerInstance(PrismaDatabaseClientToken, prismaOwnership.prismaClient);
|
|
15309
17739
|
container$1.registerInstance(ApplicationTokens.PrismaClient, prismaOwnership.prismaClient);
|
|
15310
17740
|
container$1.registerInstance(CoreTokens.WorkflowExecutionRepository, new EventPublishingWorkflowExecutionRepository(workflowRunRepository, eventBus));
|
|
@@ -15313,6 +17743,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15313
17743
|
container$1.registerInstance(ApplicationTokens.WorkflowDebuggerOverlayRepository, workflowDebuggerOverlayRepository);
|
|
15314
17744
|
container$1.registerInstance(ApplicationTokens.WorkflowActivationRepository, container$1.resolve(PrismaWorkflowActivationRepository));
|
|
15315
17745
|
container$1.registerInstance(ApplicationTokens.CredentialStore, container$1.resolve(PrismaCredentialStore));
|
|
17746
|
+
container$1.registerInstance(ApplicationTokens.RunTraceContextRepository, runTraceContextRepository);
|
|
17747
|
+
container$1.registerInstance(ApplicationTokens.TelemetrySpanStore, telemetrySpanStore);
|
|
17748
|
+
container$1.registerInstance(ApplicationTokens.TelemetryArtifactStore, telemetryArtifactStore);
|
|
17749
|
+
container$1.registerInstance(ApplicationTokens.TelemetryMetricPointStore, telemetryMetricPointStore);
|
|
17750
|
+
container$1.registerInstance(CoreTokens.ExecutionContextFactory, new DefaultExecutionContextFactory(binaryStorage, new LazyExecutionTelemetryFactory(() => container$1.resolve(OtelExecutionTelemetryFactory)), new CatalogBackedCostTrackingTelemetryFactory(new StaticCostCatalog(FrameworkCostCatalogEntries))));
|
|
15316
17751
|
if (appConfig.scheduler.kind === "bullmq") container$1.registerInstance(ApplicationTokens.WorkerRuntimeScheduler, new BullmqScheduler({ url: this.requireRedisUrl(appConfig.scheduler.redisUrl) }, queuePrefix));
|
|
15317
17752
|
this.registerRuntimeNodeActivationScheduler(container$1);
|
|
15318
17753
|
return { ownedPrismaClient: prismaOwnership.ownedPrismaClient };
|
|
@@ -15344,6 +17779,15 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15344
17779
|
return new DefaultDrivingScheduler(new ConfigDrivenOffloadPolicy(), dependencyContainer.resolve(ApplicationTokens.WorkerRuntimeScheduler), inlineScheduler);
|
|
15345
17780
|
}) });
|
|
15346
17781
|
}
|
|
17782
|
+
createWorkflowPolicyRuntimeDefaults(appConfig) {
|
|
17783
|
+
return {
|
|
17784
|
+
retentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_RUN_RETENTION_DEFAULT_SECONDS),
|
|
17785
|
+
binaryRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_BINARY_RETENTION_DEFAULT_SECONDS),
|
|
17786
|
+
telemetrySpanRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_SPAN_RETENTION_DEFAULT_SECONDS),
|
|
17787
|
+
telemetryArtifactRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_ARTIFACT_RETENTION_DEFAULT_SECONDS),
|
|
17788
|
+
telemetryMetricRetentionSeconds: this.readPositiveInteger(appConfig.env.CODEMATION_TELEMETRY_METRIC_RETENTION_DEFAULT_SECONDS)
|
|
17789
|
+
};
|
|
17790
|
+
}
|
|
15347
17791
|
createBinaryStorage(repoRoot) {
|
|
15348
17792
|
if (!repoRoot) return new InMemoryBinaryStorage();
|
|
15349
17793
|
return new LocalFilesystemBinaryStorage(`${repoRoot}/.codemation/binary`);
|
|
@@ -15362,6 +17806,11 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15362
17806
|
if (!redisUrl) throw new Error("Redis-backed runtime requires runtime.eventBus.redisUrl or REDIS_URL.");
|
|
15363
17807
|
return redisUrl;
|
|
15364
17808
|
}
|
|
17809
|
+
readPositiveInteger(value) {
|
|
17810
|
+
if (!value) return;
|
|
17811
|
+
const parsed = Number(value);
|
|
17812
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
|
|
17813
|
+
}
|
|
15365
17814
|
synchronizeLiveWorkflowRepository(container$1, workflows) {
|
|
15366
17815
|
container$1.resolve(CoreTokens.LiveWorkflowRepository).setWorkflows(workflows);
|
|
15367
17816
|
if (container$1.isRegistered(WebhookEndpointPathValidator, true)) container$1.resolve(WebhookEndpointPathValidator).validateAndWarn(workflows);
|
|
@@ -15369,5 +17818,5 @@ var AppContainerFactory = class AppContainerFactory {
|
|
|
15369
17818
|
};
|
|
15370
17819
|
|
|
15371
17820
|
//#endregion
|
|
15372
|
-
export {
|
|
15373
|
-
//# sourceMappingURL=AppContainerFactory-
|
|
17821
|
+
export { GetWorkflowSummariesQuery as C, ListUserAccountsQuery as D, UpsertLocalBootstrapUserCommand as E, WorkflowPolicyUiPresentationFactory as S, RunBinaryAttachmentLookupService as T, FrontendAppConfigFactory as _, AppContainerLifecycle as a, ApiPaths as b, WebhookHttpRouteHandler as c, OAuth2HttpRouteHandler as d, CredentialHttpRouteHandler as f, InternalAuthBootstrapFactory as g, PublicFrontendBootstrapFactory as h, DatabaseMigrations as i, RequestToWebhookItemMapper as l, BinaryHttpRouteHandler as m, WorkerRuntime as n, WorkflowRunRetentionPruneScheduler as o, CodemationHonoApiApp as p, FrontendRuntime as r, WorkflowHttpRouteHandler as s, AppContainerFactory as t, RunHttpRouteHandler as u, CodemationFrontendAuthSnapshotFactory as v, GetWorkflowDetailQuery as w, WorkflowDefinitionMapper as x, WorkflowWebsocketServer as y };
|
|
17822
|
+
//# sourceMappingURL=AppContainerFactory-D9je1sSV.js.map
|