@ampersend_ai/ampersend-sdk 0.0.22 → 0.0.25
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/agent-client.d.ts +81 -0
- package/dist/ampersend/agent-client.d.ts.map +1 -0
- package/dist/ampersend/agent-client.js +104 -0
- package/dist/ampersend/agent-client.js.map +1 -0
- package/dist/ampersend/agent.d.ts +119 -0
- package/dist/ampersend/agent.d.ts.map +1 -0
- package/dist/ampersend/agent.js +99 -0
- package/dist/ampersend/agent.js.map +1 -0
- package/dist/ampersend/client.d.ts +32 -8
- package/dist/ampersend/client.d.ts.map +1 -1
- package/dist/ampersend/client.js +81 -3
- package/dist/ampersend/client.js.map +1 -1
- package/dist/ampersend/curated-agent.d.ts +3 -3
- package/dist/ampersend/curated-agent.d.ts.map +1 -1
- package/dist/ampersend/curated-agent.js +1 -1
- package/dist/ampersend/curated-agent.js.map +1 -1
- package/dist/ampersend/index.d.ts +2 -0
- package/dist/ampersend/index.d.ts.map +1 -1
- package/dist/ampersend/index.js +4 -0
- package/dist/ampersend/index.js.map +1 -1
- package/dist/ampersend/marketplace.d.ts +20 -14
- package/dist/ampersend/marketplace.d.ts.map +1 -1
- package/dist/ampersend/marketplace.js +23 -49
- package/dist/ampersend/marketplace.js.map +1 -1
- package/dist/ampersend/treasurer.d.ts +4 -0
- package/dist/ampersend/treasurer.d.ts.map +1 -1
- package/dist/ampersend/treasurer.js +2 -2
- package/dist/ampersend/treasurer.js.map +1 -1
- package/dist/ampersend/types.d.ts +35 -6
- package/dist/ampersend/types.d.ts.map +1 -1
- package/dist/ampersend/types.js +17 -1
- package/dist/ampersend/types.js.map +1 -1
- package/dist/cli/ampersend.js +45 -2
- package/dist/cli/ampersend.js.map +1 -1
- package/dist/cli/commands/agent.d.ts +22 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +144 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/card.d.ts +125 -0
- package/dist/cli/commands/card.d.ts.map +1 -0
- package/dist/cli/commands/card.js +399 -0
- package/dist/cli/commands/card.js.map +1 -0
- package/dist/cli/commands/fetch.d.ts +76 -2
- package/dist/cli/commands/fetch.d.ts.map +1 -1
- package/dist/cli/commands/fetch.js +208 -128
- package/dist/cli/commands/fetch.js.map +1 -1
- package/dist/cli/commands/fund.d.ts +3 -0
- package/dist/cli/commands/fund.d.ts.map +1 -0
- package/dist/cli/commands/fund.js +22 -0
- package/dist/cli/commands/fund.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +3 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -1
- package/dist/cli/commands/marketplace.js +23 -4
- package/dist/cli/commands/marketplace.js.map +1 -1
- package/dist/cli/commands/version.d.ts +3 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +12 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/config.d.ts +58 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +105 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/proxy/cli.js +1 -0
- package/dist/mcp/proxy/cli.js.map +1 -1
- package/dist/mcp/proxy/factory.d.ts +2 -0
- package/dist/mcp/proxy/factory.d.ts.map +1 -1
- package/dist/mcp/proxy/factory.js +10 -1
- package/dist/mcp/proxy/factory.js.map +1 -1
- package/dist/mcp/proxy/server/init.js +1 -1
- package/dist/mcp/proxy/server/init.js.map +1 -1
- package/dist/mcp/proxy/server/server.d.ts +3 -1
- package/dist/mcp/proxy/server/server.d.ts.map +1 -1
- package/dist/mcp/proxy/server/server.js +5 -2
- package/dist/mcp/proxy/server/server.js.map +1 -1
- package/dist/mcp/proxy/types.d.ts +7 -0
- package/dist/mcp/proxy/types.d.ts.map +1 -1
- package/dist/mcp/proxy/types.js.map +1 -1
- package/dist/version.d.ts +3 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -1
- package/dist/version.js.map +1 -1
- package/dist/x402/http/factory.d.ts +2 -0
- package/dist/x402/http/factory.d.ts.map +1 -1
- package/dist/x402/http/factory.js +1 -0
- package/dist/x402/http/factory.js.map +1 -1
- package/dist/x402/index.d.ts +2 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +2 -0
- package/dist/x402/index.js.map +1 -1
- package/dist/x402/siwx.d.ts +55 -0
- package/dist/x402/siwx.d.ts.map +1 -0
- package/dist/x402/siwx.js +122 -0
- package/dist/x402/siwx.js.map +1 -0
- package/dist/x402/wallets/smart-account/cosigned.d.ts +9 -2
- package/dist/x402/wallets/smart-account/cosigned.d.ts.map +1 -1
- package/dist/x402/wallets/smart-account/cosigned.js +13 -4
- package/dist/x402/wallets/smart-account/cosigned.js.map +1 -1
- package/package.json +3 -2
|
@@ -1,68 +1,51 @@
|
|
|
1
1
|
import { wrapFetchWithPayment } from "@x402/fetch";
|
|
2
|
-
import { parseEnvConfig } from "../../ampersend/env.js";
|
|
3
2
|
import { createAmpersendHttpClient } from "../../x402/http/factory.js";
|
|
4
|
-
import {
|
|
3
|
+
import { wrapFetchWithAmpersendSiwx } from "../../x402/siwx.js";
|
|
4
|
+
import { loadCredentials } from "../config.js";
|
|
5
5
|
import { err, ok } from "../envelope.js";
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Wire up the Ampersend paid-fetch path used by every spending command:
|
|
8
|
+
* `createAmpersendHttpClient` → (optional SIWX) → `wrapFetchWithPayment`,
|
|
9
|
+
* with the `onAfterPaymentCreation` hook capturing the signed requirements.
|
|
10
|
+
*
|
|
11
|
+
* One instance captures one payment. Callers making more than one paid
|
|
12
|
+
* request (e.g. `card` minting a token then ordering) build a fresh
|
|
13
|
+
* `createPaidFetch` per request so each capture is isolated.
|
|
14
|
+
*
|
|
15
|
+
* SIWX defaults on, matching `fetch --pay`: it satisfies auth-only routes and
|
|
16
|
+
* re-entry to already-paid resources via signature alone; if the server
|
|
17
|
+
* doesn't speak SIWX or rejects our signature, the 402 falls through to the
|
|
18
|
+
* payment wrapper.
|
|
10
19
|
*/
|
|
11
|
-
function
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
if (fileConfig.status === "ready" && fileConfig.agentAccount && fileConfig.agentKey) {
|
|
39
|
-
// Env var takes precedence over file config
|
|
40
|
-
const apiUrl = process.env.AMPERSEND_API_URL ?? fileConfig.apiUrl;
|
|
41
|
-
return {
|
|
42
|
-
ok: true,
|
|
43
|
-
config: {
|
|
44
|
-
agentAccount: fileConfig.agentAccount,
|
|
45
|
-
agentKey: fileConfig.agentKey,
|
|
46
|
-
...(apiUrl ? { apiUrl } : {}),
|
|
47
|
-
},
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
// Neither env vars nor config file available
|
|
52
|
-
const configStatus = getConfigStatus();
|
|
53
|
-
if (configStatus.status === "not_initialized") {
|
|
54
|
-
return {
|
|
55
|
-
ok: false,
|
|
56
|
-
error: err("NOT_CONFIGURED", 'Run "ampersend setup start" or "ampersend config set"', {
|
|
57
|
-
status: "not_initialized",
|
|
58
|
-
}),
|
|
59
|
-
};
|
|
60
|
-
}
|
|
20
|
+
function createPaidFetch(credentials, opts = { siwx: true }) {
|
|
21
|
+
const apiUrl = credentials.apiUrl ?? "https://api.ampersend.ai";
|
|
22
|
+
const ampersendClient = createAmpersendHttpClient({
|
|
23
|
+
smartAccountAddress: credentials.agentAccount,
|
|
24
|
+
sessionKeyPrivateKey: credentials.agentKey,
|
|
25
|
+
apiUrl,
|
|
26
|
+
clientName: "ampersend-cli",
|
|
27
|
+
});
|
|
28
|
+
// The hook fires right after createPaymentPayload and before the retry to
|
|
29
|
+
// the server, so by the time fetchWithPayment resolves this is populated
|
|
30
|
+
// iff a payment happened. The amount here is what we authorized — what the
|
|
31
|
+
// server settles can only equal this (it can't settle a different value
|
|
32
|
+
// than was signed).
|
|
33
|
+
let selected;
|
|
34
|
+
ampersendClient.onAfterPaymentCreation(async (ctx) => {
|
|
35
|
+
const r = ctx.selectedRequirements;
|
|
36
|
+
selected = { amount: r.amount, asset: r.asset, network: r.network, payTo: r.payTo, scheme: r.scheme };
|
|
37
|
+
});
|
|
38
|
+
const innerFetch = opts.siwx
|
|
39
|
+
? wrapFetchWithAmpersendSiwx(fetch, {
|
|
40
|
+
smartAccountAddress: credentials.agentAccount,
|
|
41
|
+
sessionKeyPrivateKey: credentials.agentKey,
|
|
42
|
+
apiUrl,
|
|
43
|
+
clientName: "ampersend-cli",
|
|
44
|
+
})
|
|
45
|
+
: fetch;
|
|
61
46
|
return {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
status: configStatus.status,
|
|
65
|
-
}),
|
|
47
|
+
fetchWithPayment: wrapFetchWithPayment(innerFetch, ampersendClient),
|
|
48
|
+
getSelected: () => selected,
|
|
66
49
|
};
|
|
67
50
|
}
|
|
68
51
|
/**
|
|
@@ -100,6 +83,51 @@ function decodeBase64Header(value) {
|
|
|
100
83
|
const decoded = Buffer.from(value, "base64").toString("utf-8");
|
|
101
84
|
return JSON.parse(decoded);
|
|
102
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract x402 payment requirements from a 402 response. Tries v2 header first
|
|
88
|
+
* (base64-encoded JSON in `payment-required`), then falls back to v1 body.
|
|
89
|
+
* Throws if neither produces parseable JSON.
|
|
90
|
+
*/
|
|
91
|
+
async function extractPaymentRequirements(response) {
|
|
92
|
+
const v2Header = response.headers.get("payment-required");
|
|
93
|
+
if (v2Header) {
|
|
94
|
+
return decodeBase64Header(v2Header);
|
|
95
|
+
}
|
|
96
|
+
const body = await response.text();
|
|
97
|
+
if (body) {
|
|
98
|
+
return JSON.parse(body);
|
|
99
|
+
}
|
|
100
|
+
throw new Error("402 response had no payment-required header and no body");
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Build a PaymentReceipt by combining the requirements the client signed
|
|
104
|
+
* against (truthful amount/asset) with the facilitator's settle response
|
|
105
|
+
* (truthful txHash/payer).
|
|
106
|
+
*/
|
|
107
|
+
function buildPaymentReceipt(selected, settle) {
|
|
108
|
+
return {
|
|
109
|
+
amount: selected.amount,
|
|
110
|
+
asset: selected.asset,
|
|
111
|
+
network: selected.network,
|
|
112
|
+
payTo: selected.payTo,
|
|
113
|
+
scheme: selected.scheme,
|
|
114
|
+
txHash: settle.transaction,
|
|
115
|
+
...(settle.payer ? { payer: settle.payer } : {}),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Build a PaymentReceipt from a paid response, or undefined when no payment
|
|
120
|
+
* happened (no captured `selected`, e.g. a free/warm-cache path) or the server
|
|
121
|
+
* sent no settle header. Combines the signed requirements with the facilitator's
|
|
122
|
+
* `payment-response` settle header.
|
|
123
|
+
*/
|
|
124
|
+
function buildReceiptFromResponse(selected, response) {
|
|
125
|
+
const paymentResponse = response.headers.get("payment-response");
|
|
126
|
+
if (!paymentResponse || !selected)
|
|
127
|
+
return undefined;
|
|
128
|
+
const settle = decodeBase64Header(paymentResponse);
|
|
129
|
+
return buildPaymentReceipt(selected, settle);
|
|
130
|
+
}
|
|
103
131
|
/**
|
|
104
132
|
* Build RequestInit from options, handling undefined body correctly
|
|
105
133
|
*/
|
|
@@ -128,28 +156,16 @@ async function runInspect(url, options) {
|
|
|
128
156
|
data.headers = headersToObject(response.headers);
|
|
129
157
|
}
|
|
130
158
|
if (response.status === 402) {
|
|
131
|
-
// Try to parse payment requirements
|
|
132
159
|
try {
|
|
133
|
-
|
|
134
|
-
const v2Header = response.headers.get("payment-required");
|
|
135
|
-
if (v2Header) {
|
|
136
|
-
data.requirements = decodeBase64Header(v2Header);
|
|
137
|
-
}
|
|
138
|
-
else {
|
|
139
|
-
// Fall back to body (v1)
|
|
140
|
-
const body = await response.text();
|
|
141
|
-
if (body) {
|
|
142
|
-
data.requirements = JSON.parse(body);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
160
|
+
data.requirements = await extractPaymentRequirements(response);
|
|
145
161
|
}
|
|
146
162
|
catch (e) {
|
|
147
|
-
|
|
148
|
-
if (
|
|
149
|
-
console.
|
|
150
|
-
|
|
163
|
+
const message = `Failed to parse payment requirements: ${e instanceof Error ? e.message : String(e)}`;
|
|
164
|
+
if (options.raw) {
|
|
165
|
+
console.error(`Error: ${message}`);
|
|
166
|
+
process.exit(1);
|
|
151
167
|
}
|
|
152
|
-
console.
|
|
168
|
+
console.log(JSON.stringify(err("PARSE_ERROR", message), null, 2));
|
|
153
169
|
return;
|
|
154
170
|
}
|
|
155
171
|
}
|
|
@@ -173,70 +189,122 @@ async function runInspect(url, options) {
|
|
|
173
189
|
}
|
|
174
190
|
}
|
|
175
191
|
/**
|
|
176
|
-
*
|
|
192
|
+
* Emit a successful response envelope (status < 400, or paid 200 via --pay).
|
|
193
|
+
*
|
|
194
|
+
* `selected` carries the requirements the client signed against, captured via
|
|
195
|
+
* the x402Client's onAfterPaymentCreation hook. It's undefined when no payment
|
|
196
|
+
* happened (free endpoint), in which case no `data.payment` is emitted.
|
|
177
197
|
*/
|
|
178
|
-
async function
|
|
198
|
+
async function emitSuccessResponse(response, options, selected) {
|
|
179
199
|
if (options.raw) {
|
|
180
200
|
const body = await response.text();
|
|
181
201
|
console.log(body);
|
|
202
|
+
return;
|
|
182
203
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
parsedBody = JSON.parse(body);
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
// Keep as string if parsing fails
|
|
193
|
-
}
|
|
204
|
+
const body = await response.text();
|
|
205
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
206
|
+
let parsedBody = body;
|
|
207
|
+
if (contentType.includes("application/json")) {
|
|
208
|
+
try {
|
|
209
|
+
parsedBody = JSON.parse(body);
|
|
194
210
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
body: parsedBody,
|
|
198
|
-
};
|
|
199
|
-
// Include headers only if requested
|
|
200
|
-
if (options.headers) {
|
|
201
|
-
data.headers = headersToObject(response.headers);
|
|
211
|
+
catch {
|
|
212
|
+
// Keep as string if parsing fails
|
|
202
213
|
}
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
214
|
+
}
|
|
215
|
+
const data = {
|
|
216
|
+
status: response.status,
|
|
217
|
+
body: parsedBody,
|
|
218
|
+
};
|
|
219
|
+
if (options.headers) {
|
|
220
|
+
data.headers = headersToObject(response.headers);
|
|
221
|
+
}
|
|
222
|
+
// Build receipt only when both halves are present: the signed requirements
|
|
223
|
+
// (what we authorized) and the settle response (proof it landed).
|
|
224
|
+
const receipt = buildReceiptFromResponse(selected, response);
|
|
225
|
+
if (receipt) {
|
|
226
|
+
data.payment = receipt;
|
|
227
|
+
}
|
|
228
|
+
console.log(JSON.stringify(ok(data), null, 2));
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Emit a PAYMENT_REQUIRED error envelope for a 402 response when --pay was not set.
|
|
232
|
+
*
|
|
233
|
+
* Exit-code policy: in JSON mode we exit 0 even when the server's 402 is
|
|
234
|
+
* unparseable — the CLI ran fine, the remote misbehaved, and the agent reads
|
|
235
|
+
* the envelope. In --raw mode we exit 1 to play nice with shell pipelines.
|
|
236
|
+
*/
|
|
237
|
+
async function emitPaymentRequiredError(response, options) {
|
|
238
|
+
let requirements;
|
|
239
|
+
try {
|
|
240
|
+
requirements = await extractPaymentRequirements(response);
|
|
241
|
+
}
|
|
242
|
+
catch (e) {
|
|
243
|
+
const message = `Failed to parse payment requirements: ${e instanceof Error ? e.message : String(e)}`;
|
|
244
|
+
if (options.raw) {
|
|
245
|
+
console.error(`Error: ${message}`);
|
|
246
|
+
process.exit(1);
|
|
207
247
|
}
|
|
208
|
-
console.log(JSON.stringify(
|
|
248
|
+
console.log(JSON.stringify(err("PARSE_ERROR", message), null, 2));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
if (options.raw) {
|
|
252
|
+
console.error("Error: Payment required (pass --pay to authorize)");
|
|
253
|
+
console.error(JSON.stringify(requirements, null, 2));
|
|
254
|
+
return;
|
|
209
255
|
}
|
|
256
|
+
console.log(JSON.stringify({
|
|
257
|
+
ok: false,
|
|
258
|
+
error: {
|
|
259
|
+
code: "PAYMENT_REQUIRED",
|
|
260
|
+
message: "Payment required (pass --pay to authorize)",
|
|
261
|
+
requirements,
|
|
262
|
+
},
|
|
263
|
+
}, null, 2));
|
|
210
264
|
}
|
|
211
265
|
/**
|
|
212
|
-
* Execute fetch
|
|
266
|
+
* Execute fetch. Without --pay: behaves like a plain fetch, errors on 402.
|
|
267
|
+
* With --pay: wraps fetch with x402 payment handling and pays as authorized
|
|
268
|
+
* by the configured treasurer.
|
|
213
269
|
*/
|
|
214
270
|
async function runFetch(url, options) {
|
|
215
|
-
|
|
216
|
-
const
|
|
271
|
+
const headers = parseHeaders(options.header);
|
|
272
|
+
const init = buildRequestInit(options, headers);
|
|
273
|
+
if (!options.pay) {
|
|
274
|
+
// Default: probe only. 402 is an error from the caller's perspective —
|
|
275
|
+
// they did not authorize a payment, so they did not get the resource.
|
|
276
|
+
const response = await fetch(url, init);
|
|
277
|
+
if (response.status === 402) {
|
|
278
|
+
await emitPaymentRequiredError(response, options);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
await emitSuccessResponse(response, options);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// --pay: authorize payment if the server requires it.
|
|
285
|
+
const configResult = loadCredentials();
|
|
217
286
|
if (!configResult.ok) {
|
|
218
287
|
console.log(JSON.stringify(configResult.error, null, 2));
|
|
219
288
|
process.exit(1);
|
|
220
289
|
}
|
|
221
|
-
const
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
smartAccountAddress: config.agentAccount,
|
|
225
|
-
sessionKeyPrivateKey: config.agentKey,
|
|
226
|
-
apiUrl: config.apiUrl ?? "https://api.ampersend.ai",
|
|
227
|
-
});
|
|
228
|
-
// Wrap fetch with payment handling
|
|
229
|
-
const fetchWithPayment = wrapFetchWithPayment(fetch, ampersendClient);
|
|
230
|
-
// Build request
|
|
231
|
-
const headers = parseHeaders(options.header);
|
|
232
|
-
// Execute request
|
|
233
|
-
const response = await fetchWithPayment(url, buildRequestInit(options, headers));
|
|
234
|
-
await handleResponse(response, options);
|
|
290
|
+
const { fetchWithPayment, getSelected } = createPaidFetch(configResult.credentials, { siwx: options.siwx });
|
|
291
|
+
const response = await fetchWithPayment(url, init);
|
|
292
|
+
await emitSuccessResponse(response, options, getSelected());
|
|
235
293
|
}
|
|
236
294
|
/**
|
|
237
295
|
* Execute the fetch command
|
|
238
296
|
*/
|
|
239
297
|
async function executeFetch(url, options) {
|
|
298
|
+
if (options.pay && options.inspect) {
|
|
299
|
+
const message = "--pay and --inspect are mutually exclusive";
|
|
300
|
+
if (options.raw) {
|
|
301
|
+
console.error(`Error: ${message}`);
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
console.log(JSON.stringify(err("INVALID_ARGS", message), null, 2));
|
|
305
|
+
}
|
|
306
|
+
process.exit(1);
|
|
307
|
+
}
|
|
240
308
|
try {
|
|
241
309
|
if (options.inspect) {
|
|
242
310
|
await runInspect(url, options);
|
|
@@ -246,13 +314,16 @@ async function executeFetch(url, options) {
|
|
|
246
314
|
}
|
|
247
315
|
}
|
|
248
316
|
catch (error) {
|
|
317
|
+
// Camp-B exit policy: a thrown fetch (network error, DNS failure, bad URL)
|
|
318
|
+
// is a remote/runtime failure, not a CLI misuse. Emit the envelope and
|
|
319
|
+
// exit 0 in JSON mode so the agent reads the envelope, not $?. In --raw
|
|
320
|
+
// mode we exit 1 to stay shell-pipeline friendly.
|
|
321
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
249
322
|
if (options.raw) {
|
|
250
|
-
console.error(`Error: ${
|
|
251
|
-
|
|
252
|
-
else {
|
|
253
|
-
console.log(JSON.stringify(err("REQUEST_ERROR", error instanceof Error ? error.message : String(error)), null, 2));
|
|
323
|
+
console.error(`Error: ${message}`);
|
|
324
|
+
process.exit(1);
|
|
254
325
|
}
|
|
255
|
-
|
|
326
|
+
console.log(JSON.stringify(err("REQUEST_ERROR", message), null, 2));
|
|
256
327
|
}
|
|
257
328
|
}
|
|
258
329
|
/**
|
|
@@ -261,27 +332,36 @@ async function executeFetch(url, options) {
|
|
|
261
332
|
export function registerFetchCommand(program) {
|
|
262
333
|
program
|
|
263
334
|
.command("fetch")
|
|
264
|
-
.description("Make HTTP requests
|
|
335
|
+
.description("Make HTTP requests. By default, errors on 402 unless --pay is passed.")
|
|
265
336
|
.argument("<url>", "URL to request")
|
|
266
337
|
.option("-X, --method <method>", "HTTP method", "GET")
|
|
267
338
|
.option("-H, --header <header...>", "HTTP header (format: 'Key: Value')")
|
|
268
339
|
.option("-d, --data <data>", "Request body data")
|
|
340
|
+
.option("--pay", "Authorize payment if the server returns 402", false)
|
|
269
341
|
.option("--inspect", "Show payment requirements without executing payment", false)
|
|
270
342
|
.option("--raw", "Output raw response body instead of JSON", false)
|
|
271
343
|
.option("--headers", "Include response headers in JSON output", false)
|
|
344
|
+
.option("--no-siwx", "Disable Sign-In-With-X — skip signature auth and go straight to payment")
|
|
272
345
|
.addHelpText("after", `
|
|
273
|
-
|
|
346
|
+
Modes:
|
|
347
|
+
ampersend fetch <url> Probe only. 402 → error envelope (PAYMENT_REQUIRED).
|
|
348
|
+
ampersend fetch --pay <url> Authorize payment if the server returns 402.
|
|
349
|
+
ampersend fetch --inspect <url> Report payment requirements without fetching the resource.
|
|
350
|
+
|
|
351
|
+
Configuration (--pay only):
|
|
274
352
|
Run 'ampersend config init' to set up, or use environment variables:
|
|
275
353
|
AMPERSEND_AGENT_SECRET Combined format: agent_key:::agent_account
|
|
276
354
|
AMPERSEND_API_URL Ampersend API URL (optional)
|
|
277
355
|
|
|
278
356
|
Examples:
|
|
279
357
|
ampersend fetch https://api.example.com/endpoint
|
|
280
|
-
ampersend fetch
|
|
358
|
+
ampersend fetch --pay https://api.example.com/paid-endpoint
|
|
359
|
+
ampersend fetch --inspect https://api.example.com/paid-endpoint
|
|
360
|
+
ampersend fetch --pay -X POST -H "Content-Type: application/json" -d '{"q":"x"}' https://api.example.com/
|
|
281
361
|
`)
|
|
282
362
|
.action(async (url, options) => {
|
|
283
363
|
await executeFetch(url, options);
|
|
284
364
|
});
|
|
285
365
|
}
|
|
286
|
-
export { buildRequestInit, decodeBase64Header, executeFetch, headersToObject, parseHeaders, runFetch, runInspect };
|
|
366
|
+
export { buildPaymentReceipt, buildReceiptFromResponse, buildRequestInit, createPaidFetch, decodeBase64Header, executeFetch, headersToObject, parseHeaders, runFetch, runInspect, };
|
|
287
367
|
//# sourceMappingURL=fetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/cli/commands/fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../src/cli/commands/fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fund.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/fund.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB1D"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { err } from "../envelope.js";
|
|
2
|
+
import { buildClient, emit } from "./agent.js";
|
|
3
|
+
const VALID_DESTINATIONS = new Set(["agent", "main"]);
|
|
4
|
+
export function registerFundCommand(program) {
|
|
5
|
+
program
|
|
6
|
+
.command("fund")
|
|
7
|
+
.description("Print a dashboard URL the user can open to fund this agent or their main account")
|
|
8
|
+
.option("--amount <usdc>", "Suggested USDC amount, e.g. '25' or '1.5'")
|
|
9
|
+
.option("--destination <where>", "Which account to preselect: 'agent' (default) or 'main'")
|
|
10
|
+
.option("--raw", "Print only the inner data, no JSON envelope", false)
|
|
11
|
+
.action(async (options) => {
|
|
12
|
+
if (options.destination != null && !VALID_DESTINATIONS.has(options.destination)) {
|
|
13
|
+
console.log(JSON.stringify(err("INVALID_FLAG", "--destination must be one of: agent, main"), null, 2));
|
|
14
|
+
process.exit(1);
|
|
15
|
+
}
|
|
16
|
+
await emit("funding-link", options, () => buildClient().getFundingLink({
|
|
17
|
+
...(options.amount != null && { amount: options.amount }),
|
|
18
|
+
...(options.destination != null && { destination: options.destination }),
|
|
19
|
+
}));
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=fund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fund.js","sourceRoot":"","sources":["../../../src/cli/commands/fund.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAErD,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kFAAkF,CAAC;SAC/F,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;SACtE,MAAM,CAAC,uBAAuB,EAAE,yDAAyD,CAAC;SAC1F,MAAM,CAAC,OAAO,EAAE,6CAA6C,EAAE,KAAK,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAgE,EAAE,EAAE;QACjF,IAAI,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,2CAA2C,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;YACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,GAAG,EAAE,CACvC,WAAW,EAAE,CAAC,cAAc,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;YACzD,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,WAA+B,EAAE,CAAC;SAC7F,CAAC,CACH,CAAA;IACH,CAAC,CAAC,CAAA;AACN,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
+
import { MarketplaceClient } from "../../ampersend/index.ts";
|
|
2
3
|
interface ListOptions {
|
|
3
4
|
source?: string;
|
|
4
5
|
category?: string;
|
|
@@ -9,6 +10,8 @@ interface ListOptions {
|
|
|
9
10
|
interface ShowOptions {
|
|
10
11
|
raw: boolean;
|
|
11
12
|
}
|
|
13
|
+
export declare function buildClient(): MarketplaceClient;
|
|
14
|
+
export declare function buildReadOnlyClient(): MarketplaceClient;
|
|
12
15
|
declare function executeList(options: ListOptions): Promise<void>;
|
|
13
16
|
declare function executeShow(id: string, options: ShowOptions): Promise<void>;
|
|
14
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGxC,OAAO,EAEL,iBAAiB,EAGlB,MAAM,0BAA0B,CAAA;AAYjC,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,OAAO,CAAA;CACb;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,OAAO,CAAA;CACb;AAyBD,wBAAgB,WAAW,IAAI,iBAAiB,CAY/C;AAKD,wBAAgB,mBAAmB,IAAI,iBAAiB,CAEvD;AAED,iBAAe,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B9D;AAED,iBAAe,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAqB1E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuBjE;AAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,CAAA"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Schema } from "effect";
|
|
2
2
|
import { CuratedAgentDTO, MarketplaceClient, } from "../../ampersend/index.js";
|
|
3
|
-
import { DEFAULT_API_URL, getRuntimeConfig } from "../config.js";
|
|
3
|
+
import { DEFAULT_API_URL, getRuntimeConfig, loadCredentials } from "../config.js";
|
|
4
4
|
import { err, ok } from "../envelope.js";
|
|
5
5
|
// Decoded DTOs hold bigints (e.g. pricing_config.amount), which JSON.stringify
|
|
6
6
|
// can't serialize. Encode back to wire form before printing — the result is
|
|
7
7
|
// byte-identical to what came over the wire.
|
|
8
8
|
const encodeAgent = Schema.encodeSync(CuratedAgentDTO);
|
|
9
9
|
const encodeAgents = Schema.encodeSync(Schema.Array(CuratedAgentDTO));
|
|
10
|
-
const VALID_SOURCES = ["catalog", "bazaar", "ampersend"];
|
|
10
|
+
const VALID_SOURCES = ["catalog", "bazaar", "ampersend", "registry"];
|
|
11
11
|
function resolveApiUrl() {
|
|
12
12
|
// Precedence: env var > config file > default. Mirrors `fetch.ts`.
|
|
13
13
|
return process.env.AMPERSEND_API_URL ?? getRuntimeConfig()?.apiUrl ?? DEFAULT_API_URL;
|
|
@@ -31,6 +31,25 @@ function buildFilters(options) {
|
|
|
31
31
|
filters.network = options.network;
|
|
32
32
|
return ok(filters);
|
|
33
33
|
}
|
|
34
|
+
export function buildClient() {
|
|
35
|
+
const result = loadCredentials();
|
|
36
|
+
if (!result.ok) {
|
|
37
|
+
console.log(JSON.stringify(result.error, null, 2));
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const { agentAccount, agentKey } = result.credentials;
|
|
41
|
+
return new MarketplaceClient({
|
|
42
|
+
baseUrl: resolveApiUrl(),
|
|
43
|
+
agentAddress: agentAccount,
|
|
44
|
+
sessionKeyPrivateKey: agentKey,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// `marketplace show` reads a single agent from an unauthenticated endpoint, so
|
|
48
|
+
// it must work without setup. Build a credential-free client rather than going
|
|
49
|
+
// through `buildClient`, which exits when no agent is configured.
|
|
50
|
+
export function buildReadOnlyClient() {
|
|
51
|
+
return new MarketplaceClient({ baseUrl: resolveApiUrl() });
|
|
52
|
+
}
|
|
34
53
|
async function executeList(options) {
|
|
35
54
|
const filtersResult = buildFilters(options);
|
|
36
55
|
if (!filtersResult.ok) {
|
|
@@ -42,7 +61,7 @@ async function executeList(options) {
|
|
|
42
61
|
}
|
|
43
62
|
process.exit(1);
|
|
44
63
|
}
|
|
45
|
-
const client =
|
|
64
|
+
const client = buildClient();
|
|
46
65
|
try {
|
|
47
66
|
const agents = await client.listAgents(filtersResult.data);
|
|
48
67
|
const wire = encodeAgents(agents);
|
|
@@ -65,7 +84,7 @@ async function executeList(options) {
|
|
|
65
84
|
}
|
|
66
85
|
}
|
|
67
86
|
async function executeShow(id, options) {
|
|
68
|
-
const client =
|
|
87
|
+
const client = buildReadOnlyClient();
|
|
69
88
|
try {
|
|
70
89
|
const agent = await client.getAgent(id);
|
|
71
90
|
const wire = encodeAgent(agent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,OAAO,EACL,eAAe,EACf,iBAAiB,GAGlB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/cli/commands/marketplace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAKxC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ7D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { MIN_SKILL_VERSION, VERSION } from "../../version.js";
|
|
2
|
+
import { ok } from "../envelope.js";
|
|
3
|
+
export function registerVersionCommand(program) {
|
|
4
|
+
program
|
|
5
|
+
.command("version")
|
|
6
|
+
.description("Print CLI version and minimum supported skill version as JSON")
|
|
7
|
+
.action(() => {
|
|
8
|
+
console.log(JSON.stringify(ok({ cliVersion: VERSION, minSkillVersion: MIN_SKILL_VERSION }), null, 2));
|
|
9
|
+
process.exit(0);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/cli/commands/version.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAA;AAEnC,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACrG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACN,CAAC"}
|