@aibtc/mcp-server 1.24.0 → 1.24.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.
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.tools.d.ts","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqJpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgS7D"}
1
+ {"version":3,"file":"endpoint.tools.d.ts","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuJpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsT7D"}
@@ -1,7 +1,9 @@
1
1
  import { z } from "zod";
2
- import { createApiClient, createPlainClient, API_URL, probeEndpoint, formatPaymentAmount, checkSufficientBalance, generateDedupKey, checkDedupCache, recordTransaction, getAccount } from "../services/x402.service.js";
2
+ import { createApiClient, createPlainClient, API_URL, probeEndpoint, formatPaymentAmount, checkSufficientBalance, generateDedupKey, checkDedupCache, recordTransaction, getAccount, NETWORK } from "../services/x402.service.js";
3
3
  import { ALL_ENDPOINTS, searchEndpoints, formatEndpointsTable, getEndpointsBySource, getCategories, } from "../endpoints/registry.js";
4
4
  import { createJsonResponse, createErrorResponse } from "../utils/index.js";
5
+ import { X402_HEADERS } from "../utils/x402-protocol.js";
6
+ import { extractTxidFromPaymentSignature, pollTransactionConfirmation } from "../utils/x402-recovery.js";
5
7
  const ALL_SOURCES = "x402.biwas.xyz, x402.aibtc.com, stx402.com, aibtc.com";
6
8
  /**
7
9
  * Parse and validate endpoint URL from either a full URL or path+apiUrl combination.
@@ -247,13 +249,9 @@ For aibtc.com inbox messages, use send_inbox_message instead — it uses sponsor
247
249
  .describe("Skip cost probe and execute immediately. When false (default), probes first and returns cost info for paid endpoints. When true, executes atomically like before. Free endpoints always execute transparently."),
248
250
  },
249
251
  }, async ({ method, url, path, apiUrl, params, data, autoApprove }) => {
250
- let baseUrl = "";
251
- let requestPath = "";
252
252
  let fullUrl = "";
253
253
  try {
254
254
  const parsed = parseEndpointUrl({ url, path, apiUrl, params });
255
- baseUrl = parsed.baseUrl;
256
- requestPath = parsed.requestPath;
257
255
  fullUrl = parsed.fullUrl;
258
256
  params = parsed.params;
259
257
  if (!autoApprove) {
@@ -263,7 +261,6 @@ For aibtc.com inbox messages, use send_inbox_message instead — it uses sponsor
263
261
  // autoApprove=true: probe first to check if payment is required and validate balance
264
262
  const probeResult = await probeEndpoint({ method, url: fullUrl, params, data });
265
263
  if (probeResult.type === 'payment_required') {
266
- // Check for duplicate transaction
267
264
  const dedupKey = generateDedupKey(method, fullUrl, params, data);
268
265
  const existingTxid = checkDedupCache(dedupKey);
269
266
  if (existingTxid) {
@@ -274,14 +271,10 @@ For aibtc.com inbox messages, use send_inbox_message instead — it uses sponsor
274
271
  note: 'Wait 60s or use different endpoint/params to force a new transaction.',
275
272
  });
276
273
  }
277
- // Check sufficient balance before creating payment client
278
274
  const account = await getAccount();
279
275
  await checkSufficientBalance(account, probeResult.amount, probeResult.asset);
280
- // Balance is sufficient - create payment client and execute
281
- const api = await createApiClient(baseUrl);
282
- const response = await api.request({ method, url: requestPath, params, data });
283
- // Extract txid from response and record for dedup
284
- // x402 payment responses typically include txid in response data or headers
276
+ const api = await createApiClient(parsed.baseUrl);
277
+ const response = await api.request({ method, url: parsed.requestPath, params, data });
285
278
  const txid = response.data?.txid ||
286
279
  response.headers?.['x-transaction-id'] ||
287
280
  'unknown';
@@ -293,8 +286,8 @@ For aibtc.com inbox messages, use send_inbox_message instead — it uses sponsor
293
286
  });
294
287
  }
295
288
  // Free endpoint - execute directly without payment client
296
- const api = createPlainClient(baseUrl);
297
- const response = await api.request({ method, url: requestPath, params, data });
289
+ const api = createPlainClient(parsed.baseUrl);
290
+ const response = await api.request({ method, url: parsed.requestPath, params, data });
298
291
  return createJsonResponse({
299
292
  endpoint: `${method} ${fullUrl}`,
300
293
  response: response.data,
@@ -302,6 +295,32 @@ For aibtc.com inbox messages, use send_inbox_message instead — it uses sponsor
302
295
  }
303
296
  catch (error) {
304
297
  const label = fullUrl || url || path || "unknown";
298
+ // Txid recovery: when payment was attempted but settlement failed,
299
+ // extract the txid from the payment-signature header (set by the axios
300
+ // interceptor in x402.service.ts) and return it so the agent can verify.
301
+ const axiosError = error;
302
+ const paymentSigHeader = axiosError.config?.headers?.[X402_HEADERS.PAYMENT_SIGNATURE];
303
+ if (paymentSigHeader) {
304
+ const txid = extractTxidFromPaymentSignature(paymentSigHeader);
305
+ if (txid) {
306
+ // Poll briefly to get current status
307
+ const confirmation = await pollTransactionConfirmation(txid, NETWORK);
308
+ const baseError = formatEndpointError(error, label);
309
+ return {
310
+ ...baseError,
311
+ content: [
312
+ {
313
+ type: "text",
314
+ text: baseError.content[0].text +
315
+ `\n\nPayment transaction was submitted but settlement failed. Transaction recovery info:\n` +
316
+ ` txid: ${confirmation.txid}\n` +
317
+ ` status: ${confirmation.status}\n` +
318
+ ` explorer: ${confirmation.explorer}`,
319
+ },
320
+ ],
321
+ };
322
+ }
323
+ }
305
324
  return formatEndpointError(error, label);
306
325
  }
307
326
  });
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint.tools.js","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAoB,sBAAsB,EAAE,gBAAgB,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC1O,OAAO,EACL,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,aAAa,GACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,MAAM,WAAW,GAAG,uDAAuD,CAAC;AAS5E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAKzB;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACtC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAE5B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,GAAG,EAAE,GAAG,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC;QACvC,CAAC;QACD,OAAO;YACL,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE;YAC7C,WAAW,EAAE,MAAM,CAAC,QAAQ;YAC5B,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,EAAE;YAC/D,MAAM;SACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC;QAClC,OAAO;YACL,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,GAAG,OAAO,GAAG,IAAI,EAAE;YAC5B,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,OAOtB;IACC,MAAM,QAAQ,GAA4B,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACxF,IAAI,OAAO,CAAC,GAAG;QAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAC5C,IAAI,OAAO,CAAC,IAAI;QAAE,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM;QAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACrD,IAAI,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC/F,IAAI,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACvF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,KAAc,EACd,aAAqB;IAErB,IAAI,OAAO,GAAG,eAAe,CAAC;IAC9B,MAAM,UAAU,GAAG,KAA2D,CAAC;IAC/E,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvC,OAAO,GAAG,uBAAuB,aAAa,uDAAuD,CAAC;QACxG,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,QAAQ,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9F,CAAC;IACH,CAAC;SAAM,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAClC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC1B,CAAC;IACD,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,OAAO,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAC1B,MAAmB,EACnB,MAAc,EACd,OAAe,EACf,eAAoD,EACpD,aAAsB;IAEtB,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,kBAAkB,CAAC;YACxB,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE;YAChC,OAAO,EAAE,6CAA6C;YACtD,QAAQ,EAAE,MAAM,CAAC,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,aAAa,IAAI,mBAAmB,CAAC;IACpD,OAAO,kBAAkB,CAAC;QACxB,IAAI,EAAE,kBAAkB;QACxB,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE;QAChC,OAAO,EAAE,GAAG,MAAM,uBAAuB,aAAa,qHAAqH;QAC3K,OAAO,EAAE;YACP,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB;QACD,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC;KACzC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,sBAAsB;IACtB,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,sCAAsC,WAAW;;;;;;;;;;oCAUhC;QAC9B,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;iBAC5E,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,sBAAsB,CAAC;YACnC,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,oEAAoE,CAAC;YACjF,YAAY,EAAE,CAAC;iBACZ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,YAAY,EAAE,CAAC;iBACZ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;SAC/D;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;QACjE,IAAI,CAAC;YACH,IAAI,SAAS,GAAG,aAAa,CAAC;YAE9B,IAAI,MAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBAC/B,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,YAAY,EAAE,CAAC;gBACjB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC3D,CAAC;iBAAM,IAAI,YAAY,EAAE,CAAC;gBACxB,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;YAC3D,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,SAAS,GAAG,SAAS,CAAC,MAAM,CAC1B,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CAC7D,CAAC;YACJ,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC9C,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;YAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;gBACnC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE;;wBAEE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;WAElC,WAAW;;iIAE2G;yBAClH;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,UAAU,GACd,MAAM,KAAK,KAAK;gBACd,CAAC,CAAC,YAAY,WAAW,EAAE;gBAC3B,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,+BAA+B,SAAS,CAAC,MAAM,cAAc,UAAU,kBAAkB,OAAO,KAAK,SAAS,oEAAoE;qBACzL;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EAAE;;;;;;;;;;;uIAWoH;QACjI,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;iBACtC,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,aAAa,CAAC;YAC1B,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,gGAAgG,CAAC;YAC7G,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mFAAmF,CAAC;YAChG,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,qHAAqH,CAAC;YAClI,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,mCAAmC,CAAC;YAChD,IAAI,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,oCAAoC,CAAC;YACjD,WAAW,EAAE,CAAC;iBACX,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,gNAAgN,CAAC;SAC9N;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE;QACjE,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;YACjC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAChF,OAAO,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACxG,CAAC;YAED,qFAAqF;YACrF,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAEhF,IAAI,WAAW,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBAC5C,kCAAkC;gBAClC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;gBACjE,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,YAAY,EAAE,CAAC;oBACjB,OAAO,kBAAkB,CAAC;wBACxB,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE;wBAChC,OAAO,EAAE,oGAAoG;wBAC7G,IAAI,EAAE,YAAY;wBAClB,IAAI,EAAE,uEAAuE;qBAC9E,CAAC,CAAC;gBACL,CAAC;gBAED,0DAA0D;gBAC1D,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;gBACnC,MAAM,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE7E,4DAA4D;gBAC5D,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE/E,kDAAkD;gBAClD,4EAA4E;gBAC5E,MAAM,IAAI,GAAI,QAAQ,CAAC,IAA0B,EAAE,IAAI;oBAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBACtC,SAAS,CAAC;gBACvB,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAElC,OAAO,kBAAkB,CAAC;oBACxB,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE;oBAChC,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;iBACpC,CAAC,CAAC;YACL,CAAC;YAED,0DAA0D;YAC1D,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/E,OAAO,kBAAkB,CAAC;gBACxB,QAAQ,EAAE,GAAG,MAAM,IAAI,OAAO,EAAE;gBAChC,QAAQ,EAAE,QAAQ,CAAC,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,SAAS,CAAC;YAClD,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CACF,CAAC;IAEF,qDAAqD;IACrD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE;;;;;;;;;;;;;;;;;oEAiBiD;QAC9D,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;iBACtC,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,aAAa,CAAC;YAC1B,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,gGAAgG,CAAC;YAC7G,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mFAAmF,CAAC;YAChG,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,qHAAqH,CAAC;YAClI,MAAM,EAAE,CAAC;iBACN,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;iBAC9B,QAAQ,EAAE;iBACV,QAAQ,CAAC,mCAAmC,CAAC;YAChD,IAAI,EAAE,CAAC;iBACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,oCAAoC,CAAC;SAClD;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;QACpD,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YACzB,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAEvB,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,OAAO,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"endpoint.tools.js","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.tools.d.ts","sourceRoot":"","sources":["../../src/tools/inbox.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiEpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgK1D"}
1
+ {"version":3,"file":"inbox.tools.d.ts","sourceRoot":"","sources":["../../src/tools/inbox.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkLpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuN1D"}
@@ -9,12 +9,60 @@ import { createFungiblePostCondition } from "../transactions/post-conditions.js"
9
9
  import { createJsonResponse, createErrorResponse } from "../utils/index.js";
10
10
  import { InsufficientBalanceError } from "../utils/errors.js";
11
11
  import { formatSbtc } from "../utils/formatting.js";
12
+ import { getHiroApi } from "../services/hiro-api.js";
13
+ import { extractTxidFromPaymentSignature, pollTransactionConfirmation } from "../utils/x402-recovery.js";
12
14
  const INBOX_BASE = "https://aibtc.com/api/inbox";
15
+ const nonceCache = new Map();
16
+ const NONCE_TTL_MS = 120_000;
17
+ /**
18
+ * Compute the next safe nonce for a sender address.
19
+ * Takes the max of:
20
+ * - confirmed account nonce (on-chain)
21
+ * - highest pending mempool nonce + 1
22
+ * - locally cached next nonce (from a recent send)
23
+ */
24
+ async function getNextNonce(address) {
25
+ const hiroApi = getHiroApi(NETWORK);
26
+ const accountInfo = await hiroApi.getAccountInfo(address);
27
+ const confirmedNonce = accountInfo.nonce;
28
+ let highestMempoolNonce = -1;
29
+ try {
30
+ const mempool = await hiroApi.getMempoolTransactions({
31
+ sender_address: address,
32
+ limit: 50,
33
+ });
34
+ for (const tx of mempool.results) {
35
+ if (tx.nonce > highestMempoolNonce) {
36
+ highestMempoolNonce = tx.nonce;
37
+ }
38
+ }
39
+ }
40
+ catch {
41
+ // Non-fatal: fall back to confirmed nonce only
42
+ }
43
+ const cached = nonceCache.get(address);
44
+ const fromCache = (cached && Date.now() < cached.expiresAt) ? cached.nextNonce : 0;
45
+ return Math.max(confirmedNonce, highestMempoolNonce + 1, fromCache);
46
+ }
47
+ /**
48
+ * Record that we used a nonce for an address so subsequent calls use a higher value.
49
+ */
50
+ function advanceNonceCache(address, usedNonce) {
51
+ const now = Date.now();
52
+ nonceCache.set(address, {
53
+ nextNonce: usedNonce + 1,
54
+ expiresAt: now + NONCE_TTL_MS,
55
+ });
56
+ }
57
+ // ============================================================================
58
+ // Transaction Builder
59
+ // ============================================================================
13
60
  /**
14
61
  * Build a sponsored sBTC transfer transaction (signed, not broadcast).
15
62
  * The inbox API handles settlement via the x402 relay.
63
+ * Accepts an explicit nonce to avoid ConflictingNonceInMempool errors.
16
64
  */
17
- async function buildSponsoredSbtcTransfer(senderKey, senderAddress, recipient, amount) {
65
+ async function buildSponsoredSbtcTransfer(senderKey, senderAddress, recipient, amount, nonce) {
18
66
  const contracts = getContracts(NETWORK);
19
67
  const { address: contractAddress, name: contractName } = parseContractId(contracts.SBTC_TOKEN);
20
68
  const networkName = getStacksNetwork(NETWORK);
@@ -34,10 +82,51 @@ async function buildSponsoredSbtcTransfer(senderKey, senderAddress, recipient, a
34
82
  postConditions: [postCondition],
35
83
  sponsored: true,
36
84
  fee: 0n,
85
+ nonce,
37
86
  });
38
87
  // serialize() returns Hex string (no 0x prefix) in @stacks/transactions v7+
39
88
  return "0x" + transaction.serialize();
40
89
  }
90
+ // ============================================================================
91
+ // Retry helpers
92
+ // ============================================================================
93
+ /**
94
+ * Check if a response body / error indicates a retryable nonce conflict.
95
+ */
96
+ function isRetryableError(status, body) {
97
+ // Duplicate-message 409 from the inbox API must NOT be retried —
98
+ // the message was already delivered and retrying would re-pay.
99
+ if (status === 409) {
100
+ const bodyStr = typeof body === "string" ? body : JSON.stringify(body);
101
+ if (/already exists|duplicate/i.test(bodyStr)) {
102
+ return false;
103
+ }
104
+ }
105
+ if (typeof body === "object" && body !== null) {
106
+ const b = body;
107
+ // Relay returns retryable: true for SETTLEMENT_BROADCAST_FAILED (issue #157)
108
+ if (b["retryable"] === true) {
109
+ return true;
110
+ }
111
+ // Relay returns HTTP 409 with code: "NONCE_CONFLICT"
112
+ if (status === 409 && b["code"] === "NONCE_CONFLICT") {
113
+ return true;
114
+ }
115
+ }
116
+ if (typeof body === "string") {
117
+ return body.includes("ConflictingNonceInMempool") || body.includes("BadNonce");
118
+ }
119
+ return false;
120
+ }
121
+ /**
122
+ * Sleep for ms milliseconds.
123
+ */
124
+ function sleep(ms) {
125
+ return new Promise((resolve) => setTimeout(resolve, ms));
126
+ }
127
+ // ============================================================================
128
+ // Tool Registration
129
+ // ============================================================================
41
130
  export function registerInboxTools(server) {
42
131
  server.registerTool("send_inbox_message", {
43
132
  description: `Send a paid x402 message to another agent's inbox on aibtc.com.
@@ -110,55 +199,95 @@ Use this instead of execute_x402_endpoint for inbox messages — the generic too
110
199
  throw new InsufficientBalanceError(`Insufficient sBTC balance: need ${formatSbtc(accept.amount)}, have ${formatSbtc(balanceInfo.balance)} (shortfall: ${formatSbtc(shortfall.toString())}). ` +
111
200
  `Deposit more sBTC via the bridge at https://bridge.stx.eco or use a different wallet.`, "sBTC", balanceInfo.balance, accept.amount, shortfall.toString());
112
201
  }
113
- // Step 3: Build sponsored sBTC transfer
114
- const txHex = await buildSponsoredSbtcTransfer(account.privateKey, account.address, accept.payTo, amount);
115
- // Step 4: Encode PaymentPayloadV2
116
- const paymentSignature = encodePaymentPayload({
117
- x402Version: 2,
118
- resource: paymentRequired.resource,
119
- accepted: accept,
120
- payload: { transaction: txHex },
121
- });
122
- // Step 5: Retry with payment
123
- const finalRes = await fetch(inboxUrl, {
124
- method: "POST",
125
- headers: {
126
- "Content-Type": "application/json",
127
- [X402_HEADERS.PAYMENT_SIGNATURE]: paymentSignature,
128
- },
129
- body: JSON.stringify(body),
130
- });
131
- const responseData = await finalRes.text();
132
- let parsed;
133
- try {
134
- parsed = JSON.parse(responseData);
135
- }
136
- catch {
137
- parsed = { raw: responseData };
138
- }
139
- if (finalRes.status === 201 || finalRes.status === 200) {
140
- // Extract payment response header for txid
141
- const settlement = decodePaymentResponse(finalRes.headers.get(X402_HEADERS.PAYMENT_RESPONSE));
142
- const txid = settlement?.transaction;
143
- return createJsonResponse({
144
- success: true,
145
- message: "Message delivered",
146
- recipient: {
147
- btcAddress: recipientBtcAddress,
148
- stxAddress: recipientStxAddress,
202
+ // Steps 3-5: Build payment and send with retry loop
203
+ // Max 3 total attempts (1 initial + 2 retries)
204
+ const MAX_ATTEMPTS = 3;
205
+ const RETRY_DELAYS_MS = [1000, 2000];
206
+ let lastError = "";
207
+ let paymentSignature = null;
208
+ for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
209
+ if (attempt > 0) {
210
+ const delay = RETRY_DELAYS_MS[attempt - 1];
211
+ console.error(`[send_inbox_message] Retry attempt ${attempt}/${MAX_ATTEMPTS - 1} after ${delay}ms`);
212
+ await sleep(delay);
213
+ }
214
+ // Step 3: Fetch fresh nonce and build sponsored sBTC transfer
215
+ const nonce = await getNextNonce(account.address);
216
+ const txHex = await buildSponsoredSbtcTransfer(account.privateKey, account.address, accept.payTo, amount, BigInt(nonce));
217
+ // Step 4: Encode PaymentPayloadV2
218
+ paymentSignature = encodePaymentPayload({
219
+ x402Version: 2,
220
+ resource: paymentRequired.resource,
221
+ accepted: accept,
222
+ payload: { transaction: txHex },
223
+ });
224
+ // Step 5: Send with payment header
225
+ const finalRes = await fetch(inboxUrl, {
226
+ method: "POST",
227
+ headers: {
228
+ "Content-Type": "application/json",
229
+ [X402_HEADERS.PAYMENT_SIGNATURE]: paymentSignature,
149
230
  },
150
- contentLength: content.length,
151
- inbox: parsed,
152
- ...(txid && {
153
- payment: {
154
- txid,
155
- amount: accept.amount + " sats sBTC",
156
- explorer: getExplorerTxUrl(txid, NETWORK),
157
- },
158
- }),
231
+ body: JSON.stringify(body),
159
232
  });
233
+ const responseData = await finalRes.text();
234
+ let parsed;
235
+ try {
236
+ parsed = JSON.parse(responseData);
237
+ }
238
+ catch {
239
+ parsed = { raw: responseData };
240
+ }
241
+ if (finalRes.status === 201 || finalRes.status === 200) {
242
+ // Advance local nonce cache on success
243
+ advanceNonceCache(account.address, nonce);
244
+ // Extract payment response header for txid
245
+ const settlement = decodePaymentResponse(finalRes.headers.get(X402_HEADERS.PAYMENT_RESPONSE));
246
+ const txid = settlement?.transaction;
247
+ return createJsonResponse({
248
+ success: true,
249
+ message: "Message delivered",
250
+ recipient: {
251
+ btcAddress: recipientBtcAddress,
252
+ stxAddress: recipientStxAddress,
253
+ },
254
+ contentLength: content.length,
255
+ inbox: parsed,
256
+ ...(txid && {
257
+ payment: {
258
+ txid,
259
+ amount: accept.amount + " sats sBTC",
260
+ explorer: getExplorerTxUrl(txid, NETWORK),
261
+ },
262
+ }),
263
+ });
264
+ }
265
+ // Check if the error is retryable
266
+ const retryable = isRetryableError(finalRes.status, parsed);
267
+ if (retryable && attempt < MAX_ATTEMPTS - 1) {
268
+ console.error(`[send_inbox_message] Retryable error on attempt ${attempt + 1}: status=${finalRes.status} body=${responseData}`);
269
+ // Advance nonce cache even on failure so the next attempt uses a
270
+ // strictly higher nonce. Without this, getNextNonce could return the
271
+ // same value if the rejected tx never reached the mempool.
272
+ advanceNonceCache(account.address, nonce);
273
+ lastError = `${finalRes.status}: ${responseData}`;
274
+ continue;
275
+ }
276
+ // Non-retryable or last attempt — build error with txid recovery info
277
+ const txid = paymentSignature
278
+ ? extractTxidFromPaymentSignature(paymentSignature)
279
+ : null;
280
+ const errorBase = `Message delivery failed (${finalRes.status}): ${responseData}`;
281
+ if (txid) {
282
+ // Poll briefly for on-chain status so the error includes actionable info
283
+ const confirmation = await pollTransactionConfirmation(txid, NETWORK);
284
+ throw new Error(`${errorBase}\n\nPayment transaction was submitted but settlement failed. ` +
285
+ `Transaction recovery info:\n txid: ${confirmation.txid}\n status: ${confirmation.status}\n explorer: ${confirmation.explorer}`);
286
+ }
287
+ throw new Error(errorBase);
160
288
  }
161
- throw new Error(`Message delivery failed (${finalRes.status}): ${responseData}`);
289
+ // Exhausted retries
290
+ throw new Error(`Message delivery failed after ${MAX_ATTEMPTS} attempts. Last error: ${lastError}`);
162
291
  }
163
292
  catch (error) {
164
293
  return createErrorResponse(error);
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.tools.js","sourceRoot":"","sources":["../../src/tools/inbox.tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.tools.js","sourceRoot":"","sources":["../../src/tools/inbox.tools.ts"],"names":[],"mappings":"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"}
@@ -100,18 +100,8 @@ export declare const X402_HEADERS: {
100
100
  /** Header containing settlement response (base64 encoded) */
101
101
  readonly PAYMENT_RESPONSE: "payment-response";
102
102
  };
103
- /**
104
- * Decode the payment-required header from base64 JSON.
105
- * Returns null if the header is missing or cannot be decoded.
106
- */
107
103
  export declare function decodePaymentRequired(header: string | null | undefined): PaymentRequiredV2 | null;
108
- /**
109
- * Encode a payment payload to base64 JSON.
110
- */
111
104
  export declare function encodePaymentPayload(payload: PaymentPayloadV2): string;
112
- /**
113
- * Decode the payment-response header from base64 JSON.
114
- * Returns null if the header is missing or cannot be decoded.
115
- */
105
+ export declare function decodePaymentPayload(encoded: string | null | undefined): PaymentPayloadV2 | null;
116
106
  export declare function decodePaymentResponse(header: string | null | undefined): SettlementResponseV2 | null;
117
107
  //# sourceMappingURL=x402-protocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"x402-protocol.d.ts","sourceRoot":"","sources":["../../src/utils/x402-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,MAAM,EAAE,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,CAAC,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,YAAY,CAAC;IACvB,0CAA0C;IAC1C,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,WAAW,EAAE,CAAC,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,mEAAmE;IACnE,OAAO,EAAE,eAAe,CAAC;IACzB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,SAAS,CAAC;CACpB;AAID;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,+DAA+D;;IAE/D,mEAAmE;;IAEnE,6DAA6D;;CAErD,CAAC;AAIX;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,iBAAiB,GAAG,IAAI,CAQ1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,oBAAoB,GAAG,IAAI,CAQ7B"}
1
+ {"version":3,"file":"x402-protocol.d.ts","sourceRoot":"","sources":["../../src/utils/x402-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,MAAM,EAAE,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,OAAO,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,wFAAwF;IACxF,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mCAAmC;IACnC,WAAW,EAAE,CAAC,CAAC;IACf,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,YAAY,CAAC;IACvB,0CAA0C;IAC1C,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mCAAmC;IACnC,WAAW,EAAE,CAAC,CAAC;IACf,oDAAoD;IACpD,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,mEAAmE;IACnE,OAAO,EAAE,eAAe,CAAC;IACzB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,SAAS,CAAC;CACpB;AAID;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,+DAA+D;;IAE/D,mEAAmE;;IAEnE,6DAA6D;;CAErD,CAAC;AAaX,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,iBAAiB,GAAG,IAAI,CAE1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAEtE;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACjC,gBAAgB,GAAG,IAAI,CAEzB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,oBAAoB,GAAG,IAAI,CAE7B"}
@@ -16,40 +16,26 @@ export const X402_HEADERS = {
16
16
  PAYMENT_RESPONSE: "payment-response",
17
17
  };
18
18
  // ===== Functions =====
19
- /**
20
- * Decode the payment-required header from base64 JSON.
21
- * Returns null if the header is missing or cannot be decoded.
22
- */
23
- export function decodePaymentRequired(header) {
24
- if (!header)
19
+ function decodeBase64Json(encoded) {
20
+ if (!encoded)
25
21
  return null;
26
22
  try {
27
- const decoded = Buffer.from(header, "base64").toString("utf-8");
28
- return JSON.parse(decoded);
23
+ return JSON.parse(Buffer.from(encoded, "base64").toString("utf-8"));
29
24
  }
30
25
  catch {
31
26
  return null;
32
27
  }
33
28
  }
34
- /**
35
- * Encode a payment payload to base64 JSON.
36
- */
29
+ export function decodePaymentRequired(header) {
30
+ return decodeBase64Json(header);
31
+ }
37
32
  export function encodePaymentPayload(payload) {
38
33
  return Buffer.from(JSON.stringify(payload)).toString("base64");
39
34
  }
40
- /**
41
- * Decode the payment-response header from base64 JSON.
42
- * Returns null if the header is missing or cannot be decoded.
43
- */
35
+ export function decodePaymentPayload(encoded) {
36
+ return decodeBase64Json(encoded);
37
+ }
44
38
  export function decodePaymentResponse(header) {
45
- if (!header)
46
- return null;
47
- try {
48
- const decoded = Buffer.from(header, "base64").toString("utf-8");
49
- return JSON.parse(decoded);
50
- }
51
- catch {
52
- return null;
53
- }
39
+ return decodeBase64Json(header);
54
40
  }
55
41
  //# sourceMappingURL=x402-protocol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x402-protocol.js","sourceRoot":"","sources":["../../src/utils/x402-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiGH,wBAAwB;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,+DAA+D;IAC/D,gBAAgB,EAAE,kBAAkB;IACpC,mEAAmE;IACnE,iBAAiB,EAAE,mBAAmB;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,wBAAwB;AAExB;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAyB,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"x402-protocol.js","sourceRoot":"","sources":["../../src/utils/x402-protocol.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiGH,wBAAwB;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,+DAA+D;IAC/D,gBAAgB,EAAE,kBAAkB;IACpC,mEAAmE;IACnE,iBAAiB,EAAE,mBAAmB;IACtC,6DAA6D;IAC7D,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAEX,wBAAwB;AAExB,SAAS,gBAAgB,CAAI,OAAkC;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAM,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,OAAO,gBAAgB,CAAoB,MAAM,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,OAAyB;IAC5D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAkC;IAElC,OAAO,gBAAgB,CAAmB,OAAO,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAiC;IAEjC,OAAO,gBAAgB,CAAuB,MAAM,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * x402 Recovery Utilities
3
+ *
4
+ * Helpers for extracting transaction IDs from payment-signature headers
5
+ * and polling transaction confirmation status.
6
+ *
7
+ * Used by inbox.tools.ts and endpoint.tools.ts to provide txid recovery
8
+ * info when settlement fails after payment was submitted.
9
+ */
10
+ import { type Network } from "../config/networks.js";
11
+ /**
12
+ * Extract the transaction ID from a base64-encoded payment-signature header.
13
+ *
14
+ * The payment-signature header is a base64-encoded JSON PaymentPayloadV2 object
15
+ * whose payload.transaction field contains the signed transaction hex.
16
+ *
17
+ * Returns the txid string (64-char hex, no 0x prefix), or null if extraction fails.
18
+ */
19
+ export declare function extractTxidFromPaymentSignature(paymentSignatureHeader: string): string | null;
20
+ export interface TransactionConfirmationResult {
21
+ txid: string;
22
+ status: string;
23
+ block_height?: number;
24
+ tx_result?: unknown;
25
+ explorer: string;
26
+ }
27
+ /**
28
+ * Poll transaction status until it leaves the pending/mempool state or timeout is reached.
29
+ *
30
+ * Uses getHiroApi so the configured Hiro API key is included in requests.
31
+ *
32
+ * @param txid - Transaction ID (hex, with or without 0x)
33
+ * @param network - Stacks network
34
+ * @param maxWaitMs - Maximum total time to wait (default: 10000ms)
35
+ * @param intervalMs - Polling interval (default: 2000ms)
36
+ * @returns Transaction confirmation result with status
37
+ */
38
+ export declare function pollTransactionConfirmation(txid: string, network: Network, maxWaitMs?: number, intervalMs?: number): Promise<TransactionConfirmationResult>;
39
+ //# sourceMappingURL=x402-recovery.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * x402 Recovery Utilities
3
+ *
4
+ * Helpers for extracting transaction IDs from payment-signature headers
5
+ * and polling transaction confirmation status.
6
+ *
7
+ * Used by inbox.tools.ts and endpoint.tools.ts to provide txid recovery
8
+ * info when settlement fails after payment was submitted.
9
+ */
10
+ import { deserializeTransaction } from "@stacks/transactions";
11
+ import { getHiroApi } from "../services/hiro-api.js";
12
+ import { getExplorerTxUrl } from "../config/networks.js";
13
+ import { decodePaymentPayload } from "./x402-protocol.js";
14
+ // ============================================================================
15
+ // Txid Extraction
16
+ // ============================================================================
17
+ /**
18
+ * Extract the transaction ID from a base64-encoded payment-signature header.
19
+ *
20
+ * The payment-signature header is a base64-encoded JSON PaymentPayloadV2 object
21
+ * whose payload.transaction field contains the signed transaction hex.
22
+ *
23
+ * Returns the txid string (64-char hex, no 0x prefix), or null if extraction fails.
24
+ */
25
+ export function extractTxidFromPaymentSignature(paymentSignatureHeader) {
26
+ try {
27
+ const payload = decodePaymentPayload(paymentSignatureHeader);
28
+ if (!payload?.payload?.transaction) {
29
+ return null;
30
+ }
31
+ const txHex = payload.payload.transaction;
32
+ // Strip leading 0x if present
33
+ const hexWithout0x = txHex.startsWith("0x") ? txHex.slice(2) : txHex;
34
+ const txBytes = Buffer.from(hexWithout0x, "hex");
35
+ const tx = deserializeTransaction(txBytes);
36
+ return tx.txid();
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ /**
43
+ * Poll transaction status until it leaves the pending/mempool state or timeout is reached.
44
+ *
45
+ * Uses getHiroApi so the configured Hiro API key is included in requests.
46
+ *
47
+ * @param txid - Transaction ID (hex, with or without 0x)
48
+ * @param network - Stacks network
49
+ * @param maxWaitMs - Maximum total time to wait (default: 10000ms)
50
+ * @param intervalMs - Polling interval (default: 2000ms)
51
+ * @returns Transaction confirmation result with status
52
+ */
53
+ export async function pollTransactionConfirmation(txid, network, maxWaitMs = 10_000, intervalMs = 2_000) {
54
+ const hiroApi = getHiroApi(network);
55
+ const normalizedTxid = txid.startsWith("0x") ? txid.slice(2) : txid;
56
+ const explorerUrl = getExplorerTxUrl(normalizedTxid, network);
57
+ const deadline = Date.now() + maxWaitMs;
58
+ while (Date.now() < deadline) {
59
+ try {
60
+ const status = await hiroApi.getTransactionStatus(normalizedTxid);
61
+ if (status.status !== "pending") {
62
+ return {
63
+ txid: normalizedTxid,
64
+ status: status.status,
65
+ block_height: status.block_height,
66
+ tx_result: status.tx_result,
67
+ explorer: explorerUrl,
68
+ };
69
+ }
70
+ }
71
+ catch {
72
+ // Transaction not yet indexed — still pending
73
+ }
74
+ const remaining = deadline - Date.now();
75
+ if (remaining <= 0)
76
+ break;
77
+ await new Promise((resolve) => setTimeout(resolve, Math.min(intervalMs, remaining)));
78
+ }
79
+ return {
80
+ txid: normalizedTxid,
81
+ status: "pending",
82
+ explorer: explorerUrl,
83
+ };
84
+ }
85
+ //# sourceMappingURL=x402-recovery.js.map
@@ -0,0 +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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aibtc/mcp-server",
3
- "version": "1.24.0",
3
+ "version": "1.24.1",
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",