@aibtc/mcp-server 1.34.0 → 1.35.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4DxD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAqDpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmExD"}
@@ -19,10 +19,40 @@ import { registerYieldHunterTools } from "./yield-hunter.tools.js";
19
19
  import { registerPillarTools } from "./pillar.tools.js";
20
20
  import { registerPillarDirectTools } from "./pillar-direct.tools.js";
21
21
  import { registerBitcoinTools } from "./bitcoin.tools.js";
22
+ import { registerRelayDiagnosticTools } from "./relay-diagnostic.tools.js";
23
+ import { getSkillForTool } from "./skill-mappings.js";
24
+ /**
25
+ * Wraps server.registerTool to inject _meta.skill from TOOL_SKILL_MAP when a mapping exists.
26
+ * Returns a cleanup function that restores the original method.
27
+ */
28
+ function withSkillMeta(server) {
29
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
+ const original = server.registerTool;
31
+ const hasOwn = Object.prototype.hasOwnProperty.call(server, "registerTool");
32
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
+ server.registerTool = function (name, config, cb) {
34
+ const skill = getSkillForTool(name);
35
+ const patched = skill
36
+ ? { ...config, _meta: { ...(config._meta ?? {}), skill } }
37
+ : config;
38
+ return original.call(server, name, patched, cb);
39
+ };
40
+ return () => {
41
+ if (hasOwn) {
42
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
+ server.registerTool = original;
44
+ }
45
+ else {
46
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
47
+ delete server.registerTool;
48
+ }
49
+ };
50
+ }
22
51
  /**
23
52
  * Register all tools with the MCP server
24
53
  */
25
54
  export function registerAllTools(server) {
55
+ const restoreRegisterTool = withSkillMeta(server);
26
56
  // Wallet & Balance
27
57
  registerWalletTools(server);
28
58
  // Wallet Management (create, import, unlock, lock, etc.)
@@ -63,5 +93,8 @@ export function registerAllTools(server) {
63
93
  registerPillarDirectTools(server);
64
94
  // Bitcoin L1 (read-only: balance, fees, UTXOs)
65
95
  registerBitcoinTools(server);
96
+ // Relay Diagnostics (sponsor relay health, nonce status, stuck transactions)
97
+ registerRelayDiagnosticTools(server);
98
+ restoreRegisterTool();
66
99
  }
67
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,+DAA+D;AAC/D,6DAA6D;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,mBAAmB;IACnB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,yDAAyD;IACzD,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAEtC,YAAY;IACZ,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,kBAAkB;IAClB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO;IACP,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,mBAAmB;IACnB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,cAAc;IACd,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,qBAAqB;IACrB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,iCAAiC;IACjC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,+DAA+D;IAC/D,gCAAgC;IAEhC,2BAA2B;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,gDAAgD;IAChD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,+CAA+C;IAC/C,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mDAAmD;IACnD,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,+CAA+C;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,+DAA+D;AAC/D,6DAA6D;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;GAGG;AACH,SAAS,aAAa,CAAC,MAAiB;IACtC,8DAA8D;IAC9D,MAAM,QAAQ,GAAI,MAAc,CAAC,YAAY,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5E,8DAA8D;IAC7D,MAAc,CAAC,YAAY,GAAG,UAAU,IAAY,EAAE,MAA+B,EAAE,EAAW;QACjG,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,KAAK;YACnB,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,KAA4C,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE;YACjG,CAAC,CAAC,MAAM,CAAC;QACX,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,GAAG,EAAE;QACV,IAAI,MAAM,EAAE,CAAC;YACX,8DAA8D;YAC7D,MAAc,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,8DAA8D;YAC9D,OAAQ,MAAc,CAAC,YAAY,CAAC;QACtC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,mBAAmB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAElD,mBAAmB;IACnB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,yDAAyD;IACzD,6BAA6B,CAAC,MAAM,CAAC,CAAC;IAEtC,YAAY;IACZ,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,kBAAkB;IAClB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,OAAO;IACP,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,mBAAmB;IACnB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,cAAc;IACd,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,qBAAqB;IACrB,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAE3B,iBAAiB;IACjB,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,iCAAiC;IACjC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,+DAA+D;IAC/D,gCAAgC;IAEhC,2BAA2B;IAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE1B,gDAAgD;IAChD,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAE9B,0CAA0C;IAC1C,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEhC,+CAA+C;IAC/C,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEjC,yCAAyC;IACzC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,mDAAmD;IACnD,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,+CAA+C;IAC/C,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,6EAA6E;IAC7E,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAErC,mBAAmB,EAAE,CAAC;AACxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"relay-diagnostic.tools.d.ts","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8BpE"}
1
+ {"version":3,"file":"relay-diagnostic.tools.d.ts","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOpE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuGpE"}
@@ -3,20 +3,25 @@
3
3
  *
4
4
  * Tools for checking sponsor relay health and diagnosing nonce issues
5
5
  */
6
+ import { z } from "zod";
6
7
  import { createJsonResponse, createErrorResponse } from "../utils/index.js";
7
- import { checkRelayHealth, formatRelayHealthStatus } from "../utils/relay-health.js";
8
+ import { checkRelayHealth, formatRelayHealthStatus, attemptRbf, attemptFillGaps } from "../utils/relay-health.js";
8
9
  import { NETWORK } from "../services/x402.service.js";
10
+ import { getWalletManager } from "../services/wallet-manager.js";
9
11
  export function registerRelayDiagnosticTools(server) {
10
12
  server.registerTool("check_relay_health", {
11
13
  description: `Check the sponsor relay health and nonce status.
12
14
 
13
- Use this tool to diagnose send_inbox_message failures. It will:
15
+ Use this tool to diagnose sponsored transaction failures. It will:
14
16
  - Check relay availability
15
17
  - Inspect sponsor address nonce state
16
18
  - Detect nonce gaps that block transactions
19
+ - Detect mempool desync (confirmed nonce far behind mempool nonce)
20
+ - List stuck transactions with txid, nonce, and how long they have been pending
17
21
  - Report mempool congestion
18
22
 
19
- If nonce gaps are detected, wait for AIBTC team to clear them before retrying sends.`,
23
+ If nonce gaps or stuck transactions are detected, the output includes
24
+ txids and pending durations to share with the AIBTC team for recovery.`,
20
25
  inputSchema: {},
21
26
  }, async () => {
22
27
  try {
@@ -27,7 +32,65 @@ If nonce gaps are detected, wait for AIBTC team to clear them before retrying se
27
32
  });
28
33
  }
29
34
  catch (error) {
30
- return createErrorResponse(error instanceof Error ? error.message : String(error));
35
+ return createErrorResponse(error);
36
+ }
37
+ });
38
+ server.registerTool("recover_sponsor_nonce", {
39
+ description: `Attempt automated recovery of stuck sponsor transactions via the relay API.
40
+
41
+ Run check_relay_health first to identify stuck txids and missing nonces, then use
42
+ this tool to trigger recovery without needing to contact the AIBTC team manually.
43
+
44
+ Two recovery modes are available:
45
+ - rbf: Replace-by-fee — rebroadcasts stuck transactions with a higher fee so miners
46
+ prioritize them. Provide specific txids or omit to bump all stuck transactions.
47
+ - fill-gaps: Nonce gap-fill — submits placeholder transactions to fill any missing
48
+ nonces that are blocking the queue. Provide specific nonces or omit to fill all gaps.
49
+ - both: Attempt both RBF and gap-fill in sequence (default).
50
+
51
+ If the relay does not yet support these endpoints it returns a 404 or 501 and this
52
+ tool will respond with a clear message rather than throwing an error. In that case,
53
+ share the txids and nonces from check_relay_health with the AIBTC team.`,
54
+ inputSchema: {
55
+ action: z
56
+ .enum(["rbf", "fill-gaps", "both"])
57
+ .default("both")
58
+ .describe("Which recovery operation to attempt"),
59
+ txids: z
60
+ .array(z.string())
61
+ .optional()
62
+ .describe("Specific stuck transaction IDs for RBF (omit to bump all stuck txs)"),
63
+ nonces: z
64
+ .array(z.number().int().nonnegative())
65
+ .optional()
66
+ .describe("Specific missing nonces for gap-fill (omit to fill all detected gaps)"),
67
+ },
68
+ }, async ({ action = "both", txids, nonces }) => {
69
+ try {
70
+ // Resolve API key from wallet (if unlocked) to align with sponsor-builder auth flow
71
+ const walletAccount = getWalletManager().getAccount();
72
+ const walletApiKey = walletAccount?.sponsorApiKey;
73
+ const results = { action };
74
+ if (action === "rbf" || action === "both") {
75
+ const rbfResult = await attemptRbf(NETWORK, txids, walletApiKey);
76
+ results.rbf = rbfResult;
77
+ }
78
+ if (action === "fill-gaps" || action === "both") {
79
+ const fillResult = await attemptFillGaps(NETWORK, nonces, walletApiKey);
80
+ results.fillGaps = fillResult;
81
+ }
82
+ // Summarize outcome
83
+ const anyUnsupported = Object.values(results).some((r) => r && typeof r === "object" && "supported" in r && !r.supported);
84
+ const anySupported = Object.values(results).some((r) => r && typeof r === "object" && "supported" in r && r.supported);
85
+ results.summary = anySupported
86
+ ? "Recovery request submitted to relay. Run check_relay_health to verify nonce state improved."
87
+ : anyUnsupported
88
+ ? "Relay does not yet support automated recovery. Run check_relay_health for txids and nonces to share with the AIBTC team."
89
+ : "Recovery attempted.";
90
+ return createJsonResponse(results);
91
+ }
92
+ catch (error) {
93
+ return createErrorResponse(error);
31
94
  }
32
95
  });
33
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"relay-diagnostic.tools.js","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAEtD,MAAM,UAAU,4BAA4B,CAAC,MAAiB;IAC5D,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE;;;;;;;;qFAQkE;QAC/E,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAE/C,OAAO,kBAAkB,CAAC;gBACxB,GAAG,MAAM;gBACT,SAAS,EAAE,uBAAuB,CAAC,MAAM,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CACxB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACvD,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"relay-diagnostic.tools.js","sourceRoot":"","sources":["../../src/tools/relay-diagnostic.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Skill reference mappings for MCP tools.
3
+ *
4
+ * Maps each MCP tool name to its corresponding skill in the aibtcdev/skills repository.
5
+ * Skills are loaded via the /skill command in Claude Code and provide higher-level
6
+ * orchestration logic built on top of these MCP tools.
7
+ *
8
+ * Skill source: https://github.com/aibtcdev/skills
9
+ */
10
+ export declare const TOOL_SKILL_MAP: Record<string, string>;
11
+ /**
12
+ * Returns the skill name for a given MCP tool name, or undefined if no mapping exists.
13
+ */
14
+ export declare function getSkillForTool(toolName: string): string | undefined;
15
+ //# sourceMappingURL=skill-mappings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-mappings.d.ts","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA0OjD,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE"}
@@ -0,0 +1,229 @@
1
+ /**
2
+ * Skill reference mappings for MCP tools.
3
+ *
4
+ * Maps each MCP tool name to its corresponding skill in the aibtcdev/skills repository.
5
+ * Skills are loaded via the /skill command in Claude Code and provide higher-level
6
+ * orchestration logic built on top of these MCP tools.
7
+ *
8
+ * Skill source: https://github.com/aibtcdev/skills
9
+ */
10
+ export const TOOL_SKILL_MAP = {
11
+ // wallet skill — encrypted BIP39 wallet management
12
+ get_wallet_info: "wallet",
13
+ wallet_create: "wallet",
14
+ wallet_import: "wallet",
15
+ wallet_unlock: "wallet",
16
+ wallet_lock: "wallet",
17
+ wallet_list: "wallet",
18
+ wallet_switch: "wallet",
19
+ wallet_delete: "wallet",
20
+ wallet_export: "wallet",
21
+ wallet_rotate_password: "wallet",
22
+ wallet_set_timeout: "wallet",
23
+ wallet_status: "wallet",
24
+ // stx skill — STX transfers and Stacks contract operations
25
+ get_stx_balance: "stx",
26
+ transfer_stx: "stx",
27
+ broadcast_transaction: "stx",
28
+ call_contract: "stx",
29
+ deploy_contract: "stx",
30
+ get_transaction_status: "stx",
31
+ // btc skill — Bitcoin L1 operations
32
+ get_btc_balance: "btc",
33
+ get_btc_fees: "btc",
34
+ get_btc_utxos: "btc",
35
+ transfer_btc: "btc",
36
+ get_cardinal_utxos: "btc",
37
+ get_ordinal_utxos: "btc",
38
+ get_inscriptions_by_address: "btc",
39
+ // sbtc skill — sBTC token operations
40
+ sbtc_get_balance: "sbtc",
41
+ sbtc_transfer: "sbtc",
42
+ sbtc_get_deposit_info: "sbtc",
43
+ sbtc_get_peg_info: "sbtc",
44
+ sbtc_deposit: "sbtc",
45
+ sbtc_deposit_status: "sbtc",
46
+ sbtc_initiate_withdrawal: "sbtc",
47
+ sbtc_withdraw: "sbtc",
48
+ sbtc_withdrawal_status: "sbtc",
49
+ sbtc_withdraw_status: "sbtc",
50
+ // tokens skill — SIP-010 fungible token operations
51
+ get_token_balance: "tokens",
52
+ get_token_info: "tokens",
53
+ list_user_tokens: "tokens",
54
+ get_token_holders: "tokens",
55
+ transfer_token: "tokens",
56
+ // nft skill — SIP-009 NFT operations
57
+ get_nft_holdings: "nft",
58
+ get_nft_metadata: "nft",
59
+ transfer_nft: "nft",
60
+ get_nft_owner: "nft",
61
+ get_collection_info: "nft",
62
+ get_nft_history: "nft",
63
+ // stacking skill — STX stacking and PoX operations
64
+ get_pox_info: "stacking",
65
+ get_stacking_status: "stacking",
66
+ stack_stx: "stacking",
67
+ extend_stacking: "stacking",
68
+ // bns skill — Bitcoin Name System operations
69
+ lookup_bns_name: "bns",
70
+ reverse_bns_lookup: "bns",
71
+ get_bns_info: "bns",
72
+ check_bns_availability: "bns",
73
+ get_bns_price: "bns",
74
+ list_user_domains: "bns",
75
+ claim_bns_name_fast: "bns",
76
+ preorder_bns_name: "bns",
77
+ register_bns_name: "bns",
78
+ // query skill — Stacks network and blockchain queries
79
+ get_stx_fees: "query",
80
+ get_account_info: "query",
81
+ get_account_transactions: "query",
82
+ get_block_info: "query",
83
+ get_mempool_info: "query",
84
+ get_contract_info: "query",
85
+ get_contract_events: "query",
86
+ get_network_status: "query",
87
+ call_read_only_function: "query",
88
+ // x402 skill — x402 paid endpoints, inbox, scaffolding, OpenRouter
89
+ list_x402_endpoints: "x402",
90
+ execute_x402_endpoint: "x402",
91
+ probe_x402_endpoint: "x402",
92
+ scaffold_x402_endpoint: "x402",
93
+ scaffold_x402_ai_endpoint: "x402",
94
+ openrouter_integration_guide: "x402",
95
+ openrouter_models: "x402",
96
+ send_inbox_message: "x402",
97
+ // defi skill — ALEX DEX and Zest Protocol
98
+ alex_list_pools: "defi",
99
+ alex_get_swap_quote: "defi",
100
+ alex_swap: "defi",
101
+ alex_get_pool_info: "defi",
102
+ zest_list_assets: "defi",
103
+ zest_get_position: "defi",
104
+ zest_supply: "defi",
105
+ zest_withdraw: "defi",
106
+ zest_borrow: "defi",
107
+ zest_repay: "defi",
108
+ // styx skill — BTC→sBTC conversion via Styx protocol
109
+ styx_pool_status: "styx",
110
+ styx_pools: "styx",
111
+ styx_fees: "styx",
112
+ styx_price: "styx",
113
+ styx_deposit: "styx",
114
+ styx_status: "styx",
115
+ styx_history: "styx",
116
+ // yield-hunter skill — autonomous sBTC yield farming daemon
117
+ yield_hunter_start: "yield-hunter",
118
+ yield_hunter_stop: "yield-hunter",
119
+ yield_hunter_status: "yield-hunter",
120
+ yield_hunter_configure: "yield-hunter",
121
+ // pillar skill — Pillar smart wallet (browser-handoff + agent-signed direct modes)
122
+ pillar_connect: "pillar",
123
+ pillar_disconnect: "pillar",
124
+ pillar_status: "pillar",
125
+ pillar_send: "pillar",
126
+ pillar_fund: "pillar",
127
+ pillar_add_admin: "pillar",
128
+ pillar_supply: "pillar",
129
+ pillar_auto_compound: "pillar",
130
+ pillar_unwind: "pillar",
131
+ pillar_boost: "pillar",
132
+ pillar_position: "pillar",
133
+ pillar_create_wallet: "pillar",
134
+ pillar_invite: "pillar",
135
+ pillar_dca_invite: "pillar",
136
+ pillar_dca_partners: "pillar",
137
+ pillar_dca_leaderboard: "pillar",
138
+ pillar_dca_status: "pillar",
139
+ pillar_key_generate: "pillar",
140
+ pillar_key_unlock: "pillar",
141
+ pillar_key_lock: "pillar",
142
+ pillar_key_info: "pillar",
143
+ pillar_direct_boost: "pillar",
144
+ pillar_direct_unwind: "pillar",
145
+ pillar_direct_supply: "pillar",
146
+ pillar_direct_send: "pillar",
147
+ pillar_direct_auto_compound: "pillar",
148
+ pillar_direct_position: "pillar",
149
+ pillar_direct_withdraw_collateral: "pillar",
150
+ pillar_direct_add_admin: "pillar",
151
+ pillar_direct_create_wallet: "pillar",
152
+ pillar_direct_dca_invite: "pillar",
153
+ pillar_direct_dca_partners: "pillar",
154
+ pillar_direct_dca_leaderboard: "pillar",
155
+ pillar_direct_dca_status: "pillar",
156
+ pillar_direct_quote: "pillar",
157
+ pillar_direct_resolve_recipient: "pillar",
158
+ pillar_direct_stack_stx: "pillar",
159
+ pillar_direct_revoke_fast_pool: "pillar",
160
+ pillar_direct_stacking_status: "pillar",
161
+ // settings skill — MCP server configuration and relay health
162
+ set_hiro_api_key: "settings",
163
+ get_hiro_api_key: "settings",
164
+ delete_hiro_api_key: "settings",
165
+ set_stacks_api_url: "settings",
166
+ get_stacks_api_url: "settings",
167
+ delete_stacks_api_url: "settings",
168
+ get_server_version: "settings",
169
+ check_relay_health: "settings",
170
+ recover_sponsor_nonce: "settings",
171
+ // signing skill — message signing and verification
172
+ stacks_sign_message: "signing",
173
+ stacks_verify_message: "signing",
174
+ btc_sign_message: "signing",
175
+ btc_verify_message: "signing",
176
+ schnorr_sign_digest: "signing",
177
+ schnorr_verify_digest: "signing",
178
+ nostr_sign_event: "signing",
179
+ // ordinals skill — Bitcoin ordinals inscription operations
180
+ get_taproot_address: "ordinals",
181
+ estimate_inscription_fee: "ordinals",
182
+ inscribe: "ordinals",
183
+ inscribe_reveal: "ordinals",
184
+ get_inscription: "ordinals",
185
+ inscribe_child: "ordinals",
186
+ inscribe_child_reveal: "ordinals",
187
+ estimate_child_inscription_fee: "ordinals",
188
+ // ordinals-p2p skill — peer-to-peer ordinals trading via PSBT
189
+ psbt_decode: "ordinals-p2p",
190
+ psbt_sign: "ordinals-p2p",
191
+ psbt_broadcast: "ordinals-p2p",
192
+ psbt_create_ordinal_buy: "ordinals-p2p",
193
+ // identity skill — ERC-8004 on-chain agent identity
194
+ register_identity: "identity",
195
+ get_identity: "identity",
196
+ // reputation skill — ERC-8004 on-chain agent reputation
197
+ give_feedback: "reputation",
198
+ get_reputation: "reputation",
199
+ // validation skill — ERC-8004 on-chain agent validation
200
+ request_validation: "validation",
201
+ get_validation_status: "validation",
202
+ get_validation_summary: "validation",
203
+ // stackspot skill — stacking lottery pots
204
+ stackspot_list_pots: "stackspot",
205
+ stackspot_get_pot_state: "stackspot",
206
+ stackspot_join_pot: "stackspot",
207
+ stackspot_start_pot: "stackspot",
208
+ stackspot_claim_rewards: "stackspot",
209
+ stackspot_cancel_pot: "stackspot",
210
+ // bitflow skill — Bitflow DEX aggregator
211
+ bitflow_get_ticker: "bitflow",
212
+ bitflow_get_tokens: "bitflow",
213
+ bitflow_get_swap_targets: "bitflow",
214
+ bitflow_get_quote: "bitflow",
215
+ bitflow_get_routes: "bitflow",
216
+ bitflow_swap: "bitflow",
217
+ bitflow_get_keeper_contract: "bitflow",
218
+ bitflow_create_order: "bitflow",
219
+ bitflow_get_order: "bitflow",
220
+ bitflow_cancel_order: "bitflow",
221
+ bitflow_get_keeper_user: "bitflow",
222
+ };
223
+ /**
224
+ * Returns the skill name for a given MCP tool name, or undefined if no mapping exists.
225
+ */
226
+ export function getSkillForTool(toolName) {
227
+ return TOOL_SKILL_MAP[toolName];
228
+ }
229
+ //# sourceMappingURL=skill-mappings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-mappings.js","sourceRoot":"","sources":["../../src/tools/skill-mappings.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,11 @@
5
5
  * diagnostic information when send failures occur.
6
6
  */
7
7
  import type { Network } from "../config/networks.js";
8
+ export interface StuckTransaction {
9
+ txid: string;
10
+ nonce: number;
11
+ pendingSeconds: number;
12
+ }
8
13
  export interface RelayHealthStatus {
9
14
  healthy: boolean;
10
15
  network: Network;
@@ -18,7 +23,10 @@ export interface RelayHealthStatus {
18
23
  mempoolNonces: number[];
19
24
  hasGaps: boolean;
20
25
  gapCount: number;
26
+ mempoolDesync: boolean;
27
+ desyncGap: number;
21
28
  };
29
+ stuckTransactions?: StuckTransaction[];
22
30
  issues?: string[];
23
31
  }
24
32
  /**
@@ -29,6 +37,26 @@ export declare function checkRelayHealth(network: Network): Promise<RelayHealthS
29
37
  * Format relay health status as a human-readable string
30
38
  */
31
39
  export declare function formatRelayHealthStatus(status: RelayHealthStatus): string;
40
+ export interface RelayRecoveryResult {
41
+ supported: boolean;
42
+ message?: string;
43
+ result?: unknown;
44
+ }
45
+ /**
46
+ * Attempt RBF (replace-by-fee) on stuck transactions via the relay API.
47
+ * If txids is provided, only those transactions are bumped; otherwise the relay
48
+ * bumps all stuck transactions it knows about.
49
+ *
50
+ * Gracefully returns { supported: false } if the relay returns 404 or 501.
51
+ */
52
+ export declare function attemptRbf(network: Network, txids?: string[], apiKey?: string): Promise<RelayRecoveryResult>;
53
+ /**
54
+ * Attempt to fill nonce gaps on the relay by having it submit placeholder transactions.
55
+ * If nonces is provided, only those gaps are filled; otherwise the relay fills all detected gaps.
56
+ *
57
+ * Gracefully returns { supported: false } if the relay returns 404 or 501.
58
+ */
59
+ export declare function attemptFillGaps(network: Network, nonces?: number[], apiKey?: string): Promise<RelayRecoveryResult>;
32
60
  /**
33
61
  * Wait with exponential backoff when relay nonce issues are detected
34
62
  * Returns recommended wait time in milliseconds
@@ -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,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;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAUD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmFnF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAwCzE;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;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"}
@@ -4,7 +4,7 @@
4
4
  * Proactively checks the sponsor relay for nonce gaps and provides
5
5
  * diagnostic information when send failures occur.
6
6
  */
7
- import { getSponsorRelayUrl } from "../config/sponsor.js";
7
+ import { getSponsorRelayUrl, getSponsorApiKey } from "../config/sponsor.js";
8
8
  import { getHiroApi } from "../services/hiro-api.js";
9
9
  /**
10
10
  * Known sponsor addresses for each network.
@@ -53,27 +53,65 @@ export async function checkRelayHealth(network) {
53
53
  const nonceInfo = await hiroApi.getNonceInfo(sponsorAddress);
54
54
  const hasGaps = nonceInfo.detected_missing_nonces.length > 0;
55
55
  const gapCount = nonceInfo.detected_missing_nonces.length;
56
+ // Mempool desync: sponsor has submitted far more txs than have been confirmed
57
+ const lastExecuted = nonceInfo.last_executed_tx_nonce || 0;
58
+ const lastMempool = nonceInfo.last_mempool_tx_nonce;
59
+ const desyncGap = lastMempool !== null ? lastMempool - lastExecuted : 0;
60
+ const mempoolDesync = desyncGap > 5;
56
61
  if (hasGaps) {
57
62
  issues.push(`Sponsor has ${gapCount} missing nonce(s): ${nonceInfo.detected_missing_nonces.slice(0, 5).join(", ")}${gapCount > 5 ? "..." : ""}`);
58
63
  }
59
- if (nonceInfo.detected_mempool_nonces.length > 10) {
64
+ if (mempoolDesync) {
65
+ issues.push(`Mempool desync detected: sponsor nonce ${lastExecuted} (executed) vs ${lastMempool} (mempool), gap of ${desyncGap}`);
66
+ }
67
+ else if (nonceInfo.detected_mempool_nonces.length > 10) {
60
68
  issues.push(`Sponsor has ${nonceInfo.detected_mempool_nonces.length} transactions stuck in mempool`);
61
69
  }
62
70
  const nonceStatus = {
63
- lastExecuted: nonceInfo.last_executed_tx_nonce || 0,
64
- lastMempool: nonceInfo.last_mempool_tx_nonce,
71
+ lastExecuted,
72
+ lastMempool,
65
73
  possibleNext: nonceInfo.possible_next_nonce,
66
74
  missingNonces: nonceInfo.detected_missing_nonces,
67
75
  mempoolNonces: nonceInfo.detected_mempool_nonces,
68
76
  hasGaps,
69
77
  gapCount,
78
+ mempoolDesync,
79
+ desyncGap,
70
80
  };
81
+ // Fetch stuck transactions from mempool for actionable diagnostics
82
+ let stuckTransactions;
83
+ try {
84
+ const mempoolRes = await hiroApi.getMempoolTransactions({
85
+ sender_address: sponsorAddress,
86
+ limit: 50,
87
+ });
88
+ const nowSeconds = Math.floor(Date.now() / 1000);
89
+ const stuck = mempoolRes.results
90
+ .filter((tx) => {
91
+ const pendingSeconds = nowSeconds - tx.receipt_time;
92
+ return pendingSeconds > 60;
93
+ })
94
+ .map((tx) => ({
95
+ txid: tx.tx_id,
96
+ nonce: tx.nonce,
97
+ pendingSeconds: nowSeconds - tx.receipt_time,
98
+ }))
99
+ .sort((a, b) => b.pendingSeconds - a.pendingSeconds)
100
+ .slice(0, 10);
101
+ if (stuck.length > 0) {
102
+ stuckTransactions = stuck;
103
+ }
104
+ }
105
+ catch {
106
+ // Non-fatal: stuck-tx fetch is best-effort
107
+ }
71
108
  return {
72
109
  healthy: issues.length === 0,
73
110
  network,
74
111
  version,
75
112
  sponsorAddress,
76
113
  nonceStatus,
114
+ stuckTransactions,
77
115
  issues: issues.length > 0 ? issues : undefined,
78
116
  };
79
117
  }
@@ -107,15 +145,28 @@ export function formatRelayHealthStatus(status) {
107
145
  lines.push(` Last mempool: ${ns.lastMempool ?? "none"}`);
108
146
  lines.push(` Next nonce: ${ns.possibleNext}`);
109
147
  if (ns.hasGaps) {
110
- lines.push(` Missing nonces (${ns.gapCount}): ${ns.missingNonces.slice(0, 10).join(", ")}${ns.gapCount > 10 ? "..." : ""}`);
148
+ lines.push(` GAPS Missing nonces (${ns.gapCount}): ${ns.missingNonces.slice(0, 10).join(", ")}${ns.gapCount > 10 ? "..." : ""}`);
111
149
  }
112
150
  else {
113
- lines.push(" No nonce gaps");
151
+ lines.push(" OK No nonce gaps");
152
+ }
153
+ if (ns.mempoolDesync) {
154
+ lines.push(` DESYNC Mempool desync: executed=${ns.lastExecuted}, mempool=${ns.lastMempool ?? "none"}, gap=${ns.desyncGap}`);
114
155
  }
115
156
  if (ns.mempoolNonces.length > 0) {
116
- lines.push(` ⚠️ Mempool nonces (${ns.mempoolNonces.length}): ${ns.mempoolNonces.slice(0, 10).join(", ")}${ns.mempoolNonces.length > 10 ? "..." : ""}`);
157
+ lines.push(` WARN Mempool nonces (${ns.mempoolNonces.length}): ${ns.mempoolNonces.slice(0, 10).join(", ")}${ns.mempoolNonces.length > 10 ? "..." : ""}`);
117
158
  }
118
159
  }
160
+ if (status.stuckTransactions && status.stuckTransactions.length > 0) {
161
+ lines.push("");
162
+ lines.push("Stuck Transactions:");
163
+ status.stuckTransactions.forEach((tx) => {
164
+ const minutes = Math.floor(tx.pendingSeconds / 60);
165
+ const seconds = tx.pendingSeconds % 60;
166
+ const duration = minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
167
+ lines.push(` nonce=${tx.nonce} pending=${duration} txid=${tx.txid}`);
168
+ });
169
+ }
119
170
  if (status.issues && status.issues.length > 0) {
120
171
  lines.push("");
121
172
  lines.push("Issues:");
@@ -123,6 +174,105 @@ export function formatRelayHealthStatus(status) {
123
174
  }
124
175
  return lines.join("\n");
125
176
  }
177
+ /**
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.
181
+ *
182
+ * Gracefully returns { supported: false } if the relay returns 404 or 501.
183
+ */
184
+ export async function attemptRbf(network, txids, apiKey) {
185
+ const relayUrl = getSponsorRelayUrl(network);
186
+ const resolvedKey = apiKey || getSponsorApiKey();
187
+ if (!resolvedKey) {
188
+ return {
189
+ supported: true,
190
+ message: "No sponsor API key available. Set SPONSOR_API_KEY env var or use a wallet with sponsorApiKey configured.",
191
+ };
192
+ }
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
+ const controller = new AbortController();
202
+ const timeout = setTimeout(() => controller.abort(), 30000);
203
+ try {
204
+ const res = await fetch(`${relayUrl}/recovery/rbf`, {
205
+ method: "POST",
206
+ headers,
207
+ body: JSON.stringify(body),
208
+ signal: controller.signal,
209
+ });
210
+ 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
+ };
215
+ }
216
+ if (!res.ok) {
217
+ const text = await res.text();
218
+ throw new Error(`Relay RBF failed: HTTP ${res.status} — ${text}`);
219
+ }
220
+ const result = await res.json();
221
+ return { supported: true, result };
222
+ }
223
+ finally {
224
+ clearTimeout(timeout);
225
+ }
226
+ }
227
+ /**
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.
230
+ *
231
+ * Gracefully returns { supported: false } if the relay returns 404 or 501.
232
+ */
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
+ };
246
+ 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
+ }
275
+ }
126
276
  /**
127
277
  * Wait with exponential backoff when relay nonce issues are detected
128
278
  * Returns recommended wait time in milliseconds
@@ -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.34.0",
3
+ "version": "1.35.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.34.0 # x-release-please-version
7
+ version: 1.35.0 # x-release-please-version
8
8
  npm: "@aibtc/mcp-server"
9
9
  github: https://github.com/aibtcdev/aibtc-mcp-server
10
10
  ---