chain-insights 0.3.7 → 0.3.11
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/README.md +5 -0
- package/dist/{app-BxojXjtB.cjs → app-DjJn3irw.cjs} +1 -1
- package/dist/{app-CRd39JJ8.mjs → app-norpwdou.mjs} +2 -2
- package/dist/{app-CRd39JJ8.mjs.map → app-norpwdou.mjs.map} +1 -1
- package/dist/{artifact-server-XbN16DwU.cjs → artifact-server-C6_gtIql.cjs} +1 -1
- package/dist/{artifact-server-CP6LXQ9d.mjs → artifact-server-DHPM0lxS.mjs} +2 -2
- package/dist/{artifact-server-CP6LXQ9d.mjs.map → artifact-server-DHPM0lxS.mjs.map} +1 -1
- package/dist/{capabilities-BC3Y5EOi.mjs → capabilities-BCvkTkIu.mjs} +3 -6
- package/dist/capabilities-BCvkTkIu.mjs.map +1 -0
- package/dist/{capabilities-D5PSx9Hj.cjs → capabilities-DOa6EFO-.cjs} +2 -5
- package/dist/cli.cjs +58 -31
- package/dist/cli.mjs +58 -31
- package/dist/cli.mjs.map +1 -1
- package/dist/{client-D4JE7fFF.mjs → client-BgmHjBHQ.mjs} +15 -7
- package/dist/client-BgmHjBHQ.mjs.map +1 -0
- package/dist/{client-Db6IV1tv.cjs → client-Y_zqKqJT.cjs} +19 -5
- package/dist/{config-Drgc2HuF.mjs → config-C6zM8Xir.mjs} +3 -3
- package/dist/{config-Drgc2HuF.mjs.map → config-C6zM8Xir.mjs.map} +1 -1
- package/dist/{config-BwVx19Og.cjs → config-CkW404Cs.cjs} +2 -2
- package/dist/index.cjs +4 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +4 -4
- package/dist/{init-CKQ6F07J.mjs → init-uAmPfio2.mjs} +2 -2
- package/dist/{init-CKQ6F07J.mjs.map → init-uAmPfio2.mjs.map} +1 -1
- package/dist/{init-Dhw8F23z.cjs → init-vj2v5PMP.cjs} +1 -1
- package/dist/{mcp-endpoint-DHs1cRFH.mjs → mcp-endpoint-QQ5Lbqc2.mjs} +5 -2
- package/dist/mcp-endpoint-QQ5Lbqc2.mjs.map +1 -0
- package/dist/{mcp-endpoint-BaV8h_lq.cjs → mcp-endpoint-cQIZSjkK.cjs} +4 -1
- package/dist/mcp-proxy.cjs +444 -410
- package/dist/mcp-proxy.d.cts +3 -1
- package/dist/mcp-proxy.d.cts.map +1 -1
- package/dist/mcp-proxy.d.mts +3 -1
- package/dist/mcp-proxy.d.mts.map +1 -1
- package/dist/mcp-proxy.mjs +444 -411
- package/dist/mcp-proxy.mjs.map +1 -1
- package/dist/{public-tools-xfVNz9NE.cjs → public-tools-BY3PTw6x.cjs} +59 -31
- package/dist/{public-tools-CyUZEz9B.mjs → public-tools-CvlZcysd.mjs} +60 -32
- package/dist/public-tools-CvlZcysd.mjs.map +1 -0
- package/dist/{runner-DWuSy1Se.mjs → runner-B9fXAP0t.mjs} +3 -3
- package/dist/{runner-DWuSy1Se.mjs.map → runner-B9fXAP0t.mjs.map} +1 -1
- package/dist/{runner-CVo41fjz.cjs → runner-CcZCrrkn.cjs} +2 -2
- package/dist/{schema-BFEWhzg7.mjs → schema-D_qwaQA5.mjs} +2 -2
- package/dist/{schema-BFEWhzg7.mjs.map → schema-D_qwaQA5.mjs.map} +1 -1
- package/dist/{schema-Vl9yuOFO.cjs → schema-Dr6JXSOF.cjs} +1 -1
- package/dist/{server-BXLX2j_A.mjs → server-86dyCsJO.mjs} +2 -2
- package/dist/{server-BXLX2j_A.mjs.map → server-86dyCsJO.mjs.map} +1 -1
- package/dist/{server-BqVdWath.cjs → server-B2NFmnCM.cjs} +1 -1
- package/dist/update-BJoXYucO.cjs +145 -0
- package/dist/update-CJUfGCxs.mjs +145 -0
- package/dist/update-CJUfGCxs.mjs.map +1 -0
- package/package.json +1 -1
- package/dist/capabilities-BC3Y5EOi.mjs.map +0 -1
- package/dist/client-D4JE7fFF.mjs.map +0 -1
- package/dist/mcp-endpoint-DHs1cRFH.mjs.map +0 -1
- package/dist/public-tools-CyUZEz9B.mjs.map +0 -1
package/dist/cli.mjs
CHANGED
|
@@ -68,9 +68,9 @@ function optionalNumberArg(value, name) {
|
|
|
68
68
|
throw new Error(`Invalid number for ${name}: ${String(value)}`);
|
|
69
69
|
}
|
|
70
70
|
async function withGraphMcpClient(name, fn) {
|
|
71
|
-
const { loadConfig } = await import("./config-
|
|
71
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
72
72
|
const config = await loadConfig();
|
|
73
|
-
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-
|
|
73
|
+
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-BgmHjBHQ.mjs").then((n) => n.r);
|
|
74
74
|
const paymentFetch = await createConfiguredGraphMcpFetch(config);
|
|
75
75
|
const { Client } = await import("@modelcontextprotocol/sdk/client/index.js");
|
|
76
76
|
const { StreamableHTTPClientTransport } = await import("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
@@ -89,8 +89,8 @@ function printMcpTextContent(result) {
|
|
|
89
89
|
for (const item of result.content ?? []) if (item.type === "text") console.log(item.text);
|
|
90
90
|
}
|
|
91
91
|
async function printNetworkCapabilities(opts) {
|
|
92
|
-
const { loadConfig } = await import("./config-
|
|
93
|
-
const { fetchNetworkCapabilities, formatNetworkCapabilities } = await import("./capabilities-
|
|
92
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
93
|
+
const { fetchNetworkCapabilities, formatNetworkCapabilities } = await import("./capabilities-BCvkTkIu.mjs");
|
|
94
94
|
const document = await fetchNetworkCapabilities(await loadConfig());
|
|
95
95
|
if (opts.json) console.log(JSON.stringify(document, null, 2));
|
|
96
96
|
else console.log(formatNetworkCapabilities(document));
|
|
@@ -107,7 +107,7 @@ program.command("serve").description("Start local visualization server").option(
|
|
|
107
107
|
try {
|
|
108
108
|
const { requireWorkspaceRoot } = await import("./output-root-BRhzhhXZ.mjs").then((n) => n.t);
|
|
109
109
|
const workspaceRoot = requireWorkspaceRoot();
|
|
110
|
-
const { startServer } = await import("./server-
|
|
110
|
+
const { startServer } = await import("./server-86dyCsJO.mjs").then((n) => n.t);
|
|
111
111
|
console.log(`Workspace: ${workspaceRoot}`);
|
|
112
112
|
startServer(parseInt(opts.port, 10));
|
|
113
113
|
} catch (err) {
|
|
@@ -116,7 +116,7 @@ program.command("serve").description("Start local visualization server").option(
|
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
program.command("status").description("Show toolkit status and configuration").action(async () => {
|
|
119
|
-
const { loadConfig } = await import("./config-
|
|
119
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
120
120
|
const { findActiveWorkspace, activeDataDir } = await import("./active-ByNgjuAg.mjs").then((n) => n.n);
|
|
121
121
|
const config = await loadConfig();
|
|
122
122
|
const workspace = findActiveWorkspace();
|
|
@@ -127,6 +127,31 @@ program.command("status").description("Show toolkit status and configuration").a
|
|
|
127
127
|
console.log("Graph MCP:", graphMcpStatus);
|
|
128
128
|
console.log("Graph endpoint:", config.graphMcpEndpoint);
|
|
129
129
|
});
|
|
130
|
+
program.command("update").description("Check npmjs for a newer Chain Insights release and update this CLI").option("--check", "Only check for a newer release").option("--dry-run", "Print the update command without running it").action(async (opts) => {
|
|
131
|
+
try {
|
|
132
|
+
const { checkForUpdate, runPackageUpdate } = await import("./update-CJUfGCxs.mjs");
|
|
133
|
+
const result = await checkForUpdate();
|
|
134
|
+
if (result.error) throw new Error(`Could not check npmjs for updates: ${result.error}`);
|
|
135
|
+
if (!result.updateAvailable || !result.latestVersion) {
|
|
136
|
+
console.log(`Chain Insights is up to date (${result.currentVersion}).`);
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
console.log(`Chain Insights ${result.latestVersion} is available (current ${result.currentVersion}).`);
|
|
140
|
+
if (opts.check) {
|
|
141
|
+
console.log(`Run: ${result.updateCommand}`);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (opts.dryRun) {
|
|
145
|
+
console.log(`Would run: ${result.updateCommand}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
console.log(`Running: ${result.updateCommand}`);
|
|
149
|
+
runPackageUpdate(result.packageName);
|
|
150
|
+
} catch (err) {
|
|
151
|
+
console.error(err.message);
|
|
152
|
+
process.exit(1);
|
|
153
|
+
}
|
|
154
|
+
});
|
|
130
155
|
program.command("obsidian").description("Manage the local Obsidian investigation vault").addCommand(new Command("open").description("Open the current Chain Insights vault in Obsidian").argument("[path]", "Workspace path to open as an Obsidian vault").action(async (workspacePath) => {
|
|
131
156
|
try {
|
|
132
157
|
const { findActiveWorkspace } = await import("./active-ByNgjuAg.mjs").then((n) => n.n);
|
|
@@ -148,7 +173,7 @@ program.command("obsidian").description("Manage the local Obsidian investigation
|
|
|
148
173
|
}));
|
|
149
174
|
program.command("debug").description("Configure Graph MCP debug mode").addCommand(new Command("on").description("Enable Graph MCP debug mode without x402 payments").requiredOption("--token <token>", "Debug bearer token").option("--endpoint <url>", "Graph MCP endpoint").action(async (opts) => {
|
|
150
175
|
try {
|
|
151
|
-
const { saveConfig } = await import("./config-
|
|
176
|
+
const { saveConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
152
177
|
await saveConfig({
|
|
153
178
|
graphMcpMode: "debug",
|
|
154
179
|
graphMcpAuthToken: opts.token,
|
|
@@ -163,7 +188,7 @@ program.command("debug").description("Configure Graph MCP debug mode").addComman
|
|
|
163
188
|
}
|
|
164
189
|
})).addCommand(new Command("off").description("Disable Graph MCP debug mode and use paid x402 calls").action(async () => {
|
|
165
190
|
try {
|
|
166
|
-
const { saveConfig } = await import("./config-
|
|
191
|
+
const { saveConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
167
192
|
await saveConfig({
|
|
168
193
|
graphMcpMode: "paid",
|
|
169
194
|
graphMcpAuthToken: ""
|
|
@@ -176,7 +201,7 @@ program.command("debug").description("Configure Graph MCP debug mode").addComman
|
|
|
176
201
|
}
|
|
177
202
|
})).addCommand(new Command("status").description("Show Graph MCP payment/debug mode").action(async () => {
|
|
178
203
|
try {
|
|
179
|
-
const { loadConfig } = await import("./config-
|
|
204
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
180
205
|
const config = await loadConfig();
|
|
181
206
|
console.log(`Graph MCP mode: ${config.graphMcpMode}`);
|
|
182
207
|
console.log(`Graph endpoint: ${config.graphMcpEndpoint}`);
|
|
@@ -191,7 +216,7 @@ program.command("access-key").description("Configure Graph MCP test access key m
|
|
|
191
216
|
try {
|
|
192
217
|
const normalizedKey = key.trim();
|
|
193
218
|
if (!normalizedKey) throw new Error("Test access key is required");
|
|
194
|
-
const { saveConfig } = await import("./config-
|
|
219
|
+
const { saveConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
195
220
|
await saveConfig({
|
|
196
221
|
graphMcpMode: "debug",
|
|
197
222
|
graphMcpAuthToken: normalizedKey,
|
|
@@ -206,7 +231,7 @@ program.command("access-key").description("Configure Graph MCP test access key m
|
|
|
206
231
|
}
|
|
207
232
|
})).addCommand(new Command("clear").description("Remove the Graph MCP test access key and use paid x402 calls").action(async () => {
|
|
208
233
|
try {
|
|
209
|
-
const { saveConfig } = await import("./config-
|
|
234
|
+
const { saveConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
210
235
|
await saveConfig({
|
|
211
236
|
graphMcpMode: "paid",
|
|
212
237
|
graphMcpAuthToken: ""
|
|
@@ -219,7 +244,7 @@ program.command("access-key").description("Configure Graph MCP test access key m
|
|
|
219
244
|
}
|
|
220
245
|
})).addCommand(new Command("status").description("Show Graph MCP test access key status").action(async () => {
|
|
221
246
|
try {
|
|
222
|
-
const { loadConfig } = await import("./config-
|
|
247
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
223
248
|
const config = await loadConfig();
|
|
224
249
|
console.log(`Graph endpoint: ${config.graphMcpEndpoint}`);
|
|
225
250
|
console.log(`Access key: ${config.graphMcpAuthToken?.trim() ? "configured" : "not configured"}`);
|
|
@@ -231,13 +256,15 @@ program.command("access-key").description("Configure Graph MCP test access key m
|
|
|
231
256
|
}));
|
|
232
257
|
program.command("init").description("Initialize an investigation workspace").argument("[dir]", "Workspace directory to initialize", ".").option("--force", "Overwrite existing workspace files").action(async (dir, opts) => {
|
|
233
258
|
try {
|
|
234
|
-
const { initWorkspace } = await import("./init-
|
|
259
|
+
const { initWorkspace } = await import("./init-uAmPfio2.mjs");
|
|
235
260
|
const result = await initWorkspace({
|
|
236
261
|
targetDir: dir,
|
|
237
262
|
force: opts.force
|
|
238
263
|
});
|
|
239
264
|
console.log(`Workspace initialized: ${result.workspaceRoot}`);
|
|
240
265
|
console.log(`Files written: ${result.filesWritten.length}`);
|
|
266
|
+
const { maybePromptForUpdate } = await import("./update-CJUfGCxs.mjs");
|
|
267
|
+
await maybePromptForUpdate();
|
|
241
268
|
} catch (err) {
|
|
242
269
|
console.error(err.message);
|
|
243
270
|
process.exit(1);
|
|
@@ -266,8 +293,8 @@ program.command("setup").description("Configure external MCP clients").addComman
|
|
|
266
293
|
}
|
|
267
294
|
}));
|
|
268
295
|
program.command("config").description("Read or write configuration values").addCommand(new Command("get").argument("<key>", "Config key to read").action(async (key) => {
|
|
269
|
-
const { loadConfig } = await import("./config-
|
|
270
|
-
const { CONFIG_KEYS } = await import("./schema-
|
|
296
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
297
|
+
const { CONFIG_KEYS } = await import("./schema-D_qwaQA5.mjs").then((n) => n.r);
|
|
271
298
|
if (!CONFIG_KEYS.includes(key)) {
|
|
272
299
|
console.error(`Unknown config key: ${key}`);
|
|
273
300
|
process.exit(1);
|
|
@@ -287,8 +314,8 @@ program.command("config").description("Read or write configuration values").addC
|
|
|
287
314
|
}
|
|
288
315
|
return;
|
|
289
316
|
}
|
|
290
|
-
const { loadConfig, saveConfig } = await import("./config-
|
|
291
|
-
const { CONFIG_KEYS, DEFAULT_CONFIG } = await import("./schema-
|
|
317
|
+
const { loadConfig, saveConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
318
|
+
const { CONFIG_KEYS, DEFAULT_CONFIG } = await import("./schema-D_qwaQA5.mjs").then((n) => n.r);
|
|
292
319
|
const current = await loadConfig();
|
|
293
320
|
if (!CONFIG_KEYS.includes(key)) {
|
|
294
321
|
console.error(`Unknown config key: ${key}`);
|
|
@@ -380,8 +407,8 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
380
407
|
const { loadSchema, saveSchema } = await import("./schema-cache-DwDvPy4e.mjs");
|
|
381
408
|
const { formatToolsTable } = await import("./format-Bq94jSyw.mjs");
|
|
382
409
|
const { visibleRemoteTools } = await import("./tool-visibility-BpyZHRBi.mjs").then((n) => n.n);
|
|
383
|
-
const { loadConfig } = await import("./config-
|
|
384
|
-
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-
|
|
410
|
+
const { loadConfig } = await import("./config-C6zM8Xir.mjs").then((n) => n.t);
|
|
411
|
+
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-BgmHjBHQ.mjs").then((n) => n.r);
|
|
385
412
|
const config = await loadConfig();
|
|
386
413
|
const graphMcpEndpoint = resolveGraphMcpEndpoint(config);
|
|
387
414
|
let tools = opts.refresh ? null : await loadSchema(graphMcpEndpoint);
|
|
@@ -420,7 +447,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
420
447
|
}));
|
|
421
448
|
return;
|
|
422
449
|
}
|
|
423
|
-
const { addressRisk } = await import("./public-tools-
|
|
450
|
+
const { addressRisk } = await import("./public-tools-CvlZcysd.mjs");
|
|
424
451
|
const result = await addressRisk(client, {
|
|
425
452
|
address: opts.address,
|
|
426
453
|
network: opts.network,
|
|
@@ -448,7 +475,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
448
475
|
}));
|
|
449
476
|
return;
|
|
450
477
|
}
|
|
451
|
-
const { traceVictimFunds } = await import("./public-tools-
|
|
478
|
+
const { traceVictimFunds } = await import("./public-tools-CvlZcysd.mjs");
|
|
452
479
|
const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
|
|
453
480
|
const result = await traceVictimFunds(client, config, {
|
|
454
481
|
victimAddresses: opts.victimAddresses,
|
|
@@ -472,7 +499,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
472
499
|
const { requireWorkspaceRoot } = await import("./output-root-BRhzhhXZ.mjs").then((n) => n.t);
|
|
473
500
|
requireWorkspaceRoot();
|
|
474
501
|
await withGraphMcpClient("chain-insights-cli-trace-suspect-funds", async (client, config) => {
|
|
475
|
-
const { traceSuspectFunds } = await import("./public-tools-
|
|
502
|
+
const { traceSuspectFunds } = await import("./public-tools-CvlZcysd.mjs");
|
|
476
503
|
const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
|
|
477
504
|
const result = await traceSuspectFunds(client, config, {
|
|
478
505
|
suspectAddresses: opts.suspectAddresses,
|
|
@@ -495,7 +522,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
495
522
|
const { requireWorkspaceRoot } = await import("./output-root-BRhzhhXZ.mjs").then((n) => n.t);
|
|
496
523
|
requireWorkspaceRoot();
|
|
497
524
|
await withGraphMcpClient("chain-insights-cli-trace-deposit-sources", async (client, config) => {
|
|
498
|
-
const { traceDepositSources } = await import("./public-tools-
|
|
525
|
+
const { traceDepositSources } = await import("./public-tools-CvlZcysd.mjs");
|
|
499
526
|
const caseId = opts.case ? await resolveCaseSelector(opts.case) : void 0;
|
|
500
527
|
const result = await traceDepositSources(client, config, {
|
|
501
528
|
depositAddresses: opts.depositAddresses,
|
|
@@ -513,7 +540,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
513
540
|
})).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) => {
|
|
514
541
|
try {
|
|
515
542
|
await withGraphMcpClient("chain-insights-cli-stake-insights", async (client) => {
|
|
516
|
-
const { stakeInsights } = await import("./public-tools-
|
|
543
|
+
const { stakeInsights } = await import("./public-tools-CvlZcysd.mjs");
|
|
517
544
|
const result = await stakeInsights(client, {
|
|
518
545
|
network: opts.network,
|
|
519
546
|
address: opts.address,
|
|
@@ -541,7 +568,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
541
568
|
assertPublicMcpToolName(tool);
|
|
542
569
|
await withGraphMcpClient("chain-insights-cli-call", async (client, config) => {
|
|
543
570
|
if (tool === "address_risk") {
|
|
544
|
-
const { addressRisk } = await import("./public-tools-
|
|
571
|
+
const { addressRisk } = await import("./public-tools-CvlZcysd.mjs");
|
|
545
572
|
const result = await addressRisk(client, {
|
|
546
573
|
address: String(args["address"] ?? ""),
|
|
547
574
|
network: String(args["network"] ?? ""),
|
|
@@ -551,7 +578,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
551
578
|
return;
|
|
552
579
|
}
|
|
553
580
|
if (tool === "trace_victim_funds") {
|
|
554
|
-
const { traceVictimFunds } = await import("./public-tools-
|
|
581
|
+
const { traceVictimFunds } = await import("./public-tools-CvlZcysd.mjs");
|
|
555
582
|
const result = await traceVictimFunds(client, config, {
|
|
556
583
|
victimAddresses: args["victim_addresses"] ?? "",
|
|
557
584
|
knownSuspectAddresses: args["known_suspect_addresses"],
|
|
@@ -567,7 +594,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
567
594
|
return;
|
|
568
595
|
}
|
|
569
596
|
if (tool === "trace_suspect_funds") {
|
|
570
|
-
const { traceSuspectFunds } = await import("./public-tools-
|
|
597
|
+
const { traceSuspectFunds } = await import("./public-tools-CvlZcysd.mjs");
|
|
571
598
|
const result = await traceSuspectFunds(client, config, {
|
|
572
599
|
suspectAddresses: args["suspect_addresses"] ?? "",
|
|
573
600
|
network: String(args["network"] ?? ""),
|
|
@@ -582,7 +609,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
582
609
|
return;
|
|
583
610
|
}
|
|
584
611
|
if (tool === "trace_deposit_sources") {
|
|
585
|
-
const { traceDepositSources } = await import("./public-tools-
|
|
612
|
+
const { traceDepositSources } = await import("./public-tools-CvlZcysd.mjs");
|
|
586
613
|
const result = await traceDepositSources(client, config, {
|
|
587
614
|
depositAddresses: args["deposit_addresses"] ?? "",
|
|
588
615
|
network: String(args["network"] ?? ""),
|
|
@@ -594,7 +621,7 @@ program.command("mcp").description("Interact with the Chain Insights MCP endpoin
|
|
|
594
621
|
return;
|
|
595
622
|
}
|
|
596
623
|
if (tool === "stake_insights") {
|
|
597
|
-
const { stakeInsights } = await import("./public-tools-
|
|
624
|
+
const { stakeInsights } = await import("./public-tools-CvlZcysd.mjs");
|
|
598
625
|
const result = await stakeInsights(client, {
|
|
599
626
|
network: String(args["network"] ?? ""),
|
|
600
627
|
address: args["address"] === void 0 ? void 0 : String(args["address"]),
|
|
@@ -848,7 +875,7 @@ program.command("playbook").description("Run and manage investigation playbooks"
|
|
|
848
875
|
console.error(`Invalid --from value: "${opts.from}". Must be a positive integer.`);
|
|
849
876
|
process.exit(1);
|
|
850
877
|
}
|
|
851
|
-
const { PlaybookRunner } = await import("./runner-
|
|
878
|
+
const { PlaybookRunner } = await import("./runner-B9fXAP0t.mjs");
|
|
852
879
|
await PlaybookRunner.run(definition, {
|
|
853
880
|
caseId: opts.case,
|
|
854
881
|
from: fromN,
|
|
@@ -903,7 +930,7 @@ program.command("viz").description("Generate money flow visualization").argument
|
|
|
903
930
|
caseId,
|
|
904
931
|
dataFile: opts.data
|
|
905
932
|
});
|
|
906
|
-
const { startServer } = await import("./server-
|
|
933
|
+
const { startServer } = await import("./server-86dyCsJO.mjs").then((n) => n.t);
|
|
907
934
|
const port = parseInt(opts.port, 10);
|
|
908
935
|
startServer(port);
|
|
909
936
|
const url = `http://127.0.0.1:${port}/viz/${result.vizId}`;
|