@tradejs/cli 3.1.28-beta.255 → 3.1.28-beta.257

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 CHANGED
@@ -14985,7 +14985,8 @@ var init_runtimeEvidenceDeployment = __esm({
14985
14985
  };
14986
14986
  resolveRuntimeEvidenceTickerUniverse = ({
14987
14987
  deployment,
14988
- lineageScopes
14988
+ lineageScopes,
14989
+ fallbackTickers
14989
14990
  }) => {
14990
14991
  const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
14991
14992
  if (declaredTickers.length > 0) {
@@ -15025,6 +15026,15 @@ var init_runtimeEvidenceDeployment = __esm({
15025
15026
  tickers.add(scope.symbol.trim());
15026
15027
  }
15027
15028
  if (tickers.size === 0) {
15029
+ const verifiedFallbackTickers = fallbackTickers?.filter(isNonEmptyString) ?? [];
15030
+ if (verifiedFallbackTickers.length > 0) {
15031
+ return {
15032
+ ...deployment,
15033
+ tickers: [
15034
+ ...new Set(verifiedFallbackTickers.map((ticker) => ticker.trim()))
15035
+ ].sort()
15036
+ };
15037
+ }
15028
15038
  throw new Error(
15029
15039
  "Runtime evidence has no immutable ticker universe for the embedded deployment composition"
15030
15040
  );
@@ -32709,7 +32719,7 @@ var init_runtimeEvidenceCompositions = __esm({
32709
32719
  for (const snapshot of compositionSnapshots) {
32710
32720
  if (snapshot.deployment.id !== currentDeployment.id) continue;
32711
32721
  register({
32712
- deployment: { ...snapshot.deployment, tickers: void 0 },
32722
+ deployment: snapshot.deployment,
32713
32723
  producer: snapshot.producer
32714
32724
  });
32715
32725
  }
@@ -32723,7 +32733,11 @@ var init_runtimeEvidenceCompositions = __esm({
32723
32733
  if (bundle.artifact.producer == null) continue;
32724
32734
  register({
32725
32735
  deployment: { ...deployment, tickers: void 0 },
32726
- producer: parseRuntimeEvidenceProducer(bundle.artifact.producer)
32736
+ producer: parseRuntimeEvidenceProducer(bundle.artifact.producer),
32737
+ // A historical composition may reappear through a position that closes
32738
+ // in this window even without current-window lineage scopes. Its latest
32739
+ // checksum-verified universe is only a fallback; fresh scopes win.
32740
+ ...deployment.tickers?.length ? { fallbackTickers: [...deployment.tickers] } : {}
32727
32741
  });
32728
32742
  }
32729
32743
  const historicalCurrent = snapshots.get(
@@ -32792,7 +32806,7 @@ var init_runtimeEvidenceCompositions = __esm({
32792
32806
  `Runtime evidence has no verified deployment snapshot for composition(s): ${missing.sort().join(", ")}`
32793
32807
  );
32794
32808
  }
32795
- return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer }) => {
32809
+ return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer, fallbackTickers }) => {
32796
32810
  const trades = evidence.trades.filter(
32797
32811
  (row) => belongsToSnapshot(row, deployment)
32798
32812
  );
@@ -32814,6 +32828,7 @@ var init_runtimeEvidenceCompositions = __esm({
32814
32828
  return {
32815
32829
  deployment,
32816
32830
  producer,
32831
+ ...fallbackTickers ? { fallbackTickers } : {},
32817
32832
  trades,
32818
32833
  signals: signals2,
32819
32834
  evaluations,
@@ -32990,7 +33005,8 @@ var init_runtimeEvidence = __esm({
32990
33005
  });
32991
33006
  const deployment = resolveRuntimeEvidenceTickerUniverse({
32992
33007
  deployment: composition.deployment,
32993
- lineageScopes: composition.lineageScopes
33008
+ lineageScopes: composition.lineageScopes,
33009
+ fallbackTickers: composition.fallbackTickers
32994
33010
  });
32995
33011
  return {
32996
33012
  artifact: {
@@ -424,7 +424,7 @@ var loadRuntimeEvidenceCompositionSnapshots = async ({
424
424
  for (const snapshot of compositionSnapshots) {
425
425
  if (snapshot.deployment.id !== currentDeployment.id) continue;
426
426
  register({
427
- deployment: { ...snapshot.deployment, tickers: void 0 },
427
+ deployment: snapshot.deployment,
428
428
  producer: snapshot.producer
429
429
  });
430
430
  }
@@ -438,7 +438,11 @@ var loadRuntimeEvidenceCompositionSnapshots = async ({
438
438
  if (bundle.artifact.producer == null) continue;
439
439
  register({
440
440
  deployment: { ...deployment, tickers: void 0 },
441
- producer: parseRuntimeEvidenceProducer(bundle.artifact.producer)
441
+ producer: parseRuntimeEvidenceProducer(bundle.artifact.producer),
442
+ // A historical composition may reappear through a position that closes
443
+ // in this window even without current-window lineage scopes. Its latest
444
+ // checksum-verified universe is only a fallback; fresh scopes win.
445
+ ...deployment.tickers?.length ? { fallbackTickers: [...deployment.tickers] } : {}
442
446
  });
443
447
  }
444
448
  const historicalCurrent = snapshots.get(
@@ -507,7 +511,7 @@ var splitRuntimeEvidenceByComposition = ({
507
511
  `Runtime evidence has no verified deployment snapshot for composition(s): ${missing.sort().join(", ")}`
508
512
  );
509
513
  }
510
- return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer }) => {
514
+ return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer, fallbackTickers }) => {
511
515
  const trades = evidence.trades.filter(
512
516
  (row) => belongsToSnapshot(row, deployment)
513
517
  );
@@ -529,6 +533,7 @@ var splitRuntimeEvidenceByComposition = ({
529
533
  return {
530
534
  deployment,
531
535
  producer,
536
+ ...fallbackTickers ? { fallbackTickers } : {},
532
537
  trades,
533
538
  signals,
534
539
  evaluations,
@@ -192,7 +192,8 @@ var assertCurrentRuntimeEvidenceArtifact = (artifact) => {
192
192
  };
193
193
  var resolveRuntimeEvidenceTickerUniverse = ({
194
194
  deployment,
195
- lineageScopes
195
+ lineageScopes,
196
+ fallbackTickers
196
197
  }) => {
197
198
  const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
198
199
  if (declaredTickers.length > 0) {
@@ -232,6 +233,15 @@ var resolveRuntimeEvidenceTickerUniverse = ({
232
233
  tickers.add(scope.symbol.trim());
233
234
  }
234
235
  if (tickers.size === 0) {
236
+ const verifiedFallbackTickers = fallbackTickers?.filter(isNonEmptyString) ?? [];
237
+ if (verifiedFallbackTickers.length > 0) {
238
+ return {
239
+ ...deployment,
240
+ tickers: [
241
+ ...new Set(verifiedFallbackTickers.map((ticker) => ticker.trim()))
242
+ ].sort()
243
+ };
244
+ }
235
245
  throw new Error(
236
246
  "Runtime evidence has no immutable ticker universe for the embedded deployment composition"
237
247
  );
@@ -4610,7 +4610,8 @@ var assertCurrentRuntimeEvidenceArtifact = (artifact) => {
4610
4610
  };
4611
4611
  var resolveRuntimeEvidenceTickerUniverse = ({
4612
4612
  deployment,
4613
- lineageScopes
4613
+ lineageScopes,
4614
+ fallbackTickers
4614
4615
  }) => {
4615
4616
  const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
4616
4617
  if (declaredTickers.length > 0) {
@@ -4650,6 +4651,15 @@ var resolveRuntimeEvidenceTickerUniverse = ({
4650
4651
  tickers.add(scope.symbol.trim());
4651
4652
  }
4652
4653
  if (tickers.size === 0) {
4654
+ const verifiedFallbackTickers = fallbackTickers?.filter(isNonEmptyString) ?? [];
4655
+ if (verifiedFallbackTickers.length > 0) {
4656
+ return {
4657
+ ...deployment,
4658
+ tickers: [
4659
+ ...new Set(verifiedFallbackTickers.map((ticker) => ticker.trim()))
4660
+ ].sort()
4661
+ };
4662
+ }
4653
4663
  throw new Error(
4654
4664
  "Runtime evidence has no immutable ticker universe for the embedded deployment composition"
4655
4665
  );
@@ -4613,7 +4613,8 @@ var assertCurrentRuntimeEvidenceArtifact = (artifact) => {
4613
4613
  };
4614
4614
  var resolveRuntimeEvidenceTickerUniverse = ({
4615
4615
  deployment,
4616
- lineageScopes
4616
+ lineageScopes,
4617
+ fallbackTickers
4617
4618
  }) => {
4618
4619
  const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
4619
4620
  if (declaredTickers.length > 0) {
@@ -4653,6 +4654,15 @@ var resolveRuntimeEvidenceTickerUniverse = ({
4653
4654
  tickers.add(scope.symbol.trim());
4654
4655
  }
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
+ }
4656
4666
  throw new Error(
4657
4667
  "Runtime evidence has no immutable ticker universe for the embedded deployment composition"
4658
4668
  );
@@ -552,7 +552,8 @@ var assertCurrentRuntimeEvidenceArtifact = (artifact) => {
552
552
  };
553
553
  var resolveRuntimeEvidenceTickerUniverse = ({
554
554
  deployment,
555
- lineageScopes
555
+ lineageScopes,
556
+ fallbackTickers
556
557
  }) => {
557
558
  const declaredTickers = deployment.tickers?.filter(isNonEmptyString) ?? [];
558
559
  if (declaredTickers.length > 0) {
@@ -592,6 +593,15 @@ var resolveRuntimeEvidenceTickerUniverse = ({
592
593
  tickers.add(scope.symbol.trim());
593
594
  }
594
595
  if (tickers.size === 0) {
596
+ const verifiedFallbackTickers = fallbackTickers?.filter(isNonEmptyString) ?? [];
597
+ if (verifiedFallbackTickers.length > 0) {
598
+ return {
599
+ ...deployment,
600
+ tickers: [
601
+ ...new Set(verifiedFallbackTickers.map((ticker) => ticker.trim()))
602
+ ].sort()
603
+ };
604
+ }
595
605
  throw new Error(
596
606
  "Runtime evidence has no immutable ticker universe for the embedded deployment composition"
597
607
  );
@@ -1035,7 +1045,7 @@ var loadRuntimeEvidenceCompositionSnapshots = async ({
1035
1045
  for (const snapshot of compositionSnapshots) {
1036
1046
  if (snapshot.deployment.id !== currentDeployment.id) continue;
1037
1047
  register({
1038
- deployment: { ...snapshot.deployment, tickers: void 0 },
1048
+ deployment: snapshot.deployment,
1039
1049
  producer: snapshot.producer
1040
1050
  });
1041
1051
  }
@@ -1049,7 +1059,11 @@ var loadRuntimeEvidenceCompositionSnapshots = async ({
1049
1059
  if (bundle.artifact.producer == null) continue;
1050
1060
  register({
1051
1061
  deployment: { ...deployment, tickers: void 0 },
1052
- producer: parseRuntimeEvidenceProducer(bundle.artifact.producer)
1062
+ producer: parseRuntimeEvidenceProducer(bundle.artifact.producer),
1063
+ // A historical composition may reappear through a position that closes
1064
+ // in this window even without current-window lineage scopes. Its latest
1065
+ // checksum-verified universe is only a fallback; fresh scopes win.
1066
+ ...deployment.tickers?.length ? { fallbackTickers: [...deployment.tickers] } : {}
1053
1067
  });
1054
1068
  }
1055
1069
  const historicalCurrent = snapshots.get(
@@ -1118,7 +1132,7 @@ var splitRuntimeEvidenceByComposition = ({
1118
1132
  `Runtime evidence has no verified deployment snapshot for composition(s): ${missing.sort().join(", ")}`
1119
1133
  );
1120
1134
  }
1121
- return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer }) => {
1135
+ return [...observed].filter((compositionId) => snapshots.has(compositionId)).map((compositionId) => snapshots.get(compositionId)).map(({ deployment, producer, fallbackTickers }) => {
1122
1136
  const trades = evidence.trades.filter(
1123
1137
  (row) => belongsToSnapshot(row, deployment)
1124
1138
  );
@@ -1140,6 +1154,7 @@ var splitRuntimeEvidenceByComposition = ({
1140
1154
  return {
1141
1155
  deployment,
1142
1156
  producer,
1157
+ ...fallbackTickers ? { fallbackTickers } : {},
1143
1158
  trades,
1144
1159
  signals,
1145
1160
  evaluations,
@@ -1318,7 +1333,8 @@ var runtimeEvidence = async () => {
1318
1333
  });
1319
1334
  const deployment = resolveRuntimeEvidenceTickerUniverse({
1320
1335
  deployment: composition.deployment,
1321
- lineageScopes: composition.lineageScopes
1336
+ lineageScopes: composition.lineageScopes,
1337
+ fallbackTickers: composition.fallbackTickers
1322
1338
  });
1323
1339
  return {
1324
1340
  artifact: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tradejs/cli",
3
- "version": "3.1.28-beta.255",
3
+ "version": "3.1.28-beta.257",
4
4
  "description": "Official CLI for the TradeJS TypeScript framework: infra setup, backtests, signals, bots, and ML workflows.",
5
5
  "keywords": [
6
6
  "tradejs",
@@ -36,13 +36,13 @@
36
36
  "tradejs": "dist/cli.js"
37
37
  },
38
38
  "dependencies": {
39
- "@tradejs/connectors": "^3.1.28-beta.255",
40
- "@tradejs/core": "^3.1.28-beta.255",
41
- "@tradejs/indicators": "^3.1.28-beta.255",
42
- "@tradejs/infra": "^3.1.28-beta.255",
43
- "@tradejs/node": "^3.1.28-beta.255",
44
- "@tradejs/strategy-kit": "3.0.5",
45
- "@tradejs/types": "^3.1.28-beta.255",
39
+ "@tradejs/connectors": "^3.1.28-beta.257",
40
+ "@tradejs/core": "^3.1.28-beta.257",
41
+ "@tradejs/indicators": "^3.1.28-beta.257",
42
+ "@tradejs/infra": "^3.1.28-beta.257",
43
+ "@tradejs/node": "^3.1.28-beta.257",
44
+ "@tradejs/strategy-kit": "3.0.6",
45
+ "@tradejs/types": "^3.1.28-beta.257",
46
46
  "args": "^5.0.3",
47
47
  "bcryptjs": "^2.4.3",
48
48
  "chalk": "4.1.2",