@aibtc/mcp-server 1.46.1 → 1.46.3
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/services/x402.service.d.ts +1 -0
- package/dist/services/x402.service.d.ts.map +1 -1
- package/dist/services/x402.service.js +51 -10
- package/dist/services/x402.service.js.map +1 -1
- package/dist/tools/endpoint.tools.d.ts.map +1 -1
- package/dist/tools/endpoint.tools.js +45 -2
- package/dist/tools/endpoint.tools.js.map +1 -1
- package/dist/tools/inbox.tools.d.ts.map +1 -1
- package/dist/tools/inbox.tools.js +123 -23
- package/dist/tools/inbox.tools.js.map +1 -1
- package/dist/tools/news.tools.d.ts.map +1 -1
- package/dist/tools/news.tools.js +1 -0
- package/dist/tools/news.tools.js.map +1 -1
- package/dist/tools/relay-diagnostic.tools.js +4 -4
- package/dist/tools/relay-diagnostic.tools.js.map +1 -1
- package/dist/utils/relay-health.d.ts +2 -2
- package/dist/utils/relay-health.js +4 -4
- package/dist/utils/relay-health.js.map +1 -1
- package/dist/utils/x402-payment-logging.d.ts +27 -0
- package/dist/utils/x402-payment-logging.d.ts.map +1 -0
- package/dist/utils/x402-payment-logging.js +70 -0
- package/dist/utils/x402-payment-logging.js.map +1 -0
- package/dist/utils/x402-payment-state.d.ts +41 -0
- package/dist/utils/x402-payment-state.d.ts.map +1 -0
- package/dist/utils/x402-payment-state.js +275 -0
- package/dist/utils/x402-payment-state.js.map +1 -0
- package/dist/utils/x402-recovery.d.ts +9 -2
- package/dist/utils/x402-recovery.d.ts.map +1 -1
- package/dist/utils/x402-recovery.js +26 -2
- package/dist/utils/x402-recovery.js.map +1 -1
- package/package.json +2 -1
- package/skill/SKILL.md +1 -1
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { HttpPaymentStatusResponseSchema, } from "@aibtc/tx-schemas/http";
|
|
2
|
+
const IN_FLIGHT_STATUSES = new Set(["queued", "broadcasting", "mempool"]);
|
|
3
|
+
const SENDER_NONCE_REASONS = new Set([
|
|
4
|
+
"sender_nonce_stale",
|
|
5
|
+
"sender_nonce_gap",
|
|
6
|
+
"sender_nonce_duplicate",
|
|
7
|
+
]);
|
|
8
|
+
const BOUNDED_RETRY_REASONS = new Set([
|
|
9
|
+
"queue_unavailable",
|
|
10
|
+
"sponsor_failure",
|
|
11
|
+
"internal_error",
|
|
12
|
+
"broadcast_failure",
|
|
13
|
+
"chain_abort",
|
|
14
|
+
]);
|
|
15
|
+
function asRecord(value) {
|
|
16
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return value;
|
|
20
|
+
}
|
|
21
|
+
function extractCandidateRecord(value) {
|
|
22
|
+
const record = asRecord(value);
|
|
23
|
+
if (!record) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (typeof record.paymentId === "string" ||
|
|
27
|
+
typeof record.status === "string" ||
|
|
28
|
+
typeof record.paymentStatus === "string") {
|
|
29
|
+
return {
|
|
30
|
+
...record,
|
|
31
|
+
...(typeof record.status !== "string" && typeof record.paymentStatus === "string"
|
|
32
|
+
? { status: record.paymentStatus }
|
|
33
|
+
: {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
const inbox = asRecord(record.inbox);
|
|
37
|
+
if (inbox &&
|
|
38
|
+
(typeof inbox.paymentId === "string" ||
|
|
39
|
+
typeof inbox.paymentStatus === "string" ||
|
|
40
|
+
typeof inbox.checkStatusUrl === "string")) {
|
|
41
|
+
return {
|
|
42
|
+
paymentId: inbox.paymentId,
|
|
43
|
+
status: inbox.paymentStatus,
|
|
44
|
+
checkStatusUrl: (typeof inbox.checkStatusUrl === "string" ? inbox.checkStatusUrl : undefined) ??
|
|
45
|
+
(typeof record.checkStatusUrl === "string" ? record.checkStatusUrl : undefined),
|
|
46
|
+
txid: record.txid,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const x402 = asRecord(record.x402);
|
|
50
|
+
if (x402 && (typeof x402.paymentId === "string" || typeof x402.status === "string")) {
|
|
51
|
+
return x402;
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
function getHeaderValue(headers, name) {
|
|
56
|
+
if (!headers) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
const target = name.toLowerCase();
|
|
60
|
+
for (const [headerName, rawValue] of Object.entries(headers)) {
|
|
61
|
+
if (headerName.toLowerCase() !== target || rawValue === undefined || rawValue === null) {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (Array.isArray(rawValue)) {
|
|
65
|
+
return rawValue.find((value) => typeof value === "string" && value.length > 0);
|
|
66
|
+
}
|
|
67
|
+
return String(rawValue);
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
export function normalizeCallerFacingStatus(status) {
|
|
72
|
+
if (typeof status !== "string") {
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
if (status === "pending" || status === "submitted" || status === "queued_with_warning") {
|
|
76
|
+
return "queued";
|
|
77
|
+
}
|
|
78
|
+
const parsed = HttpPaymentStatusResponseSchema.shape.status.safeParse(status);
|
|
79
|
+
return parsed.success ? parsed.data : undefined;
|
|
80
|
+
}
|
|
81
|
+
function normalizeCheckStatusUrl(checkStatusUrl, baseUrl) {
|
|
82
|
+
if (!checkStatusUrl) {
|
|
83
|
+
return undefined;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
if (baseUrl) {
|
|
87
|
+
return new URL(checkStatusUrl, baseUrl).toString();
|
|
88
|
+
}
|
|
89
|
+
return new URL(checkStatusUrl).toString();
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
export function extractCanonicalPaymentHints(options) {
|
|
96
|
+
const candidate = extractCandidateRecord(options.payload);
|
|
97
|
+
const headerPaymentId = getHeaderValue(options.responseHeaders, "x-payment-id");
|
|
98
|
+
const headerCheckStatusUrl = getHeaderValue(options.responseHeaders, "x-payment-check-url");
|
|
99
|
+
const headerStatus = getHeaderValue(options.responseHeaders, "x-payment-status");
|
|
100
|
+
return {
|
|
101
|
+
paymentId: (typeof candidate?.paymentId === "string" ? candidate.paymentId : undefined) ??
|
|
102
|
+
headerPaymentId ??
|
|
103
|
+
options.paymentId,
|
|
104
|
+
status: normalizeCallerFacingStatus(candidate?.status) ??
|
|
105
|
+
normalizeCallerFacingStatus(headerStatus),
|
|
106
|
+
checkStatusUrl: normalizeCheckStatusUrl((typeof candidate?.checkStatusUrl === "string" ? candidate.checkStatusUrl : undefined) ??
|
|
107
|
+
headerCheckStatusUrl, options.baseUrl),
|
|
108
|
+
txid: typeof candidate?.txid === "string" ? candidate.txid : undefined,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function tryParsePaymentStatus(candidate) {
|
|
112
|
+
const result = HttpPaymentStatusResponseSchema.safeParse(candidate);
|
|
113
|
+
return result.success ? result.data : null;
|
|
114
|
+
}
|
|
115
|
+
async function fetchPaymentStatus(checkStatusUrl, fetchImpl) {
|
|
116
|
+
try {
|
|
117
|
+
const response = await fetchImpl(checkStatusUrl, {
|
|
118
|
+
method: "GET",
|
|
119
|
+
headers: { Accept: "application/json" },
|
|
120
|
+
});
|
|
121
|
+
const body = await response.json().catch(() => null);
|
|
122
|
+
const parsed = HttpPaymentStatusResponseSchema.safeParse(body);
|
|
123
|
+
return parsed.success ? parsed.data : null;
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
export async function resolveCanonicalPaymentStatus(options) {
|
|
130
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
131
|
+
const directCandidate = extractCandidateRecord(options.payload);
|
|
132
|
+
if (directCandidate) {
|
|
133
|
+
const parsed = tryParsePaymentStatus({
|
|
134
|
+
...directCandidate,
|
|
135
|
+
...(typeof directCandidate.paymentId !== "string" && options.paymentId
|
|
136
|
+
? { paymentId: options.paymentId }
|
|
137
|
+
: {}),
|
|
138
|
+
...(typeof directCandidate.checkStatusUrl === "string"
|
|
139
|
+
? {
|
|
140
|
+
checkStatusUrl: normalizeCheckStatusUrl(directCandidate.checkStatusUrl, options.baseUrl) ??
|
|
141
|
+
directCandidate.checkStatusUrl,
|
|
142
|
+
}
|
|
143
|
+
: {}),
|
|
144
|
+
});
|
|
145
|
+
if (parsed) {
|
|
146
|
+
return parsed;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const hints = extractCanonicalPaymentHints(options);
|
|
150
|
+
const canonicalCheckStatusUrl = hints.checkStatusUrl;
|
|
151
|
+
const compatFallbackCheckStatusUrl = canonicalCheckStatusUrl
|
|
152
|
+
? undefined
|
|
153
|
+
: normalizeCheckStatusUrl(options.fallbackCheckStatusUrl, options.baseUrl);
|
|
154
|
+
const checkStatusUrl = canonicalCheckStatusUrl ?? compatFallbackCheckStatusUrl;
|
|
155
|
+
if (checkStatusUrl) {
|
|
156
|
+
options.onPoll?.({
|
|
157
|
+
paymentId: hints.paymentId,
|
|
158
|
+
checkStatusUrl,
|
|
159
|
+
source: canonicalCheckStatusUrl ? "canonical_hint" : "compat_fallback",
|
|
160
|
+
});
|
|
161
|
+
const polled = await fetchPaymentStatus(checkStatusUrl, fetchImpl);
|
|
162
|
+
if (polled) {
|
|
163
|
+
return polled;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (hints.paymentId && hints.status) {
|
|
167
|
+
const parsed = tryParsePaymentStatus({
|
|
168
|
+
paymentId: hints.paymentId,
|
|
169
|
+
status: hints.status,
|
|
170
|
+
...(hints.checkStatusUrl ? { checkStatusUrl: hints.checkStatusUrl } : {}),
|
|
171
|
+
...(hints.txid ? { txid: hints.txid } : {}),
|
|
172
|
+
});
|
|
173
|
+
if (parsed) {
|
|
174
|
+
return parsed;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
export function classifyCanonicalPaymentStatus(status) {
|
|
180
|
+
if (IN_FLIGHT_STATUSES.has(status.status)) {
|
|
181
|
+
return {
|
|
182
|
+
action: "poll_same_payment",
|
|
183
|
+
retryable: true,
|
|
184
|
+
shouldReusePaymentId: true,
|
|
185
|
+
shouldRebuild: false,
|
|
186
|
+
shouldStopPollingOldPaymentId: false,
|
|
187
|
+
summary: `Payment ${status.paymentId} is still ${status.status}. Keep polling the same paymentId; do not rebuild or sign a second payment.`,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
if (status.status === "confirmed") {
|
|
191
|
+
return {
|
|
192
|
+
action: "success",
|
|
193
|
+
retryable: false,
|
|
194
|
+
shouldReusePaymentId: false,
|
|
195
|
+
shouldRebuild: false,
|
|
196
|
+
shouldStopPollingOldPaymentId: false,
|
|
197
|
+
summary: `Payment ${status.paymentId} is confirmed.`,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if (status.status === "failed" && status.terminalReason && SENDER_NONCE_REASONS.has(status.terminalReason)) {
|
|
201
|
+
return {
|
|
202
|
+
action: "rebuild_sender",
|
|
203
|
+
retryable: true,
|
|
204
|
+
shouldReusePaymentId: false,
|
|
205
|
+
shouldRebuild: true,
|
|
206
|
+
shouldStopPollingOldPaymentId: false,
|
|
207
|
+
summary: `Payment ${status.paymentId} failed with sender-owned nonce reason ${status.terminalReason}. Rebuild and re-sign with a fresh sender nonce.`,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
if (status.status === "failed" && status.terminalReason && BOUNDED_RETRY_REASONS.has(status.terminalReason)) {
|
|
211
|
+
return {
|
|
212
|
+
action: "retry_bounded",
|
|
213
|
+
retryable: status.retryable === true,
|
|
214
|
+
shouldReusePaymentId: false,
|
|
215
|
+
shouldRebuild: false,
|
|
216
|
+
shouldStopPollingOldPaymentId: false,
|
|
217
|
+
summary: `Payment ${status.paymentId} failed with relay/settlement reason ${status.terminalReason}. Use only bounded retry if the route allows it; otherwise stop.`,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
if (status.status === "replaced") {
|
|
221
|
+
return {
|
|
222
|
+
action: "stop_replaced",
|
|
223
|
+
retryable: false,
|
|
224
|
+
shouldReusePaymentId: false,
|
|
225
|
+
shouldRebuild: false,
|
|
226
|
+
shouldStopPollingOldPaymentId: true,
|
|
227
|
+
summary: `Payment ${status.paymentId} was replaced${status.terminalReason ? ` (${status.terminalReason})` : ""}. Stop polling the old paymentId.`,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
if (status.status === "not_found") {
|
|
231
|
+
return {
|
|
232
|
+
action: "restart_payment",
|
|
233
|
+
retryable: false,
|
|
234
|
+
shouldReusePaymentId: false,
|
|
235
|
+
shouldRebuild: false,
|
|
236
|
+
shouldStopPollingOldPaymentId: true,
|
|
237
|
+
summary: `Payment ${status.paymentId} is not_found${status.terminalReason ? ` (${status.terminalReason})` : ""}. Treat the old identity as gone or expired and restart only if the higher-level operation still wants to pay.`,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
const reason = status.terminalReason;
|
|
241
|
+
return {
|
|
242
|
+
action: "stop",
|
|
243
|
+
retryable: false,
|
|
244
|
+
shouldReusePaymentId: false,
|
|
245
|
+
shouldRebuild: false,
|
|
246
|
+
shouldStopPollingOldPaymentId: status.status === "failed",
|
|
247
|
+
summary: `Payment ${status.paymentId} reached terminal status ${status.status}${reason ? ` (${reason})` : ""}. Stop and decide next action explicitly.`,
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
export function formatCanonicalPaymentStatus(status) {
|
|
251
|
+
const lines = [
|
|
252
|
+
`paymentId: ${status.paymentId}`,
|
|
253
|
+
`status: ${status.status}`,
|
|
254
|
+
];
|
|
255
|
+
if (status.terminalReason) {
|
|
256
|
+
lines.push(`terminalReason: ${status.terminalReason}`);
|
|
257
|
+
}
|
|
258
|
+
if (status.txid) {
|
|
259
|
+
lines.push(`txid: ${status.txid}`);
|
|
260
|
+
}
|
|
261
|
+
if (status.checkStatusUrl) {
|
|
262
|
+
lines.push(`checkStatusUrl: ${status.checkStatusUrl}`);
|
|
263
|
+
}
|
|
264
|
+
if (status.errorCode) {
|
|
265
|
+
lines.push(`errorCode: ${status.errorCode}`);
|
|
266
|
+
}
|
|
267
|
+
if (status.error) {
|
|
268
|
+
lines.push(`error: ${status.error}`);
|
|
269
|
+
}
|
|
270
|
+
if (status.retryable !== undefined) {
|
|
271
|
+
lines.push(`retryable: ${status.retryable}`);
|
|
272
|
+
}
|
|
273
|
+
return lines.join("\n");
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=x402-payment-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402-payment-state.js","sourceRoot":"","sources":["../../src/utils/x402-payment-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Helpers for extracting transaction IDs from payment-signature headers
|
|
5
5
|
* and polling transaction confirmation status.
|
|
6
6
|
*
|
|
7
|
-
* Used by inbox.tools.ts and endpoint.tools.ts
|
|
8
|
-
*
|
|
7
|
+
* Used by inbox.tools.ts and endpoint.tools.ts as an operational fallback
|
|
8
|
+
* when canonical paymentId polling is unavailable or inconclusive.
|
|
9
9
|
*/
|
|
10
10
|
import { type Network } from "../config/networks.js";
|
|
11
11
|
/**
|
|
@@ -17,6 +17,13 @@ import { type Network } from "../config/networks.js";
|
|
|
17
17
|
* Returns the txid string (64-char hex, no 0x prefix), or null if extraction fails.
|
|
18
18
|
*/
|
|
19
19
|
export declare function extractTxidFromPaymentSignature(paymentSignatureHeader: string): string | null;
|
|
20
|
+
/**
|
|
21
|
+
* Extract the relay-owned paymentId from a base64-encoded payment-signature header.
|
|
22
|
+
*
|
|
23
|
+
* This is useful when the caller needs to recover the stable payment identity
|
|
24
|
+
* from a previously signed request before canonical polling can begin.
|
|
25
|
+
*/
|
|
26
|
+
export declare function extractPaymentIdFromPaymentSignature(paymentSignatureHeader: string): string | null;
|
|
20
27
|
export interface TransactionConfirmationResult {
|
|
21
28
|
txid: string;
|
|
22
29
|
status: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402-recovery.d.ts","sourceRoot":"","sources":["../../src/utils/x402-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,uBAAuB,CAAC;AAOvE;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,sBAAsB,EAAE,MAAM,GAC7B,MAAM,GAAG,IAAI,CAiBf;AAMD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,SAAS,EAClB,UAAU,SAAQ,GACjB,OAAO,CAAC,6BAA6B,CAAC,CAiCxC"}
|
|
1
|
+
{"version":3,"file":"x402-recovery.d.ts","sourceRoot":"","sources":["../../src/utils/x402-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,KAAK,OAAO,EAAoB,MAAM,uBAAuB,CAAC;AAOvE;;;;;;;GAOG;AACH,wBAAgB,+BAA+B,CAC7C,sBAAsB,EAAE,MAAM,GAC7B,MAAM,GAAG,IAAI,CAiBf;AAED;;;;;GAKG;AACH,wBAAgB,oCAAoC,CAClD,sBAAsB,EAAE,MAAM,GAC7B,MAAM,GAAG,IAAI,CAgBf;AAMD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,SAAS,EAClB,UAAU,SAAQ,GACjB,OAAO,CAAC,6BAA6B,CAAC,CAiCxC"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Helpers for extracting transaction IDs from payment-signature headers
|
|
5
5
|
* and polling transaction confirmation status.
|
|
6
6
|
*
|
|
7
|
-
* Used by inbox.tools.ts and endpoint.tools.ts
|
|
8
|
-
*
|
|
7
|
+
* Used by inbox.tools.ts and endpoint.tools.ts as an operational fallback
|
|
8
|
+
* when canonical paymentId polling is unavailable or inconclusive.
|
|
9
9
|
*/
|
|
10
10
|
import { deserializeTransaction } from "@stacks/transactions";
|
|
11
11
|
import { getHiroApi } from "../services/hiro-api.js";
|
|
@@ -39,6 +39,30 @@ export function extractTxidFromPaymentSignature(paymentSignatureHeader) {
|
|
|
39
39
|
return null;
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Extract the relay-owned paymentId from a base64-encoded payment-signature header.
|
|
44
|
+
*
|
|
45
|
+
* This is useful when the caller needs to recover the stable payment identity
|
|
46
|
+
* from a previously signed request before canonical polling can begin.
|
|
47
|
+
*/
|
|
48
|
+
export function extractPaymentIdFromPaymentSignature(paymentSignatureHeader) {
|
|
49
|
+
try {
|
|
50
|
+
const payload = decodePaymentPayload(paymentSignatureHeader);
|
|
51
|
+
const id = payload?.extensions?.["payment-identifier"];
|
|
52
|
+
if (!id || typeof id !== "object" || Array.isArray(id)) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const info = id.info;
|
|
56
|
+
if (!info || typeof info !== "object" || Array.isArray(info)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const paymentId = info.id;
|
|
60
|
+
return typeof paymentId === "string" && paymentId.length > 0 ? paymentId : null;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
42
66
|
/**
|
|
43
67
|
* Poll transaction status until it leaves the pending/mempool state or timeout is reached.
|
|
44
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x402-recovery.js","sourceRoot":"","sources":["../../src/utils/x402-recovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAgB,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,UAAU,+BAA+B,CAC7C,sBAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,oBAAoB,CAAC,sBAAsB,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;QAC1C,8BAA8B;QAC9B,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAEjD,MAAM,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAcD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,IAAY,EACZ,OAAgB,EAChB,SAAS,GAAG,MAAM,EAClB,UAAU,GAAG,KAAK;IAElB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAExC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;YAClE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO;oBACL,IAAI,EAAE,cAAc;oBACpB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,YAAY,EAAE,MAAM,CAAC,YAAY;oBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;oBAC3B,QAAQ,EAAE,WAAW;iBACtB,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;QAED,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC;YAAE,MAAM;QAC1B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,WAAW;KACtB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"x402-recovery.js","sourceRoot":"","sources":["../../src/utils/x402-recovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aibtc/mcp-server",
|
|
3
|
-
"version": "1.46.
|
|
3
|
+
"version": "1.46.3",
|
|
4
4
|
"description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
|
|
5
5
|
"mcpName": "io.github.aibtcdev/mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"homepage": "https://github.com/aibtcdev/aibtc-mcp-server#readme",
|
|
44
44
|
"license": "MIT",
|
|
45
45
|
"dependencies": {
|
|
46
|
+
"@aibtc/tx-schemas": "^0.3.0",
|
|
46
47
|
"@bitflowlabs/core-sdk": "^3.0.0",
|
|
47
48
|
"@faktoryfun/styx-sdk": "^1.3.5",
|
|
48
49
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
package/skill/SKILL.md
CHANGED
|
@@ -4,7 +4,7 @@ description: Bitcoin L1 wallet for agents - check balances, send BTC, manage UTX
|
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: aibtcdev
|
|
7
|
-
version: 1.46.
|
|
7
|
+
version: 1.46.3 # x-release-please-version
|
|
8
8
|
npm: "@aibtc/mcp-server"
|
|
9
9
|
github: https://github.com/aibtcdev/aibtc-mcp-server
|
|
10
10
|
---
|