@tradejs/cli 3.1.29-beta.262 → 3.1.29-beta.263
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/dist/cli.js +864 -1424
- package/dist/lib/runtimeEvidenceArtifacts.js +3 -416
- package/dist/lib/runtimeEvidenceCompositionSnapshots.js +42 -211
- package/dist/lib/runtimeEvidenceCompositions.js +33 -310
- package/dist/lib/runtimeEvidenceDeployment.js +3 -315
- package/dist/lib/runtimeEvidenceProducer.js +3 -77
- package/dist/lib/runtimeEvidenceSync.js +32 -299
- package/dist/lib/runtimeFeedbackArtifacts.js +3 -545
- package/dist/lib/runtimeFeedbackNotification.js +7 -195
- package/dist/lib/runtimeFeedbackReplay.js +26 -525
- package/dist/lib/runtimeFeedbackSync.js +26 -219
- package/dist/lib/runtimeScorecard.js +5 -163
- package/dist/scripts/backtest.js +6 -1
- package/dist/scripts/mcpWorker.js +273 -0
- package/dist/scripts/replay.js +14 -250
- package/dist/scripts/replayRunner.js +14 -250
- package/dist/scripts/runtimeEvidence.js +47 -597
- package/dist/scripts/runtimeEvidenceSync.js +29 -296
- package/dist/scripts/runtimeFeedbackNotify.js +10 -188
- package/dist/scripts/runtimeFeedbackReplay.js +29 -528
- package/dist/scripts/runtimeFeedbackSync.js +28 -221
- package/dist/scripts/runtimeScorecard.js +88 -503
- package/dist/scripts/signals.js +55 -224
- package/dist/scripts/signalsDaemon.js +55 -224
- package/package.json +7 -7
|
@@ -17,6 +17,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
17
17
|
}
|
|
18
18
|
return to;
|
|
19
19
|
};
|
|
20
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
20
21
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
22
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
23
|
// file that has been converted to a CommonJS file using a Babel-
|
|
@@ -44,7 +45,7 @@ var import_data4 = require("@tradejs/core/data");
|
|
|
44
45
|
var import_time7 = require("@tradejs/core/time");
|
|
45
46
|
var import_redis6 = require("@tradejs/infra/redis");
|
|
46
47
|
var import_candles = require("@tradejs/infra/timescale/candles");
|
|
47
|
-
var
|
|
48
|
+
var import_runtimeStrategies3 = require("@tradejs/node/runtimeStrategies");
|
|
48
49
|
var import_strategies5 = require("@tradejs/node/strategies");
|
|
49
50
|
|
|
50
51
|
// src/lib/runFormatting.ts
|
|
@@ -4450,245 +4451,8 @@ var runtimeLineagesMatch = (left, right) => left != null && right != null && run
|
|
|
4450
4451
|
var runtimeLineagesComparable = (left, right) => runtimeLineagesMatch(left, right) && typeof left?.maxLossValue === "number" && Number.isFinite(left.maxLossValue) && typeof right?.maxLossValue === "number" && Number.isFinite(right.maxLossValue) && left.maxLossValue === right.maxLossValue;
|
|
4451
4452
|
|
|
4452
4453
|
// src/lib/runtimeEvidenceDeployment.ts
|
|
4453
|
-
var
|
|
4454
|
-
|
|
4455
|
-
var isNonEmptyString = (value) => typeof value === "string" && value.trim().length > 0;
|
|
4456
|
-
var isPackageVersionMap = (value) => isRecord(value) && Object.keys(value).length > 0 && Object.entries(value).every(
|
|
4457
|
-
([name, version]) => name.startsWith("@tradejs/") && isNonEmptyString(version)
|
|
4458
|
-
);
|
|
4459
|
-
var INTERVALS = /* @__PURE__ */ new Set([
|
|
4460
|
-
"1",
|
|
4461
|
-
"3",
|
|
4462
|
-
"5",
|
|
4463
|
-
"15",
|
|
4464
|
-
"30",
|
|
4465
|
-
"60",
|
|
4466
|
-
"120",
|
|
4467
|
-
"240",
|
|
4468
|
-
"360",
|
|
4469
|
-
"720",
|
|
4470
|
-
"D",
|
|
4471
|
-
"W",
|
|
4472
|
-
"M"
|
|
4473
|
-
]);
|
|
4474
|
-
var UNIVERSES = /* @__PURE__ */ new Set(["crypto", "tradfi"]);
|
|
4475
|
-
var isRuntimeStrategySelection = (value) => value === void 0 || isRecord(value) && Object.keys(value).length === 1 && Object.keys(value).every((key) => key === "tickers") && Array.isArray(value.tickers) && value.tickers.length > 0 && value.tickers.every((ticker) => isNonEmptyString(ticker));
|
|
4476
|
-
var samePackageVersions = (left, right) => {
|
|
4477
|
-
if (!left || !right) return false;
|
|
4478
|
-
const leftEntries = Object.entries(left).sort(
|
|
4479
|
-
([a], [b]) => a.localeCompare(b)
|
|
4480
|
-
);
|
|
4481
|
-
const rightEntries = Object.entries(right).sort(
|
|
4482
|
-
([a], [b]) => a.localeCompare(b)
|
|
4483
|
-
);
|
|
4484
|
-
return JSON.stringify(leftEntries) === JSON.stringify(rightEntries);
|
|
4485
|
-
};
|
|
4486
|
-
var runtimeLineageMatchesStrategySnapshot = ({
|
|
4487
|
-
lineage,
|
|
4488
|
-
deployment,
|
|
4489
|
-
strategy
|
|
4490
|
-
}) => lineage?.schemaVersion === 3 && lineage.strategyRevision === strategy.strategyRevision && lineage.deploymentCompositionId === deployment.deploymentCompositionId && lineage.strategyPackageVersion === strategy.strategyPackageVersion && lineage.runtimePackageVersion === strategy.runtimePackageVersion && samePackageVersions(
|
|
4491
|
-
lineage.strategyDependencyVersions,
|
|
4492
|
-
strategy.strategyDependencyVersions
|
|
4493
|
-
);
|
|
4494
|
-
var parseRuntimeEvidenceDeploymentSnapshot = (value) => {
|
|
4495
|
-
if (!isRecord(value) || value.schemaVersion !== 2 || !isNonEmptyString(value.id) || !isNonEmptyString(value.deploymentCompositionId) || !/^dc1:[a-f0-9]{16}$/.test(value.deploymentCompositionId) || !isNonEmptyString(value.label) || !isNonEmptyString(value.connectorName) || !isNonEmptyString(value.provider) || !isNonEmptyString(value.accountId) || typeof value.enabled !== "boolean" || !Array.isArray(value.strategies)) {
|
|
4496
|
-
throw new Error(
|
|
4497
|
-
"Runtime evidence deployment snapshot is missing or invalid"
|
|
4498
|
-
);
|
|
4499
|
-
}
|
|
4500
|
-
const strategies = value.strategies.map((candidate) => {
|
|
4501
|
-
if (!isRecord(candidate) || !isNonEmptyString(candidate.strategyName) || !isNonEmptyString(candidate.strategyRevision) || !/^sr1:[a-f0-9]{16}$/.test(candidate.strategyRevision) || typeof candidate.enabled !== "boolean" || !["active", "entries_paused"].includes(String(candidate.controlState)) || !INTERVALS.has(String(candidate.interval)) || !UNIVERSES.has(String(candidate.universe)) || !isNonEmptyString(candidate.strategyPackage) || !isNonEmptyString(candidate.strategyPackageVersion) || !isPackageVersionMap(candidate.strategyDependencyVersions) || !isNonEmptyString(candidate.runtimePackageVersion) || !isRecord(candidate.strategyConfig) || !isRuntimeStrategySelection(candidate.selection)) {
|
|
4502
|
-
throw new Error(
|
|
4503
|
-
"Runtime evidence deployment strategy snapshot is invalid"
|
|
4504
|
-
);
|
|
4505
|
-
}
|
|
4506
|
-
if (String(candidate.strategyConfig.INTERVAL) !== String(candidate.interval) || String(candidate.strategyConfig.UNIVERSE) !== String(candidate.universe)) {
|
|
4507
|
-
throw new Error(
|
|
4508
|
-
`Runtime evidence strategy config does not match its scope: ${candidate.strategyName}`
|
|
4509
|
-
);
|
|
4510
|
-
}
|
|
4511
|
-
if (candidate.accountId != null && (!isNonEmptyString(candidate.accountId) || candidate.accountId !== value.accountId)) {
|
|
4512
|
-
throw new Error(
|
|
4513
|
-
`Runtime evidence strategy account does not match deployment: ${candidate.strategyName}`
|
|
4514
|
-
);
|
|
4515
|
-
}
|
|
4516
|
-
return candidate;
|
|
4517
|
-
});
|
|
4518
|
-
const identities = /* @__PURE__ */ new Set();
|
|
4519
|
-
for (const strategy of strategies) {
|
|
4520
|
-
if (identities.has(strategy.strategyName)) {
|
|
4521
|
-
throw new Error(
|
|
4522
|
-
`Duplicate runtime evidence strategy: ${strategy.strategyName}`
|
|
4523
|
-
);
|
|
4524
|
-
}
|
|
4525
|
-
identities.add(strategy.strategyName);
|
|
4526
|
-
}
|
|
4527
|
-
return {
|
|
4528
|
-
...value,
|
|
4529
|
-
strategies
|
|
4530
|
-
};
|
|
4531
|
-
};
|
|
4532
|
-
var activeRuntimeEvidenceStrategies = (deployment) => deployment.enabled ? deployment.strategies.filter((strategy) => strategy.enabled) : [];
|
|
4533
|
-
var unwrapRuntimeEvidenceRows = (value, field) => (Array.isArray(value) ? value : []).map((candidate) => {
|
|
4534
|
-
const record = isRecord(candidate) ? candidate : null;
|
|
4535
|
-
const nested = record && isRecord(record[field]) ? record[field] : null;
|
|
4536
|
-
return nested ?? record;
|
|
4537
|
-
}).filter((record) => record != null);
|
|
4538
|
-
var assertCurrentRuntimeEvidenceArtifact = (artifact) => {
|
|
4539
|
-
if (!isRecord(artifact) || artifact.reportType !== "runtime-evidence") {
|
|
4540
|
-
throw new Error("Invalid runtime evidence artifact");
|
|
4541
|
-
}
|
|
4542
|
-
const deployment = parseRuntimeEvidenceDeploymentSnapshot(
|
|
4543
|
-
artifact.deployment
|
|
4544
|
-
);
|
|
4545
|
-
const activeStrategies = activeRuntimeEvidenceStrategies(deployment);
|
|
4546
|
-
if (activeStrategies.length === 0) {
|
|
4547
|
-
throw new Error("Runtime evidence deployment has no enabled strategies");
|
|
4548
|
-
}
|
|
4549
|
-
const runtime = isRecord(artifact.runtime) ? artifact.runtime : null;
|
|
4550
|
-
if (!runtime) {
|
|
4551
|
-
throw new Error("Runtime evidence payload is missing");
|
|
4552
|
-
}
|
|
4553
|
-
if ("strategyConfigs" in runtime) {
|
|
4554
|
-
throw new Error(
|
|
4555
|
-
"Runtime evidence payload contains removed strategyConfigs data"
|
|
4556
|
-
);
|
|
4557
|
-
}
|
|
4558
|
-
if ("evaluationStatsBuckets" in runtime) {
|
|
4559
|
-
throw new Error(
|
|
4560
|
-
"Runtime evidence payload contains removed lineage-less evaluationStatsBuckets data"
|
|
4561
|
-
);
|
|
4562
|
-
}
|
|
4563
|
-
const rowFields = [
|
|
4564
|
-
"trades",
|
|
4565
|
-
"signals",
|
|
4566
|
-
"evaluations",
|
|
4567
|
-
"lineageScopes"
|
|
4568
|
-
];
|
|
4569
|
-
for (const field of rowFields) {
|
|
4570
|
-
if (!Array.isArray(runtime[field])) {
|
|
4571
|
-
throw new Error(`Runtime evidence payload ${field} must be an array`);
|
|
4572
|
-
}
|
|
4573
|
-
}
|
|
4574
|
-
const snapshots = new Map(
|
|
4575
|
-
activeStrategies.map((strategy) => [strategy.strategyName, strategy])
|
|
4576
|
-
);
|
|
4577
|
-
const assertRows = (label, rows, lineageField) => {
|
|
4578
|
-
for (const row of rows) {
|
|
4579
|
-
const strategyName = String(row.strategy ?? "").trim();
|
|
4580
|
-
const strategy = snapshots.get(strategyName);
|
|
4581
|
-
if (!strategy || row.deploymentId !== deployment.id || row.accountId !== deployment.accountId || !runtimeLineageMatchesStrategySnapshot({
|
|
4582
|
-
lineage: isRecord(row[lineageField]) ? row[lineageField] : void 0,
|
|
4583
|
-
deployment,
|
|
4584
|
-
strategy
|
|
4585
|
-
})) {
|
|
4586
|
-
throw new Error(
|
|
4587
|
-
`Runtime evidence ${label} row is outside the current embedded deployment lineage`
|
|
4588
|
-
);
|
|
4589
|
-
}
|
|
4590
|
-
}
|
|
4591
|
-
};
|
|
4592
|
-
assertRows(
|
|
4593
|
-
"trade",
|
|
4594
|
-
unwrapRuntimeEvidenceRows(runtime.trades, "trade"),
|
|
4595
|
-
"runtimeLineage"
|
|
4596
|
-
);
|
|
4597
|
-
assertRows(
|
|
4598
|
-
"signal",
|
|
4599
|
-
unwrapRuntimeEvidenceRows(runtime.signals, "signal"),
|
|
4600
|
-
"runtimeLineage"
|
|
4601
|
-
);
|
|
4602
|
-
assertRows(
|
|
4603
|
-
"evaluation",
|
|
4604
|
-
unwrapRuntimeEvidenceRows(runtime.evaluations, "evaluation"),
|
|
4605
|
-
"runtimeLineage"
|
|
4606
|
-
);
|
|
4607
|
-
assertRows(
|
|
4608
|
-
"lineage scope",
|
|
4609
|
-
unwrapRuntimeEvidenceRows(runtime.lineageScopes, "lineageScope"),
|
|
4610
|
-
"lineage"
|
|
4611
|
-
);
|
|
4612
|
-
return deployment;
|
|
4613
|
-
};
|
|
4614
|
-
var resolveRuntimeEvidenceTickerUniverse = ({
|
|
4615
|
-
deployment,
|
|
4616
|
-
lineageScopes,
|
|
4617
|
-
fallbackTickers
|
|
4618
|
-
}) => {
|
|
4619
|
-
const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
|
|
4620
|
-
if (declaredTickers.length > 0) {
|
|
4621
|
-
return {
|
|
4622
|
-
...deployment,
|
|
4623
|
-
tickers: [
|
|
4624
|
-
...new Set(declaredTickers.map((ticker) => ticker.trim()))
|
|
4625
|
-
].sort()
|
|
4626
|
-
};
|
|
4627
|
-
}
|
|
4628
|
-
const activeStrategies = activeRuntimeEvidenceStrategies(deployment);
|
|
4629
|
-
if (activeStrategies.length > 0 && activeStrategies.every((strategy) => strategy.selection?.tickers?.length)) {
|
|
4630
|
-
return {
|
|
4631
|
-
...deployment,
|
|
4632
|
-
tickers: [
|
|
4633
|
-
...new Set(
|
|
4634
|
-
activeStrategies.flatMap(
|
|
4635
|
-
(strategy) => strategy.selection?.tickers ?? []
|
|
4636
|
-
)
|
|
4637
|
-
)
|
|
4638
|
-
].sort()
|
|
4639
|
-
};
|
|
4640
|
-
}
|
|
4641
|
-
const strategiesByName = new Map(
|
|
4642
|
-
activeStrategies.map((strategy) => [strategy.strategyName, strategy])
|
|
4643
|
-
);
|
|
4644
|
-
const tickers = /* @__PURE__ */ new Set();
|
|
4645
|
-
for (const scope of lineageScopes) {
|
|
4646
|
-
const strategy = strategiesByName.get(scope.strategy);
|
|
4647
|
-
if (!strategy || scope.deploymentId !== deployment.id || scope.accountId !== deployment.accountId || !isNonEmptyString(scope.symbol) || !runtimeLineageMatchesStrategySnapshot({
|
|
4648
|
-
lineage: scope.lineage,
|
|
4649
|
-
deployment,
|
|
4650
|
-
strategy
|
|
4651
|
-
})) {
|
|
4652
|
-
continue;
|
|
4653
|
-
}
|
|
4654
|
-
tickers.add(scope.symbol.trim());
|
|
4655
|
-
}
|
|
4656
|
-
if (tickers.size === 0) {
|
|
4657
|
-
const verifiedFallbackTickers = fallbackTickers?.filter(isNonEmptyString) ?? [];
|
|
4658
|
-
if (verifiedFallbackTickers.length > 0) {
|
|
4659
|
-
return {
|
|
4660
|
-
...deployment,
|
|
4661
|
-
tickers: [
|
|
4662
|
-
...new Set(verifiedFallbackTickers.map((ticker) => ticker.trim()))
|
|
4663
|
-
].sort()
|
|
4664
|
-
};
|
|
4665
|
-
}
|
|
4666
|
-
throw new Error(
|
|
4667
|
-
"Runtime evidence has no immutable ticker universe for the embedded deployment composition"
|
|
4668
|
-
);
|
|
4669
|
-
}
|
|
4670
|
-
return { ...deployment, tickers: [...tickers].sort() };
|
|
4671
|
-
};
|
|
4672
|
-
var runtimeDeploymentFromEvidence = (deployment) => ({
|
|
4673
|
-
id: deployment.id,
|
|
4674
|
-
deploymentCompositionId: deployment.deploymentCompositionId,
|
|
4675
|
-
label: deployment.label,
|
|
4676
|
-
connectorName: deployment.connectorName,
|
|
4677
|
-
provider: deployment.provider,
|
|
4678
|
-
accountId: deployment.accountId,
|
|
4679
|
-
enabled: deployment.enabled,
|
|
4680
|
-
strategies: deployment.strategies.map(
|
|
4681
|
-
({ strategyName, strategyRevision, enabled, controlState, selection }) => ({
|
|
4682
|
-
strategyName,
|
|
4683
|
-
strategyRevision,
|
|
4684
|
-
enabled,
|
|
4685
|
-
controlState,
|
|
4686
|
-
...selection ? { selection } : {}
|
|
4687
|
-
})
|
|
4688
|
-
),
|
|
4689
|
-
...deployment.assetClasses ? { assetClasses: [...deployment.assetClasses] } : {},
|
|
4690
|
-
...deployment.tickers ? { tickers: [...deployment.tickers] } : {}
|
|
4691
|
-
});
|
|
4454
|
+
var runtimeEvidenceDeployment_exports = {};
|
|
4455
|
+
__reExport(runtimeEvidenceDeployment_exports, require("@tradejs/node/diagnostics"));
|
|
4692
4456
|
|
|
4693
4457
|
// src/lib/replay/runtimeEvidenceSource.ts
|
|
4694
4458
|
var asRecord = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
@@ -4703,7 +4467,7 @@ var assertRuntimeRowsMatchDeployment = ({
|
|
|
4703
4467
|
deployment
|
|
4704
4468
|
}) => {
|
|
4705
4469
|
const activeStrategies = new Set(
|
|
4706
|
-
activeRuntimeEvidenceStrategies(deployment).map(
|
|
4470
|
+
(0, runtimeEvidenceDeployment_exports.activeRuntimeEvidenceStrategies)(deployment).map(
|
|
4707
4471
|
({ strategyName }) => strategyName
|
|
4708
4472
|
)
|
|
4709
4473
|
);
|
|
@@ -4727,7 +4491,7 @@ var readRuntimeEvidenceArtifact = async ({
|
|
|
4727
4491
|
if (!root || !runtime) {
|
|
4728
4492
|
throw new Error(`Invalid runtime evidence JSON: ${resolvedPath}`);
|
|
4729
4493
|
}
|
|
4730
|
-
assertCurrentRuntimeEvidenceArtifact(root);
|
|
4494
|
+
(0, runtimeEvidenceDeployment_exports.assertCurrentRuntimeEvidenceArtifact)(root);
|
|
4731
4495
|
const rootWindow = asRecord(root.window);
|
|
4732
4496
|
const runtimeWindow = asRecord(runtime.window);
|
|
4733
4497
|
return {
|
|
@@ -4737,8 +4501,8 @@ var readRuntimeEvidenceArtifact = async ({
|
|
|
4737
4501
|
userName: String(root.userName ?? runtime.userName ?? "").trim(),
|
|
4738
4502
|
startTime: asFiniteNumber(rootWindow?.startTime) ?? asFiniteNumber(runtimeWindow?.startTime),
|
|
4739
4503
|
endTime: asFiniteNumber(rootWindow?.endTime) ?? asFiniteNumber(runtimeWindow?.endTime),
|
|
4740
|
-
deployment: resolveRuntimeEvidenceTickerUniverse({
|
|
4741
|
-
deployment: parseRuntimeEvidenceDeploymentSnapshot(root.deployment),
|
|
4504
|
+
deployment: (0, runtimeEvidenceDeployment_exports.resolveRuntimeEvidenceTickerUniverse)({
|
|
4505
|
+
deployment: (0, runtimeEvidenceDeployment_exports.parseRuntimeEvidenceDeploymentSnapshot)(root.deployment),
|
|
4742
4506
|
lineageScopes: unwrapRows(
|
|
4743
4507
|
runtime.lineageScopes,
|
|
4744
4508
|
"lineageScope"
|
|
@@ -4999,7 +4763,7 @@ var import_redis3 = require("@tradejs/infra/redis");
|
|
|
4999
4763
|
var import_connectors6 = require("@tradejs/node/connectors");
|
|
5000
4764
|
var import_cli4 = require("@tradejs/node/cli");
|
|
5001
4765
|
var import_strategies4 = require("@tradejs/node/strategies");
|
|
5002
|
-
var
|
|
4766
|
+
var import_runtimeStrategies2 = require("@tradejs/node/runtimeStrategies");
|
|
5003
4767
|
|
|
5004
4768
|
// src/lib/replay/portfolioReplayConnector.ts
|
|
5005
4769
|
var import_constants3 = require("@tradejs/core/constants");
|
|
@@ -5990,7 +5754,7 @@ var loadRuntimeStrategies = async (runtimeStrategies) => {
|
|
|
5990
5754
|
if (!strategyCreator) {
|
|
5991
5755
|
throw new Error(`Unknown strategy: ${strategyName}`);
|
|
5992
5756
|
}
|
|
5993
|
-
const installed = await (0,
|
|
5757
|
+
const installed = await (0, import_runtimeStrategies2.getRuntimeStrategyPackageMetadata)({
|
|
5994
5758
|
strategyName,
|
|
5995
5759
|
projectRoot: replayProjectRoot,
|
|
5996
5760
|
strategyModule
|
|
@@ -9909,8 +9673,8 @@ var replayBacktest = async () => {
|
|
|
9909
9673
|
);
|
|
9910
9674
|
}
|
|
9911
9675
|
const replayComposition = evidenceMetadata ? {
|
|
9912
|
-
deployment: runtimeDeploymentFromEvidence(evidenceMetadata.deployment),
|
|
9913
|
-
strategies: activeRuntimeEvidenceStrategies(
|
|
9676
|
+
deployment: (0, runtimeEvidenceDeployment_exports.runtimeDeploymentFromEvidence)(evidenceMetadata.deployment),
|
|
9677
|
+
strategies: (0, runtimeEvidenceDeployment_exports.activeRuntimeEvidenceStrategies)(
|
|
9914
9678
|
evidenceMetadata.deployment
|
|
9915
9679
|
).map(
|
|
9916
9680
|
({
|
|
@@ -9962,7 +9726,7 @@ var replayBacktest = async () => {
|
|
|
9962
9726
|
return {
|
|
9963
9727
|
...strategy,
|
|
9964
9728
|
strategyConfig,
|
|
9965
|
-
strategyRevision: (0,
|
|
9729
|
+
strategyRevision: (0, import_runtimeStrategies3.computeStrategyRevision)({
|
|
9966
9730
|
strategyName: strategy.strategyName,
|
|
9967
9731
|
strategyPackage: strategy.strategyPackage,
|
|
9968
9732
|
strategyPackageVersion: strategy.strategyPackageVersion,
|
|
@@ -9972,7 +9736,7 @@ var replayBacktest = async () => {
|
|
|
9972
9736
|
})
|
|
9973
9737
|
};
|
|
9974
9738
|
});
|
|
9975
|
-
const researchDeploymentCompositionId = (0,
|
|
9739
|
+
const researchDeploymentCompositionId = (0, import_runtimeStrategies3.computeDeploymentCompositionId)({
|
|
9976
9740
|
deploymentId: deployment.id,
|
|
9977
9741
|
connectorName: deployment.connectorName,
|
|
9978
9742
|
provider: deployment.provider,
|