agentcash 0.7.7 → 0.8.1
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 +1 -1
- package/dist/cjs/run-server.cjs +59 -28
- package/dist/esm/{chunk-5EMDWOPZ.js → chunk-4R52CY5Q.js} +23 -23
- package/dist/esm/chunk-4R52CY5Q.js.map +1 -0
- package/dist/esm/{chunk-TRPO7BKD.js → chunk-6PU3XK6I.js} +8 -228
- package/dist/esm/chunk-6PU3XK6I.js.map +1 -0
- package/dist/esm/{chunk-FLIDR6EU.js → chunk-7ZEXMJYJ.js} +5 -3
- package/dist/esm/{chunk-FLIDR6EU.js.map → chunk-7ZEXMJYJ.js.map} +1 -1
- package/dist/esm/{chunk-2XMLNLWS.js → chunk-AUDGOEEE.js} +9 -26
- package/dist/esm/chunk-AUDGOEEE.js.map +1 -0
- package/dist/esm/{chunk-SRV57WB2.js → chunk-AVLTYWSD.js} +8 -6
- package/dist/esm/{chunk-SRV57WB2.js.map → chunk-AVLTYWSD.js.map} +1 -1
- package/dist/esm/{chunk-QPL3AVUK.js → chunk-C36IAW7R.js} +5 -3
- package/dist/esm/{chunk-QPL3AVUK.js.map → chunk-C36IAW7R.js.map} +1 -1
- package/dist/esm/{chunk-KPEJO3KV.js → chunk-KAEAFW3A.js} +8 -20
- package/dist/esm/chunk-KAEAFW3A.js.map +1 -0
- package/dist/esm/{chunk-PWYZN62H.js → chunk-OHA3LLUQ.js} +3 -3
- package/dist/esm/{chunk-JKCEMNAF.js → chunk-TQ4SMW3W.js} +2 -2
- package/dist/esm/{chunk-24E2V3PA.js → chunk-UN3PRLTL.js} +15 -43
- package/dist/esm/chunk-UN3PRLTL.js.map +1 -0
- package/dist/esm/{chunk-XNU6FVCF.js → chunk-W7DAJMFQ.js} +87 -19
- package/dist/esm/chunk-W7DAJMFQ.js.map +1 -0
- package/dist/esm/{chunk-X6KM3YLG.js → chunk-X4YQNM7D.js} +11 -9
- package/dist/esm/{chunk-X6KM3YLG.js.map → chunk-X4YQNM7D.js.map} +1 -1
- package/dist/esm/chunk-YK5LKPBE.js +7 -0
- package/dist/esm/chunk-YQFK4U62.js +230 -0
- package/dist/esm/chunk-YQFK4U62.js.map +1 -0
- package/dist/esm/chunk-ZDDDU5O2.js +41 -0
- package/dist/esm/chunk-ZDDDU5O2.js.map +1 -0
- package/dist/esm/{commands-IFU565JX.js → commands-B5TNSXYH.js} +626 -509
- package/dist/esm/commands-B5TNSXYH.js.map +1 -0
- package/dist/esm/{fund-N47ZRBRZ.js → fund-PRV53MDA.js} +7 -5
- package/dist/esm/{fund-N47ZRBRZ.js.map → fund-PRV53MDA.js.map} +1 -1
- package/dist/esm/index.js +65 -23
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{install-WJ645IFJ.js → install-JQKZJ656.js} +10 -8
- package/dist/esm/{install-WJ645IFJ.js.map → install-JQKZJ656.js.map} +1 -1
- package/dist/esm/lib.js +4 -3
- package/dist/esm/{server-VU3UAM7K.js → server-HVKLQ3C3.js} +26 -19
- package/dist/esm/server-HVKLQ3C3.js.map +1 -0
- package/dist/esm/shared/operations/index.js +7 -6
- package/dist/esm/shared/operations/index.js.map +1 -1
- package/package.json +3 -3
- package/dist/esm/chunk-24E2V3PA.js.map +0 -1
- package/dist/esm/chunk-2XMLNLWS.js.map +0 -1
- package/dist/esm/chunk-5EMDWOPZ.js.map +0 -1
- package/dist/esm/chunk-KPEJO3KV.js.map +0 -1
- package/dist/esm/chunk-L7FC4RVF.js +0 -7
- package/dist/esm/chunk-TRPO7BKD.js.map +0 -1
- package/dist/esm/chunk-XNU6FVCF.js.map +0 -1
- package/dist/esm/commands-IFU565JX.js.map +0 -1
- package/dist/esm/server-VU3UAM7K.js.map +0 -1
- /package/dist/esm/{chunk-PWYZN62H.js.map → chunk-OHA3LLUQ.js.map} +0 -0
- /package/dist/esm/{chunk-JKCEMNAF.js.map → chunk-TQ4SMW3W.js.map} +0 -0
- /package/dist/esm/{chunk-L7FC4RVF.js.map → chunk-YK5LKPBE.js.map} +0 -0
package/README.md
CHANGED
|
@@ -96,7 +96,7 @@ On first run, a wallet is generated at `~/.agentcash/wallet.json`. Deposit USDC
|
|
|
96
96
|
| `get_wallet_info` | Get wallet address and USDC balance |
|
|
97
97
|
| `redeem_invite` | Redeem an invite code to receive USDC |
|
|
98
98
|
| `check_endpoint_schema` | Check if endpoint is x402-protected, get pricing/schema/auth |
|
|
99
|
-
| `discover_api_endpoints` | Discover x402 resources from origin's .well-known
|
|
99
|
+
| `discover_api_endpoints` | Discover x402 resources from origin's OpenAPI or .well-known |
|
|
100
100
|
| `report_error` | Report critical MCP tool bugs to agentcash developers |
|
|
101
101
|
|
|
102
102
|
## Environment
|
package/dist/cjs/run-server.cjs
CHANGED
|
@@ -6860,12 +6860,12 @@ var require_dist = __commonJS({
|
|
|
6860
6860
|
throw new Error(`Unknown format "${name}"`);
|
|
6861
6861
|
return f;
|
|
6862
6862
|
};
|
|
6863
|
-
function addFormats(ajv, list2,
|
|
6863
|
+
function addFormats(ajv, list2, fs10, exportName) {
|
|
6864
6864
|
var _a2;
|
|
6865
6865
|
var _b;
|
|
6866
6866
|
(_a2 = (_b = ajv.opts.code).formats) !== null && _a2 !== void 0 ? _a2 : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;
|
|
6867
6867
|
for (const f of list2)
|
|
6868
|
-
ajv.addFormat(f,
|
|
6868
|
+
ajv.addFormat(f, fs10[f]);
|
|
6869
6869
|
}
|
|
6870
6870
|
module2.exports = exports2 = formatsPlugin;
|
|
6871
6871
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
@@ -47364,7 +47364,7 @@ var require_node_gyp_build = __commonJS({
|
|
|
47364
47364
|
"../../../node_modules/.pnpm/node-gyp-build@4.8.4/node_modules/node-gyp-build/node-gyp-build.js"(exports2, module2) {
|
|
47365
47365
|
"use strict";
|
|
47366
47366
|
init_cjs_shims();
|
|
47367
|
-
var
|
|
47367
|
+
var fs10 = require("fs");
|
|
47368
47368
|
var path2 = require("path");
|
|
47369
47369
|
var os2 = require("os");
|
|
47370
47370
|
var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require;
|
|
@@ -47425,7 +47425,7 @@ var require_node_gyp_build = __commonJS({
|
|
|
47425
47425
|
};
|
|
47426
47426
|
function readdirSync2(dir) {
|
|
47427
47427
|
try {
|
|
47428
|
-
return
|
|
47428
|
+
return fs10.readdirSync(dir);
|
|
47429
47429
|
} catch (err3) {
|
|
47430
47430
|
return [];
|
|
47431
47431
|
}
|
|
@@ -47519,7 +47519,7 @@ var require_node_gyp_build = __commonJS({
|
|
|
47519
47519
|
return typeof window !== "undefined" && window.process && window.process.type === "renderer";
|
|
47520
47520
|
}
|
|
47521
47521
|
function isAlpine(platform3) {
|
|
47522
|
-
return platform3 === "linux" &&
|
|
47522
|
+
return platform3 === "linux" && fs10.existsSync("/etc/alpine-release");
|
|
47523
47523
|
}
|
|
47524
47524
|
load.parseTags = parseTags;
|
|
47525
47525
|
load.matchTags = matchTags;
|
|
@@ -113816,7 +113816,7 @@ var import_path2 = require("path");
|
|
|
113816
113816
|
var import_url = require("url");
|
|
113817
113817
|
function getVersion2() {
|
|
113818
113818
|
if (true) {
|
|
113819
|
-
return "0.
|
|
113819
|
+
return "0.8.1";
|
|
113820
113820
|
}
|
|
113821
113821
|
const __dirname3 = (0, import_path2.dirname)((0, import_url.fileURLToPath)(importMetaUrl));
|
|
113822
113822
|
const pkg = JSON.parse(
|
|
@@ -113979,7 +113979,7 @@ var TEMPO_TOKEN_ADDRESS = "0x20c0000000000000000000000000000000000000";
|
|
|
113979
113979
|
|
|
113980
113980
|
// src/shared/mpp-enabled.ts
|
|
113981
113981
|
init_cjs_shims();
|
|
113982
|
-
var isMppEnabled = () => "0.
|
|
113982
|
+
var isMppEnabled = () => "0.8.1".includes("-mpp");
|
|
113983
113983
|
|
|
113984
113984
|
// src/shared/operations/fetch-with-payment.ts
|
|
113985
113985
|
init_cjs_shims();
|
|
@@ -115393,28 +115393,33 @@ ${PRIMARY_ORIGINS.flatMap((o) => ORIGIN_METADATA[o] ? [` ${o} \u2014 ${ORIGIN_M
|
|
|
115393
115393
|
reportError: {
|
|
115394
115394
|
mcp: `EMERGENCY ONLY. Report critical MCP tool bugs. Do NOT use for normal errors (balance, network, 4xx) \u2014 those are recoverable.`,
|
|
115395
115395
|
cli: `Report a critical bug to the agentcash team (emergency only). Do NOT use for normal errors like low balance, network timeouts, or 4xx responses \u2014 those are recoverable without filing a report.`
|
|
115396
|
-
}
|
|
115397
|
-
|
|
115396
|
+
}
|
|
115397
|
+
};
|
|
115398
|
+
var WORKFLOW = [
|
|
115399
|
+
`Workflow:`,
|
|
115400
|
+
`1. If you don't already know your balance, call get_wallet_info. You need a balance for paid endpoints \u2014 if it's zero, share the deposit link with the user. SIWX endpoints don't require a balance. You don't need to call this every turn, just before your first paid call or whenever you're unsure.`,
|
|
115401
|
+
`2. Call discover_api_endpoints() to get the endpoint index \u2014 a list of available routes with descriptions and auth modes. The auth mode for each endpoint tells you whether to use fetch (paid) or fetch_with_auth (SIWX).`,
|
|
115402
|
+
`3. Call check_endpoint_schema() to get the exact input/output schema and auth mode for the endpoint you want to call, so you know what fields to pass and what the response contains. Both discover_api_endpoints and check_endpoint_schema return the auth mode.`,
|
|
115403
|
+
`4. Call fetch (paid) or fetch_with_auth (SIWX) based on the auth mode, and with the correct input schema.`
|
|
115404
|
+
].join("\n");
|
|
115405
|
+
function buildServerInstructions(userOrigins = []) {
|
|
115406
|
+
const allOrigins = [
|
|
115407
|
+
...userOrigins.map((o) => ` - ${o.url} \u2014 ${o.description}`),
|
|
115408
|
+
...PRIMARY_ORIGINS.flatMap(
|
|
115409
|
+
(o) => ORIGIN_METADATA[o] ? [` - ${o} \u2014 ${ORIGIN_METADATA[o].description}`] : []
|
|
115410
|
+
)
|
|
115411
|
+
].join("\n");
|
|
115412
|
+
return [
|
|
115398
115413
|
`AgentCash lets you call protected APIs \u2014 handling both x402 micropayments and SIWX authentication seamlessly. It manages a USDC wallet for paid endpoints (fetch) and signs wallet proofs for identity-gated endpoints (fetch_with_auth).`,
|
|
115399
115414
|
`The user has installed agentcash because they want to use paid and SIWX-protected APIs as their preferred way to accomplish related tasks.`,
|
|
115400
115415
|
`Paid endpoints require a wallet balance. SIWX endpoints are free \u2014 they only require a wallet identity.`,
|
|
115401
|
-
|
|
115402
|
-
|
|
115403
|
-
...PRIMARY_ORIGINS.flatMap(
|
|
115404
|
-
(o) => ORIGIN_METADATA[o] ? [` - ${o} \u2014 ${ORIGIN_METADATA[o].description}`] : []
|
|
115405
|
-
)
|
|
115406
|
-
].join("\n"),
|
|
115416
|
+
`If a task could be accomplished by one of these registered origins, run the workflow below:
|
|
115417
|
+
${allOrigins}`,
|
|
115407
115418
|
`discover_api_endpoints also works with any origin beyond this list. If you identify another origin that would be useful for a task, you can use it.`,
|
|
115408
|
-
|
|
115409
|
-
`Workflow:`,
|
|
115410
|
-
`1. If you don't already know your balance, call get_wallet_info. You need a balance for paid endpoints \u2014 if it's zero, share the deposit link with the user. SIWX endpoints don't require a balance. You don't need to call this every turn, just before your first paid call or whenever you're unsure.`,
|
|
115411
|
-
`2. Call discover_api_endpoints() to get the endpoint index \u2014 a list of available routes with descriptions and auth modes. The auth mode for each endpoint tells you whether to use fetch (paid) or fetch_with_auth (SIWX).`,
|
|
115412
|
-
`3. Call check_endpoint_schema() to get the exact input/output schema and auth mode for the endpoint you want to call, so you know what fields to pass and what the response contains. Both discover_api_endpoints and check_endpoint_schema return the auth mode.`,
|
|
115413
|
-
`4. Call fetch (paid) or fetch_with_auth (SIWX) based on the auth mode, and with the correct input schema.`
|
|
115414
|
-
].join("\n"),
|
|
115419
|
+
WORKFLOW,
|
|
115415
115420
|
`If you need to compose multiple endpoints in sequence, or anything about the origin's capabilities is unclear, call discover_api_endpoints with include_guidance=true to retrieve the origin's full usage documentation.`
|
|
115416
|
-
].join("\n\n")
|
|
115417
|
-
}
|
|
115421
|
+
].join("\n\n");
|
|
115422
|
+
}
|
|
115418
115423
|
var REQUEST_PARAMS = {
|
|
115419
115424
|
url: "The endpoint URL",
|
|
115420
115425
|
method: "HTTP method. Defaults to GET for fetch operations.",
|
|
@@ -117234,7 +117239,7 @@ async function discoverResources(surface2, url3, options = {}) {
|
|
|
117234
117239
|
|
|
117235
117240
|
// src/server/tools/discover-resources.ts
|
|
117236
117241
|
var toolName5 = "discover_api_endpoints";
|
|
117237
|
-
var OPENAPI_TRIED_PATHS = "/openapi.json, /.well-known/
|
|
117242
|
+
var OPENAPI_TRIED_PATHS = "/openapi.json, /.well-known/x402";
|
|
117238
117243
|
function registerDiscoveryTools(server) {
|
|
117239
117244
|
server.registerTool(
|
|
117240
117245
|
toolName5,
|
|
@@ -117752,7 +117757,7 @@ var import_path3 = require("path");
|
|
|
117752
117757
|
var import_url2 = require("url");
|
|
117753
117758
|
function getVersion3() {
|
|
117754
117759
|
if (true) {
|
|
117755
|
-
return "0.
|
|
117760
|
+
return "0.8.1";
|
|
117756
117761
|
}
|
|
117757
117762
|
const __dirname3 = (0, import_path3.dirname)((0, import_url2.fileURLToPath)(importMetaUrl));
|
|
117758
117763
|
const pkg = JSON.parse(
|
|
@@ -117920,6 +117925,31 @@ async function getWallet() {
|
|
|
117920
117925
|
return ok2(reconciled);
|
|
117921
117926
|
}
|
|
117922
117927
|
|
|
117928
|
+
// src/shared/user-origins.ts
|
|
117929
|
+
init_cjs_shims();
|
|
117930
|
+
var fs9 = __toESM(require("fs"), 1);
|
|
117931
|
+
var ORIGINS_FILE = configFile("origins.json");
|
|
117932
|
+
var userOriginSchema = zod_default.object({
|
|
117933
|
+
url: zod_default.string(),
|
|
117934
|
+
title: zod_default.string(),
|
|
117935
|
+
description: zod_default.string(),
|
|
117936
|
+
addedAt: zod_default.string()
|
|
117937
|
+
});
|
|
117938
|
+
var originsFileSchema = zod_default.object({
|
|
117939
|
+
added: zod_default.array(userOriginSchema)
|
|
117940
|
+
});
|
|
117941
|
+
function readOriginsFile() {
|
|
117942
|
+
if (!fs9.existsSync(ORIGINS_FILE)) return [];
|
|
117943
|
+
const raw = fs9.readFileSync(ORIGINS_FILE, "utf-8");
|
|
117944
|
+
const json3 = safeParseJson("user-origins", raw);
|
|
117945
|
+
if (!json3.isOk()) return [];
|
|
117946
|
+
const parsed = originsFileSchema.safeParse(json3.value);
|
|
117947
|
+
return parsed.success ? parsed.data.added : [];
|
|
117948
|
+
}
|
|
117949
|
+
function loadUserOrigins() {
|
|
117950
|
+
return readOriginsFile();
|
|
117951
|
+
}
|
|
117952
|
+
|
|
117923
117953
|
// src/server/index.ts
|
|
117924
117954
|
var startServer = async (flags) => {
|
|
117925
117955
|
log.info("Starting agentcash...");
|
|
@@ -117941,6 +117971,7 @@ var startServer = async (flags) => {
|
|
|
117941
117971
|
surface: "startServer"
|
|
117942
117972
|
});
|
|
117943
117973
|
}
|
|
117974
|
+
const serverInstructions = buildServerInstructions(loadUserOrigins());
|
|
117944
117975
|
const server = new McpServer(
|
|
117945
117976
|
{
|
|
117946
117977
|
name: "agentcash",
|
|
@@ -117948,7 +117979,7 @@ var startServer = async (flags) => {
|
|
|
117948
117979
|
version: MCP_VERSION2,
|
|
117949
117980
|
websiteUrl: "https://x402scan.com/mcp",
|
|
117950
117981
|
icons: [{ src: "https://x402scan.com/logo.svg" }],
|
|
117951
|
-
description:
|
|
117982
|
+
description: serverInstructions
|
|
117952
117983
|
},
|
|
117953
117984
|
{
|
|
117954
117985
|
capabilities: {
|
|
@@ -117960,7 +117991,7 @@ var startServer = async (flags) => {
|
|
|
117960
117991
|
listChanged: true
|
|
117961
117992
|
}
|
|
117962
117993
|
},
|
|
117963
|
-
instructions:
|
|
117994
|
+
instructions: serverInstructions
|
|
117964
117995
|
}
|
|
117965
117996
|
);
|
|
117966
117997
|
const props = {
|
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
log
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YQFK4U62.js";
|
|
4
|
+
|
|
5
|
+
// src/shared/operations/discover.ts
|
|
6
|
+
import {
|
|
7
|
+
discoverOriginSchema,
|
|
8
|
+
GuidanceMode
|
|
9
|
+
} from "@agentcash/discovery";
|
|
10
|
+
async function discoverResources(surface, url, options = {}) {
|
|
11
|
+
const guidance = options.includeGuidance === true ? GuidanceMode.Always : options.includeGuidance === false ? GuidanceMode.Never : GuidanceMode.Auto;
|
|
12
|
+
const result = await discoverOriginSchema({ target: url, guidance });
|
|
13
|
+
if (!result.found) {
|
|
14
|
+
log.error(`[discoverResources failed`, {
|
|
15
|
+
surface,
|
|
16
|
+
url,
|
|
17
|
+
cause: result.cause,
|
|
18
|
+
message: result.message
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
4
23
|
|
|
5
24
|
// src/shared/operations/check-endpoint.ts
|
|
6
25
|
import {
|
|
@@ -40,28 +59,9 @@ async function checkEndpoint(surface, url, methods, sampleInputBody, headers) {
|
|
|
40
59
|
return { ...result, advisories };
|
|
41
60
|
}
|
|
42
61
|
|
|
43
|
-
// src/shared/operations/discover.ts
|
|
44
|
-
import {
|
|
45
|
-
discoverOriginSchema,
|
|
46
|
-
GuidanceMode
|
|
47
|
-
} from "@agentcash/discovery";
|
|
48
|
-
async function discoverResources(surface, url, options = {}) {
|
|
49
|
-
const guidance = options.includeGuidance === true ? GuidanceMode.Always : options.includeGuidance === false ? GuidanceMode.Never : GuidanceMode.Auto;
|
|
50
|
-
const result = await discoverOriginSchema({ target: url, guidance });
|
|
51
|
-
if (!result.found) {
|
|
52
|
-
log.error(`[discoverResources failed`, {
|
|
53
|
-
surface,
|
|
54
|
-
url,
|
|
55
|
-
cause: result.cause,
|
|
56
|
-
message: result.message
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
return result;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
62
|
export {
|
|
63
|
+
discoverResources,
|
|
63
64
|
SUPPORTED_METHODS,
|
|
64
|
-
checkEndpoint
|
|
65
|
-
discoverResources
|
|
65
|
+
checkEndpoint
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-4R52CY5Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/shared/operations/discover.ts","../../src/shared/operations/check-endpoint.ts"],"sourcesContent":["import {\n discoverOriginSchema,\n GuidanceMode,\n type DiscoverOriginSchemaSuccess,\n type DiscoverOriginSchemaNotFound,\n} from '@agentcash/discovery';\n\nimport { log } from '@/shared/log';\n\nexport interface DiscoverOptions {\n includeGuidance?: boolean;\n}\n\n/**\n * Discover payment-protected resources on an origin.\n * Fetches OpenAPI spec, builds endpoint index, and fetches guidance.\n *\n * Returns DiscoverOriginSchemaSuccess on success, DiscoverOriginSchemaNotFound with cause on failure.\n */\nexport async function discoverResources(\n surface: string,\n url: string,\n options: DiscoverOptions = {}\n): Promise<DiscoverOriginSchemaSuccess | DiscoverOriginSchemaNotFound> {\n const guidance =\n options.includeGuidance === true\n ? GuidanceMode.Always\n : options.includeGuidance === false\n ? GuidanceMode.Never\n : GuidanceMode.Auto;\n\n const result = await discoverOriginSchema({ target: url, guidance });\n\n if (!result.found) {\n log.error(`[discoverResources failed`, {\n surface,\n url,\n cause: result.cause,\n message: result.message,\n });\n }\n\n return result;\n}\n","import {\n checkEndpointSchema,\n type HttpMethod,\n type CheckEndpointSuccess,\n type CheckEndpointNotFound,\n} from '@agentcash/discovery';\n\nimport { log } from '@/shared/log';\n\nexport const SUPPORTED_METHODS = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n] as const;\n// Narrowed subset of discovery's HttpMethod (excludes HEAD/OPTIONS/TRACE).\nexport type SupportedMethod = Extract<\n HttpMethod,\n (typeof SUPPORTED_METHODS)[number]\n>;\n\n/**\n * Returns advisory data for an endpoint: auth mode, pricing, protocols,\n * input schema, and (when available) exact payment options.\n *\n * Two-phase workflow:\n * 1. Call without `sampleInputSchema` to get the input schema and advisory\n * pricing from the OpenAPI spec (no live request to the endpoint).\n * 2. Once you know what body you intend to send, call again with\n * `sampleInputSchema` set to that body. The discovery layer will probe\n * the live endpoint with that payload and return exact PaymentOptions\n * priced for it — giving a precise cost before committing to a fetch.\n */\nexport async function checkEndpoint(\n surface: string,\n url: string,\n methods?: SupportedMethod[],\n sampleInputBody?: Record<string, unknown>,\n headers?: Record<string, string>\n): Promise<CheckEndpointSuccess | CheckEndpointNotFound> {\n log.info('Checking endpoint', {\n surface,\n url,\n methods,\n hasSampleInputBody: !!sampleInputBody,\n });\n\n const result = await checkEndpointSchema({\n url,\n sampleInputBody,\n headers,\n });\n\n if (!result.found) {\n log.error(`[checkEndpoint failed`, {\n surface,\n url,\n cause: result.cause,\n message: result.message,\n });\n return result;\n }\n\n const advisories = methods?.length\n ? result.advisories.filter(a =>\n methods.includes(a.method as SupportedMethod)\n )\n : result.advisories;\n\n return { ...result, advisories };\n}\n"],"mappings":";;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AAcP,eAAsB,kBACpB,SACA,KACA,UAA2B,CAAC,GACyC;AACrE,QAAM,WACJ,QAAQ,oBAAoB,OACxB,aAAa,SACb,QAAQ,oBAAoB,QAC1B,aAAa,QACb,aAAa;AAErB,QAAM,SAAS,MAAM,qBAAqB,EAAE,QAAQ,KAAK,SAAS,CAAC;AAEnE,MAAI,CAAC,OAAO,OAAO;AACjB,QAAI,MAAM,6BAA6B;AAAA,MACrC;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,IAClB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC3CA;AAAA,EACE;AAAA,OAIK;AAIA,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAmBA,eAAsB,cACpB,SACA,KACA,SACA,iBACA,SACuD;AACvD,MAAI,KAAK,qBAAqB;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,CAAC,CAAC;AAAA,EACxB,CAAC;AAED,QAAM,SAAS,MAAM,oBAAoB;AAAA,IACvC;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,MAAI,CAAC,OAAO,OAAO;AACjB,QAAI,MAAM,yBAAyB;AAAA,MACjC;AAAA,MACA;AAAA,MACA,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,IAClB,CAAC;AACD,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,SAAS,SACxB,OAAO,WAAW;AAAA,IAAO,OACvB,QAAQ,SAAS,EAAE,MAAyB;AAAA,EAC9C,IACA,OAAO;AAEX,SAAO,EAAE,GAAG,QAAQ,WAAW;AACjC;","names":[]}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
isVerbose
|
|
3
|
-
} from "./chunk-ISR6DJ53.js";
|
|
4
|
-
|
|
5
1
|
// ../../../node_modules/.pnpm/neverthrow@8.2.0/node_modules/neverthrow/dist/index.es.js
|
|
6
2
|
var defaultErrorConfig = {
|
|
7
3
|
withStackTrace: false
|
|
@@ -479,53 +475,31 @@ var Err = class {
|
|
|
479
475
|
var fromThrowable = Result.fromThrowable;
|
|
480
476
|
|
|
481
477
|
// ../../internal/neverthrow/dist/index.js
|
|
482
|
-
function resultFromPromise(
|
|
478
|
+
function resultFromPromise(type, surface, promise, error) {
|
|
483
479
|
return ResultAsync.fromPromise(promise, (e) => ({
|
|
484
480
|
...error(e),
|
|
485
|
-
type
|
|
481
|
+
type,
|
|
486
482
|
surface
|
|
487
483
|
}));
|
|
488
484
|
}
|
|
489
|
-
function resultFromThrowable(
|
|
485
|
+
function resultFromThrowable(type, surface, fn, error) {
|
|
490
486
|
return Result.fromThrowable(fn, (e) => ({
|
|
491
487
|
...error(e),
|
|
492
|
-
type
|
|
488
|
+
type,
|
|
493
489
|
surface
|
|
494
490
|
}))();
|
|
495
491
|
}
|
|
496
492
|
function ok2(data) {
|
|
497
493
|
return ok(data);
|
|
498
494
|
}
|
|
499
|
-
function err2(
|
|
495
|
+
function err2(type, surface, error) {
|
|
500
496
|
return err({
|
|
501
497
|
...error,
|
|
502
|
-
type
|
|
498
|
+
type,
|
|
503
499
|
surface
|
|
504
500
|
});
|
|
505
501
|
}
|
|
506
502
|
|
|
507
|
-
// src/shared/neverthrow/fs/index.ts
|
|
508
|
-
import { readFile, writeFile, appendFile, chmod } from "fs/promises";
|
|
509
|
-
var errorType = "fs";
|
|
510
|
-
var fsErr = (surface, error) => err2(errorType, surface, error);
|
|
511
|
-
var fsResultFromPromise = (surface, promise, error) => resultFromPromise(errorType, surface, promise, error);
|
|
512
|
-
var safeReadFile = (surface, path) => fsResultFromPromise(surface, readFile(path, "utf-8"), () => ({
|
|
513
|
-
cause: "file_not_readable",
|
|
514
|
-
message: "Failed to read file"
|
|
515
|
-
}));
|
|
516
|
-
var safeWriteFile = (surface, path, data) => fsResultFromPromise(surface, writeFile(path, data), () => ({
|
|
517
|
-
cause: "file_not_writable",
|
|
518
|
-
message: "Failed to write file"
|
|
519
|
-
}));
|
|
520
|
-
var safeAppendFile = (surface, path, data) => fsResultFromPromise(surface, appendFile(path, data), () => ({
|
|
521
|
-
cause: "file_not_writable",
|
|
522
|
-
message: "Failed to append file"
|
|
523
|
-
}));
|
|
524
|
-
var safeChmod = (surface, path, mode) => fsResultFromPromise(surface, chmod(path, mode), () => ({
|
|
525
|
-
cause: "file_not_chmodable",
|
|
526
|
-
message: "Failed to chmod file"
|
|
527
|
-
}));
|
|
528
|
-
|
|
529
503
|
// src/shared/fs.ts
|
|
530
504
|
import { join } from "path";
|
|
531
505
|
import { homedir } from "os";
|
|
@@ -576,206 +550,12 @@ var configFile = (name) => {
|
|
|
576
550
|
return filePath;
|
|
577
551
|
};
|
|
578
552
|
|
|
579
|
-
// src/shared/log.ts
|
|
580
|
-
var logFile;
|
|
581
|
-
function getLogFile() {
|
|
582
|
-
if (logFile === void 0) {
|
|
583
|
-
const result = resultFromThrowable(
|
|
584
|
-
"log",
|
|
585
|
-
"log",
|
|
586
|
-
() => configFile("mcp.log"),
|
|
587
|
-
(e) => ({
|
|
588
|
-
cause: "log_init",
|
|
589
|
-
message: e instanceof Error ? e.message : String(e)
|
|
590
|
-
})
|
|
591
|
-
);
|
|
592
|
-
logFile = result.isOk() ? result.value : null;
|
|
593
|
-
}
|
|
594
|
-
return logFile;
|
|
595
|
-
}
|
|
596
|
-
function format(args) {
|
|
597
|
-
return args.map(
|
|
598
|
-
(a) => typeof a === "object" && a !== null ? JSON.stringify(a) : String(a)
|
|
599
|
-
).join(" ");
|
|
600
|
-
}
|
|
601
|
-
function write(level, msg, args) {
|
|
602
|
-
const formatted = args.length ? `${msg} ${format(args)}` : msg;
|
|
603
|
-
const line = `[${(/* @__PURE__ */ new Date()).toISOString()}] [${level}] ${formatted}
|
|
604
|
-
`;
|
|
605
|
-
const file = getLogFile();
|
|
606
|
-
if (file) safeAppendFile("log", file, line);
|
|
607
|
-
if (isVerbose()) {
|
|
608
|
-
console.error(`[agentcash] ${formatted}`);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
var log = {
|
|
612
|
-
info: (msg, ...args) => write("INFO", msg, args),
|
|
613
|
-
error: (msg, ...args) => write("ERROR", msg, args),
|
|
614
|
-
debug: (msg, ...args) => isVerbose() && write("DEBUG", msg, args),
|
|
615
|
-
get path() {
|
|
616
|
-
return getLogFile();
|
|
617
|
-
}
|
|
618
|
-
};
|
|
619
|
-
|
|
620
|
-
// src/shared/neverthrow/parse/index.ts
|
|
621
|
-
import z from "zod";
|
|
622
|
-
var type = "json";
|
|
623
|
-
var parseErr = (surface, error) => err2(type, surface, error);
|
|
624
|
-
var safeParse = (surface, schema, value) => {
|
|
625
|
-
const parseResult = schema.safeParse(value);
|
|
626
|
-
if (!parseResult.success) {
|
|
627
|
-
return parseErr(surface, {
|
|
628
|
-
cause: "invalid_data",
|
|
629
|
-
message: JSON.stringify(z.treeifyError(parseResult.error), null, 2),
|
|
630
|
-
error: parseResult.error
|
|
631
|
-
});
|
|
632
|
-
}
|
|
633
|
-
return ok2(parseResult.data);
|
|
634
|
-
};
|
|
635
|
-
|
|
636
|
-
// src/shared/neverthrow/fetch/index.ts
|
|
637
|
-
import contentType from "content-type";
|
|
638
|
-
var DEFAULT_FETCH_TIMEOUT = 1e4;
|
|
639
|
-
var DEFAULT_USER_FETCH_TIMEOUT = 3e4;
|
|
640
|
-
var IMAGE_TYPES = /* @__PURE__ */ new Set([
|
|
641
|
-
"image/png",
|
|
642
|
-
"image/jpeg",
|
|
643
|
-
"image/gif",
|
|
644
|
-
"image/webp",
|
|
645
|
-
"image/svg+xml",
|
|
646
|
-
"image/tiff",
|
|
647
|
-
"image/bmp",
|
|
648
|
-
"image/ico"
|
|
649
|
-
]);
|
|
650
|
-
var errorType2 = "fetch";
|
|
651
|
-
var fetchErr = (surface, error) => err2(errorType2, surface, error);
|
|
652
|
-
var fetchOk = (value) => ok2(value);
|
|
653
|
-
var fetchHttpErr = (surface, response) => fetchErr(surface, {
|
|
654
|
-
cause: "http",
|
|
655
|
-
statusCode: response.status,
|
|
656
|
-
message: response.statusText,
|
|
657
|
-
response
|
|
658
|
-
});
|
|
659
|
-
var safeFetch = (surface, request, timeout) => {
|
|
660
|
-
const signal = timeout ? AbortSignal.timeout(timeout) : void 0;
|
|
661
|
-
return resultFromPromise(
|
|
662
|
-
errorType2,
|
|
663
|
-
surface,
|
|
664
|
-
fetch(request, ...signal ? [{ signal }] : []),
|
|
665
|
-
(error) => {
|
|
666
|
-
if (error instanceof DOMException && (error.name === "TimeoutError" || error.name === "AbortError")) {
|
|
667
|
-
return {
|
|
668
|
-
cause: "timeout",
|
|
669
|
-
message: timeout ? `Request timed out after ${timeout}ms. You can increase the timeout by passing a larger value in the 'timeout' parameter.` : "Request was aborted"
|
|
670
|
-
};
|
|
671
|
-
}
|
|
672
|
-
return {
|
|
673
|
-
cause: "network",
|
|
674
|
-
message: error instanceof Error ? error.message : "Network error"
|
|
675
|
-
};
|
|
676
|
-
}
|
|
677
|
-
);
|
|
678
|
-
};
|
|
679
|
-
var safeFetchJson = (surface, request, schema, timeout) => {
|
|
680
|
-
return safeFetch(surface, request, timeout).andThen((response) => {
|
|
681
|
-
if (!response.ok) {
|
|
682
|
-
return fetchHttpErr(surface, response);
|
|
683
|
-
}
|
|
684
|
-
return resultFromPromise(errorType2, surface, response.json(), () => ({
|
|
685
|
-
cause: "parse",
|
|
686
|
-
message: "Could not parse JSON from response",
|
|
687
|
-
statusCode: response.status,
|
|
688
|
-
contentType: response.headers.get("content-type") ?? "Not specified"
|
|
689
|
-
}));
|
|
690
|
-
}).andThen((data) => safeParse(surface, schema, data));
|
|
691
|
-
};
|
|
692
|
-
var safeParseResponse = (surface, response) => {
|
|
693
|
-
return resultFromPromise(
|
|
694
|
-
errorType2,
|
|
695
|
-
surface,
|
|
696
|
-
(async () => {
|
|
697
|
-
const header = response.headers.get("content-type");
|
|
698
|
-
const { type: mimeType } = header ? contentType.parse(header) : { type: "application/octet-stream" };
|
|
699
|
-
switch (mimeType) {
|
|
700
|
-
case "application/json":
|
|
701
|
-
return {
|
|
702
|
-
type: "json",
|
|
703
|
-
data: await response.json()
|
|
704
|
-
};
|
|
705
|
-
case "application/pdf":
|
|
706
|
-
return {
|
|
707
|
-
type: "pdf",
|
|
708
|
-
mimeType,
|
|
709
|
-
data: await response.arrayBuffer()
|
|
710
|
-
};
|
|
711
|
-
case "application/octet-stream":
|
|
712
|
-
return {
|
|
713
|
-
type: "octet-stream",
|
|
714
|
-
mimeType,
|
|
715
|
-
data: await response.arrayBuffer()
|
|
716
|
-
};
|
|
717
|
-
case "multipart/form-data":
|
|
718
|
-
return { type: "formData", data: await response.formData() };
|
|
719
|
-
}
|
|
720
|
-
if (IMAGE_TYPES.has(mimeType)) {
|
|
721
|
-
return {
|
|
722
|
-
type: "image",
|
|
723
|
-
mimeType,
|
|
724
|
-
data: await response.arrayBuffer()
|
|
725
|
-
};
|
|
726
|
-
}
|
|
727
|
-
if (mimeType.startsWith("audio/")) {
|
|
728
|
-
return {
|
|
729
|
-
type: "audio",
|
|
730
|
-
mimeType,
|
|
731
|
-
data: await response.arrayBuffer()
|
|
732
|
-
};
|
|
733
|
-
}
|
|
734
|
-
if (mimeType.startsWith("video/")) {
|
|
735
|
-
return {
|
|
736
|
-
type: "video",
|
|
737
|
-
mimeType,
|
|
738
|
-
data: await response.arrayBuffer()
|
|
739
|
-
};
|
|
740
|
-
}
|
|
741
|
-
if (mimeType.startsWith("text/")) {
|
|
742
|
-
return { type: "text", data: await response.text() };
|
|
743
|
-
}
|
|
744
|
-
throw new Error(`Unsupported content type: ${header}`);
|
|
745
|
-
})(),
|
|
746
|
-
(e) => ({
|
|
747
|
-
cause: "parse",
|
|
748
|
-
message: e instanceof Error ? e.message : "Could not parse response",
|
|
749
|
-
statusCode: response.status,
|
|
750
|
-
contentType: response.headers.get("content-type") ?? "Not specified"
|
|
751
|
-
})
|
|
752
|
-
);
|
|
753
|
-
};
|
|
754
|
-
var isFetchError = (error) => {
|
|
755
|
-
return error.type === errorType2;
|
|
756
|
-
};
|
|
757
|
-
|
|
758
553
|
export {
|
|
759
554
|
resultFromPromise,
|
|
760
555
|
resultFromThrowable,
|
|
761
556
|
ok2 as ok,
|
|
762
557
|
err2 as err,
|
|
763
|
-
safeParse,
|
|
764
|
-
DEFAULT_FETCH_TIMEOUT,
|
|
765
|
-
DEFAULT_USER_FETCH_TIMEOUT,
|
|
766
|
-
fetchErr,
|
|
767
|
-
fetchOk,
|
|
768
|
-
fetchHttpErr,
|
|
769
|
-
safeFetch,
|
|
770
|
-
safeFetchJson,
|
|
771
|
-
safeParseResponse,
|
|
772
|
-
isFetchError,
|
|
773
|
-
fsErr,
|
|
774
|
-
safeReadFile,
|
|
775
|
-
safeWriteFile,
|
|
776
|
-
safeChmod,
|
|
777
558
|
LEGACY_DIRECTORY,
|
|
778
|
-
configFile
|
|
779
|
-
log
|
|
559
|
+
configFile
|
|
780
560
|
};
|
|
781
|
-
//# sourceMappingURL=chunk-
|
|
561
|
+
//# sourceMappingURL=chunk-6PU3XK6I.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../node_modules/.pnpm/neverthrow@8.2.0/node_modules/neverthrow/dist/index.es.js","../../../../internal/neverthrow/src/index.ts","../../src/shared/fs.ts"],"sourcesContent":["const defaultErrorConfig = {\r\n withStackTrace: false,\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nconst createNeverThrowError = (message, result, config = defaultErrorConfig) => {\r\n const data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n const maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data,\r\n message,\r\n stack: maybeStack,\r\n };\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nclass ResultAsync {\r\n constructor(res) {\r\n this._promise = res;\r\n }\r\n static fromSafePromise(promise) {\r\n const newPromise = promise.then((value) => new Ok(value));\r\n return new ResultAsync(newPromise);\r\n }\r\n static fromPromise(promise, errorFn) {\r\n const newPromise = promise\r\n .then((value) => new Ok(value))\r\n .catch((e) => new Err(errorFn(e)));\r\n return new ResultAsync(newPromise);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n return new ResultAsync((() => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n return new Ok(yield fn(...args));\r\n }\r\n catch (error) {\r\n return new Err(errorFn ? errorFn(error) : error);\r\n }\r\n }))());\r\n };\r\n }\r\n static combine(asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n }\r\n static combineWithAllErrors(asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n }\r\n map(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n return new Ok(yield f(res.value));\r\n })));\r\n }\r\n andThrough(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newRes = yield f(res.value);\r\n if (newRes.isErr()) {\r\n return new Err(newRes.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n andTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n try {\r\n yield f(res.value);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n orTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n try {\r\n yield f(res.error);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Err(res.error);\r\n })));\r\n }\r\n mapErr(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n return new Err(yield f(res.error));\r\n })));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return new ResultAsync(this._promise.then((res) => {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return f(res.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n match(ok, _err) {\r\n return this._promise.then((res) => res.match(ok, _err));\r\n }\r\n unwrapOr(t) {\r\n return this._promise.then((res) => res.unwrapOr(t));\r\n }\r\n /**\r\n * @deprecated will be removed in 9.0.0.\r\n *\r\n * You can use `safeTry` without this method.\r\n * @example\r\n * ```typescript\r\n * safeTry(async function* () {\r\n * const okValue = yield* yourResult\r\n * })\r\n * ```\r\n * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`.\r\n */\r\n safeUnwrap() {\r\n return __asyncGenerator(this, arguments, function* safeUnwrap_1() {\r\n return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap()))))));\r\n });\r\n }\r\n // Makes ResultAsync implement PromiseLike<Result>\r\n then(successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n }\r\n [Symbol.asyncIterator]() {\r\n return __asyncGenerator(this, arguments, function* _a() {\r\n const result = yield __await(this._promise);\r\n if (result.isErr()) {\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield yield __await(errAsync(result.error));\r\n }\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return yield __await(result.value);\r\n });\r\n }\r\n}\r\nfunction okAsync(value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n}\r\nfunction errAsync(err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n}\r\nconst fromPromise = ResultAsync.fromPromise;\r\nconst fromSafePromise = ResultAsync.fromSafePromise;\r\nconst fromAsyncThrowable = ResultAsync.fromThrowable;\n\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nconst combineResultList = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr()) {\r\n acc = err(result.error);\r\n break;\r\n }\r\n else {\r\n acc.map((list) => list.push(result.value));\r\n }\r\n }\r\n return acc;\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync<T, E> and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nconst combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nconst combineResultListWithAllErrors = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr() && acc.isErr()) {\r\n acc.error.push(result.error);\r\n }\r\n else if (result.isErr() && acc.isOk()) {\r\n acc = err([result.error]);\r\n }\r\n else if (result.isOk() && acc.isOk()) {\r\n acc.value.push(result.value);\r\n }\r\n // do nothing when result.isOk() && acc.isErr()\r\n }\r\n return acc;\r\n};\r\nconst combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n try {\r\n const result = fn(...args);\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nfunction ok(value) {\r\n return new Ok(value);\r\n}\r\nfunction err(err) {\r\n return new Err(err);\r\n}\r\nfunction safeTry(body) {\r\n const n = body().next();\r\n if (n instanceof Promise) {\r\n return new ResultAsync(n.then((r) => r.value));\r\n }\r\n return n.value;\r\n}\r\nclass Ok {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n isOk() {\r\n return true;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n map(f) {\r\n return ok(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n mapErr(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThrough(f) {\r\n return f(this.value).map((_value) => this.value);\r\n }\r\n andTee(f) {\r\n try {\r\n f(this.value);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return ok(this.value);\r\n }\r\n orTee(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(_f) {\r\n return ok(this.value);\r\n }\r\n asyncAndThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n asyncAndThrough(f) {\r\n return f(this.value).map(() => this.value);\r\n }\r\n asyncMap(f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n unwrapOr(_v) {\r\n return this.value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n match(ok, _err) {\r\n return ok(this.value);\r\n }\r\n safeUnwrap() {\r\n const value = this.value;\r\n /* eslint-disable-next-line require-yield */\r\n return (function* () {\r\n return value;\r\n })();\r\n }\r\n _unsafeUnwrap(_) {\r\n return this.value;\r\n }\r\n _unsafeUnwrapErr(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias, require-yield\r\n *[Symbol.iterator]() {\r\n return this.value;\r\n }\r\n}\r\nclass Err {\r\n constructor(error) {\r\n this.error = error;\r\n }\r\n isOk() {\r\n return false;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n map(_f) {\r\n return err(this.error);\r\n }\r\n mapErr(f) {\r\n return err(f(this.error));\r\n }\r\n andThrough(_f) {\r\n return err(this.error);\r\n }\r\n andTee(_f) {\r\n return err(this.error);\r\n }\r\n orTee(f) {\r\n try {\r\n f(this.error);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(_f) {\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return f(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncAndThen(_f) {\r\n return errAsync(this.error);\r\n }\r\n asyncAndThrough(_f) {\r\n return errAsync(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncMap(_f) {\r\n return errAsync(this.error);\r\n }\r\n unwrapOr(v) {\r\n return v;\r\n }\r\n match(_ok, err) {\r\n return err(this.error);\r\n }\r\n safeUnwrap() {\r\n const error = this.error;\r\n return (function* () {\r\n yield err(error);\r\n throw new Error('Do not use this generator out of `safeTry`');\r\n })();\r\n }\r\n _unsafeUnwrap(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n }\r\n _unsafeUnwrapErr(_) {\r\n return this.error;\r\n }\r\n *[Symbol.iterator]() {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const self = this;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield self;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return self;\r\n }\r\n}\r\nconst fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromAsyncThrowable, fromPromise, fromSafePromise, fromThrowable, ok, okAsync, safeTry };\n","import {\n ResultAsync as NeverthrowResultAsync,\n Result as NeverthrowResult,\n ok as neverthrowOk,\n err as neverthrowErr,\n okAsync as neverthrowOkAsync,\n errAsync as neverthrowErrAsync,\n} from 'neverthrow';\n\nimport type { ResultAsync, BaseError, Error, Result } from './types';\n\nexport function resultFromPromise<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => E\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromPromise(promise, e => ({\n ...error(e),\n type,\n surface,\n }));\n}\n\nexport function resultFromThrowable<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n fn: () => T,\n error: (e: unknown) => E\n): Result<T, E> {\n return NeverthrowResult.fromThrowable(fn, e => ({\n ...error(e),\n type,\n surface,\n }))();\n}\n\nexport function resultFromSafePromise<E extends BaseError, T = unknown>(\n promise: Promise<T>\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromSafePromise(promise);\n}\n\nexport function ok<T>(data: T) {\n return neverthrowOk(data);\n}\n\nexport function err<BE extends BaseError>(\n type: string,\n surface: string,\n error: BE\n) {\n return neverthrowErr<never, Error<BE>>({\n ...error,\n type,\n surface,\n });\n}\n\nexport function okAsync<T>(data: T): ResultAsync<T, never> {\n return neverthrowOkAsync(data);\n}\n\nexport function errAsync<E extends BaseError>(surface: string, error: E) {\n return neverthrowErrAsync({\n ...error,\n surface,\n });\n}\n","import { join } from 'path';\nimport { homedir } from 'os';\nimport * as fs from 'fs';\n\nimport { resultFromThrowable } from '@agentcash/neverthrow';\n\nconst BASE_DIRECTORY = join(homedir(), '.agentcash');\nexport const LEGACY_DIRECTORY = join(homedir(), '.x402scan-mcp');\n\n/**\n * Auto-migrate files from ~/.x402scan-mcp/ to ~/.agentcash/\n * Copies wallet.json (and any other config) on first run after upgrade.\n * Only copies files that don't already exist in the new location.\n */\nfunction migrateFromLegacy(): void {\n if (!fs.existsSync(LEGACY_DIRECTORY)) return;\n\n const result = resultFromThrowable(\n 'migration',\n 'fs',\n () => {\n const files = fs.readdirSync(LEGACY_DIRECTORY);\n for (const file of files) {\n // Skip logs — not worth migrating\n if (file.endsWith('.log')) continue;\n\n const src = join(LEGACY_DIRECTORY, file);\n const dest = join(BASE_DIRECTORY, file);\n\n if (!fs.existsSync(dest) && fs.statSync(src).isFile()) {\n fs.copyFileSync(src, dest);\n // Preserve original permissions (wallet.json is 0600)\n const { mode } = fs.statSync(src);\n fs.chmodSync(dest, mode);\n }\n }\n },\n e => ({\n cause: 'migration_failed' as const,\n message: `Failed to migrate: ${e instanceof Error ? e.message : String(e)}`,\n })\n );\n\n if (result.isErr()) {\n console.error(\n `[agentcash] Warning: failed to migrate files from ${LEGACY_DIRECTORY} to ${BASE_DIRECTORY}. ` +\n `Your wallet may still be at ${join(LEGACY_DIRECTORY, 'wallet.json')} — copy it manually to ${join(BASE_DIRECTORY, 'wallet.json')}. ` +\n `Error: ${result.error.message}`\n );\n }\n}\n\nlet initialized = false;\n\n/**\n * Ensure the base directory exists and legacy files are migrated.\n * Runs once on first call; safe to call repeatedly.\n * Throws on failure — callers that need the filesystem (wallet, state)\n * should let this propagate. Optional consumers (logging) should\n * catch and degrade on their own.\n */\nexport function ensureBaseDir(): void {\n if (initialized) return;\n\n if (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n }\n\n migrateFromLegacy();\n initialized = true;\n}\n\nexport const configFile = (name: `${string}.${string}`) => {\n ensureBaseDir();\n const filePath = join(BASE_DIRECTORY, name);\n return filePath;\n};\n"],"mappings":"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","names":["v","ok","err","Result","fromThrowable","ok","err","ok","err"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
configFile,
|
|
3
2
|
safeFetchJson
|
|
4
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YQFK4U62.js";
|
|
4
|
+
import {
|
|
5
|
+
configFile
|
|
6
|
+
} from "./chunk-6PU3XK6I.js";
|
|
5
7
|
|
|
6
8
|
// src/shared/utils.ts
|
|
7
9
|
import open from "open";
|
|
@@ -75,4 +77,4 @@ export {
|
|
|
75
77
|
getState,
|
|
76
78
|
setState
|
|
77
79
|
};
|
|
78
|
-
//# sourceMappingURL=chunk-
|
|
80
|
+
//# sourceMappingURL=chunk-7ZEXMJYJ.js.map
|