agentcash 0.13.5 → 0.13.6
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/cjs/run-server.cjs +20 -13
- package/dist/esm/{chunk-VXDT5LRL.js → chunk-FBA5T723.js} +2 -2
- package/dist/esm/{chunk-7LZ2DPRY.js → chunk-UUET774G.js} +2 -2
- package/dist/esm/{chunk-Q6VAWMKV.js → chunk-Y2ZHSQCL.js} +2 -2
- package/dist/esm/index.js +5 -5
- package/dist/esm/{install-6ASGR4TT.js → install-HPZI2IEI.js} +3 -3
- package/dist/esm/{onboard-OXHQCZSZ.js → onboard-TYXDHQPJ.js} +3 -3
- package/dist/esm/{report-error-PJZO23SJ.js → report-error-HPZYZ42U.js} +3 -3
- package/dist/esm/{server-O5PAE733.js → server-7VMAYT5R.js} +5 -15
- package/dist/esm/server-7VMAYT5R.js.map +1 -0
- package/dist/esm/{server-WOTLIN4E.js → server-R26PF6CE.js} +2 -2
- package/package.json +2 -2
- package/dist/esm/server-O5PAE733.js.map +0 -1
- /package/dist/esm/{chunk-VXDT5LRL.js.map → chunk-FBA5T723.js.map} +0 -0
- /package/dist/esm/{chunk-7LZ2DPRY.js.map → chunk-UUET774G.js.map} +0 -0
- /package/dist/esm/{chunk-Q6VAWMKV.js.map → chunk-Y2ZHSQCL.js.map} +0 -0
- /package/dist/esm/{install-6ASGR4TT.js.map → install-HPZI2IEI.js.map} +0 -0
- /package/dist/esm/{onboard-OXHQCZSZ.js.map → onboard-TYXDHQPJ.js.map} +0 -0
- /package/dist/esm/{report-error-PJZO23SJ.js.map → report-error-HPZYZ42U.js.map} +0 -0
- /package/dist/esm/{server-WOTLIN4E.js.map → server-R26PF6CE.js.map} +0 -0
package/dist/cjs/run-server.cjs
CHANGED
|
@@ -134326,21 +134326,11 @@ var fetchShape = {
|
|
|
134326
134326
|
};
|
|
134327
134327
|
|
|
134328
134328
|
// src/shared/request/schemas/mcp.ts
|
|
134329
|
-
var jsonValueSchema = zod_default.lazy(
|
|
134330
|
-
() => zod_default.union([
|
|
134331
|
-
zod_default.string(),
|
|
134332
|
-
zod_default.number(),
|
|
134333
|
-
zod_default.boolean(),
|
|
134334
|
-
zod_default.null(),
|
|
134335
|
-
zod_default.array(jsonValueSchema),
|
|
134336
|
-
zod_default.record(zod_default.string(), jsonValueSchema)
|
|
134337
|
-
])
|
|
134338
|
-
);
|
|
134339
134329
|
var mcpBodySchema = zod_default.union([
|
|
134340
134330
|
zod_default.string().describe(
|
|
134341
134331
|
"Raw request body string. Passed through to the underlying fetch call as-is."
|
|
134342
134332
|
),
|
|
134343
|
-
|
|
134333
|
+
zod_default.record(zod_default.string(), zod_default.unknown()).transform((json4) => JSON.stringify(json4)).describe("JSON object to be sent as the request body")
|
|
134344
134334
|
]).optional().describe(
|
|
134345
134335
|
"Request body. Can be a string or an object that will be stringified."
|
|
134346
134336
|
);
|
|
@@ -149663,7 +149653,7 @@ var import_path2 = require("path");
|
|
|
149663
149653
|
var import_url2 = require("url");
|
|
149664
149654
|
function getVersion2() {
|
|
149665
149655
|
if (true) {
|
|
149666
|
-
return "0.13.
|
|
149656
|
+
return "0.13.6";
|
|
149667
149657
|
}
|
|
149668
149658
|
const __dirname2 = (0, import_path2.dirname)((0, import_url2.fileURLToPath)(importMetaUrl));
|
|
149669
149659
|
const pkg2 = JSON.parse(
|
|
@@ -157130,7 +157120,7 @@ var import_path3 = require("path");
|
|
|
157130
157120
|
var import_url5 = require("url");
|
|
157131
157121
|
function getVersion3() {
|
|
157132
157122
|
if (true) {
|
|
157133
|
-
return "0.13.
|
|
157123
|
+
return "0.13.6";
|
|
157134
157124
|
}
|
|
157135
157125
|
const __dirname2 = (0, import_path3.dirname)((0, import_url5.fileURLToPath)(importMetaUrl));
|
|
157136
157126
|
const pkg2 = JSON.parse(
|
|
@@ -157537,12 +157527,29 @@ var startServer = async (flags) => {
|
|
|
157537
157527
|
|
|
157538
157528
|
// src/run-server.ts
|
|
157539
157529
|
var import_crypto4 = require("crypto");
|
|
157530
|
+
function formatError3(value) {
|
|
157531
|
+
return value instanceof Error ? value.stack ?? value.message : String(value);
|
|
157532
|
+
}
|
|
157533
|
+
process.on("uncaughtException", (err3) => {
|
|
157534
|
+
console.error(`[agentcash] Fatal: uncaught exception: ${formatError3(err3)}`);
|
|
157535
|
+
log.error("uncaught exception", { error: formatError3(err3) });
|
|
157536
|
+
process.exit(1);
|
|
157537
|
+
});
|
|
157538
|
+
process.on("unhandledRejection", (reason) => {
|
|
157539
|
+
console.error(
|
|
157540
|
+
`[agentcash] Fatal: unhandled rejection: ${formatError3(reason)}`
|
|
157541
|
+
);
|
|
157542
|
+
log.error("unhandled rejection", { error: formatError3(reason) });
|
|
157543
|
+
process.exit(1);
|
|
157544
|
+
});
|
|
157545
|
+
console.error(`[agentcash] Starting v${MCP_VERSION}...`);
|
|
157540
157546
|
startServer({
|
|
157541
157547
|
format: "pretty",
|
|
157542
157548
|
dev: false,
|
|
157543
157549
|
provider: `agentcash@${MCP_VERSION}`,
|
|
157544
157550
|
sessionId: (0, import_crypto4.randomBytes)(16).toString("hex")
|
|
157545
157551
|
}).catch((err3) => {
|
|
157552
|
+
console.error(`[agentcash] Failed to start: ${formatError3(err3)}`);
|
|
157546
157553
|
log.error(String(err3));
|
|
157547
157554
|
process.exit(1);
|
|
157548
157555
|
});
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-27DZCYDB.js";
|
|
7
7
|
import {
|
|
8
8
|
INSTALL_PACKAGE_SPECIFIER
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-UUET774G.js";
|
|
10
10
|
import {
|
|
11
11
|
log,
|
|
12
12
|
safeReadFile,
|
|
@@ -610,4 +610,4 @@ export {
|
|
|
610
610
|
tryAddServer,
|
|
611
611
|
addServer
|
|
612
612
|
};
|
|
613
|
-
//# sourceMappingURL=chunk-
|
|
613
|
+
//# sourceMappingURL=chunk-FBA5T723.js.map
|
|
@@ -4,7 +4,7 @@ import { dirname, join } from "path";
|
|
|
4
4
|
import { fileURLToPath } from "url";
|
|
5
5
|
function getVersion() {
|
|
6
6
|
if (true) {
|
|
7
|
-
return "0.13.
|
|
7
|
+
return "0.13.6";
|
|
8
8
|
}
|
|
9
9
|
const __dirname2 = dirname(fileURLToPath(import.meta.url));
|
|
10
10
|
const pkg = JSON.parse(
|
|
@@ -23,4 +23,4 @@ export {
|
|
|
23
23
|
MCP_VERSION,
|
|
24
24
|
INSTALL_PACKAGE_SPECIFIER
|
|
25
25
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
26
|
+
//# sourceMappingURL=chunk-UUET774G.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
MCP_VERSION
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-UUET774G.js";
|
|
4
4
|
import {
|
|
5
5
|
getBaseUrl,
|
|
6
6
|
safeFetchJson
|
|
@@ -49,4 +49,4 @@ async function submitErrorReport(surface, input, address, dev) {
|
|
|
49
49
|
export {
|
|
50
50
|
submitErrorReport
|
|
51
51
|
};
|
|
52
|
-
//# sourceMappingURL=chunk-
|
|
52
|
+
//# sourceMappingURL=chunk-Y2ZHSQCL.js.map
|
package/dist/esm/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-YIU364NZ.js";
|
|
8
8
|
import {
|
|
9
9
|
MCP_VERSION
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-UUET774G.js";
|
|
11
11
|
import {
|
|
12
12
|
paymentNetworks,
|
|
13
13
|
paymentProtocols,
|
|
@@ -273,7 +273,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
273
273
|
description: "The invite code to redeem (optional)"
|
|
274
274
|
}),
|
|
275
275
|
async (args) => {
|
|
276
|
-
const { onboardCommand } = await import("./onboard-
|
|
276
|
+
const { onboardCommand } = await import("./onboard-TYXDHQPJ.js");
|
|
277
277
|
await onboardCommand({ ...args, code: args.code ?? args.invite });
|
|
278
278
|
}
|
|
279
279
|
).command(
|
|
@@ -402,7 +402,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
402
402
|
description: TOOL_PARAMS.reportError.fullReport
|
|
403
403
|
}),
|
|
404
404
|
async (args) => {
|
|
405
|
-
const { reportErrorCommand } = await import("./report-error-
|
|
405
|
+
const { reportErrorCommand } = await import("./report-error-HPZYZ42U.js");
|
|
406
406
|
await reportErrorCommand(args);
|
|
407
407
|
}
|
|
408
408
|
).command(
|
|
@@ -432,7 +432,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
432
432
|
"Start the MCP server (default when no command specified)",
|
|
433
433
|
(yargs2) => yargs2,
|
|
434
434
|
async (args) => {
|
|
435
|
-
const { serverCommand } = await import("./server-
|
|
435
|
+
const { serverCommand } = await import("./server-R26PF6CE.js");
|
|
436
436
|
await serverCommand(args);
|
|
437
437
|
}
|
|
438
438
|
).command(
|
|
@@ -446,7 +446,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
446
446
|
default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
|
|
447
447
|
}),
|
|
448
448
|
async (args) => {
|
|
449
|
-
const { installMcpServer } = await import("./install-
|
|
449
|
+
const { installMcpServer } = await import("./install-HPZI2IEI.js");
|
|
450
450
|
await installMcpServer(args);
|
|
451
451
|
}
|
|
452
452
|
).command(
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-JOIAQY6V.js";
|
|
4
4
|
import {
|
|
5
5
|
addServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-FBA5T723.js";
|
|
7
7
|
import {
|
|
8
8
|
wait
|
|
9
9
|
} from "./chunk-DZNSJ2BA.js";
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
Clients,
|
|
15
15
|
clientMetadata
|
|
16
16
|
} from "./chunk-27DZCYDB.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-UUET774G.js";
|
|
18
18
|
import "./chunk-ISF2WVEZ.js";
|
|
19
19
|
import {
|
|
20
20
|
getBalance
|
|
@@ -175,4 +175,4 @@ var installMcpServer = async (args) => {
|
|
|
175
175
|
export {
|
|
176
176
|
installMcpServer
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=install-
|
|
178
|
+
//# sourceMappingURL=install-HPZI2IEI.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getPlatformPath,
|
|
3
3
|
tryAddServer
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-FBA5T723.js";
|
|
5
5
|
import "./chunk-DZNSJ2BA.js";
|
|
6
6
|
import {
|
|
7
7
|
installGitHubSkill
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
redeemInviteCode
|
|
14
14
|
} from "./chunk-AWFBYDYO.js";
|
|
15
15
|
import "./chunk-27DZCYDB.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-UUET774G.js";
|
|
17
17
|
import {
|
|
18
18
|
getOnboardingCta,
|
|
19
19
|
getWalletInfo
|
|
@@ -380,4 +380,4 @@ var onboardCommand = async (args) => {
|
|
|
380
380
|
export {
|
|
381
381
|
onboardCommand
|
|
382
382
|
};
|
|
383
|
-
//# sourceMappingURL=onboard-
|
|
383
|
+
//# sourceMappingURL=onboard-TYXDHQPJ.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
submitErrorReport
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-Y2ZHSQCL.js";
|
|
4
|
+
import "./chunk-UUET774G.js";
|
|
5
5
|
import "./chunk-PBVLTOFS.js";
|
|
6
6
|
import {
|
|
7
7
|
getWalletOrExit
|
|
@@ -32,4 +32,4 @@ var reportErrorCommand = async (args) => {
|
|
|
32
32
|
export {
|
|
33
33
|
reportErrorCommand
|
|
34
34
|
};
|
|
35
|
-
//# sourceMappingURL=report-error-
|
|
35
|
+
//# sourceMappingURL=report-error-HPZYZ42U.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-AWFBYDYO.js";
|
|
4
4
|
import {
|
|
5
5
|
submitErrorReport
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-Y2ZHSQCL.js";
|
|
7
7
|
import {
|
|
8
8
|
bridge,
|
|
9
9
|
bridgeSchema
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import {
|
|
12
12
|
loadUserOrigins
|
|
13
13
|
} from "./chunk-YIU364NZ.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-UUET774G.js";
|
|
15
15
|
import {
|
|
16
16
|
checkEndpoint
|
|
17
17
|
} from "./chunk-5CMVFNXO.js";
|
|
@@ -203,21 +203,11 @@ function safeHandler(handler) {
|
|
|
203
203
|
|
|
204
204
|
// src/shared/request/schemas/mcp.ts
|
|
205
205
|
import z from "zod";
|
|
206
|
-
var jsonValueSchema = z.lazy(
|
|
207
|
-
() => z.union([
|
|
208
|
-
z.string(),
|
|
209
|
-
z.number(),
|
|
210
|
-
z.boolean(),
|
|
211
|
-
z.null(),
|
|
212
|
-
z.array(jsonValueSchema),
|
|
213
|
-
z.record(z.string(), jsonValueSchema)
|
|
214
|
-
])
|
|
215
|
-
);
|
|
216
206
|
var mcpBodySchema = z.union([
|
|
217
207
|
z.string().describe(
|
|
218
208
|
"Raw request body string. Passed through to the underlying fetch call as-is."
|
|
219
209
|
),
|
|
220
|
-
|
|
210
|
+
z.record(z.string(), z.unknown()).transform((json) => JSON.stringify(json)).describe("JSON object to be sent as the request body")
|
|
221
211
|
]).optional().describe(
|
|
222
212
|
"Request body. Can be a string or an object that will be stringified."
|
|
223
213
|
);
|
|
@@ -682,7 +672,7 @@ import { dirname, join } from "path";
|
|
|
682
672
|
import { fileURLToPath } from "url";
|
|
683
673
|
function getVersion() {
|
|
684
674
|
if (true) {
|
|
685
|
-
return "0.13.
|
|
675
|
+
return "0.13.6";
|
|
686
676
|
}
|
|
687
677
|
const __dirname2 = dirname(fileURLToPath(import.meta.url));
|
|
688
678
|
const pkg = JSON.parse(
|
|
@@ -748,4 +738,4 @@ var startServer = async (flags) => {
|
|
|
748
738
|
export {
|
|
749
739
|
startServer
|
|
750
740
|
};
|
|
751
|
-
//# sourceMappingURL=server-
|
|
741
|
+
//# sourceMappingURL=server-7VMAYT5R.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/shared/request/schemas/mcp.ts","../../src/server/tools/fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode('startServer', { code }, flags, wallets);\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonStringifyValue } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonStringifyValue,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type {\n JsonStringifyObject,\n JsonStringifyValue,\n} from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonStringifyValue): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (\n data: JsonStringifyObject\n): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonStringifyValue\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import z from 'zod';\n\nimport { coreRequestSchema, fetchShape } from './core';\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n z\n .record(z.string(), z.unknown())\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evm.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport function registerDiscoveryTools(server: McpServer): void {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\n });\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":"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","names":["error","z","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
|
|
@@ -5,10 +5,10 @@ var serverCommand = async (args) => {
|
|
|
5
5
|
"MCP server started. If you meant to explore the CLI, run: npx agentcash --help\n"
|
|
6
6
|
);
|
|
7
7
|
}
|
|
8
|
-
const { startServer } = await import("./server-
|
|
8
|
+
const { startServer } = await import("./server-7VMAYT5R.js");
|
|
9
9
|
await startServer(args);
|
|
10
10
|
};
|
|
11
11
|
export {
|
|
12
12
|
serverCommand
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=server-
|
|
14
|
+
//# sourceMappingURL=server-R26PF6CE.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentcash",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.6",
|
|
4
4
|
"mcpName": "io.github.Merit-Systems/agentcash",
|
|
5
5
|
"description": "Generic MCP server for calling x402-protected APIs with automatic payment handling",
|
|
6
6
|
"type": "module",
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"@agentcash/balance": "0.0.3",
|
|
51
51
|
"@agentcash/bridge": "0.0.2",
|
|
52
52
|
"@agentcash/eslint-config": "0.0.1",
|
|
53
|
-
"@agentcash/networks": "0.0.3",
|
|
54
53
|
"@agentcash/neverthrow": "1.0.1",
|
|
54
|
+
"@agentcash/networks": "0.0.3",
|
|
55
55
|
"@agentcash/typescript-config": "0.0.1"
|
|
56
56
|
},
|
|
57
57
|
"engines": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/shared/request/schemas/mcp.ts","../../src/server/tools/fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode('startServer', { code }, flags, wallets);\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonStringifyValue } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonStringifyValue,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type {\n JsonStringifyObject,\n JsonStringifyValue,\n} from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonStringifyValue): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (\n data: JsonStringifyObject\n): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonStringifyValue\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import z from 'zod';\n\nimport type { JsonValue } from '@/shared/neverthrow/json/types';\nimport { coreRequestSchema, fetchShape } from './core';\n\nconst jsonValueSchema: z.ZodType<\n string | number | boolean | null | JsonValue[] | Record<string, JsonValue>\n> = z.lazy(() =>\n z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.array(jsonValueSchema),\n z.record(z.string(), jsonValueSchema),\n ])\n);\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n jsonValueSchema\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evm.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport function registerDiscoveryTools(server: McpServer): void {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\n });\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;;;ACE9B,IAAM,kCAAkC,CAC7C,SACsC;AACtC,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,KAAK,UAAU,KAAK,IAAI;AAAA,MAChC;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,QACf,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,MAChD;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,QACf,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,MAChD;AAAA,IACF,KAAK;AACH,aAAO,EAAE,MAAM,QAAiB,MAAM,KAAK,KAAK;AAAA,IAClD;AACE,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,8BAA8B,KAAK,IAAI;AAAA,MAC/C;AAAA,EACJ;AACF;;;AChBA,IAAM,gBAAgB,CACpB,SACA,YACmB;AACnB,SAAO;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAIA,GAAI,SAAS,UAAU,EAAE,SAAS,KAAc,IAAI,CAAC;AAAA,EACvD;AACF;AAEO,IAAM,eAAe,CAC1B,OACA,YACmB;AACnB,SAAO,kBAAkB,kBAAkB,KAAK,EAAE;AAAA,IAChD,aACE,cAAc,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC,GAAG,OAAO;AAAA,IACnE,CAAAA,WACE;AAAA,MACE,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAUA,QAAO,MAAM,CAAC,EAAE,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACJ;AACF;AAEO,IAAM,WAAW,OAEtB,KACA,YACG;AACH,QAAM,EAAE,MAAM,IAAI;AAClB,MAAI,aAAa,KAAK,GAAG;AACvB,YAAQ,MAAM,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO;AAAA,MAC3C,KAAK;AACH,cAAM,EAAE,UAAU,GAAG,KAAK,IAAI;AAC9B,cAAM,sBAAsB,MAAM;AAAA,UAChC;AAAA,UACA;AAAA,QACF;AACA,cAAM,cAAyC;AAAA,UAC7C,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE;AAAA,UAC7D,GAAG,oBAAoB;AAAA,YACrB,aAAW,CAAC,gCAAgC,OAAO,CAAC;AAAA,YACpD,MAAM,CAAC;AAAA,UACT;AAAA,QACF;AACA,eAAO,cAAc,aAAa,OAAO;AAAA,IAC7C;AAAA,EACF;AACA,SAAO,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO;AAC3C;AAEO,IAAM,gBAAgB,OAAO,SAAiB,aAAuB;AAC1E,SAAO,SAAS,aAAa,SAAS,QAAQ,CAAC;AACjD;;;AChEA,IAAM,kBAAkB,CACtB,YACmB;AACnB,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,CAAC,SAA6C;AAC1E,SAAO,kBAAkB,oBAAoB,IAAI,EAAE;AAAA,IACjD,aAAW,gBAAgB,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC,CAAC;AAAA,IACrE,WAAS,aAAa,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,2BAA2B,CACtC,SACmB;AACnB,SAAO,kBAAkB,0BAA0B,IAAI,EAAE;AAAA,IACvD,cAAY;AAAA,MACV,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC;AAAA,MAClD,mBAAmB;AAAA,IACrB;AAAA,IACA,WAAS,aAAa,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,qBAAqB,CAChC,MACA,UACmB;AACnB,QAAM,cAAc,QAChB,kBAAkB,qBAAqB,KAAK,EAAE;AAAA,IAC5C,aAAW;AAAA,IACX,MAAM;AAAA,EACR,IACA;AAEJ,SAAO,gBAAgB;AAAA,IACrB,gCAAgC,IAAI;AAAA,IACpC,GAAI,cAAc,CAAC,EAAE,MAAM,QAAiB,MAAM,YAAY,CAAC,IAAI,CAAC;AAAA,EACtE,CAAC;AACH;;;AC1CO,SAAS,YACd,SACuC;AACvC,SAAO,OAAO,UAAa;AAEzB,QAAI;AACF,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B,SAAS,GAAG;AACV,UAAI,MAAM,wBAAwB,CAAC;AACnC,aAAO,aAAa;AAAA,QAClB,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QAChD,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC3BA,OAAO,OAAO;AAKd,IAAM,kBAEF,EAAE;AAAA,EAAK,MACT,EAAE,MAAM;AAAA,IACN,EAAE,OAAO;AAAA,IACT,EAAE,OAAO;AAAA,IACT,EAAE,QAAQ;AAAA,IACV,EAAE,KAAK;AAAA,IACP,EAAE,MAAM,eAAe;AAAA,IACvB,EAAE,OAAO,EAAE,OAAO,GAAG,eAAe;AAAA,EACtC,CAAC;AACH;AAEO,IAAM,gBAAgB,EAC1B,MAAM;AAAA,EACL,EACG,OAAO,EACP;AAAA,IACC;AAAA,EACF;AAAA,EACF,gBACG,UAAU,UAAQ,KAAK,UAAU,IAAI,CAAC,EACtC,SAAS,4CAA4C;AAC1D,CAAC,EACA,SAAS,EACT;AAAA,EACC;AACF;AAEK,IAAM,mBAAmB,kBAAkB,OAAO;AAAA,EACvD,MAAM;AAAA,EACN,SAAS,EACN,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,EAC7B,SAAS,EACT,QAAQ,CAAC,CAAC,EACV;AAAA,IAAU,aACT,OAAO;AAAA,MACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,IACnE;AAAA,EACF,EACC,SAAS,mDAAmD;AACjE,CAAC;AAEM,IAAM,wBAAwB,iBAAiB,OAAO,UAAU;;;AClCvE,IAAM,YAAY;AAEX,IAAM,oBAAmC,WAAS;AACvD,QAAM,EAAE,QAAQ,SAAS,MAAM,IAAI;AAEnC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO,aAAa,MAAM;AAAA,MAC1B,aAAa,aAAa,MAAM;AAAA,MAChC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,YAAM,cAAc,MAAM,aAAa,OAAO;AAAA,QAC5C,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAED,UAAI,YAAY,MAAM,GAAG;AACvB,eAAO,SAAS,WAAW;AAAA,MAC7B;AAEA,YAAM,EAAE,UAAU,YAAY,IAAI,YAAY;AAE9C,UAAI,CAAC,SAAS,IAAI;AAChB,eAAO,cAAc,WAAW,QAAQ;AAAA,MAC1C;AAEA,YAAM,sBAAsB,MAAM,kBAAkB,WAAW,QAAQ;AAEvE,UAAI,oBAAoB,MAAM,GAAG;AAC/B,eAAO,SAAS,mBAAmB;AAAA,MACrC;AAEA,aAAO;AAAA,QACL,oBAAoB;AAAA,QACpB,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACvDO,IAAM,sBAAqC,CAAC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,qBAAqB;AAC3B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,WAAW;AAAA,IACvC;AAAA,IACA,YAAY;AACV,YAAM,SAAS,MAAM,YAAY,oBAAoB,SAAS,KAAK;AACnE,aAAO,yBAAyB;AAAA,QAC9B,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,uBAAuB;AAE7B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,aAAa;AAAA,MACvC,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY;AACV,YAAM,SAAS,MAAM;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO,yBAAyB,MAAM;AAAA,IACxC;AAAA,EACF;AACF;;;ACxCA,OAAOC,QAAO;AAEd,IAAM,WAAW;AAEV,IAAM,4BAA2C,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,oBAAoB;AAAA,MAC9C,aAAa,iBAAiB,OAAO;AAAA,QACnC,QAAQA,GACL,KAAK,aAAa,EAClB,SAAS,EACT,SAAS,YAAY,oBAAoB,MAAM;AAAA,QAClD,MAAM,cAAc,SAAS,YAAY,oBAAoB,IAAI;AAAA,MACnE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,UAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,MAAM;AAAA,QACX,QAAQ,MAAM;AAAA,QACd,oBAAoB,CAAC,CAAC,MAAM;AAAA,MAC9B,CAAC;AAED,YAAM,SAAS,MAAM,cAAc,UAAU,OAAO,EAAE,SAAS,MAAM,CAAC;AAEtE,UAAI,CAAC,OAAO,OAAO;AACjB,YAAI,MAAM,0BAA0B;AAAA,UAClC,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,UACX,OAAO,OAAO;AAAA,UACd,SAAS,OAAO;AAAA,QAClB,CAAC;AACD,eAAO,eAAe;AAAA,UACpB,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,QACb,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,WAAW,WAAW,GAAG;AAClC,eAAO,eAAe;AAAA,UACpB,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,QACb,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,KAAK,MAAM;AAAA,QACX,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACzEA,OAAOC,QAAO;AASd,IAAM,UAAU;AAET,IAAM,2BAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,aAAa;AAAA,MACvC,aAAaC,GAAE,OAAO;AAAA,QACpB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,YAAY,aAAa,IAAI;AAAA,MAChE,CAAC;AAAA,MACD,cAAcA,GAAE,OAAO;AAAA,QACrB,UAAUA,GAAE,QAAQ,IAAI;AAAA,QACxB,QAAQA,GAAE,OAAO,EAAE,SAAS,YAAY,aAAa,OAAO,MAAM;AAAA,QAClE,QAAQA,GAAE,OAAO,EAAE,SAAS,YAAY,aAAa,OAAO,MAAM;AAAA,MACpE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA;AAAA,QACd,iBAAiB;AAAA;AAAA,QACjB,gBAAgB;AAAA;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAM,SAAQ;AACZ,YAAM,SAAS,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK,KAAK;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AAEA,UAAI,OAAO,MAAM,GAAG;AAClB,eAAO,SAAS,QAAQ,EAAE,SAAS,KAAK,CAAC;AAAA,MAC3C;AAEA,YAAM,EAAE,QAAQ,QAAQ,cAAc,QAAQ,IAAI,OAAO;AACzD,YAAM,kBAAkB,gBAAgB;AACxC,YAAM,cACJ,gBAAgB,oCACZ,yBAAyB,eAAe,KACxC,2BAA2B,eAAe;AAEhD,aAAO,yBAAyB;AAAA,QAC9B,UAAU;AAAA,QACV,QAAQ,GAAG,MAAM;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC/DA,OAAOC,QAAO;AASd,IAAMC,YAAW;AAEV,IAAM,yBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,YAAY;AAAA,MACtC,aAAaC,GAAE,OAAO;AAAA,QACpB,MAAMA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,IAAI;AAAA,QACtD,UAAUA,GACP,OAAO,EACP,SAAS,EACT,SAAS,YAAY,YAAY,QAAQ;AAAA,QAC5C,SAASA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO;AAAA,QAC5D,cAAcA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,YAAY;AAAA,QACtE,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,YAAY,YAAY,KAAK;AAAA,QACnE,YAAYA,GACT,OAAO,EACP,SAAS,EACT,SAAS,YAAY,YAAY,UAAU;AAAA,MAChD,CAAC;AAAA,MACD,cAAcA,GAAE,OAAO;AAAA,QACrB,WAAWA,GAAE,QAAQ,IAAI;AAAA,QACzB,UAAUA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO,QAAQ;AAAA,QACrE,SAASA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO,OAAO;AAAA,MACrE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAM,UAAS;AACb,UAAI,KAAK,2BAA2B;AAAA,QAClC,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MACjB,CAAC;AAED,YAAM,SAAS,MAAM;AAAA,QACnBD;AAAA,QACA;AAAA,UACE,MAAM,MAAM;AAAA,UACZ,SAAS,MAAM;AAAA,UACf,cAAc,MAAM;AAAA,UACpB,UAAU,MAAM;AAAA,UAChB,OAAO,MAAM;AAAA,UACb,YAAY,MAAM;AAAA,QACpB;AAAA,QACA,QAAQ,IAAI;AAAA,QACZ,MAAM;AAAA,MACR;AAEA,UAAI,OAAO,MAAM,GAAG;AAClB,YAAI,MAAM,iCAAiC,OAAO,KAAK;AACvD,eAAO,SAAS,QAAQ,EAAE,SAAS,KAAK,CAAC;AAAA,MAC3C;AAEA,UAAI,KAAK,uCAAuC;AAAA,QAC9C,UAAU,OAAO,MAAM;AAAA,MACzB,CAAC;AAED,aAAO,yBAAyB,OAAO,KAAK;AAAA,IAC9C;AAAA,EACF;AACF;;;ACnEA,IAAME,YAAW;AACjB,IAAM,sBAAsB;AAErB,SAAS,uBAAuB,QAAyB;AAC9D,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,qBAAqB;AAAA,MAC/C,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,SAAQ;AACxB,UAAI,KAAK,8BAA8B,KAAK,GAAG,EAAE;AAEjD,YAAM,iBAAiB,MAAM;AAAA,QAC3B;AAAA,QACAA;AAAA,QACA,kBAAkBA,WAAU,IAAI;AAAA,QAChC,QAAM;AAAA,UACJ,OAAO;AAAA,UACP,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,UAAI,eAAe,MAAM,GAAG;AAC1B,eAAO,SAAS,cAAc;AAAA,MAChC;AAEA,YAAM,SAAS,eAAe;AAE9B,UAAI,OAAO,OAAO;AAChB,eAAO,eAAe,MAAM;AAAA,MAC9B;AAEA,UAAI,OAAO,UAAU,aAAa;AAChC,eAAO,eAAe;AAAA,UACpB,OAAO;AAAA,UACP,QAAQ,OAAO;AAAA,UACf,OAAO,iCAAiC,mBAAmB;AAAA,QAC7D,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,OAAO,OAAO,WAAW;AAAA,QACzB,MACE,QAAQ,OAAO,KAAK,KACpB,uDAAuD,mBAAmB;AAAA,MAC9E,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,SACE;AAAA,EACF,eAAe;AACjB;;;AC9EA,SAAS,KAAAC,UAAS;AAUX,IAAM,wBAAuC,CAAC,EAAE,OAAO,MAAM;AAClE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,eAAe;AAAA,MACzC,aAAaC,GAAE,OAAO;AAAA,QACpB,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,EACT;AAAA,UACC,oEAAoE,kBAAkB;AAAA,QACxF;AAAA,MACJ,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,WAAS;AACnB,UAAI,MAAM,cAAc,QAAW;AACjC,oBAAY,EAAE,WAAW,MAAM,UAAU,CAAC;AAAA,MAC5C;AAEA,YAAM,WAAW,YAAY;AAE7B,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,YAAY;AAAA,MACtC,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,MAAM;AAChB,YAAM,WAAW,YAAY;AAE7B,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;;;ACvDA,IAAMC,YAAW,aAAa,OAAO,UAAU;AAExC,IAAM,qBAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO,aAAa,OAAO;AAAA,MAC3B,aAAa,aAAa,OAAO;AAAA,MACjC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,YAAM,SAAS,MAAM,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO;AAE3D,UAAI,OAAO,MAAM,GAAG;AAClB,eAAO,SAAS,MAAM;AAAA,MACxB;AAEA,aAAO,eAAe,OAAO,KAAK;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;ACpBA,IAAMC,aAAY;AAEX,IAAM,qBAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,OAAO;AAAA,MACjC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,SAAQ;AACxB,UAAI,KAAK,mBAAmB,KAAK,KAAK,EAAE;AAExC,YAAM,eAAe,MAAM;AAAA,QACzB;AAAA,QACAA;AAAA,QACA,OAAO,MAAM,EAAE,SAASA,YAAW,SAAS,MAAM,CAAC;AAAA,QACnD,QAAM;AAAA,UACJ,OAAO;AAAA,UACP,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,UAAI,aAAa,MAAM,GAAG;AACxB,eAAO,SAAS,YAAY;AAAA,MAC9B;AAEA,YAAM,SAAS,aAAa;AAE5B,UAAI,CAAC,OAAO,SAAS;AACnB,eAAO,aAAa;AAAA,UAClB,OAAO,OAAO;AAAA,UACd,OAAO,OAAO;AAAA,UACd,SAAS,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,SAAS,OAAO;AAAA,QAChB,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACpEA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAI9B,SAAS,aAAqB;AAC5B,MAAI,MAAwC;AAC1C,WAAO;AAAA,EACT;AAEA,QAAMC,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,QAAM,MAAM,KAAK;AAAA,IACf,aAAa,KAAKA,YAAW,uBAAuB,GAAG,OAAO;AAAA,EAChE;AACA,SAAO,IAAI;AACb;AAEO,IAAM,cAAc,WAAW;;;AfM/B,IAAM,cAAuB,OAAM,UAAS;AACjD,MAAI,KAAK,uBAAuB;AAEhC,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,eAAe,MAAM,UAAU;AAErC,MAAI,aAAa,MAAM,GAAG;AACxB,QAAI,MAAM,KAAK,UAAU,aAAa,OAAO,MAAM,CAAC,CAAC;AACrD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,aAAa;AAE7B,QAAM,OAAO,UAAU,QAAQ,IAAI;AAEnC,MAAI,MAAM;AACR,UAAM,iBAAiB,eAAe,EAAE,KAAK,GAAG,OAAO,OAAO;AAAA,EAChE;AAEA,QAAM,qBAAqB,wBAAwB,gBAAgB,CAAC;AAEpE,QAAM,SAAS,IAAI;AAAA,IACjB;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,OAAO,CAAC,EAAE,KAAK,oCAAoC,CAAC;AAAA,MACpD,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,cAAc;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,oBAAkB,KAAK;AACvB,sBAAoB,KAAK;AACzB,4BAA0B,KAAK;AAC/B,2BAAyB,KAAK;AAC9B,yBAAuB,MAAM;AAC7B,yBAAuB,KAAK;AAC5B,wBAAsB,KAAK;AAC3B,qBAAmB,KAAK;AACxB,qBAAmB,KAAK;AAExB,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAE9B,QAAM,WAAW,YAAY;AAC3B,QAAI,KAAK,kBAAkB;AAC3B,UAAM,OAAO,MAAM;AACnB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,MAAM,KAAK,SAAS,CAAC;AAC1C,UAAQ,GAAG,WAAW,MAAM,KAAK,SAAS,CAAC;AAC7C;","names":["error","z","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|