chain-insights 0.2.24 → 0.2.25

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.cjs CHANGED
@@ -394,7 +394,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
394
394
  }));
395
395
  return;
396
396
  }
397
- const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
397
+ const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
398
398
  const result = await addressRisk(client, {
399
399
  address: opts.address,
400
400
  network: opts.network,
@@ -422,7 +422,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
422
422
  }));
423
423
  return;
424
424
  }
425
- const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
425
+ const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
426
426
  const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
427
427
  const result = await trackFunds(client, config, {
428
428
  trustedAddresses: opts.trustedAddresses,
@@ -445,7 +445,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
445
445
  const { requireWorkspaceRoot } = await Promise.resolve().then(() => require("./output-root-YIbl6PwF.cjs")).then((n) => n.output_root_exports);
446
446
  requireWorkspaceRoot();
447
447
  await withGraphMcpClient("chain-insights-cli-scam-topology", async (client, config) => {
448
- const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
448
+ const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
449
449
  const incidentTimestampMs = optionalNumber(opts.incidentTimestampMs);
450
450
  if (incidentTimestampMs === void 0) throw new Error("incident-timestamp-ms is required");
451
451
  const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
@@ -467,7 +467,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
467
467
  })).addCommand(new commander.Command("stake-insights").description("Explain Bittensor staking behavior around an address, coldkey, or hotkey").requiredOption("--network <network>", "Network to query. Run `cia mcp networks` for supported networks.").option("--address <address>", "Full Bittensor address to inspect as either coldkey or hotkey").option("--coldkey <address>", "Full Bittensor coldkey address to inspect").option("--hotkey <address>", "Full Bittensor hotkey address to inspect").option("--netuid <number>", "Optional subnet netuid filter").option("--start-timestamp-ms <milliseconds>", "Optional inclusive lower activity timestamp bound").option("--end-timestamp-ms <milliseconds>", "Optional inclusive upper activity timestamp bound").option("--start-block <number>", "Optional start block. Current stake graph parity may require timestamp windows instead.").option("--end-block <number>", "Optional end block. Current stake graph parity may require timestamp windows instead.").option("--depth <number>", "Optional expansion depth limit, default 1, max 3").action(async (opts) => {
468
468
  try {
469
469
  await withGraphMcpClient("chain-insights-cli-stake-insights", async (client) => {
470
- const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
470
+ const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
471
471
  const result = await stakeInsights(client, {
472
472
  network: opts.network,
473
473
  address: opts.address,
@@ -495,7 +495,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
495
495
  assertPublicMcpToolName(tool);
496
496
  await withGraphMcpClient("chain-insights-cli-call", async (client, config) => {
497
497
  if (tool === "address_risk") {
498
- const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
498
+ const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
499
499
  const result = await addressRisk(client, {
500
500
  address: String(args["address"] ?? ""),
501
501
  network: String(args["network"] ?? ""),
@@ -505,7 +505,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
505
505
  return;
506
506
  }
507
507
  if (tool === "track_funds") {
508
- const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
508
+ const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
509
509
  const result = await trackFunds(client, config, {
510
510
  trustedAddresses: args["trusted_addresses"] ?? "",
511
511
  untrustedAddresses: args["untrusted_addresses"],
@@ -520,7 +520,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
520
520
  return;
521
521
  }
522
522
  if (tool === "scam_topology") {
523
- const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
523
+ const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
524
524
  const victimAddress = String(args["victim_address"] ?? "").trim();
525
525
  if (!victimAddress) throw new Error("victim_address is required");
526
526
  const incidentTimestampMs = optionalNumberArg(args["incident_timestamp_ms"], "incident_timestamp_ms");
@@ -538,7 +538,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
538
538
  return;
539
539
  }
540
540
  if (tool === "stake_insights") {
541
- const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
541
+ const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
542
542
  const result = await stakeInsights(client, {
543
543
  network: String(args["network"] ?? ""),
544
544
  address: args["address"] === void 0 ? void 0 : String(args["address"]),
package/dist/cli.mjs CHANGED
@@ -392,7 +392,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
392
392
  }));
393
393
  return;
394
394
  }
395
- const { addressRisk } = await import("./public-tools-w7En2m3q.mjs");
395
+ const { addressRisk } = await import("./public-tools-DoRNhMn9.mjs");
396
396
  const result = await addressRisk(client, {
397
397
  address: opts.address,
398
398
  network: opts.network,
@@ -420,7 +420,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
420
420
  }));
421
421
  return;
422
422
  }
423
- const { trackFunds } = await import("./public-tools-w7En2m3q.mjs");
423
+ const { trackFunds } = await import("./public-tools-DoRNhMn9.mjs");
424
424
  const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
425
425
  const result = await trackFunds(client, config, {
426
426
  trustedAddresses: opts.trustedAddresses,
@@ -443,7 +443,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
443
443
  const { requireWorkspaceRoot } = await import("./output-root-BRhzhhXZ.mjs").then((n) => n.t);
444
444
  requireWorkspaceRoot();
445
445
  await withGraphMcpClient("chain-insights-cli-scam-topology", async (client, config) => {
446
- const { scamTopology } = await import("./public-tools-w7En2m3q.mjs");
446
+ const { scamTopology } = await import("./public-tools-DoRNhMn9.mjs");
447
447
  const incidentTimestampMs = optionalNumber(opts.incidentTimestampMs);
448
448
  if (incidentTimestampMs === void 0) throw new Error("incident-timestamp-ms is required");
449
449
  const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
@@ -465,7 +465,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
465
465
  })).addCommand(new Command("stake-insights").description("Explain Bittensor staking behavior around an address, coldkey, or hotkey").requiredOption("--network <network>", "Network to query. Run `cia mcp networks` for supported networks.").option("--address <address>", "Full Bittensor address to inspect as either coldkey or hotkey").option("--coldkey <address>", "Full Bittensor coldkey address to inspect").option("--hotkey <address>", "Full Bittensor hotkey address to inspect").option("--netuid <number>", "Optional subnet netuid filter").option("--start-timestamp-ms <milliseconds>", "Optional inclusive lower activity timestamp bound").option("--end-timestamp-ms <milliseconds>", "Optional inclusive upper activity timestamp bound").option("--start-block <number>", "Optional start block. Current stake graph parity may require timestamp windows instead.").option("--end-block <number>", "Optional end block. Current stake graph parity may require timestamp windows instead.").option("--depth <number>", "Optional expansion depth limit, default 1, max 3").action(async (opts) => {
466
466
  try {
467
467
  await withGraphMcpClient("chain-insights-cli-stake-insights", async (client) => {
468
- const { stakeInsights } = await import("./public-tools-w7En2m3q.mjs");
468
+ const { stakeInsights } = await import("./public-tools-DoRNhMn9.mjs");
469
469
  const result = await stakeInsights(client, {
470
470
  network: opts.network,
471
471
  address: opts.address,
@@ -493,7 +493,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
493
493
  assertPublicMcpToolName(tool);
494
494
  await withGraphMcpClient("chain-insights-cli-call", async (client, config) => {
495
495
  if (tool === "address_risk") {
496
- const { addressRisk } = await import("./public-tools-w7En2m3q.mjs");
496
+ const { addressRisk } = await import("./public-tools-DoRNhMn9.mjs");
497
497
  const result = await addressRisk(client, {
498
498
  address: String(args["address"] ?? ""),
499
499
  network: String(args["network"] ?? ""),
@@ -503,7 +503,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
503
503
  return;
504
504
  }
505
505
  if (tool === "track_funds") {
506
- const { trackFunds } = await import("./public-tools-w7En2m3q.mjs");
506
+ const { trackFunds } = await import("./public-tools-DoRNhMn9.mjs");
507
507
  const result = await trackFunds(client, config, {
508
508
  trustedAddresses: args["trusted_addresses"] ?? "",
509
509
  untrustedAddresses: args["untrusted_addresses"],
@@ -518,7 +518,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
518
518
  return;
519
519
  }
520
520
  if (tool === "scam_topology") {
521
- const { scamTopology } = await import("./public-tools-w7En2m3q.mjs");
521
+ const { scamTopology } = await import("./public-tools-DoRNhMn9.mjs");
522
522
  const victimAddress = String(args["victim_address"] ?? "").trim();
523
523
  if (!victimAddress) throw new Error("victim_address is required");
524
524
  const incidentTimestampMs = optionalNumberArg(args["incident_timestamp_ms"], "incident_timestamp_ms");
@@ -536,7 +536,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
536
536
  return;
537
537
  }
538
538
  if (tool === "stake_insights") {
539
- const { stakeInsights } = await import("./public-tools-w7En2m3q.mjs");
539
+ const { stakeInsights } = await import("./public-tools-DoRNhMn9.mjs");
540
540
  const result = await stakeInsights(client, {
541
541
  network: String(args["network"] ?? ""),
542
542
  address: args["address"] === void 0 ? void 0 : String(args["address"]),
@@ -995,7 +995,7 @@ async function createProxy() {
995
995
  }],
996
996
  isError: true
997
997
  };
998
- const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
998
+ const { addressRisk } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
999
999
  const { writeGraphReport } = await Promise.resolve().then(() => require("./graph-reports-B3mkLP8Z.cjs"));
1000
1000
  const { ensureArtifactServer } = await Promise.resolve().then(() => require("./artifact-server-XbN16DwU.cjs"));
1001
1001
  const result = await addressRisk(remoteClient, {
@@ -1066,7 +1066,7 @@ async function createProxy() {
1066
1066
  }],
1067
1067
  isError: true
1068
1068
  };
1069
- const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
1069
+ const { trackFunds } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
1070
1070
  const { writeGraphReport } = await Promise.resolve().then(() => require("./graph-reports-B3mkLP8Z.cjs"));
1071
1071
  const { ensureArtifactServer } = await Promise.resolve().then(() => require("./artifact-server-XbN16DwU.cjs"));
1072
1072
  const result = await trackFunds(remoteClient, config, {
@@ -1139,7 +1139,7 @@ async function createProxy() {
1139
1139
  }],
1140
1140
  isError: true
1141
1141
  };
1142
- const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
1142
+ const { scamTopology } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
1143
1143
  const { writeGraphReport } = await Promise.resolve().then(() => require("./graph-reports-B3mkLP8Z.cjs"));
1144
1144
  const { ensureArtifactServer } = await Promise.resolve().then(() => require("./artifact-server-XbN16DwU.cjs"));
1145
1145
  const result = await scamTopology(remoteClient, config, {
@@ -1216,7 +1216,7 @@ async function createProxy() {
1216
1216
  }],
1217
1217
  isError: true
1218
1218
  };
1219
- const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-q4NMdmDX.cjs"));
1219
+ const { stakeInsights } = await Promise.resolve().then(() => require("./public-tools-BwguvIsf.cjs"));
1220
1220
  const { writeGraphReport } = await Promise.resolve().then(() => require("./graph-reports-B3mkLP8Z.cjs"));
1221
1221
  const { ensureArtifactServer } = await Promise.resolve().then(() => require("./artifact-server-XbN16DwU.cjs"));
1222
1222
  const result = await stakeInsights(remoteClient, {
@@ -991,7 +991,7 @@ async function createProxy() {
991
991
  }],
992
992
  isError: true
993
993
  };
994
- const { addressRisk } = await import("./public-tools-w7En2m3q.mjs");
994
+ const { addressRisk } = await import("./public-tools-DoRNhMn9.mjs");
995
995
  const { writeGraphReport } = await import("./graph-reports-BDELxmpi.mjs");
996
996
  const { ensureArtifactServer } = await import("./artifact-server-CP6LXQ9d.mjs");
997
997
  const result = await addressRisk(remoteClient, {
@@ -1062,7 +1062,7 @@ async function createProxy() {
1062
1062
  }],
1063
1063
  isError: true
1064
1064
  };
1065
- const { trackFunds } = await import("./public-tools-w7En2m3q.mjs");
1065
+ const { trackFunds } = await import("./public-tools-DoRNhMn9.mjs");
1066
1066
  const { writeGraphReport } = await import("./graph-reports-BDELxmpi.mjs");
1067
1067
  const { ensureArtifactServer } = await import("./artifact-server-CP6LXQ9d.mjs");
1068
1068
  const result = await trackFunds(remoteClient, config, {
@@ -1135,7 +1135,7 @@ async function createProxy() {
1135
1135
  }],
1136
1136
  isError: true
1137
1137
  };
1138
- const { scamTopology } = await import("./public-tools-w7En2m3q.mjs");
1138
+ const { scamTopology } = await import("./public-tools-DoRNhMn9.mjs");
1139
1139
  const { writeGraphReport } = await import("./graph-reports-BDELxmpi.mjs");
1140
1140
  const { ensureArtifactServer } = await import("./artifact-server-CP6LXQ9d.mjs");
1141
1141
  const result = await scamTopology(remoteClient, config, {
@@ -1212,7 +1212,7 @@ async function createProxy() {
1212
1212
  }],
1213
1213
  isError: true
1214
1214
  };
1215
- const { stakeInsights } = await import("./public-tools-w7En2m3q.mjs");
1215
+ const { stakeInsights } = await import("./public-tools-DoRNhMn9.mjs");
1216
1216
  const { writeGraphReport } = await import("./graph-reports-BDELxmpi.mjs");
1217
1217
  const { ensureArtifactServer } = await import("./artifact-server-CP6LXQ9d.mjs");
1218
1218
  const result = await stakeInsights(remoteClient, {
@@ -1432,12 +1432,19 @@ const SCAM_TOPOLOGY_VALUE_SATURATION = 1e5;
1432
1432
  const SCAM_TOPOLOGY_VALUE_WEIGHT = .5;
1433
1433
  /**
1434
1434
  * Confidence threshold at or above which a close-hop candidate is auto-promoted
1435
- * to `promote_confirmed` instead of `review_required`. Tuned so that only a
1436
- * near-full-value, close-hop core reaches it: a hop-1 edge carrying
1437
- * incident-scale value retains its full base confidence (victim-seeded base is
1438
- * 0.72), while dust or deeper edges fall below the bar and stay review-only.
1435
+ * to `promote_confirmed` instead of `review_required`.
1436
+ *
1437
+ * Calibrated to the decayed-confidence scale, not to a raw base. Carried value
1438
+ * is scored from the native token amount (see {@link reliableScoringValue}),
1439
+ * whose magnitudes (hundreds–thousands of TAO) sit well below the USD-scale
1440
+ * {@link SCAM_TOPOLOGY_VALUE_SATURATION}, so even a hop-1 incident-scale edge
1441
+ * decays to roughly 0.5–0.6. A 0.72 bar was therefore unreachable on
1442
+ * victim-anchored traces and nothing ever promoted. At 0.5, combined with the
1443
+ * `hop <= 2` gate, only the close-hop, real-value core promotes while dust and
1444
+ * deeper edges stay review-only. (Deeper fix tracked: make value scaling
1445
+ * asset-relative so the native/USD unit split no longer compresses scores.)
1439
1446
  */
1440
- const SCAM_TOPOLOGY_PROMOTE_CONFIDENCE = .72;
1447
+ const SCAM_TOPOLOGY_PROMOTE_CONFIDENCE = .5;
1441
1448
  /**
1442
1449
  * Maximum hop distance eligible for auto-promotion. Only the close-hop core of
1443
1450
  * a topology can promote automatically; the diluted tail stays review-only.
@@ -1430,12 +1430,19 @@ const SCAM_TOPOLOGY_VALUE_SATURATION = 1e5;
1430
1430
  const SCAM_TOPOLOGY_VALUE_WEIGHT = .5;
1431
1431
  /**
1432
1432
  * Confidence threshold at or above which a close-hop candidate is auto-promoted
1433
- * to `promote_confirmed` instead of `review_required`. Tuned so that only a
1434
- * near-full-value, close-hop core reaches it: a hop-1 edge carrying
1435
- * incident-scale value retains its full base confidence (victim-seeded base is
1436
- * 0.72), while dust or deeper edges fall below the bar and stay review-only.
1433
+ * to `promote_confirmed` instead of `review_required`.
1434
+ *
1435
+ * Calibrated to the decayed-confidence scale, not to a raw base. Carried value
1436
+ * is scored from the native token amount (see {@link reliableScoringValue}),
1437
+ * whose magnitudes (hundreds–thousands of TAO) sit well below the USD-scale
1438
+ * {@link SCAM_TOPOLOGY_VALUE_SATURATION}, so even a hop-1 incident-scale edge
1439
+ * decays to roughly 0.5–0.6. A 0.72 bar was therefore unreachable on
1440
+ * victim-anchored traces and nothing ever promoted. At 0.5, combined with the
1441
+ * `hop <= 2` gate, only the close-hop, real-value core promotes while dust and
1442
+ * deeper edges stay review-only. (Deeper fix tracked: make value scaling
1443
+ * asset-relative so the native/USD unit split no longer compresses scores.)
1437
1444
  */
1438
- const SCAM_TOPOLOGY_PROMOTE_CONFIDENCE = .72;
1445
+ const SCAM_TOPOLOGY_PROMOTE_CONFIDENCE = .5;
1439
1446
  /**
1440
1447
  * Maximum hop distance eligible for auto-promotion. Only the close-hop core of
1441
1448
  * a topology can promote automatically; the diluted tail stays review-only.
@@ -3163,4 +3170,4 @@ async function trackFunds(remoteClient, config, options) {
3163
3170
  //#endregion
3164
3171
  export { addressRisk, scamTopology, stakeInsights, trackFunds };
3165
3172
 
3166
- //# sourceMappingURL=public-tools-w7En2m3q.mjs.map
3173
+ //# sourceMappingURL=public-tools-DoRNhMn9.mjs.map