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 +8 -8
- package/dist/cli.mjs +8 -8
- package/dist/mcp-proxy.cjs +4 -4
- package/dist/mcp-proxy.mjs +4 -4
- package/dist/{public-tools-q4NMdmDX.cjs → public-tools-BwguvIsf.cjs} +12 -5
- package/dist/{public-tools-w7En2m3q.mjs → public-tools-DoRNhMn9.mjs} +13 -6
- package/dist/public-tools-DoRNhMn9.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/public-tools-w7En2m3q.mjs.map +0 -1
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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"]),
|
package/dist/mcp-proxy.cjs
CHANGED
|
@@ -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-
|
|
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-
|
|
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-
|
|
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-
|
|
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, {
|
package/dist/mcp-proxy.mjs
CHANGED
|
@@ -991,7 +991,7 @@ async function createProxy() {
|
|
|
991
991
|
}],
|
|
992
992
|
isError: true
|
|
993
993
|
};
|
|
994
|
-
const { addressRisk } = await import("./public-tools-
|
|
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-
|
|
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-
|
|
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-
|
|
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`.
|
|
1436
|
-
*
|
|
1437
|
-
*
|
|
1438
|
-
*
|
|
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 = .
|
|
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`.
|
|
1434
|
-
*
|
|
1435
|
-
*
|
|
1436
|
-
*
|
|
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 = .
|
|
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-
|
|
3173
|
+
//# sourceMappingURL=public-tools-DoRNhMn9.mjs.map
|