chain-insights 0.2.21 → 0.2.24
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 +2 -1
- package/dist/{capabilities-Bm0JDbV7.cjs → capabilities-B4hvro_I.cjs} +1 -1
- package/dist/{capabilities-BShqspb-.mjs → capabilities-mXm_rCe8.mjs} +2 -2
- package/dist/{capabilities-BShqspb-.mjs.map → capabilities-mXm_rCe8.mjs.map} +1 -1
- package/dist/cli.cjs +32 -16
- package/dist/cli.mjs +32 -16
- package/dist/cli.mjs.map +1 -1
- package/dist/{client-DPc2eyVN.cjs → client-BYnFGA0y.cjs} +45 -10
- package/dist/{client-D4_hd4AP.mjs → client-Dl-uHrh1.mjs} +46 -11
- package/dist/client-Dl-uHrh1.mjs.map +1 -0
- package/dist/index.cjs +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{init-4tn7jfhN.mjs → init-CB_ga4_8.mjs} +2 -2
- package/dist/init-CB_ga4_8.mjs.map +1 -0
- package/dist/{init-TCQY5RDJ.cjs → init-jhOZ_RvC.cjs} +1 -1
- package/dist/mcp-proxy.cjs +8 -8
- package/dist/mcp-proxy.mjs +8 -8
- package/dist/mcp-proxy.mjs.map +1 -1
- package/dist/{public-tools-BC1fi0DV.cjs → public-tools-q4NMdmDX.cjs} +227 -10
- package/dist/{public-tools-B13J0MJZ.mjs → public-tools-w7En2m3q.mjs} +228 -11
- package/dist/public-tools-w7En2m3q.mjs.map +1 -0
- package/dist/{runner-DIs04IhN.mjs → runner-BBH5Ks6q.mjs} +2 -2
- package/dist/{runner-DIs04IhN.mjs.map → runner-BBH5Ks6q.mjs.map} +1 -1
- package/dist/{runner-ZYowxCVl.cjs → runner-e9slg6R2.cjs} +1 -1
- package/dist/tools-D6RBAhSX.mjs +298 -0
- package/dist/tools-D6RBAhSX.mjs.map +1 -0
- package/dist/tools-UH5hRXYG.cjs +343 -0
- package/dist/topup-server-BJgVw6Jt.mjs.map +1 -1
- package/docs/mcp-proxy.md +4 -2
- package/package.json +1 -1
- package/dist/client-D4_hd4AP.mjs.map +0 -1
- package/dist/init-4tn7jfhN.mjs.map +0 -1
- package/dist/public-tools-B13J0MJZ.mjs.map +0 -1
- package/dist/tools-DY8h0WbE.cjs +0 -139
- package/dist/tools-Py6SXg6J.mjs +0 -100
- package/dist/tools-Py6SXg6J.mjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-Dl-uHrh1.mjs","names":[],"sources":["../src/mcp/client.ts"],"sourcesContent":["import { wrapFetchWithPaymentFromConfig } from '@x402/fetch'\nimport { ExactEvmScheme } from '@x402/evm'\nimport { UptoEvmScheme } from '@x402/evm/upto/client'\nimport { privateKeyToAccount } from 'viem/accounts'\nimport type { InvestigatorConfig } from '../config/schema.js'\nimport { prepareWalletForPaidCalls } from '../wallet/tools.js'\n\ntype FetchLike = typeof fetch\ntype FetchInput = Parameters<FetchLike>[0]\ntype FetchInit = Parameters<FetchLike>[1]\n\nexport class PaymentRequiredError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'PaymentRequiredError'\n }\n}\n\nfunction createHeaderFetch(authToken: string, baseFetch: FetchLike): FetchLike {\n return (async (input: FetchInput, init?: FetchInit) => {\n const requestHeaders = input instanceof Request ? input.headers : undefined\n const headers = new Headers(init?.headers ?? requestHeaders)\n headers.set('X-MCP-Debug-Token', authToken)\n headers.set('Authorization', `Bearer ${authToken}`)\n\n return baseFetch(input, {\n ...init,\n headers,\n })\n }) as FetchLike\n}\n\nexport const PAYMENT_NEXT_STEPS =\n 'Next steps: run `chain-insights wallet ready` to check funding and finish one-time payment setup, ' +\n 'run `chain-insights wallet topup` if it says the wallet needs USDC, ' +\n 'or `chain-insights access-key set <key>` if you have been given test access.'\n\ninterface PaymentRequirementDetails {\n reason: string\n scheme?: string\n network?: string\n amount?: string\n amountUnits?: bigint\n payTo?: string\n}\n\nfunction paymentRequirementFromResponse(response: Response): PaymentRequirementDetails | null {\n const encoded = response.headers.get('payment-required')\n if (!encoded) return null\n\n try {\n const decoded = Buffer.from(encoded, 'base64').toString('utf8')\n const parsed = JSON.parse(decoded) as {\n error?: unknown\n accepts?: Array<{ scheme?: unknown; network?: unknown; amount?: unknown; payTo?: unknown }>\n }\n const reason = typeof parsed.error === 'string' && parsed.error.trim() ? parsed.error.trim() : 'payment_required'\n const firstRequirement = Array.isArray(parsed.accepts) ? parsed.accepts[0] : undefined\n const amount = typeof firstRequirement?.amount === 'string' ? firstRequirement.amount.trim() : undefined\n return {\n reason,\n scheme: typeof firstRequirement?.scheme === 'string' ? firstRequirement.scheme : undefined,\n network: typeof firstRequirement?.network === 'string' ? firstRequirement.network : undefined,\n amount,\n amountUnits: amount && /^\\d+$/.test(amount) ? BigInt(amount) : undefined,\n payTo: typeof firstRequirement?.payTo === 'string' ? firstRequirement.payTo.trim() : undefined,\n }\n } catch {\n return null\n }\n}\n\nfunction describePaymentRequiredResponse(response: Response, payerAddress?: string): string {\n const requirement = paymentRequirementFromResponse(response)\n if (!requirement) return `Payment required — this tool costs USDC on Base via x402 micropayments. ${PAYMENT_NEXT_STEPS}`\n\n try {\n const { reason, payTo } = requirement\n if (payerAddress && payTo && payerAddress.toLowerCase() === payTo.toLowerCase()) {\n return 'Local payment wallet matches the MCP payTo address. Configure a separate payer wallet with USDC on Base; do not use the service recipient wallet as the client payment wallet.'\n }\n const details = [\n requirement.scheme ? `scheme=${requirement.scheme}` : undefined,\n requirement.network ? `network=${requirement.network}` : undefined,\n requirement.amount ? `amount=${requirement.amount}` : undefined,\n ].filter(Boolean).join(' ')\n const message = details ? `x402 payment failed: ${reason} (${details})` : `x402 payment failed: ${reason}`\n if (reason.includes('allowance_required')) {\n return `${message}. The payment wallet needs one-time setup before paid MCP calls can settle. Run \\`chain-insights wallet ready\\`; Base ETH is required for the approval gas.`\n }\n if (reason === 'payment_required') {\n return `${message}. ${PAYMENT_NEXT_STEPS}`\n }\n return `${message}. ${PAYMENT_NEXT_STEPS}`\n } catch {\n return `Payment required — this tool costs USDC on Base via x402 micropayments. ${PAYMENT_NEXT_STEPS}`\n }\n}\n\nfunction createPaymentFailureReportingFetch(\n baseFetch: FetchLike,\n payerAddress?: string,\n paymentWallet?: { address: `0x${string}`; privateKey: `0x${string}` },\n): FetchLike {\n const reportingFetch = (async (input: FetchInput, init?: FetchInit) => {\n const response = await baseFetch(input, init)\n if (response.status !== 402) return response\n const requirement = paymentRequirementFromResponse(response)\n if (paymentWallet && requirement?.reason.includes('allowance_required')) {\n try {\n await prepareWalletForPaidCalls({\n account: paymentWallet,\n ...(requirement.amountUnits === undefined ? {} : { minimumApprovalUnits: requirement.amountUnits }),\n })\n } catch (err) {\n throw new PaymentRequiredError(\n 'Payment setup is not ready yet. Run `chain-insights wallet ready` and try again. ' +\n `${(err as Error).message}`,\n )\n }\n const retryResponse = await baseFetch(input, init)\n if (retryResponse.status !== 402) return retryResponse\n throw new PaymentRequiredError(describePaymentRequiredResponse(retryResponse, payerAddress))\n }\n throw new PaymentRequiredError(describePaymentRequiredResponse(response, payerAddress))\n }) as FetchLike\n return Object.assign(reportingFetch, baseFetch)\n}\n\n/**\n * Creates an x402-payment-wrapped fetch function for the Chain Insights MCP.\n * Payments are made in USDC on Base Mainnet (eip155:8453).\n *\n * The factory is pure — no side effects, no state, no caching.\n * If called with an invalid private key format, viem throws — the error propagates.\n *\n * @param privateKey - 0x-prefixed EVM private key (decrypted from wallet.json)\n * @returns A fetch-compatible function that auto-handles HTTP 402 payment challenges\n */\nexport function createMcpFetchClient(privateKey: `0x${string}`, authToken?: string) {\n const account = privateKeyToAccount(privateKey)\n const paymentFetch = wrapFetchWithPaymentFromConfig(fetch, {\n schemes: [\n {\n network: 'eip155:8453', // Base Mainnet — dynamic MCP pricing uses the x402 upto scheme\n client: new UptoEvmScheme(account),\n },\n {\n network: 'eip155:8453', // Base Mainnet — only supported chain in v1\n client: new ExactEvmScheme(account),\n },\n ],\n })\n const reportingFetch = createPaymentFailureReportingFetch(\n paymentFetch,\n account.address,\n { address: account.address, privateKey },\n )\n return authToken ? createHeaderFetch(authToken, reportingFetch) : reportingFetch\n}\n\n/**\n * Creates a bearer/debug-token fetch for local Graph MCP testing.\n *\n * The public x402 debug bypass expects X-MCP-Debug-Token.\n * Private endpoints commonly expect Authorization: Bearer <token>.\n * Sending both lets one config value work for public debug and private M2M endpoints.\n *\n * Wraps with 402 interception so that if the server still requires payment\n * (e.g. token not accepted for paid tools), the user sees actionable guidance\n * instead of a generic transport error.\n */\nexport function createMcpAuthFetchClient(authToken: string, baseFetch: FetchLike = fetch): FetchLike {\n const headerFetch = createHeaderFetch(authToken, baseFetch)\n return createPaymentFailureReportingFetch(headerFetch)\n}\n\nexport function resolveGraphMcpEndpoint(config: Pick<InvestigatorConfig, 'graphMcpEndpoint' | 'mcpEndpoint'>): string {\n const graphEndpoint = config.graphMcpEndpoint?.trim()\n return graphEndpoint || config.mcpEndpoint\n}\n\nasync function createConfiguredFetchWithToken(\n authToken: string | undefined,\n missingTokenName: string,\n): Promise<FetchLike> {\n const normalizedAuthToken = authToken?.trim()\n if (normalizedAuthToken) return createMcpAuthFetchClient(normalizedAuthToken)\n\n const { isWalletConfigured, decryptKey } = await import('../wallet/index.js')\n if (!(await isWalletConfigured())) {\n throw new Error(\n `Wallet not configured and ${missingTokenName} is empty. ` +\n `Run \\`chain-insights access-key set <key>\\` for invited test access or \\`chain-insights config set ${missingTokenName} <token>\\` for local MCP debug bypass, ` +\n 'or `chain-insights config set walletPrivateKey <key>` to enable paid x402 MCP calls.',\n )\n }\n\n const privateKey = await decryptKey()\n return createMcpFetchClient(privateKey as `0x${string}`)\n}\n\nexport async function createConfiguredMcpFetch(config: Pick<InvestigatorConfig, 'mcpAuthToken'>): Promise<FetchLike> {\n return createConfiguredFetchWithToken(config.mcpAuthToken, 'mcpAuthToken')\n}\n\nexport async function createConfiguredGraphMcpFetch(\n config: Pick<InvestigatorConfig, 'mcpAuthToken' | 'graphMcpAuthToken' | 'graphMcpMode'>,\n): Promise<FetchLike> {\n if (config.graphMcpMode === 'debug') {\n const authToken = config.graphMcpAuthToken?.trim() || config.mcpAuthToken?.trim()\n if (!authToken) {\n throw new Error('Graph MCP debug mode requires graphMcpAuthToken. Run `cia access-key set <key>` or `cia debug on --token <token>`.')\n }\n return createMcpAuthFetchClient(authToken)\n }\n\n return createConfiguredFetchWithToken(undefined, 'walletPrivateKey')\n}\n"],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
|
@@ -3,9 +3,9 @@ const require_config = require("./config-BwVx19Og.cjs");
|
|
|
3
3
|
const require_app = require("./app-BxojXjtB.cjs");
|
|
4
4
|
const require_server = require("./server-BqVdWath.cjs");
|
|
5
5
|
const require_wallet = require("./wallet-TAlNMvIM.cjs");
|
|
6
|
-
const require_tools = require("./tools-
|
|
6
|
+
const require_tools = require("./tools-UH5hRXYG.cjs");
|
|
7
7
|
const require_topup_server = require("./topup-server-yAaXYkJP.cjs");
|
|
8
|
-
const require_client = require("./client-
|
|
8
|
+
const require_client = require("./client-BYnFGA0y.cjs");
|
|
9
9
|
const require_viz = require("./viz-Da9YWN_I.cjs");
|
|
10
10
|
exports.buildTopupInfo = require_tools.buildTopupInfo;
|
|
11
11
|
exports.createApp = require_app.createApp;
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/config/schema.ts","../src/config/index.ts","../src/server/app.ts","../src/server/index.ts","../src/wallet/index.ts","../src/wallet/tools.ts","../src/wallet/mcp-proxy/topup-server.ts","../src/wallet/topup-server.ts","../src/mcp/client.ts","../src/viz/graph-model.ts","../src/viz/index.ts"],"mappings":";;;;;cAmBa,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;KAYb,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,YAAA;;;iBCoB1B,UAAA,CAAA,GAAc,OAAO,CAAC,kBAAA;AAAA,iBAMtB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,kBAAA,IAAsB,OAAA;AAAA,iBAclD,gBAAA,CAAA,GAAoB,OAAO;;;iBC4DjC,SAAA,CAAA,GAAa,IAAI;;;iBChIjB,WAAA,CAAY,IAAW;;;iBC0BvB,yBAAA,CAA0B,KAAA,WAAgB,GAAG;AAAA,iBAO7C,2BAAA,CAA4B,UAAA,WAAqB,OAAO;;AJjBxE;;;;;;iBI4BsB,UAAA,CAAW,UAAA,WAAqB,OAAO;AAAA,iBA2BvC,mBAAA,CAAoB,UAAA,WAAqB,OAAO,CAAC,OAAA;;;;;;;iBAajD,UAAA,CAAA,GAAc,OAAO;;;;;iBA2CrB,kBAAA,CAAA,GAAsB,OAAO;;;cC7HtC,aAAA;AAAA,cACA,YAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/config/schema.ts","../src/config/index.ts","../src/server/app.ts","../src/server/index.ts","../src/wallet/index.ts","../src/wallet/tools.ts","../src/wallet/mcp-proxy/topup-server.ts","../src/wallet/topup-server.ts","../src/mcp/client.ts","../src/viz/graph-model.ts","../src/viz/index.ts"],"mappings":";;;;;cAmBa,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;KAYb,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,YAAA;;;iBCoB1B,UAAA,CAAA,GAAc,OAAO,CAAC,kBAAA;AAAA,iBAMtB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,kBAAA,IAAsB,OAAA;AAAA,iBAclD,gBAAA,CAAA,GAAoB,OAAO;;;iBC4DjC,SAAA,CAAA,GAAa,IAAI;;;iBChIjB,WAAA,CAAY,IAAW;;;iBC0BvB,yBAAA,CAA0B,KAAA,WAAgB,GAAG;AAAA,iBAO7C,2BAAA,CAA4B,UAAA,WAAqB,OAAO;;AJjBxE;;;;;;iBI4BsB,UAAA,CAAW,UAAA,WAAqB,OAAO;AAAA,iBA2BvC,mBAAA,CAAoB,UAAA,WAAqB,OAAO,CAAC,OAAA;;;;;;;iBAajD,UAAA,CAAA,GAAc,OAAO;;;;;iBA2CrB,kBAAA,CAAA,GAAsB,OAAO;;;cC7HtC,aAAA;AAAA,cACA,YAAA;AAAA,UAyCI,oBAAA;EACf,OAAA,EAAS,OAAA;EACT,UAAA,EAAY,GAAG;AAAA;AAAA,UAGA,SAAA;EACf,cAAA;EACA,OAAA;EACA,QAAA,SAAiB,aAAA;EACjB,KAAA;EACA,cAAA,SAAuB,YAAY;EACnC,SAAA;AAAA;AAAA,iBAqCoB,gBAAA,CAAA,GAAoB,OAAO,CAAC,oBAAA;AAAA,iBAa5B,cAAA,CACpB,OAAA,EAAS,OAAA,WACT,MAAA,wBACC,OAAO;AAAA,iBAsBY,aAAA,CACpB,OAAA,EAAS,OAAA,WACT,MAAA,wBACC,OAAO;AAAA,iBA8OM,mBAAA,CAAoB,OAAA,UAAiB,WAAA,UAAqB,UAAA;AAAA,iBAUpD,oBAAA,CAAqB,OAAA,GAAU,oBAAA,GAAuB,OAAO;AAAA,iBASnE,cAAA,CAAe,OAAA,UAAiB,QAAA,YAAoB,SAAS;;;iBClR7D,oBAAA,CAAqB,kBAAA,UAA4B,QAAgB;;;iBClBjE,WAAA,CAAA;AAAA,iBAcM,gBAAA,CAAiB,OAAA,EAAS,oBAAA,YAAgC,OAAO;;;;;;;;;;;;;iBCwBvE,oBAAA,CAAqB,UAAA,iBAA2B,SAAA,mBAAkB,KAAA;;;cCnIrE,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;KAWV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;AAAA,cAE1B,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;KAQV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;AAAA,cAE1B,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;;;iBClCjB,qBAAA,CAAsB,IAAA;EAC1C,MAAA;EACA,QAAA;AAAA,IACE,OAAO;EAAG,KAAA;EAAe,QAAA;AAAA"}
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config/schema.ts","../src/config/index.ts","../src/server/app.ts","../src/server/index.ts","../src/wallet/index.ts","../src/wallet/tools.ts","../src/wallet/mcp-proxy/topup-server.ts","../src/wallet/topup-server.ts","../src/mcp/client.ts","../src/viz/graph-model.ts","../src/viz/index.ts"],"mappings":";;;;;cAmBa,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;KAYb,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,YAAA;;;iBCoB1B,UAAA,CAAA,GAAc,OAAO,CAAC,kBAAA;AAAA,iBAMtB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,kBAAA,IAAsB,OAAA;AAAA,iBAclD,gBAAA,CAAA,GAAoB,OAAO;;;iBC4DjC,SAAA,CAAA,GAAa,IAAI;;;iBChIjB,WAAA,CAAY,IAAW;;;iBC0BvB,yBAAA,CAA0B,KAAA,WAAgB,GAAG;AAAA,iBAO7C,2BAAA,CAA4B,UAAA,WAAqB,OAAO;;AJjBxE;;;;;;iBI4BsB,UAAA,CAAW,UAAA,WAAqB,OAAO;AAAA,iBA2BvC,mBAAA,CAAoB,UAAA,WAAqB,OAAO,CAAC,OAAA;;;;;;;iBAajD,UAAA,CAAA,GAAc,OAAO;;;;;iBA2CrB,kBAAA,CAAA,GAAsB,OAAO;;;cC7HtC,aAAA;AAAA,cACA,YAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/config/schema.ts","../src/config/index.ts","../src/server/app.ts","../src/server/index.ts","../src/wallet/index.ts","../src/wallet/tools.ts","../src/wallet/mcp-proxy/topup-server.ts","../src/wallet/topup-server.ts","../src/mcp/client.ts","../src/viz/graph-model.ts","../src/viz/index.ts"],"mappings":";;;;;cAmBa,YAAA,EAAY,CAAA,CAAA,SAAA;;;;;;;;;;;;;;KAYb,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,YAAA;;;iBCoB1B,UAAA,CAAA,GAAc,OAAO,CAAC,kBAAA;AAAA,iBAMtB,UAAA,CAAW,OAAA,EAAS,OAAA,CAAQ,kBAAA,IAAsB,OAAA;AAAA,iBAclD,gBAAA,CAAA,GAAoB,OAAO;;;iBC4DjC,SAAA,CAAA,GAAa,IAAI;;;iBChIjB,WAAA,CAAY,IAAW;;;iBC0BvB,yBAAA,CAA0B,KAAA,WAAgB,GAAG;AAAA,iBAO7C,2BAAA,CAA4B,UAAA,WAAqB,OAAO;;AJjBxE;;;;;;iBI4BsB,UAAA,CAAW,UAAA,WAAqB,OAAO;AAAA,iBA2BvC,mBAAA,CAAoB,UAAA,WAAqB,OAAO,CAAC,OAAA;;;;;;;iBAajD,UAAA,CAAA,GAAc,OAAO;;;;;iBA2CrB,kBAAA,CAAA,GAAsB,OAAO;;;cC7HtC,aAAA;AAAA,cACA,YAAA;AAAA,UAyCI,oBAAA;EACf,OAAA,EAAS,OAAA;EACT,UAAA,EAAY,GAAG;AAAA;AAAA,UAGA,SAAA;EACf,cAAA;EACA,OAAA;EACA,QAAA,SAAiB,aAAA;EACjB,KAAA;EACA,cAAA,SAAuB,YAAY;EACnC,SAAA;AAAA;AAAA,iBAqCoB,gBAAA,CAAA,GAAoB,OAAO,CAAC,oBAAA;AAAA,iBAa5B,cAAA,CACpB,OAAA,EAAS,OAAA,WACT,MAAA,wBACC,OAAO;AAAA,iBAsBY,aAAA,CACpB,OAAA,EAAS,OAAA,WACT,MAAA,wBACC,OAAO;AAAA,iBA8OM,mBAAA,CAAoB,OAAA,UAAiB,WAAA,UAAqB,UAAA;AAAA,iBAUpD,oBAAA,CAAqB,OAAA,GAAU,oBAAA,GAAuB,OAAO;AAAA,iBASnE,cAAA,CAAe,OAAA,UAAiB,QAAA,YAAoB,SAAS;;;iBClR7D,oBAAA,CAAqB,kBAAA,UAA4B,QAAgB;;;iBClBjE,WAAA,CAAA;AAAA,iBAcM,gBAAA,CAAiB,OAAA,EAAS,oBAAA,YAAgC,OAAO;;;;;;;;;;;;;iBCwBvE,oBAAA,CAAqB,UAAA,iBAA2B,SAAA,mBAAkB,KAAA;;;cCnIrE,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;KAWV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;AAAA,cAE1B,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;KAQV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;AAAA,cAE1B,SAAA,EAAS,CAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYV,SAAA,GAAY,CAAA,CAAE,KAAK,QAAQ,SAAA;;;iBClCjB,qBAAA,CAAsB,IAAA;EAC1C,MAAA;EACA,QAAA;AAAA,IACE,OAAO;EAAG,KAAA;EAAe,QAAA;AAAA"}
|
package/dist/index.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { i as saveConfig, n as loadConfig, r as resetConfigCache } from "./confi
|
|
|
2
2
|
import { t as createApp } from "./app-CRd39JJ8.mjs";
|
|
3
3
|
import { n as startServer } from "./server-BXLX2j_A.mjs";
|
|
4
4
|
import { a as setWalletPrivateKey, i as normalizeWalletPrivateKey, n as encryptKey, o as walletAddressFromPrivateKey, r as isWalletConfigured, t as decryptKey } from "./wallet-D8IqFRKY.mjs";
|
|
5
|
-
import { a as getWalletAccount, i as getBalanceUsdc, n as formatWalletBalance, o as getWalletBalanceText, r as getBalanceEth, t as buildTopupInfo } from "./tools-
|
|
5
|
+
import { a as getWalletAccount, i as getBalanceUsdc, n as formatWalletBalance, o as getWalletBalanceText, r as getBalanceEth, t as buildTopupInfo } from "./tools-D6RBAhSX.mjs";
|
|
6
6
|
import { i as generateArtifactHtml, n as startTopupServer, t as getTopupUrl } from "./topup-server-BJgVw6Jt.mjs";
|
|
7
|
-
import { i as createMcpFetchClient } from "./client-
|
|
7
|
+
import { i as createMcpFetchClient } from "./client-Dl-uHrh1.mjs";
|
|
8
8
|
import { t as generateVisualization } from "./viz-DkJyqlUu.mjs";
|
|
9
9
|
export { buildTopupInfo, createApp, createMcpFetchClient, decryptKey, encryptKey, formatWalletBalance, generateArtifactHtml, generateVisualization, getBalanceEth, getBalanceUsdc, getTopupUrl, getWalletAccount, getWalletBalanceText, isWalletConfigured, loadConfig, normalizeWalletPrivateKey, resetConfigCache, saveConfig, setWalletPrivateKey, startServer, startTopupServer, walletAddressFromPrivateKey };
|
|
@@ -40,7 +40,7 @@ This is a workspace for Chain Insights AML investigations.
|
|
|
40
40
|
|
|
41
41
|
\`\`\`bash
|
|
42
42
|
chain-insights mcp tools --refresh
|
|
43
|
-
chain-insights wallet
|
|
43
|
+
chain-insights wallet ready --no-approve
|
|
44
44
|
\`\`\`
|
|
45
45
|
|
|
46
46
|
## Layout
|
|
@@ -229,4 +229,4 @@ async function initWorkspace(options) {
|
|
|
229
229
|
//#endregion
|
|
230
230
|
export { initWorkspace };
|
|
231
231
|
|
|
232
|
-
//# sourceMappingURL=init-
|
|
232
|
+
//# sourceMappingURL=init-CB_ga4_8.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-CB_ga4_8.mjs","names":[],"sources":["../src/workspace/init.ts"],"sourcesContent":["import { access, mkdir, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\nimport { LOCAL_GRAPH_MCP_ENDPOINT } from '../config/mcp-endpoint.js'\n\nexport interface InitWorkspaceOptions {\n targetDir: string\n force?: boolean\n}\n\nexport interface InitWorkspaceResult {\n workspaceRoot: string\n filesWritten: string[]\n}\n\nconst WORKSPACE_DIRS = [\n '.chain-insights',\n '.chain-insights/schema',\n '.chain-insights/runtime',\n '.chain-insights/runtime/logs',\n '.chain-insights/runtime-skill',\n 'cases',\n 'imports',\n 'reports',\n 'reports/graphs',\n 'reports/tables',\n 'templates',\n]\n\nfunction todayIso(): string {\n return new Date().toISOString().slice(0, 10)\n}\n\nfunction workspaceJson(workspaceRoot: string): string {\n return JSON.stringify({\n schema: 'chain-insights.workspace.v1',\n name: 'Chain Insights Investigations',\n workspace_root: workspaceRoot,\n default_network: 'bittensor',\n graph_mcp_endpoint: LOCAL_GRAPH_MCP_ENDPOINT,\n cases_dir: 'cases',\n imports_dir: 'imports',\n reports_dir: 'reports',\n templates_dir: 'templates',\n created_at: todayIso(),\n }, null, 2) + '\\n'\n}\n\nconst README = `# Chain Insights Investigations\n\nThis is a workspace for Chain Insights AML investigations.\n\n## Start\n\n\\`\\`\\`bash\nchain-insights mcp tools --refresh\nchain-insights wallet ready --no-approve\n\\`\\`\\`\n\n## Layout\n\n\\`\\`\\`text\n.chain-insights/ Workspace metadata\ncases/ Case exports and notes\nimports/ External reports, CSVs, screenshots, raw notes\nreports/ Final or interim analyst reports\nreports/graphs/ Graph JSON for visualization\nreports/tables/ Compact tabular extracts\ntemplates/ Reusable case/report templates\n.chain-insights/schema/ Runtime graph schema captures\n.chain-insights/runtime/ Workspace-local runtime process state and debug logs\n.chain-insights/runtime-skill/ Workspace-specific agent schema notes\n\\`\\`\\`\n`\n\nconst AGENTS = `# Agent Instructions\n\nYou are operating inside a Chain Insights investigation workspace.\n\n- Read README.md first.\n- If this directory is not initialized, run \\`cia init .\\` before investigation-producing commands.\n- Do not rerun init in an existing workspace unless replacing scaffolding with \\`--force\\`.\n- Read .chain-insights/runtime-skill/SKILL.md before graph queries.\n- Preserve full blockchain addresses exactly.\n- Do not guess the network for graph queries.\n- Capture or refresh graph schema before the first case query.\n- Save compact evidence with original graph field names.\n- Put canonical graph JSON in reports/graphs/ and analyst tables in reports/tables/.\n- Evidence files should summarize and point to graph/table outputs; do not paste large raw JSON blobs into evidence Markdown.\n- Investigation output must stay in this initialized workspace.\n- Never write cases, evidence, reports, graph JSON, HTML, schema captures, or logs to ~/.chain-insights.\n- Keep theories lightweight until evidence supports them.\n`\n\nconst CLAUDE = AGENTS\n\nconst CASE_BRIEF = `# Case Brief\n\n## Summary\n\nStatus:\nNetwork:\nCurrent Assessment:\n\n## Known Addresses\n\n## Claims To Validate\n\n## Evidence\n\n## Next Steps\n`\n\nconst IMPORTS_README = `# External Investigation Inputs\n\nPut user-provided or third-party investigation material here before turning it\ninto case evidence.\n\nExamples:\n\n- Exchange support exports\n- CSV extracts\n- Screenshots\n- Raw notes\n- Partner reports\n\nFiles in this directory are inputs, not verified evidence. When an import\nsupports a claim, summarize it into the case evidence manifest and reference\nthe original file path.\n`\n\nconst TEMPLATES_README = `# Reusable Workspace Templates\n\nStore local report, case, prompt, and evidence templates here.\n\nTemplates are optional workspace helpers. They are not evidence and should not\nbe treated as case state until copied into a case, evidence file, dossier, or\nreport.\n`\n\nconst RUNTIME_SKILL = `---\nname: chain-insights-runtime-schema\ndescription: Workspace-local Chain Insights runtime schema notes. Refresh this after connecting to a graph MCP endpoint.\n---\n\n# Runtime Graph Schema\n\nBefore the first investigation query, capture the live graph schema into:\n\n\\`\\`\\`text\n.chain-insights/schema/<network>.graph-schema.json\n\\`\\`\\`\n\nUse \\`graph_query_batch\\` for schema capture. Prefix current topology reads\nwith \\`USE live_topology\\`, historical topology reads with\n\\`USE archive_topology\\`, and fact reads with \\`USE facts\\`, for example:\n\n\\`\\`\\`bash\ncia mcp call graph_query_batch network=<network> 'queries=[{\"id\":\"node_labels\",\"query\":\"USE live_topology MATCH (n:Address) RETURN \\\"Address\\\" AS node_label, count(n) AS sample_count LIMIT 1\"},{\"id\":\"archive_flow_sample\",\"query\":\"USE archive_topology MATCH (:Address)-[f:FLOWS_TO]->(:Address) RETURN f.period_granularity AS granularity, f.amount_sum AS amount_sum LIMIT 20\"}]'\n\\`\\`\\`\n\nThen update this file with observed labels, relationship types, and allowed\nproperty names for the active network.\n\nRules:\n\n- Prefer \\`graph_query\\` and \\`graph_query_batch\\` for graph-language reads.\n- Use \\`USE live_topology\\` for recent topology, \\`USE archive_topology\\`\n for historical topology, and \\`USE facts\\` for labels, features,\n risk scores, assets, and enrichment. Address facts can be reached through\n relationships such as \\`(:Address)-[:HAS_FEATURE]->(:AddressFeature)\\`.\n Archived money-flow topology is exposed as\n \\`(:Address)-[:FLOWS_TO]->(:Address)\\` with \\`period_granularity\\`,\n \\`period_start_date\\`, and \\`period_end_date\\` on the relationship.\n- Preserve source schema field names in evidence and generated data files.\n- Do not rename, reinterpret, or add unit labels to graph fields unless the\n schema or query result explicitly supports that interpretation.\n- Keep evidence compact: select only the fields needed to support the claim.\n Avoid storing whole node or relationship property blobs in evidence unless\n the purpose of the query is schema discovery or debugging.\n- Keep analysis products separate from evidence: graph JSON belongs under\n \\`reports/graphs/\\`, tabular extracts under \\`reports/tables/\\`, and analyst\n narrative under \\`reports/\\`.\n- Evidence Markdown should be a short provenance record with key facts and\n pointers. Large JSON belongs in \\`reports/tables/\\`, not inline in evidence.\n`\n\nconst SCHEMA_README = `# Runtime Schema Captures\n\nStore graph schema captures here, for example:\n\n\\`\\`\\`text\nbittensor.graph-schema.json\n\\`\\`\\`\n\nSchema captures should be generated before the first case query in a fresh\nworkspace, then referenced by evidence, reports, and runtime skill notes.\n`\n\nfunction workspaceFiles(workspaceRoot: string): Array<[string, string]> {\n return [\n ['.chain-insights/workspace.json', workspaceJson(workspaceRoot)],\n ['README.md', README],\n ['AGENTS.md', AGENTS],\n ['CLAUDE.md', CLAUDE],\n ['imports/README.md', IMPORTS_README],\n ['templates/README.md', TEMPLATES_README],\n ['templates/case-brief.md', CASE_BRIEF],\n ['.chain-insights/runtime-skill/SKILL.md', RUNTIME_SKILL],\n ['.chain-insights/schema/README.md', SCHEMA_README],\n ['.chain-insights/runtime/.keep', ''],\n ['.chain-insights/runtime/logs/.keep', ''],\n ]\n}\n\nasync function assertNoFileCollisions(workspaceRoot: string): Promise<void> {\n for (const [relativePath] of workspaceFiles(workspaceRoot)) {\n const filePath = path.join(workspaceRoot, relativePath)\n try {\n await access(filePath)\n throw new Error(`Refusing to overwrite ${filePath}. Re-run with --force to replace workspace files.`)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n continue\n }\n throw err\n }\n }\n}\n\nexport async function initWorkspace(options: InitWorkspaceOptions): Promise<InitWorkspaceResult> {\n const workspaceRoot = path.resolve(options.targetDir)\n if (!options.force) {\n await assertNoFileCollisions(workspaceRoot)\n }\n\n for (const dir of WORKSPACE_DIRS) {\n await mkdir(path.join(workspaceRoot, dir), { recursive: true })\n }\n\n const filesWritten: string[] = []\n const flag = options.force ? 'w' : 'wx'\n for (const [relativePath, content] of workspaceFiles(workspaceRoot)) {\n const filePath = path.join(workspaceRoot, relativePath)\n try {\n await writeFile(filePath, content, { mode: 0o600, flag })\n filesWritten.push(relativePath)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'EEXIST') {\n throw new Error(`Refusing to overwrite ${filePath}. Re-run with --force to replace workspace files.`)\n }\n throw err\n }\n }\n\n return { workspaceRoot, filesWritten }\n}\n"],"mappings":";;;;AAcA,MAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,WAAmB;CAC1B,wBAAO,IAAI,KAAK,GAAE,YAAY,EAAE,MAAM,GAAG,EAAE;AAC7C;AAEA,SAAS,cAAc,eAA+B;CACpD,OAAO,KAAK,UAAU;EACpB,QAAQ;EACR,MAAM;EACN,gBAAgB;EAChB,iBAAiB;EACjB,oBAAoB;EACpB,WAAW;EACX,aAAa;EACb,aAAa;EACb,eAAe;EACf,YAAY,SAAS;CACvB,GAAG,MAAM,CAAC,IAAI;AAChB;AAEA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Bf,MAAM,SAAS;;;;;;;;;;;;;;;;;;AAmBf,MAAM,SAAS;AAEf,MAAM,aAAa;;;;;;;;;;;;;;;;AAiBnB,MAAM,iBAAiB;;;;;;;;;;;;;;;;;AAkBvB,MAAM,mBAAmB;;;;;;;;AASzB,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CtB,MAAM,gBAAgB;;;;;;;;;;;AAYtB,SAAS,eAAe,eAAgD;CACtE,OAAO;EACL,CAAC,kCAAkC,cAAc,aAAa,CAAC;EAC/D,CAAC,aAAa,MAAM;EACpB,CAAC,aAAa,MAAM;EACpB,CAAC,aAAa,MAAM;EACpB,CAAC,qBAAqB,cAAc;EACpC,CAAC,uBAAuB,gBAAgB;EACxC,CAAC,2BAA2B,UAAU;EACtC,CAAC,0CAA0C,aAAa;EACxD,CAAC,oCAAoC,aAAa;EAClD,CAAC,iCAAiC,EAAE;EACpC,CAAC,sCAAsC,EAAE;CAC3C;AACF;AAEA,eAAe,uBAAuB,eAAsC;CAC1E,KAAK,MAAM,CAAC,iBAAiB,eAAe,aAAa,GAAG;EAC1D,MAAM,WAAW,KAAK,KAAK,eAAe,YAAY;EACtD,IAAI;GACF,MAAM,OAAO,QAAQ;GACrB,MAAM,IAAI,MAAM,yBAAyB,SAAS,kDAAkD;EACtG,SAAS,KAAK;GACZ,IAAK,IAA8B,SAAS,UAC1C;GAEF,MAAM;EACR;CACF;AACF;AAEA,eAAsB,cAAc,SAA6D;CAC/F,MAAM,gBAAgB,KAAK,QAAQ,QAAQ,SAAS;CACpD,IAAI,CAAC,QAAQ,OACX,MAAM,uBAAuB,aAAa;CAG5C,KAAK,MAAM,OAAO,gBAChB,MAAM,MAAM,KAAK,KAAK,eAAe,GAAG,GAAG,EAAE,WAAW,KAAK,CAAC;CAGhE,MAAM,eAAyB,CAAC;CAChC,MAAM,OAAO,QAAQ,QAAQ,MAAM;CACnC,KAAK,MAAM,CAAC,cAAc,YAAY,eAAe,aAAa,GAAG;EACnE,MAAM,WAAW,KAAK,KAAK,eAAe,YAAY;EACtD,IAAI;GACF,MAAM,UAAU,UAAU,SAAS;IAAE,MAAM;IAAO;GAAK,CAAC;GACxD,aAAa,KAAK,YAAY;EAChC,SAAS,KAAK;GACZ,IAAK,IAA8B,SAAS,UAC1C,MAAM,IAAI,MAAM,yBAAyB,SAAS,kDAAkD;GAEtG,MAAM;EACR;CACF;CAEA,OAAO;EAAE;EAAe;CAAa;AACvC"}
|
package/dist/mcp-proxy.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_chunk = require("./chunk-DakpK96I.cjs");
|
|
3
3
|
const require_version = require("./version-CO9Or_YV.cjs");
|
|
4
|
-
const require_client = require("./client-
|
|
4
|
+
const require_client = require("./client-BYnFGA0y.cjs");
|
|
5
5
|
const require_tool_visibility = require("./tool-visibility-iAVQV3t0.cjs");
|
|
6
6
|
let node_url = require("node:url");
|
|
7
7
|
let node_path = require("node:path");
|
|
@@ -578,7 +578,7 @@ async function normalizeRemoteToolResult(result, config, toolName = "remote-grap
|
|
|
578
578
|
async function createProxy() {
|
|
579
579
|
const { loadConfig } = await Promise.resolve().then(() => require("./config-BwVx19Og.cjs")).then((n) => n.config_exports);
|
|
580
580
|
const { activeDataDir, findActiveWorkspace } = await Promise.resolve().then(() => require("./active-BVr55kvW.cjs")).then((n) => n.active_exports);
|
|
581
|
-
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await Promise.resolve().then(() => require("./client-
|
|
581
|
+
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await Promise.resolve().then(() => require("./client-BYnFGA0y.cjs")).then((n) => n.client_exports);
|
|
582
582
|
const { loadSchema, saveSchema } = await Promise.resolve().then(() => require("./schema-cache-CJk1EL3L.cjs"));
|
|
583
583
|
const loadedConfig = await loadConfig();
|
|
584
584
|
const activeWorkspace = findActiveWorkspace();
|
|
@@ -689,7 +689,7 @@ async function createProxy() {
|
|
|
689
689
|
inputSchema: zod.object({}).passthrough()
|
|
690
690
|
}, async () => {
|
|
691
691
|
try {
|
|
692
|
-
const { getWalletAccount, getWalletBalanceText } = await Promise.resolve().then(() => require("./tools-
|
|
692
|
+
const { getWalletAccount, getWalletBalanceText } = await Promise.resolve().then(() => require("./tools-UH5hRXYG.cjs")).then((n) => n.tools_exports);
|
|
693
693
|
return {
|
|
694
694
|
content: [{
|
|
695
695
|
type: "text",
|
|
@@ -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-q4NMdmDX.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-q4NMdmDX.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-q4NMdmDX.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-q4NMdmDX.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, {
|
|
@@ -1346,7 +1346,7 @@ async function createProxy() {
|
|
|
1346
1346
|
if (/\b402\b/.test(msg) || msg.toLowerCase().includes("payment")) return {
|
|
1347
1347
|
content: [{
|
|
1348
1348
|
type: "text",
|
|
1349
|
-
text: `Payment required for ${tool.name}. This tool costs USDC on Base via x402 micropayments. Next steps: run \`chain-insights wallet
|
|
1349
|
+
text: `Payment required for ${tool.name}. This tool costs USDC on Base via x402 micropayments. Next steps: run \`chain-insights wallet ready\` to check funding and finish one-time payment setup, run \`chain-insights wallet topup\` if it says the wallet needs USDC, or \`chain-insights access-key set <key>\` if you have been given test access.`
|
|
1350
1350
|
}],
|
|
1351
1351
|
isError: true
|
|
1352
1352
|
};
|
package/dist/mcp-proxy.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as PACKAGE_VERSION } from "./version-BA3J8hu4.mjs";
|
|
2
|
-
import { t as PaymentRequiredError } from "./client-
|
|
2
|
+
import { t as PaymentRequiredError } from "./client-Dl-uHrh1.mjs";
|
|
3
3
|
import { t as HIDDEN_REMOTE_TOOL_NAMES } from "./tool-visibility-BHRFLXuU.mjs";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import path from "node:path";
|
|
@@ -574,7 +574,7 @@ async function normalizeRemoteToolResult(result, config, toolName = "remote-grap
|
|
|
574
574
|
async function createProxy() {
|
|
575
575
|
const { loadConfig } = await import("./config-Drgc2HuF.mjs").then((n) => n.t);
|
|
576
576
|
const { activeDataDir, findActiveWorkspace } = await import("./active-ByNgjuAg.mjs").then((n) => n.n);
|
|
577
|
-
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-
|
|
577
|
+
const { createConfiguredGraphMcpFetch, resolveGraphMcpEndpoint } = await import("./client-Dl-uHrh1.mjs").then((n) => n.n);
|
|
578
578
|
const { loadSchema, saveSchema } = await import("./schema-cache-DwDvPy4e.mjs");
|
|
579
579
|
const loadedConfig = await loadConfig();
|
|
580
580
|
const activeWorkspace = findActiveWorkspace();
|
|
@@ -685,7 +685,7 @@ async function createProxy() {
|
|
|
685
685
|
inputSchema: z.object({}).passthrough()
|
|
686
686
|
}, async () => {
|
|
687
687
|
try {
|
|
688
|
-
const { getWalletAccount, getWalletBalanceText } = await import("./tools-
|
|
688
|
+
const { getWalletAccount, getWalletBalanceText } = await import("./tools-D6RBAhSX.mjs").then((n) => n.c);
|
|
689
689
|
return {
|
|
690
690
|
content: [{
|
|
691
691
|
type: "text",
|
|
@@ -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-w7En2m3q.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-w7En2m3q.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-w7En2m3q.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-w7En2m3q.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, {
|
|
@@ -1342,7 +1342,7 @@ async function createProxy() {
|
|
|
1342
1342
|
if (/\b402\b/.test(msg) || msg.toLowerCase().includes("payment")) return {
|
|
1343
1343
|
content: [{
|
|
1344
1344
|
type: "text",
|
|
1345
|
-
text: `Payment required for ${tool.name}. This tool costs USDC on Base via x402 micropayments. Next steps: run \`chain-insights wallet
|
|
1345
|
+
text: `Payment required for ${tool.name}. This tool costs USDC on Base via x402 micropayments. Next steps: run \`chain-insights wallet ready\` to check funding and finish one-time payment setup, run \`chain-insights wallet topup\` if it says the wallet needs USDC, or \`chain-insights access-key set <key>\` if you have been given test access.`
|
|
1346
1346
|
}],
|
|
1347
1347
|
isError: true
|
|
1348
1348
|
};
|