@aibtc/mcp-server 1.44.0 → 1.45.0

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.
Files changed (37) hide show
  1. package/dist/config/sponsor.d.ts +8 -0
  2. package/dist/config/sponsor.d.ts.map +1 -1
  3. package/dist/config/sponsor.js +10 -0
  4. package/dist/config/sponsor.js.map +1 -1
  5. package/dist/services/hiro-api.d.ts +3 -0
  6. package/dist/services/hiro-api.d.ts.map +1 -1
  7. package/dist/services/hiro-api.js.map +1 -1
  8. package/dist/tools/arxiv-research.tools.d.ts +16 -0
  9. package/dist/tools/arxiv-research.tools.d.ts.map +1 -0
  10. package/dist/tools/arxiv-research.tools.js +433 -0
  11. package/dist/tools/arxiv-research.tools.js.map +1 -0
  12. package/dist/tools/index.d.ts.map +1 -1
  13. package/dist/tools/index.js +6 -0
  14. package/dist/tools/index.js.map +1 -1
  15. package/dist/tools/nonce.tools.d.ts.map +1 -1
  16. package/dist/tools/nonce.tools.js +492 -25
  17. package/dist/tools/nonce.tools.js.map +1 -1
  18. package/dist/tools/skill-mappings.d.ts.map +1 -1
  19. package/dist/tools/skill-mappings.js +20 -9
  20. package/dist/tools/skill-mappings.js.map +1 -1
  21. package/dist/tools/yield-dashboard.tools.d.ts +17 -0
  22. package/dist/tools/yield-dashboard.tools.d.ts.map +1 -0
  23. package/dist/tools/yield-dashboard.tools.js +559 -0
  24. package/dist/tools/yield-dashboard.tools.js.map +1 -0
  25. package/dist/transactions/builder.d.ts +4 -0
  26. package/dist/transactions/builder.d.ts.map +1 -1
  27. package/dist/transactions/builder.js.map +1 -1
  28. package/dist/transactions/sponsor-builder.d.ts +6 -12
  29. package/dist/transactions/sponsor-builder.d.ts.map +1 -1
  30. package/dist/transactions/sponsor-builder.js +81 -39
  31. package/dist/transactions/sponsor-builder.js.map +1 -1
  32. package/dist/utils/relay-health.d.ts +14 -5
  33. package/dist/utils/relay-health.d.ts.map +1 -1
  34. package/dist/utils/relay-health.js +60 -76
  35. package/dist/utils/relay-health.js.map +1 -1
  36. package/package.json +1 -1
  37. package/skill/SKILL.md +1 -1
@@ -13,24 +13,18 @@ export interface SponsorRelayResponse {
13
13
  retryAfter?: number;
14
14
  }
15
15
  /**
16
- * High-level helper: build a sponsored contract call, submit to relay, and
17
- * return a TransferResult. Resolves the API key and handles relay errors.
18
- *
19
- * This is the primary entry point for services that need sponsored contract calls.
16
+ * Build and submit a sponsored contract call via the relay.
17
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
20
18
  */
21
19
  export declare function sponsoredContractCall(account: Account, options: ContractCallOptions, network: Network): Promise<TransferResult>;
22
20
  /**
23
- * High-level helper: build a sponsored STX transfer, submit to relay, and
24
- * return a TransferResult. Resolves the API key and handles relay errors.
25
- *
26
- * This is the primary entry point for services that need sponsored STX transfers.
21
+ * Build and submit a sponsored STX transfer via the relay.
22
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
27
23
  */
28
24
  export declare function sponsoredStxTransfer(account: Account, recipient: string, amount: bigint, memo: string | undefined, network: Network): Promise<TransferResult>;
29
25
  /**
30
- * High-level helper: build a sponsored contract deploy, submit to relay, and
31
- * return a TransferResult. Resolves the API key and handles relay errors.
32
- *
33
- * This is the primary entry point for services that need sponsored contract deployments.
26
+ * Build and submit a sponsored contract deploy via the relay.
27
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
34
28
  */
35
29
  export declare function sponsoredContractDeploy(account: Account, options: ContractDeployOptions, network: Network): Promise<TransferResult>;
36
30
  //# sourceMappingURL=sponsor-builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sponsor-builder.d.ts","sourceRoot":"","sources":["../../src/transactions/sponsor-builder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAExG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8BD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAyBzB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAsBzB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAqBzB"}
1
+ {"version":3,"file":"sponsor-builder.d.ts","sourceRoot":"","sources":["../../src/transactions/sponsor-builder.ts"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAwDxG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8DD;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAiBzB;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAczB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,cAAc,CAAC,CAazB"}
@@ -1,6 +1,51 @@
1
1
  import { makeSTXTokenTransfer, makeContractCall, makeContractDeploy, PostConditionMode, } from "@stacks/transactions";
2
2
  import { getStacksNetwork } from "../config/networks.js";
3
- import { getSponsorRelayUrl, getSponsorApiKey } from "../config/sponsor.js";
3
+ import { getSponsorRelayUrl, getSponsorApiKey, isFallbackEnabled } from "../config/sponsor.js";
4
+ import { callContract, transferStx, deployContract } from "./builder.js";
5
+ import { recordNonceUsed } from "../services/nonce-tracker.js";
6
+ import { isRelayHealthy } from "../utils/relay-health.js";
7
+ /**
8
+ * Relay-side error codes and keywords that indicate a nonce conflict on the
9
+ * relay, not a user-side error. When these are present the tx itself is valid
10
+ * and a direct fallback makes sense.
11
+ */
12
+ const NONCE_FAULT_PATTERNS = [
13
+ "ConflictingNonceInMempool",
14
+ "TooMuchChaining",
15
+ "BadNonce",
16
+ "nonce",
17
+ ];
18
+ /**
19
+ * Returns true when a failed relay response is caused by a relay-side nonce
20
+ * problem rather than a user-side error (bad args, insufficient balance, etc).
21
+ */
22
+ function isRelayNonceFault(response) {
23
+ const code = response.code ?? "";
24
+ const error = response.error ?? "";
25
+ const details = response.details ?? "";
26
+ const haystack = `${code} ${error} ${details}`.toLowerCase();
27
+ return NONCE_FAULT_PATTERNS.some((p) => haystack.includes(p.toLowerCase()));
28
+ }
29
+ /**
30
+ * Decide whether to fall back to direct submission for a relay failure.
31
+ * Returns { shouldFallback: true, reason } or { shouldFallback: false }.
32
+ */
33
+ async function evaluateFallback(response, network) {
34
+ if (!isFallbackEnabled()) {
35
+ return { shouldFallback: false };
36
+ }
37
+ if (isRelayNonceFault(response)) {
38
+ return {
39
+ shouldFallback: true,
40
+ reason: `relay nonce error: ${response.code ?? response.error}`,
41
+ };
42
+ }
43
+ const healthy = await isRelayHealthy(network);
44
+ if (!healthy) {
45
+ return { shouldFallback: true, reason: "relay unhealthy" };
46
+ }
47
+ return { shouldFallback: false };
48
+ }
4
49
  /**
5
50
  * Format a failed SponsorRelayResponse into an error message
6
51
  */
@@ -26,81 +71,78 @@ function resolveSponsorApiKey(account) {
26
71
  return apiKey;
27
72
  }
28
73
  /**
29
- * High-level helper: build a sponsored contract call, submit to relay, and
30
- * return a TransferResult. Resolves the API key and handles relay errors.
74
+ * Submit a sponsored transaction to the relay and handle the response.
31
75
  *
32
- * This is the primary entry point for services that need sponsored contract calls.
76
+ * Shared logic for all three sponsored helpers (contract call, STX transfer,
77
+ * contract deploy). Each caller builds its own transaction and provides a
78
+ * fallback function for direct submission when the relay is unavailable.
33
79
  */
34
- export async function sponsoredContractCall(account, options, network) {
80
+ async function submitSponsoredTransaction(account, transaction, network, directFallback) {
35
81
  const apiKey = resolveSponsorApiKey(account);
36
- const networkName = getStacksNetwork(network);
82
+ const senderNonce = Number(transaction.auth.spendingCondition.nonce);
83
+ const serializedTx = transaction.serialize();
84
+ const response = await submitToSponsorRelay(serializedTx, network, apiKey);
85
+ if (!response.success) {
86
+ const { shouldFallback, reason } = await evaluateFallback(response, network);
87
+ if (shouldFallback) {
88
+ console.warn(`[sponsor] Relay unavailable or nonce error (${reason}), falling back to direct submission (sender pays fee)`);
89
+ const result = await directFallback();
90
+ return { ...result, fallback: true, fallbackReason: reason };
91
+ }
92
+ throw new Error(formatRelayError(response));
93
+ }
94
+ await recordNonceUsed(account.address, senderNonce, response.txid);
95
+ return { txid: response.txid, rawTx: serializedTx };
96
+ }
97
+ /**
98
+ * Build and submit a sponsored contract call via the relay.
99
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
100
+ */
101
+ export async function sponsoredContractCall(account, options, network) {
37
102
  const transaction = await makeContractCall({
38
103
  contractAddress: options.contractAddress,
39
104
  contractName: options.contractName,
40
105
  functionName: options.functionName,
41
106
  functionArgs: options.functionArgs,
42
107
  senderKey: account.privateKey,
43
- network: networkName,
108
+ network: getStacksNetwork(network),
44
109
  postConditionMode: options.postConditionMode || PostConditionMode.Deny,
45
110
  postConditions: options.postConditions || [],
46
111
  sponsored: true,
47
112
  fee: 0n,
48
113
  });
49
- const serializedTx = transaction.serialize();
50
- const response = await submitToSponsorRelay(serializedTx, network, apiKey);
51
- if (!response.success) {
52
- throw new Error(formatRelayError(response));
53
- }
54
- return { txid: response.txid, rawTx: serializedTx };
114
+ return submitSponsoredTransaction(account, transaction, network, () => callContract(account, options));
55
115
  }
56
116
  /**
57
- * High-level helper: build a sponsored STX transfer, submit to relay, and
58
- * return a TransferResult. Resolves the API key and handles relay errors.
59
- *
60
- * This is the primary entry point for services that need sponsored STX transfers.
117
+ * Build and submit a sponsored STX transfer via the relay.
118
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
61
119
  */
62
120
  export async function sponsoredStxTransfer(account, recipient, amount, memo, network) {
63
- const apiKey = resolveSponsorApiKey(account);
64
- const networkName = getStacksNetwork(network);
65
121
  const transaction = await makeSTXTokenTransfer({
66
122
  recipient,
67
123
  amount,
68
124
  senderKey: account.privateKey,
69
- network: networkName,
125
+ network: getStacksNetwork(network),
70
126
  memo: memo || "",
71
127
  sponsored: true,
72
128
  fee: 0n,
73
129
  });
74
- const serializedTx = transaction.serialize();
75
- const response = await submitToSponsorRelay(serializedTx, network, apiKey);
76
- if (!response.success) {
77
- throw new Error(formatRelayError(response));
78
- }
79
- return { txid: response.txid, rawTx: serializedTx };
130
+ return submitSponsoredTransaction(account, transaction, network, () => transferStx(account, recipient, amount, memo));
80
131
  }
81
132
  /**
82
- * High-level helper: build a sponsored contract deploy, submit to relay, and
83
- * return a TransferResult. Resolves the API key and handles relay errors.
84
- *
85
- * This is the primary entry point for services that need sponsored contract deployments.
133
+ * Build and submit a sponsored contract deploy via the relay.
134
+ * Falls back to direct submission (sender pays fee) when the relay is unavailable.
86
135
  */
87
136
  export async function sponsoredContractDeploy(account, options, network) {
88
- const apiKey = resolveSponsorApiKey(account);
89
- const networkName = getStacksNetwork(network);
90
137
  const transaction = await makeContractDeploy({
91
138
  contractName: options.contractName,
92
139
  codeBody: options.codeBody,
93
140
  senderKey: account.privateKey,
94
- network: networkName,
141
+ network: getStacksNetwork(network),
95
142
  sponsored: true,
96
143
  fee: 0n,
97
144
  });
98
- const serializedTx = transaction.serialize();
99
- const response = await submitToSponsorRelay(serializedTx, network, apiKey);
100
- if (!response.success) {
101
- throw new Error(formatRelayError(response));
102
- }
103
- return { txid: response.txid, rawTx: serializedTx };
145
+ return submitSponsoredTransaction(account, transaction, network, () => deployContract(account, options));
104
146
  }
105
147
  /**
106
148
  * Submit a serialized transaction to the sponsor relay
@@ -1 +1 @@
1
- {"version":3,"file":"sponsor-builder.js","sourceRoot":"","sources":["../../src/transactions/sponsor-builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sponsor-builder.js","sourceRoot":"","sources":["../../src/transactions/sponsor-builder.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface StuckTransaction {
9
9
  txid: string;
10
10
  nonce: number;
11
11
  pendingSeconds: number;
12
+ sponsor_nonce?: number;
12
13
  }
13
14
  export interface RelayHealthStatus {
14
15
  healthy: boolean;
@@ -29,6 +30,19 @@ export interface RelayHealthStatus {
29
30
  stuckTransactions?: StuckTransaction[];
30
31
  issues?: string[];
31
32
  }
33
+ /**
34
+ * Known sponsor addresses for each network.
35
+ * Only mainnet has a known relay sponsor address.
36
+ */
37
+ export declare const SPONSOR_ADDRESSES: Partial<Record<Network, string>>;
38
+ /**
39
+ * Lightweight relay health probe — returns true only if the relay /health
40
+ * endpoint responds within 5 seconds with HTTP 200 and status "ok".
41
+ *
42
+ * Use this on the hot path (e.g., before deciding to fall back to direct
43
+ * submission) where the full checkRelayHealth() diagnostics are unnecessary.
44
+ */
45
+ export declare function isRelayHealthy(network: Network): Promise<boolean>;
32
46
  /**
33
47
  * Check relay health and sponsor nonce status
34
48
  */
@@ -57,9 +71,4 @@ export declare function attemptRbf(network: Network, txids?: string[], apiKey?:
57
71
  * Gracefully returns { supported: false } if the relay returns 404 or 501.
58
72
  */
59
73
  export declare function attemptFillGaps(network: Network, nonces?: number[], apiKey?: string): Promise<RelayRecoveryResult>;
60
- /**
61
- * Wait with exponential backoff when relay nonce issues are detected
62
- * Returns recommended wait time in milliseconds
63
- */
64
- export declare function getRelayBackoffDelay(attempt: number, hasNonceGaps: boolean): number;
65
74
  //# sourceMappingURL=relay-health.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-health.d.ts","sourceRoot":"","sources":["../../src/utils/relay-health.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4HnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAuDzE;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiDlH;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAiDxH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CASnF"}
1
+ {"version":3,"file":"relay-health.d.ts","sourceRoot":"","sources":["../../src/utils/relay-health.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAE9D,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAqBvE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6HnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAuDzE;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAwDD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAW5G;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAWlH"}
@@ -10,9 +10,38 @@ import { getHiroApi } from "../services/hiro-api.js";
10
10
  * Known sponsor addresses for each network.
11
11
  * Only mainnet has a known relay sponsor address.
12
12
  */
13
- const SPONSOR_ADDRESSES = {
13
+ export const SPONSOR_ADDRESSES = {
14
14
  mainnet: "SP1PMPPVCMVW96FSWFV30KJQ4MNBMZ8MRWR3JWQ7",
15
15
  };
16
+ /**
17
+ * Lightweight relay health probe — returns true only if the relay /health
18
+ * endpoint responds within 5 seconds with HTTP 200 and status "ok".
19
+ *
20
+ * Use this on the hot path (e.g., before deciding to fall back to direct
21
+ * submission) where the full checkRelayHealth() diagnostics are unnecessary.
22
+ */
23
+ export async function isRelayHealthy(network) {
24
+ const relayUrl = getSponsorRelayUrl(network);
25
+ const controller = new AbortController();
26
+ const timeout = setTimeout(() => controller.abort(), 5000);
27
+ try {
28
+ const res = await fetch(`${relayUrl}/health`, {
29
+ method: "GET",
30
+ headers: { "Content-Type": "application/json" },
31
+ signal: controller.signal,
32
+ });
33
+ if (!res.ok)
34
+ return false;
35
+ const data = await res.json();
36
+ return data.status === "ok";
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ finally {
42
+ clearTimeout(timeout);
43
+ }
44
+ }
16
45
  /**
17
46
  * Check relay health and sponsor nonce status
18
47
  */
@@ -95,6 +124,7 @@ export async function checkRelayHealth(network) {
95
124
  txid: tx.tx_id,
96
125
  nonce: tx.nonce,
97
126
  pendingSeconds: nowSeconds - tx.receipt_time,
127
+ ...(tx.sponsor_nonce !== undefined ? { sponsor_nonce: tx.sponsor_nonce } : {}),
98
128
  }))
99
129
  .sort((a, b) => b.pendingSeconds - a.pendingSeconds)
100
130
  .slice(0, 10);
@@ -164,7 +194,7 @@ export function formatRelayHealthStatus(status) {
164
194
  const minutes = Math.floor(tx.pendingSeconds / 60);
165
195
  const seconds = tx.pendingSeconds % 60;
166
196
  const duration = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
167
- lines.push(` nonce=${tx.nonce} pending=${duration} txid=${tx.txid}`);
197
+ lines.push(` nonce=${tx.nonce}${tx.sponsor_nonce !== undefined ? ` sponsor_nonce=${tx.sponsor_nonce}` : ""} pending=${duration} txid=${tx.txid}`);
168
198
  });
169
199
  }
170
200
  if (status.issues && status.issues.length > 0) {
@@ -175,13 +205,13 @@ export function formatRelayHealthStatus(status) {
175
205
  return lines.join("\n");
176
206
  }
177
207
  /**
178
- * Attempt RBF (replace-by-fee) on stuck transactions via the relay API.
179
- * If txids is provided, only those transactions are bumped; otherwise the relay
180
- * bumps all stuck transactions it knows about.
208
+ * Send a recovery request to the relay API.
181
209
  *
182
- * Gracefully returns { supported: false } if the relay returns 404 or 501.
210
+ * Shared implementation for RBF and gap-fill operations which differ only in
211
+ * path, request body, and the "unsupported" message shown when the relay
212
+ * returns 404 or 501.
183
213
  */
184
- export async function attemptRbf(network, txids, apiKey) {
214
+ async function relayRecoveryRequest(network, relayPath, body, unsupportedMessage, apiKey) {
185
215
  const relayUrl = getSponsorRelayUrl(network);
186
216
  const resolvedKey = apiKey || getSponsorApiKey();
187
217
  if (!resolvedKey) {
@@ -190,32 +220,24 @@ export async function attemptRbf(network, txids, apiKey) {
190
220
  message: "No sponsor API key available. Set SPONSOR_API_KEY env var or use a wallet with sponsorApiKey configured.",
191
221
  };
192
222
  }
193
- const headers = {
194
- "Content-Type": "application/json",
195
- "Authorization": `Bearer ${resolvedKey}`,
196
- };
197
- const body = {};
198
- if (txids && txids.length > 0) {
199
- body.txids = txids;
200
- }
201
223
  const controller = new AbortController();
202
224
  const timeout = setTimeout(() => controller.abort(), 30000);
203
225
  try {
204
- const res = await fetch(`${relayUrl}/recovery/rbf`, {
226
+ const res = await fetch(`${relayUrl}${relayPath}`, {
205
227
  method: "POST",
206
- headers,
228
+ headers: {
229
+ "Content-Type": "application/json",
230
+ "Authorization": `Bearer ${resolvedKey}`,
231
+ },
207
232
  body: JSON.stringify(body),
208
233
  signal: controller.signal,
209
234
  });
210
235
  if (res.status === 404 || res.status === 501) {
211
- return {
212
- supported: false,
213
- message: "Relay does not support RBF recovery yet. Share stuck txids with the AIBTC team for manual recovery.",
214
- };
236
+ return { supported: false, message: unsupportedMessage };
215
237
  }
216
238
  if (!res.ok) {
217
239
  const text = await res.text();
218
- throw new Error(`Relay RBF failed: HTTP ${res.status} — ${text}`);
240
+ throw new Error(`Relay ${relayPath} failed: HTTP ${res.status} — ${text}`);
219
241
  }
220
242
  const result = await res.json();
221
243
  return { supported: true, result };
@@ -225,66 +247,28 @@ export async function attemptRbf(network, txids, apiKey) {
225
247
  }
226
248
  }
227
249
  /**
228
- * Attempt to fill nonce gaps on the relay by having it submit placeholder transactions.
229
- * If nonces is provided, only those gaps are filled; otherwise the relay fills all detected gaps.
250
+ * Attempt RBF (replace-by-fee) on stuck transactions via the relay API.
251
+ * If txids is provided, only those transactions are bumped; otherwise the relay
252
+ * bumps all stuck transactions it knows about.
230
253
  *
231
254
  * Gracefully returns { supported: false } if the relay returns 404 or 501.
232
255
  */
233
- export async function attemptFillGaps(network, nonces, apiKey) {
234
- const relayUrl = getSponsorRelayUrl(network);
235
- const resolvedKey = apiKey || getSponsorApiKey();
236
- if (!resolvedKey) {
237
- return {
238
- supported: true,
239
- message: "No sponsor API key available. Set SPONSOR_API_KEY env var or use a wallet with sponsorApiKey configured.",
240
- };
241
- }
242
- const headers = {
243
- "Content-Type": "application/json",
244
- "Authorization": `Bearer ${resolvedKey}`,
245
- };
256
+ export function attemptRbf(network, txids, apiKey) {
246
257
  const body = {};
247
- if (nonces && nonces.length > 0) {
248
- body.nonces = nonces;
249
- }
250
- const controller = new AbortController();
251
- const timeout = setTimeout(() => controller.abort(), 30000);
252
- try {
253
- const res = await fetch(`${relayUrl}/recovery/fill-gaps`, {
254
- method: "POST",
255
- headers,
256
- body: JSON.stringify(body),
257
- signal: controller.signal,
258
- });
259
- if (res.status === 404 || res.status === 501) {
260
- return {
261
- supported: false,
262
- message: "Relay does not support nonce gap-fill recovery yet. Share missing nonces with the AIBTC team for manual recovery.",
263
- };
264
- }
265
- if (!res.ok) {
266
- const text = await res.text();
267
- throw new Error(`Relay gap-fill failed: HTTP ${res.status} — ${text}`);
268
- }
269
- const result = await res.json();
270
- return { supported: true, result };
271
- }
272
- finally {
273
- clearTimeout(timeout);
274
- }
258
+ if (txids && txids.length > 0)
259
+ body.txids = txids;
260
+ return relayRecoveryRequest(network, "/recovery/rbf", body, "Relay does not support RBF recovery yet. Share stuck txids with the AIBTC team for manual recovery.", apiKey);
275
261
  }
276
262
  /**
277
- * Wait with exponential backoff when relay nonce issues are detected
278
- * Returns recommended wait time in milliseconds
263
+ * Attempt to fill nonce gaps on the relay by having it submit placeholder transactions.
264
+ * If nonces is provided, only those gaps are filled; otherwise the relay fills all detected gaps.
265
+ *
266
+ * Gracefully returns { supported: false } if the relay returns 404 or 501.
279
267
  */
280
- export function getRelayBackoffDelay(attempt, hasNonceGaps) {
281
- if (hasNonceGaps) {
282
- // With nonce gaps, use longer delays: 30s, 60s, 120s
283
- const delays = [30000, 60000, 120000];
284
- return delays[Math.min(attempt, delays.length - 1)];
285
- }
286
- // Normal backoff: 2s, 5s, 10s
287
- const delays = [2000, 5000, 10000];
288
- return delays[Math.min(attempt, delays.length - 1)];
268
+ export function attemptFillGaps(network, nonces, apiKey) {
269
+ const body = {};
270
+ if (nonces && nonces.length > 0)
271
+ body.nonces = nonces;
272
+ return relayRecoveryRequest(network, "/recovery/fill-gaps", body, "Relay does not support nonce gap-fill recovery yet. Share missing nonces with the AIBTC team for manual recovery.", apiKey);
289
273
  }
290
274
  //# sourceMappingURL=relay-health.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relay-health.js","sourceRoot":"","sources":["../../src/utils/relay-health.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay-health.js","sourceRoot":"","sources":["../../src/utils/relay-health.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.44.0",
3
+ "version": "1.45.0",
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",
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.44.0 # x-release-please-version
7
+ version: 1.45.0 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---