@ampersend_ai/ampersend-sdk 0.0.16 → 0.0.21
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/ampersend/approval.d.ts +8 -8
- package/dist/ampersend/approval.d.ts.map +1 -1
- package/dist/ampersend/approval.js +10 -15
- package/dist/ampersend/approval.js.map +1 -1
- package/dist/ampersend/client.d.ts +4 -9
- package/dist/ampersend/client.d.ts.map +1 -1
- package/dist/ampersend/client.js +25 -21
- package/dist/ampersend/client.js.map +1 -1
- package/dist/ampersend/treasurer.d.ts +14 -79
- package/dist/ampersend/treasurer.d.ts.map +1 -1
- package/dist/ampersend/treasurer.js +34 -102
- package/dist/ampersend/treasurer.js.map +1 -1
- package/dist/ampersend/types.d.ts +356 -338
- package/dist/ampersend/types.d.ts.map +1 -1
- package/dist/ampersend/types.js +120 -150
- package/dist/ampersend/types.js.map +1 -1
- package/dist/ampersend/zod-bridge.d.ts +15 -0
- package/dist/ampersend/zod-bridge.d.ts.map +1 -0
- package/dist/ampersend/zod-bridge.js +29 -0
- package/dist/ampersend/zod-bridge.js.map +1 -0
- package/dist/cli/commands/fetch.d.ts.map +1 -1
- package/dist/cli/commands/fetch.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +4 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +52 -7
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/client/client.d.ts +0 -3
- package/dist/mcp/client/client.d.ts.map +1 -1
- package/dist/mcp/client/client.js +10 -14
- package/dist/mcp/client/client.js.map +1 -1
- package/dist/mcp/client/factory.d.ts +0 -2
- package/dist/mcp/client/factory.d.ts.map +1 -1
- package/dist/mcp/client/factory.js +0 -3
- package/dist/mcp/client/factory.js.map +1 -1
- package/dist/mcp/client/middleware.d.ts +0 -3
- package/dist/mcp/client/middleware.d.ts.map +1 -1
- package/dist/mcp/client/middleware.js +9 -12
- package/dist/mcp/client/middleware.js.map +1 -1
- package/dist/mcp/client/protocol.d.ts +81 -85
- package/dist/mcp/client/protocol.d.ts.map +1 -1
- package/dist/mcp/client/protocol.js +17 -15
- package/dist/mcp/client/protocol.js.map +1 -1
- package/dist/mcp/client/types.d.ts +6 -19
- package/dist/mcp/client/types.d.ts.map +1 -1
- package/dist/mcp/proxy/cli.d.ts.map +1 -1
- package/dist/mcp/proxy/cli.js +0 -1
- package/dist/mcp/proxy/cli.js.map +1 -1
- package/dist/mcp/proxy/env.d.ts +0 -9
- package/dist/mcp/proxy/env.d.ts.map +1 -1
- package/dist/mcp/proxy/env.js +0 -2
- package/dist/mcp/proxy/env.js.map +1 -1
- package/dist/mcp/proxy/factory.d.ts +0 -2
- package/dist/mcp/proxy/factory.d.ts.map +1 -1
- package/dist/mcp/proxy/factory.js +0 -3
- package/dist/mcp/proxy/factory.js.map +1 -1
- package/dist/mcp/server/fastmcp/middleware.d.ts +9 -29
- package/dist/mcp/server/fastmcp/middleware.d.ts.map +1 -1
- package/dist/mcp/server/fastmcp/middleware.js +10 -42
- package/dist/mcp/server/fastmcp/middleware.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/x402/envelopes.d.ts +62 -0
- package/dist/x402/envelopes.d.ts.map +1 -0
- package/dist/x402/envelopes.js +73 -0
- package/dist/x402/envelopes.js.map +1 -0
- package/dist/x402/http/client.d.ts +37 -0
- package/dist/x402/http/client.d.ts.map +1 -0
- package/dist/x402/http/client.js +159 -0
- package/dist/x402/http/client.js.map +1 -0
- package/dist/x402/http/factory.d.ts +11 -25
- package/dist/x402/http/factory.d.ts.map +1 -1
- package/dist/x402/http/factory.js +11 -22
- package/dist/x402/http/factory.js.map +1 -1
- package/dist/x402/http/index.d.ts +4 -1
- package/dist/x402/http/index.d.ts.map +1 -1
- package/dist/x402/http/index.js +2 -1
- package/dist/x402/http/index.js.map +1 -1
- package/dist/x402/index.d.ts +4 -1
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +3 -2
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/treasurer.d.ts +22 -47
- package/dist/x402/treasurer.d.ts.map +1 -1
- package/dist/x402/treasurers/naive.d.ts +4 -40
- package/dist/x402/treasurers/naive.d.ts.map +1 -1
- package/dist/x402/treasurers/naive.js +7 -44
- package/dist/x402/treasurers/naive.js.map +1 -1
- package/dist/x402/wallet.d.ts +7 -32
- package/dist/x402/wallet.d.ts.map +1 -1
- package/dist/x402/wallet.js +0 -3
- package/dist/x402/wallet.js.map +1 -1
- package/dist/x402/wallets/account/wallet.d.ts +9 -30
- package/dist/x402/wallets/account/wallet.d.ts.map +1 -1
- package/dist/x402/wallets/account/wallet.js +30 -37
- package/dist/x402/wallets/account/wallet.js.map +1 -1
- package/dist/x402/wallets/index.d.ts +0 -1
- package/dist/x402/wallets/index.d.ts.map +1 -1
- package/dist/x402/wallets/index.js +0 -1
- package/dist/x402/wallets/index.js.map +1 -1
- package/dist/x402/wallets/smart-account/chain.d.ts +4 -0
- package/dist/x402/wallets/smart-account/chain.d.ts.map +1 -0
- package/dist/x402/wallets/smart-account/chain.js +12 -0
- package/dist/x402/wallets/smart-account/chain.js.map +1 -0
- package/dist/x402/wallets/smart-account/cosigned.d.ts +7 -33
- package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/cosigned.js +28 -51
- package/dist/x402/wallets/smart-account/cosigned.js.map +1 -1
- package/dist/x402/wallets/smart-account/exact.d.ts +6 -20
- package/dist/x402/wallets/smart-account/exact.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/exact.js +33 -43
- package/dist/x402/wallets/smart-account/exact.js.map +1 -1
- package/dist/x402/wallets/smart-account/wallet.d.ts +6 -39
- package/dist/x402/wallets/smart-account/wallet.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/wallet.js +9 -36
- package/dist/x402/wallets/smart-account/wallet.js.map +1 -1
- package/package.json +8 -6
- package/dist/x402/http/adapter.d.ts +0 -38
- package/dist/x402/http/adapter.d.ts.map +0 -1
- package/dist/x402/http/adapter.js +0 -199
- package/dist/x402/http/adapter.js.map +0 -1
- package/dist/x402/http/v2-adapter.d.ts +0 -56
- package/dist/x402/http/v2-adapter.d.ts.map +0 -1
- package/dist/x402/http/v2-adapter.js +0 -94
- package/dist/x402/http/v2-adapter.js.map +0 -1
|
@@ -1,7 +1,14 @@
|
|
|
1
|
+
import { isAddress, keccak256 } from "viem";
|
|
1
2
|
import { generatePrivateKey, privateKeyToAddress } from "viem/accounts";
|
|
2
3
|
import { ApprovalClient } from "../../ampersend/approval.js";
|
|
3
4
|
import { clearPendingApproval, computeApprovalExpiry, DEFAULT_API_URL, isPendingExpired, promotePending, readConfig, storePendingApproval, } from "../config.js";
|
|
4
5
|
import { err, ok } from "../envelope.js";
|
|
6
|
+
function resolveSetupMode(options) {
|
|
7
|
+
if (options.mode === "connect") {
|
|
8
|
+
return options.agent != null ? "connect" : "connect_choose";
|
|
9
|
+
}
|
|
10
|
+
return "create";
|
|
11
|
+
}
|
|
5
12
|
export async function executeSetupStart(options) {
|
|
6
13
|
const existing = readConfig();
|
|
7
14
|
// Check for non-expired pending approval
|
|
@@ -17,6 +24,32 @@ export async function executeSetupStart(options) {
|
|
|
17
24
|
const agentKeyAddress = privateKeyToAddress(agentKey);
|
|
18
25
|
// Resolve API URL: env > config > default
|
|
19
26
|
const apiUrl = process.env.AMPERSEND_API_URL ?? existing?.apiUrl ?? DEFAULT_API_URL;
|
|
27
|
+
// Validate --agent flag if provided
|
|
28
|
+
if (options.agent != null && !isAddress(options.agent, { strict: false })) {
|
|
29
|
+
console.log(JSON.stringify(err("INVALID_ADDRESS", `Invalid agent address: ${options.agent}`), null, 2));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
// Cross-flag validation
|
|
33
|
+
if (options.mode === "connect") {
|
|
34
|
+
if (options.name != null) {
|
|
35
|
+
console.log(JSON.stringify(err("INVALID_FLAGS", "--name is not valid in connect mode (agent already exists)"), null, 2));
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
const hasSpendFlags = options.dailyLimit != null ||
|
|
39
|
+
options.monthlyLimit != null ||
|
|
40
|
+
options.perTransactionLimit != null ||
|
|
41
|
+
options.autoTopup;
|
|
42
|
+
if (hasSpendFlags) {
|
|
43
|
+
console.log(JSON.stringify(err("INVALID_FLAGS", "Spend config flags are not valid in connect mode (agent already exists)"), null, 2));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (options.agent != null) {
|
|
49
|
+
console.log(JSON.stringify(err("INVALID_FLAGS", "--agent is only valid in connect mode. Use --mode connect --agent <address>"), null, 2));
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
20
53
|
// Build spend_config if any limit flags were provided
|
|
21
54
|
const hasSpendConfig = options.dailyLimit != null ||
|
|
22
55
|
options.monthlyLimit != null ||
|
|
@@ -32,11 +65,19 @@ export async function executeSetupStart(options) {
|
|
|
32
65
|
: undefined;
|
|
33
66
|
// Call the approval API
|
|
34
67
|
const client = new ApprovalClient({ apiUrl });
|
|
68
|
+
// Derive a 6-digit verification code from the key address.
|
|
69
|
+
// The user sees this code in the dashboard and can confirm it matches
|
|
70
|
+
// the one shown by the agent, preventing MITM key substitution.
|
|
71
|
+
const verificationCode = String(BigInt(keccak256(agentKeyAddress)) % 1000000n).padStart(6, "0");
|
|
35
72
|
let result;
|
|
36
73
|
try {
|
|
37
|
-
const
|
|
74
|
+
const mode = resolveSetupMode(options);
|
|
75
|
+
const response = await client.requestAgentApproval({
|
|
38
76
|
name: options.name ?? null,
|
|
39
77
|
agent_key_address: agentKeyAddress,
|
|
78
|
+
mode,
|
|
79
|
+
agent_address: options.agent ?? undefined,
|
|
80
|
+
key_name: options.keyName ?? undefined,
|
|
40
81
|
spend_config: spendConfig,
|
|
41
82
|
});
|
|
42
83
|
// Store pending approval in config
|
|
@@ -49,6 +90,7 @@ export async function executeSetupStart(options) {
|
|
|
49
90
|
token: response.token,
|
|
50
91
|
user_approve_url: response.user_approve_url,
|
|
51
92
|
agentKeyAddress,
|
|
93
|
+
verificationCode,
|
|
52
94
|
});
|
|
53
95
|
}
|
|
54
96
|
catch (error) {
|
|
@@ -128,13 +170,16 @@ export function registerSetupCommand(program) {
|
|
|
128
170
|
const setup = program.command("setup").description("Set up an agent account via the approval flow");
|
|
129
171
|
setup
|
|
130
172
|
.command("start")
|
|
131
|
-
.description("Step 1: Generate a key and request agent creation approval")
|
|
132
|
-
.option("--
|
|
173
|
+
.description("Step 1: Generate a key and request agent creation/connection approval")
|
|
174
|
+
.option("--mode <mode>", "Setup mode: 'create' (new agent, default) or 'connect' (key to existing agent)", "create")
|
|
175
|
+
.option("--name <name>", "Name for the agent (create mode only)")
|
|
176
|
+
.option("--agent <address>", "Address of existing agent to connect to (connect mode; omit to choose in dashboard)")
|
|
177
|
+
.option("--key-name <name>", "Name for the agent key")
|
|
133
178
|
.option("--force", "Overwrite an existing pending approval", false)
|
|
134
|
-
.option("--daily-limit <amount>", "Daily spending limit in atomic units, e.g. 1000000 = 1 USDC")
|
|
135
|
-
.option("--monthly-limit <amount>", "Monthly spending limit in atomic units")
|
|
136
|
-
.option("--per-transaction-limit <amount>", "Per-transaction spending limit in atomic units")
|
|
137
|
-
.option("--auto-topup", "Allow automatic balance top-up from main account", false)
|
|
179
|
+
.option("--daily-limit <amount>", "Daily spending limit in atomic units, e.g. 1000000 = 1 USDC (create mode only)")
|
|
180
|
+
.option("--monthly-limit <amount>", "Monthly spending limit in atomic units (create mode only)")
|
|
181
|
+
.option("--per-transaction-limit <amount>", "Per-transaction spending limit in atomic units (create mode only)")
|
|
182
|
+
.option("--auto-topup", "Allow automatic balance top-up from main account (create mode only)", false)
|
|
138
183
|
.action(async (options) => {
|
|
139
184
|
await executeSetupStart(options);
|
|
140
185
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,oBAAoB,GACrB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAqB,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,5 +7,6 @@ export type { X402Wallet, SmartAccountConfig } from "./x402/index.ts";
|
|
|
7
7
|
export { AccountWallet, SmartAccountWallet, WalletError } from "./x402/index.ts";
|
|
8
8
|
export { initializeProxyServer } from "./mcp/proxy/index.ts";
|
|
9
9
|
export { Client } from "./mcp/client/index.ts";
|
|
10
|
-
export {
|
|
10
|
+
export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError } from "./x402/http/index.ts";
|
|
11
|
+
export type { AmpersendNetworks } from "./x402/http/index.ts";
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhG,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAClG,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACnC,KAAK,4BAA4B,GAClC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAAE,KAAK,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAE,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAGhG,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAClG,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGrE,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAC1G,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,5 +7,5 @@ export { createAmpersendHttpClient } from "./x402/http/factory.js";
|
|
|
7
7
|
export { AccountWallet, SmartAccountWallet, WalletError } from "./x402/index.js";
|
|
8
8
|
export { initializeProxyServer } from "./mcp/proxy/index.js";
|
|
9
9
|
export { Client } from "./mcp/client/index.js";
|
|
10
|
-
export {
|
|
10
|
+
export { AmpersendX402Client, PaymentDeclinedError, UnsupportedProtocolError } from "./x402/http/index.js";
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAA4B,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAgC,MAAM,wBAAwB,CAAA;AAMhG,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,OAAO,EACL,wBAAwB,EACxB,kBAAkB,GAInB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAA2B,MAAM,wBAAwB,CAAA;AACtF,OAAO,EAAE,wBAAwB,EAA4B,MAAM,yBAAyB,CAAA;AAC5F,OAAO,EAAE,yBAAyB,EAAgC,MAAM,wBAAwB,CAAA;AAMhG,2BAA2B;AAC3B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA"}
|
|
@@ -52,9 +52,6 @@ export declare class Client extends McpClient {
|
|
|
52
52
|
* Wrapper that handles payment retry logic for MCP methods
|
|
53
53
|
*/
|
|
54
54
|
private withPaymentRetry;
|
|
55
|
-
/**
|
|
56
|
-
* Decides x402 payment request and return modified params if payment approved
|
|
57
|
-
*/
|
|
58
55
|
private decidePayment;
|
|
59
56
|
/**
|
|
60
57
|
* Extract x402 response from MCP error
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAClF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAClF,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,EAChC,KAAK,iCAAiC,EACtC,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,oCAAoC,CAAA;AAM3C,OAAO,KAAK,EAAE,aAAa,EAAgB,MAAM,YAAY,CAAA;AAI7D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,MAAO,SAAQ,SAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa;IAK9D;;;;;;;OAOG;IACG,QAAQ,CACZ,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,YAAY,CAAC,EAAE,OAAO,oBAAoB,GAAG,OAAO,iCAAiC,EACrF,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,GAAG,2BAA2B,CAAC;IAMxD;;;;;;OAMG;IACG,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAMhH;;OAEG;YACW,gBAAgB;YAuChB,aAAa;IA6B3B;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -92,28 +92,24 @@ export class Client extends McpClient {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const paymentContext = {
|
|
101
|
-
method,
|
|
102
|
-
params,
|
|
95
|
+
async decidePayment(method, params, wireRequirements) {
|
|
96
|
+
// MCP x402 is v1-only.
|
|
97
|
+
const request = {
|
|
98
|
+
protocol: "x402-v1",
|
|
99
|
+
data: { x402Version: 1, accepts: [...wireRequirements] },
|
|
103
100
|
};
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (!authorization) {
|
|
107
|
-
// Payment declined
|
|
101
|
+
const authorization = await this.treasurer.onPaymentRequired(request, { method, params });
|
|
102
|
+
if (!authorization)
|
|
108
103
|
return null;
|
|
104
|
+
if (authorization.payment.protocol !== "x402-v1") {
|
|
105
|
+
throw new Error(`MCP retry requires an x402-v1 authorization; got ${authorization.payment.protocol}`);
|
|
109
106
|
}
|
|
110
|
-
// Return modified params with payment (using spec-compliant field name)
|
|
111
107
|
const baseMeta = params._meta || {};
|
|
112
108
|
const paramsWithPayment = {
|
|
113
109
|
...params,
|
|
114
110
|
_meta: {
|
|
115
111
|
...baseMeta,
|
|
116
|
-
"x402/payment": authorization.payment,
|
|
112
|
+
"x402/payment": authorization.payment.data,
|
|
117
113
|
},
|
|
118
114
|
};
|
|
119
115
|
return { paramsWithPayment, authorization };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/mcp/client/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,2CAA2C,CAAA;AAE/E,OAAO,EACL,QAAQ,GAST,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/mcp/client/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,8 +22,6 @@ export interface SimpleClientOptions {
|
|
|
22
22
|
sessionKeyPrivateKey: Hex;
|
|
23
23
|
/** Ampersend API URL (defaults to production) */
|
|
24
24
|
apiUrl?: string;
|
|
25
|
-
/** Chain ID (defaults to Base Sepolia 84532) */
|
|
26
|
-
chainId?: number;
|
|
27
25
|
}
|
|
28
26
|
/**
|
|
29
27
|
* Create an MCP client with Ampersend payment support.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,2CAA2C,CAAA;AAClG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,MAAM,CAAA;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAKpC;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,oDAAoD;IACpD,UAAU,EAAE,cAAc,CAAA;IAC1B,kCAAkC;IAClC,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,4BAA4B;IAC5B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,0CAA0C;IAC1C,oBAAoB,EAAE,GAAG,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAW7E;AAGD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -7,8 +7,6 @@ import { createAmpersendTreasurer } from "../../ampersend/treasurer.js";
|
|
|
7
7
|
import { Client } from "./client.js";
|
|
8
8
|
/** Default Ampersend API URL */
|
|
9
9
|
const DEFAULT_API_URL = "https://api.ampersend.ai";
|
|
10
|
-
/** Default chain ID (Base Sepolia) */
|
|
11
|
-
const DEFAULT_CHAIN_ID = 84532;
|
|
12
10
|
/**
|
|
13
11
|
* Create an MCP client with Ampersend payment support.
|
|
14
12
|
*
|
|
@@ -43,7 +41,6 @@ export function createAmpersendMcpClient(options) {
|
|
|
43
41
|
smartAccountAddress: options.smartAccountAddress,
|
|
44
42
|
sessionKeyPrivateKey: options.sessionKeyPrivateKey,
|
|
45
43
|
apiUrl: options.apiUrl ?? DEFAULT_API_URL,
|
|
46
|
-
chainId: options.chainId ?? DEFAULT_CHAIN_ID,
|
|
47
44
|
});
|
|
48
45
|
return new Client(options.clientInfo, {
|
|
49
46
|
mcpOptions: options.mcpOptions ?? { capabilities: { tools: {} } },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/mcp/client/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,gCAAgC;AAChC,MAAM,eAAe,GAAG,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/mcp/client/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,gCAAgC;AAChC,MAAM,eAAe,GAAG,0BAA0B,CAAA;AAmBlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAA4B;IACnE,MAAM,SAAS,GAAG,wBAAwB,CAAC;QACzC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,eAAe;KAC1C,CAAC,CAAA;IAEF,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE;QACpC,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;QACjE,SAAS;KACV,CAAC,CAAA;AACJ,CAAC;AAED,4CAA4C;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -9,9 +9,6 @@ export declare class X402Middleware {
|
|
|
9
9
|
private readonly _authorizations;
|
|
10
10
|
constructor(options: X402MiddlewareOptions);
|
|
11
11
|
onMessage(request: JSONRPCRequest, response: JSONRPCMessage): Promise<JSONRPCRequest | void>;
|
|
12
|
-
/**
|
|
13
|
-
* Decides x402 payment request and return modified message if payment approved
|
|
14
|
-
*/
|
|
15
12
|
private decidePayment;
|
|
16
13
|
}
|
|
17
14
|
//# sourceMappingURL=middleware.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/mcp/client/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAI7F,OAAO,KAAK,EAAgC,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAQ1F,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;CAClC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAE1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;gBAEvD,OAAO,EAAE,qBAAqB;IAIpC,SAAS,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;YA8CpF,aAAa;CA4B5B"}
|
|
@@ -31,7 +31,7 @@ export class X402Middleware {
|
|
|
31
31
|
if (request.params?._meta?.["x402/payment"]) {
|
|
32
32
|
return;
|
|
33
33
|
}
|
|
34
|
-
const paymentResult = await this.decidePayment(request, x402Data.accepts);
|
|
34
|
+
const paymentResult = await this.decidePayment(request, x402Data.accepts ?? []);
|
|
35
35
|
if (!paymentResult) {
|
|
36
36
|
return; // Payment declined
|
|
37
37
|
}
|
|
@@ -42,23 +42,20 @@ export class X402Middleware {
|
|
|
42
42
|
await this._treasurer.onStatus("sending", authorization);
|
|
43
43
|
return messageWithPayment;
|
|
44
44
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
async decidePayment(request, wireRequirements) {
|
|
46
|
+
// MCP x402 is v1-only.
|
|
47
|
+
const paymentRequest = {
|
|
48
|
+
protocol: "x402-v1",
|
|
49
|
+
data: { x402Version: 1, accepts: [...wireRequirements] },
|
|
50
|
+
};
|
|
50
51
|
const paymentContext = {
|
|
51
52
|
method: request.method,
|
|
52
53
|
params: request.params,
|
|
53
54
|
metadata: { requestId: request.id },
|
|
54
55
|
};
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
if (!authorization) {
|
|
58
|
-
// Payment declined
|
|
56
|
+
const authorization = await this._treasurer.onPaymentRequired(paymentRequest, paymentContext);
|
|
57
|
+
if (!authorization)
|
|
59
58
|
return null;
|
|
60
|
-
}
|
|
61
|
-
// Build message with payment
|
|
62
59
|
const { messageWithPayment } = buildMessageWithPayment(request, authorization.payment, authorization.authorizationId);
|
|
63
60
|
return { messageWithPayment, authorization };
|
|
64
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/mcp/client/middleware.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/mcp/client/middleware.ts"],"names":[],"mappings":"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"}
|