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.
Files changed (56) hide show
  1. package/README.md +5 -0
  2. package/dist/{app-BxojXjtB.cjs → app-DjJn3irw.cjs} +1 -1
  3. package/dist/{app-CRd39JJ8.mjs → app-norpwdou.mjs} +2 -2
  4. package/dist/{app-CRd39JJ8.mjs.map → app-norpwdou.mjs.map} +1 -1
  5. package/dist/{artifact-server-XbN16DwU.cjs → artifact-server-C6_gtIql.cjs} +1 -1
  6. package/dist/{artifact-server-CP6LXQ9d.mjs → artifact-server-DHPM0lxS.mjs} +2 -2
  7. package/dist/{artifact-server-CP6LXQ9d.mjs.map → artifact-server-DHPM0lxS.mjs.map} +1 -1
  8. package/dist/{capabilities-BC3Y5EOi.mjs → capabilities-BCvkTkIu.mjs} +3 -6
  9. package/dist/capabilities-BCvkTkIu.mjs.map +1 -0
  10. package/dist/{capabilities-D5PSx9Hj.cjs → capabilities-DOa6EFO-.cjs} +2 -5
  11. package/dist/cli.cjs +58 -31
  12. package/dist/cli.mjs +58 -31
  13. package/dist/cli.mjs.map +1 -1
  14. package/dist/{client-D4JE7fFF.mjs → client-BgmHjBHQ.mjs} +15 -7
  15. package/dist/client-BgmHjBHQ.mjs.map +1 -0
  16. package/dist/{client-Db6IV1tv.cjs → client-Y_zqKqJT.cjs} +19 -5
  17. package/dist/{config-Drgc2HuF.mjs → config-C6zM8Xir.mjs} +3 -3
  18. package/dist/{config-Drgc2HuF.mjs.map → config-C6zM8Xir.mjs.map} +1 -1
  19. package/dist/{config-BwVx19Og.cjs → config-CkW404Cs.cjs} +2 -2
  20. package/dist/index.cjs +4 -4
  21. package/dist/index.d.cts.map +1 -1
  22. package/dist/index.d.mts.map +1 -1
  23. package/dist/index.mjs +4 -4
  24. package/dist/{init-CKQ6F07J.mjs → init-uAmPfio2.mjs} +2 -2
  25. package/dist/{init-CKQ6F07J.mjs.map → init-uAmPfio2.mjs.map} +1 -1
  26. package/dist/{init-Dhw8F23z.cjs → init-vj2v5PMP.cjs} +1 -1
  27. package/dist/{mcp-endpoint-DHs1cRFH.mjs → mcp-endpoint-QQ5Lbqc2.mjs} +5 -2
  28. package/dist/mcp-endpoint-QQ5Lbqc2.mjs.map +1 -0
  29. package/dist/{mcp-endpoint-BaV8h_lq.cjs → mcp-endpoint-cQIZSjkK.cjs} +4 -1
  30. package/dist/mcp-proxy.cjs +444 -410
  31. package/dist/mcp-proxy.d.cts +3 -1
  32. package/dist/mcp-proxy.d.cts.map +1 -1
  33. package/dist/mcp-proxy.d.mts +3 -1
  34. package/dist/mcp-proxy.d.mts.map +1 -1
  35. package/dist/mcp-proxy.mjs +444 -411
  36. package/dist/mcp-proxy.mjs.map +1 -1
  37. package/dist/{public-tools-xfVNz9NE.cjs → public-tools-BY3PTw6x.cjs} +59 -31
  38. package/dist/{public-tools-CyUZEz9B.mjs → public-tools-CvlZcysd.mjs} +60 -32
  39. package/dist/public-tools-CvlZcysd.mjs.map +1 -0
  40. package/dist/{runner-DWuSy1Se.mjs → runner-B9fXAP0t.mjs} +3 -3
  41. package/dist/{runner-DWuSy1Se.mjs.map → runner-B9fXAP0t.mjs.map} +1 -1
  42. package/dist/{runner-CVo41fjz.cjs → runner-CcZCrrkn.cjs} +2 -2
  43. package/dist/{schema-BFEWhzg7.mjs → schema-D_qwaQA5.mjs} +2 -2
  44. package/dist/{schema-BFEWhzg7.mjs.map → schema-D_qwaQA5.mjs.map} +1 -1
  45. package/dist/{schema-Vl9yuOFO.cjs → schema-Dr6JXSOF.cjs} +1 -1
  46. package/dist/{server-BXLX2j_A.mjs → server-86dyCsJO.mjs} +2 -2
  47. package/dist/{server-BXLX2j_A.mjs.map → server-86dyCsJO.mjs.map} +1 -1
  48. package/dist/{server-BqVdWath.cjs → server-B2NFmnCM.cjs} +1 -1
  49. package/dist/update-BJoXYucO.cjs +145 -0
  50. package/dist/update-CJUfGCxs.mjs +145 -0
  51. package/dist/update-CJUfGCxs.mjs.map +1 -0
  52. package/package.json +1 -1
  53. package/dist/capabilities-BC3Y5EOi.mjs.map +0 -1
  54. package/dist/client-D4JE7fFF.mjs.map +0 -1
  55. package/dist/mcp-endpoint-DHs1cRFH.mjs.map +0 -1
  56. 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-Drgc2HuF.mjs").then((n) => n.t);
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-D4JE7fFF.mjs").then((n) => n.n);
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-Drgc2HuF.mjs").then((n) => n.t);
93
- const { fetchNetworkCapabilities, formatNetworkCapabilities } = await import("./capabilities-BC3Y5EOi.mjs");
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-BXLX2j_A.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-Drgc2HuF.mjs").then((n) => n.t);
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-CKQ6F07J.mjs");
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-Drgc2HuF.mjs").then((n) => n.t);
270
- const { CONFIG_KEYS } = await import("./schema-BFEWhzg7.mjs").then((n) => n.r);
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-Drgc2HuF.mjs").then((n) => n.t);
291
- const { CONFIG_KEYS, DEFAULT_CONFIG } = await import("./schema-BFEWhzg7.mjs").then((n) => n.r);
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-Drgc2HuF.mjs").then((n) => n.t);
384
- const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-D4JE7fFF.mjs").then((n) => n.n);
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-CyUZEz9B.mjs");
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-DWuSy1Se.mjs");
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-BXLX2j_A.mjs").then((n) => n.t);
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}`;