@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.
- package/dist/config/sponsor.d.ts +8 -0
- package/dist/config/sponsor.d.ts.map +1 -1
- package/dist/config/sponsor.js +10 -0
- package/dist/config/sponsor.js.map +1 -1
- package/dist/services/hiro-api.d.ts +3 -0
- package/dist/services/hiro-api.d.ts.map +1 -1
- package/dist/services/hiro-api.js.map +1 -1
- package/dist/tools/arxiv-research.tools.d.ts +16 -0
- package/dist/tools/arxiv-research.tools.d.ts.map +1 -0
- package/dist/tools/arxiv-research.tools.js +433 -0
- package/dist/tools/arxiv-research.tools.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/nonce.tools.d.ts.map +1 -1
- package/dist/tools/nonce.tools.js +492 -25
- package/dist/tools/nonce.tools.js.map +1 -1
- package/dist/tools/skill-mappings.d.ts.map +1 -1
- package/dist/tools/skill-mappings.js +20 -9
- package/dist/tools/skill-mappings.js.map +1 -1
- package/dist/tools/yield-dashboard.tools.d.ts +17 -0
- package/dist/tools/yield-dashboard.tools.d.ts.map +1 -0
- package/dist/tools/yield-dashboard.tools.js +559 -0
- package/dist/tools/yield-dashboard.tools.js.map +1 -0
- package/dist/transactions/builder.d.ts +4 -0
- package/dist/transactions/builder.d.ts.map +1 -1
- package/dist/transactions/builder.js.map +1 -1
- package/dist/transactions/sponsor-builder.d.ts +6 -12
- package/dist/transactions/sponsor-builder.d.ts.map +1 -1
- package/dist/transactions/sponsor-builder.js +81 -39
- package/dist/transactions/sponsor-builder.js.map +1 -1
- package/dist/utils/relay-health.d.ts +14 -5
- package/dist/utils/relay-health.d.ts.map +1 -1
- package/dist/utils/relay-health.js +60 -76
- package/dist/utils/relay-health.js.map +1 -1
- package/package.json +1 -1
- package/skill/SKILL.md +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arxiv-research.tools.js","sourceRoot":"","sources":["../../src/tools/arxiv-research.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE5E,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,SAAS,GAAG,mCAAmC,CAAC;AACtD,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAChE,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC5E,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAwB/C,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,SAAS,UAAU,CAAC,GAAW,EAAE,GAAW;IAC1C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,yBAAyB,GAAG,GAAG,CAAC,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,GAAW;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,yBAAyB,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,GAAW,EAAE,GAAW,EAAE,IAAY;IACzD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,SAAS,IAAI,YAAY,EAAE,GAAG,CAAC,CAAC;IAChE,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,6BAA6B,CAAC;IACjD,IAAI,KAA6B,CAAC;IAElC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEvB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK;aAClB,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;aACpC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAE7C,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,YAAY;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;aACjC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,UAAU,GACd,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7D,UAAU,CAAC,CAAC,CAAC;YACb,EAAE,CAAC;QAEL,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,QAAQ;YACrB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YACb,CAAC,CAAC,yBAAyB,OAAO,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,yBAAyB,OAAO,EAAE,CAAC;QAElD,IAAI,OAAO,IAAI,KAAK,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,OAAO;gBACjB,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,UAAU;gBACV,gBAAgB,EAAE,UAAU;gBAC5B,SAAS;gBACT,OAAO;gBACP,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,MAAM;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,iBAAiB,GAIlB;IACH,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IAC7D,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IAC7C,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IACvD,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IACjD,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE;IAC5D,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;IAC3D,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;IACnD,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE;IAC3D,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE;IACjE,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IAC7D,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IAChE,EAAE,OAAO,EAAE,+BAA+B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACzE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IAC1D,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IACxD,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACvD,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IAC1D,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE;IACpD,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE;IAC9D,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACvD,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IACjE,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IACjE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IAC7C,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE;IAC3D,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE;IACxD,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE;IACtD,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE;IACpD,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE;IAC7D,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;IAC7C,EAAE,OAAO,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;CAChE,CAAC;AAEF,SAAS,UAAU,CAAC,KAAiB;IACnC,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;IAChD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,gBAAgB,KAAK,OAAO;QAAE,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,gBAAgB,KAAK,OAAO;QAAE,KAAK,IAAI,CAAC,CAAC;IACnD,IAAI,KAAK,CAAC,gBAAgB,KAAK,OAAO;QAAE,KAAK,IAAI,CAAC,CAAC;IAEnD,OAAO,EAAE,GAAG,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,KAAK,UAAU,mBAAmB,CAChC,UAAoB,EACpB,UAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,GAAG,GAAG,GAAG,SAAS,iBAAiB,QAAQ,0DAA0D,UAAU,EAAE,CAAC;IAExH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;QAChC,OAAO,EAAE,EAAE,YAAY,EAAE,2BAA2B,EAAE;QACtD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;KACnC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAEvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,MAAM;SACV,GAAG,CAAC,UAAU,CAAC;SACf,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC;AAC3D,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,6EAA6E;IAC7E,8CAA8C;IAC9C,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EAAE;;;;;;;;;;;;;gCAaa;QAC1B,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wEAAwE,CACzE;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,0FAA0F,CAC3F;SACJ;KACF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;QAC/C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,UAAU;gBACrB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC5D,CAAC,CAAC,kBAAkB,CAAC;YACvB,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC;YAC9C,MAAM,QAAQ,GAAG,SAAS,IAAI,iBAAiB,CAAC;YAEhD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,QAAQ,CAAC,CAAC;YAErE,OAAO,kBAAkB,CAAC;gBACxB,KAAK,EAAE,MAAM,CAAC,MAAM;gBACpB,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,UAAU,EAAE,IAAI;gBAChB,SAAS,EAAE,QAAQ;gBACnB,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC5C,EAAE,EAAE,CAAC,CAAC,QAAQ;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC9B,QAAQ,EACN,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;wBACrB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;wBAClC,CAAC,CAAC,CAAC,CAAC,QAAQ;oBAChB,KAAK,EAAE,CAAC,CAAC,eAAe;oBACxB,IAAI,EAAE,CAAC,CAAC,cAAc;oBACtB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;iBACrC,CAAC,CAAC;aACJ,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EAAE;;;;;;;;;;;;;;;gCAea;QAC1B,WAAW,EAAE;YACX,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wEAAwE,CACzE;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sCAAsC,CAAC;YACnD,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,kEAAkE,CACnE;YACH,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,EAAE;iBACV,QAAQ,CACP,0DAA0D,CAC3D;SACJ;KACF,EACD,KAAK,EAAE,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,UAAU;gBACrB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC5D,CAAC,CAAC,kBAAkB,CAAC;YACvB,MAAM,UAAU,GAAG,WAAW,IAAI,WAAW,CAAC;YAC9C,MAAM,QAAQ,GAAG,SAAS,IAAI,iBAAiB,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,QAAQ,CAAC,CAAC;YAErE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,kBAAkB,CAAC;oBACxB,IAAI,EAAE,OAAO;oBACb,YAAY,EAAE,MAAM,CAAC,MAAM;oBAC3B,eAAe,EAAE,CAAC;oBAClB,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,oBAAoB,OAAO,2BAA2B,QAAQ,gDAAgD;iBACvH,CAAC,CAAC;YACL,CAAC;YAED,6BAA6B;YAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;YAChD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;gBACxD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;YAED,MAAM,KAAK,GAAa;gBACtB,oBAAoB,OAAO,EAAE;gBAC7B,EAAE;gBACF,kBAAkB,SAAS,EAAE;gBAC7B,wBAAwB,MAAM,CAAC,MAAM,EAAE;gBACvC,wBAAwB,QAAQ,CAAC,MAAM,EAAE;gBACzC,mBAAmB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACpC,EAAE;gBACF,KAAK;gBACL,EAAE;gBACF,eAAe;gBACf,EAAE;aACH,CAAC;YAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvC,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CACR,OAAO,KAAK,CAAC,KAAK,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,eAAe,EAAE,CAC7F,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAE1B,MAAM,QAAQ,GAAG;gBACf,OAAO;gBACP,aAAa;gBACb,KAAK;gBACL,UAAU;gBACV,WAAW;gBACX,KAAK;gBACL,WAAW;gBACX,eAAe;gBACf,KAAK;aACN,CAAC;YACF,MAAM,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACjC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5D,KAAK,CAAC,IAAI,CAAC,MAAM,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEjC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CACR,OAAO,KAAK,CAAC,KAAK,EAAE,EACpB,EAAE,EACF,iBAAiB,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,OAAO,GAAG,EACpD,kBAAkB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EACpG,oBAAoB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EACnD,qBAAqB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAClD,oBAAoB,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAChF,EAAE,EACF,KAAK,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,EAC1F,EAAE,CACH,CAAC;gBACJ,CAAC;gBAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACxB,CAAC;YAED,cAAc;YACd,MAAM,SAAS,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;iBACpC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC;iBAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,KAAK,CAAC,IAAI,CACR,UAAU,EACV,EAAE,EACF,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,MAAM,CAAC,MAAM,IAAI,EACrC,wBAAwB,QAAQ,OAAO,QAAQ,CAAC,MAAM,IAAI,EAC1D,kBAAkB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EACrC,gBAAgB,SAAS,IAAI,EAC7B,EAAE,EACF,8DAA8D,EAC9D,EAAE,CACH,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CACrD,CAAC;YAEF,OAAO,kBAAkB,CAAC;gBACxB,IAAI,EAAE,OAAO;gBACb,YAAY,EAAE,MAAM,CAAC,MAAM;gBAC3B,eAAe,EAAE,QAAQ,CAAC,MAAM;gBAChC,MAAM;gBACN,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,6EAA6E;IAC7E,sFAAsF;IACtF,6EAA6E;IAC7E,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EAAE;;;;;;;;;;;;WAYR;QACL,WAAW,EAAE;YACX,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,EAAE;iBACV,QAAQ,CAAC,sCAAsC,CAAC;SACpD;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE,CAAC;YAE/B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7B,OAAO,kBAAkB,CAAC;oBACxB,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,CAAC;oBACR,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,iHAAiH;iBACxH,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;iBAC7C,IAAI,EAAE;iBACN,OAAO,EAAE;iBACT,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACvC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBAC3D,OAAO;oBACL,QAAQ;oBACR,SAAS;oBACT,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC;iBAClC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,OAAO,kBAAkB,CAAC;gBACxB,OAAO;gBACP,KAAK,EAAE,OAAO,CAAC,MAAM;gBACrB,WAAW,EAAE,WAAW;aACzB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA2EpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqIxD"}
|
package/dist/tools/index.js
CHANGED
|
@@ -19,6 +19,7 @@ import { registerDefiTools } from "./defi.tools.js";
|
|
|
19
19
|
import { registerScaffoldTools } from "./scaffold.tools.js";
|
|
20
20
|
import { registerOpenRouterTools } from "./openrouter.tools.js";
|
|
21
21
|
import { registerYieldHunterTools } from "./yield-hunter.tools.js";
|
|
22
|
+
import { registerYieldDashboardTools } from "./yield-dashboard.tools.js";
|
|
22
23
|
import { registerPillarTools } from "./pillar.tools.js";
|
|
23
24
|
import { registerPillarDirectTools } from "./pillar-direct.tools.js";
|
|
24
25
|
import { registerBitcoinTools } from "./bitcoin.tools.js";
|
|
@@ -40,6 +41,7 @@ import { registerSouldinalsTools } from "./souldinals.tools.js";
|
|
|
40
41
|
import { registerBountyScannerTools } from "./bounty-scanner.tools.js";
|
|
41
42
|
import { registerRunesTools } from "./runes.tools.js";
|
|
42
43
|
import { registerInboxTools } from "./inbox.tools.js";
|
|
44
|
+
import { registerArxivResearchTools } from "./arxiv-research.tools.js";
|
|
43
45
|
import { getSkillForTool } from "./skill-mappings.js";
|
|
44
46
|
/**
|
|
45
47
|
* Wraps server.registerTool to inject _meta.skill from TOOL_SKILL_MAP when a mapping exists.
|
|
@@ -113,6 +115,8 @@ export function registerAllTools(server) {
|
|
|
113
115
|
registerOpenRouterTools(server);
|
|
114
116
|
// Yield Hunter (autonomous sBTC yield farming)
|
|
115
117
|
registerYieldHunterTools(server);
|
|
118
|
+
// Yield Dashboard (read-only cross-protocol DeFi yield aggregation)
|
|
119
|
+
registerYieldDashboardTools(server);
|
|
116
120
|
// Pillar (handoff to frontend + polling)
|
|
117
121
|
registerPillarTools(server);
|
|
118
122
|
// Pillar Direct (agent-signed, no browser handoff)
|
|
@@ -155,6 +159,8 @@ export function registerAllTools(server) {
|
|
|
155
159
|
registerRunesTools(server);
|
|
156
160
|
// Inbox (AIBTC agent messaging — send paid inbox messages)
|
|
157
161
|
registerInboxTools(server);
|
|
162
|
+
// arXiv Research (public arXiv Atom API — paper search and digest compilation)
|
|
163
|
+
registerArxivResearchTools(server);
|
|
158
164
|
restoreRegisterTool();
|
|
159
165
|
}
|
|
160
166
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nonce.tools.d.ts","sourceRoot":"","sources":["../../src/tools/nonce.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"nonce.tools.d.ts","sourceRoot":"","sources":["../../src/tools/nonce.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgFpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyxB1D"}
|
|
@@ -15,6 +15,46 @@ import { getAddressState, reloadFromDisk, recordNonceUsed, STALE_NONCE_MS, } fro
|
|
|
15
15
|
import { makeSTXTokenTransfer, broadcastTransaction, } from "@stacks/transactions";
|
|
16
16
|
import { getStacksNetwork, getExplorerTxUrl } from "../config/networks.js";
|
|
17
17
|
import { resolveDefaultFee } from "../utils/fee.js";
|
|
18
|
+
import { SPONSOR_ADDRESSES } from "../utils/relay-health.js";
|
|
19
|
+
/** PoX burn address used as the recipient for gap-fill/RBF self-transfers. */
|
|
20
|
+
const POX_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
|
|
21
|
+
/**
|
|
22
|
+
* Broadcast a 1 uSTX gap-fill transaction at the given nonce.
|
|
23
|
+
*
|
|
24
|
+
* Shared by both the nonce_fill_gap tool (single gap) and nonce_heal
|
|
25
|
+
* (batch gaps). Records the nonce in the shared tracker on success.
|
|
26
|
+
*/
|
|
27
|
+
async function broadcastGapFill(privateKey, senderAddress, nonce, fee) {
|
|
28
|
+
const networkName = getStacksNetwork(NETWORK);
|
|
29
|
+
const transaction = await makeSTXTokenTransfer({
|
|
30
|
+
recipient: POX_BURN_ADDRESS,
|
|
31
|
+
amount: 1n,
|
|
32
|
+
senderKey: privateKey,
|
|
33
|
+
network: networkName,
|
|
34
|
+
memo: `nonce-fill:${nonce}`,
|
|
35
|
+
nonce: BigInt(nonce),
|
|
36
|
+
fee,
|
|
37
|
+
});
|
|
38
|
+
const broadcastResponse = await broadcastTransaction({
|
|
39
|
+
transaction,
|
|
40
|
+
network: networkName,
|
|
41
|
+
});
|
|
42
|
+
if ("error" in broadcastResponse) {
|
|
43
|
+
return {
|
|
44
|
+
nonce,
|
|
45
|
+
txid: null,
|
|
46
|
+
status: "failed",
|
|
47
|
+
error: `${broadcastResponse.error} - ${broadcastResponse.reason}`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
await recordNonceUsed(senderAddress, nonce, broadcastResponse.txid);
|
|
51
|
+
return {
|
|
52
|
+
nonce,
|
|
53
|
+
txid: broadcastResponse.txid,
|
|
54
|
+
status: "broadcast",
|
|
55
|
+
explorer: getExplorerTxUrl(broadcastResponse.txid, NETWORK),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
18
58
|
export function registerNonceTools(server) {
|
|
19
59
|
// ============================================================================
|
|
20
60
|
// nonce_health — surface local tracker state vs chain
|
|
@@ -62,10 +102,9 @@ Returns:
|
|
|
62
102
|
.catch(() => null),
|
|
63
103
|
]);
|
|
64
104
|
const issues = [];
|
|
65
|
-
const STALE_MS = STALE_NONCE_MS;
|
|
66
105
|
// Build local status
|
|
67
106
|
const isStale = localState
|
|
68
|
-
? Date.now() - new Date(localState.lastUpdated).getTime() >
|
|
107
|
+
? Date.now() - new Date(localState.lastUpdated).getTime() > STALE_NONCE_MS
|
|
69
108
|
: true;
|
|
70
109
|
const local = localState
|
|
71
110
|
? {
|
|
@@ -180,38 +219,466 @@ Requires the wallet to be unlocked. The fee is auto-estimated.`,
|
|
|
180
219
|
message: "Wallet must be unlocked to fill a nonce gap. Use wallet_unlock first.",
|
|
181
220
|
});
|
|
182
221
|
}
|
|
183
|
-
// Send 1 uSTX to the PoX burn address (self-transfers are rejected by Stacks)
|
|
184
|
-
const POX_BURN_ADDRESS = "SP000000000000000000002Q6VF78";
|
|
185
|
-
const networkName = getStacksNetwork(NETWORK);
|
|
186
222
|
const fee = await resolveDefaultFee(NETWORK, "token_transfer");
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
amount: 1n,
|
|
190
|
-
senderKey: walletAccount.privateKey,
|
|
191
|
-
network: networkName,
|
|
192
|
-
memo: `nonce-fill:${nonce}`,
|
|
193
|
-
nonce: BigInt(nonce),
|
|
194
|
-
fee,
|
|
195
|
-
});
|
|
196
|
-
const broadcastResponse = await broadcastTransaction({
|
|
197
|
-
transaction,
|
|
198
|
-
network: networkName,
|
|
199
|
-
});
|
|
200
|
-
if ("error" in broadcastResponse) {
|
|
223
|
+
const result = await broadcastGapFill(walletAccount.privateKey, walletAccount.address, nonce, fee);
|
|
224
|
+
if (result.status === "failed") {
|
|
201
225
|
return createJsonResponse({
|
|
202
226
|
success: false,
|
|
203
227
|
nonce,
|
|
204
|
-
error: `Broadcast failed: ${
|
|
228
|
+
error: `Broadcast failed: ${result.error}`,
|
|
205
229
|
});
|
|
206
230
|
}
|
|
207
|
-
// Record in shared tracker
|
|
208
|
-
await recordNonceUsed(walletAccount.address, nonce, broadcastResponse.txid);
|
|
209
231
|
return createJsonResponse({
|
|
210
232
|
success: true,
|
|
211
233
|
nonce,
|
|
212
|
-
txid:
|
|
213
|
-
explorer:
|
|
214
|
-
message: `Gap-fill transaction sent at nonce ${nonce}. txid: ${
|
|
234
|
+
txid: result.txid,
|
|
235
|
+
explorer: result.explorer,
|
|
236
|
+
message: `Gap-fill transaction sent at nonce ${nonce}. txid: ${result.txid}`,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
return createErrorResponse(error);
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// tx_status_deep — cross-reference sender pending txids with sponsor mempool
|
|
245
|
+
// ============================================================================
|
|
246
|
+
server.registerTool("tx_status_deep", {
|
|
247
|
+
description: `Deep diagnostic view correlating sender nonces with sponsor nonces for sponsored transactions.
|
|
248
|
+
|
|
249
|
+
Reads the sender's local pending txid log and cross-references each entry against
|
|
250
|
+
the sponsor's mempool to show the full lifecycle of sponsored transactions:
|
|
251
|
+
- Which sender nonce maps to which sponsor nonce
|
|
252
|
+
- Whether sponsor nonce gaps are blocking specific transactions
|
|
253
|
+
- Which pending txids are missing from the sponsor mempool entirely
|
|
254
|
+
- Multiple competing txids (RBF candidates) for the same sender nonce slot
|
|
255
|
+
|
|
256
|
+
Output per nonce slot:
|
|
257
|
+
Sender nonce N:
|
|
258
|
+
- 0xabc (sponsored, sponsor nonce 47) -- BLOCKED by missing sponsor nonces [44, 45]
|
|
259
|
+
- 0xdef (direct, fee 0.01 STX) -- competing RBF candidate
|
|
260
|
+
Sender nonce M (0xghi, sponsored) -> sponsor nonce 48 -- pending, no gaps ahead
|
|
261
|
+
Sender nonce P (0xjkl, sponsored) -> NOT IN SPONSOR MEMPOOL
|
|
262
|
+
|
|
263
|
+
Use this when check_relay_health shows issues but you need per-transaction clarity.
|
|
264
|
+
Returns structured JSON with pendingSlots, sponsorMissingNonces, and summary counts.`,
|
|
265
|
+
inputSchema: {
|
|
266
|
+
address: z
|
|
267
|
+
.string()
|
|
268
|
+
.optional()
|
|
269
|
+
.describe("STX address to check. Defaults to the active wallet address."),
|
|
270
|
+
},
|
|
271
|
+
}, async ({ address: inputAddress }) => {
|
|
272
|
+
try {
|
|
273
|
+
const walletAccount = getWalletManager().getAccount();
|
|
274
|
+
const address = inputAddress || walletAccount?.address;
|
|
275
|
+
if (!address) {
|
|
276
|
+
return createJsonResponse({
|
|
277
|
+
error: "No address provided and no wallet is unlocked. Provide an address or unlock a wallet first.",
|
|
278
|
+
pendingSlots: [],
|
|
279
|
+
summary: { total: 0, sponsored: 0, direct: 0, blocked: 0, notInSponsorMempool: 0 },
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
// Reload from disk to pick up changes from other processes
|
|
283
|
+
await reloadFromDisk();
|
|
284
|
+
const localState = await getAddressState(address);
|
|
285
|
+
if (!localState || localState.pending.length === 0) {
|
|
286
|
+
return createJsonResponse({
|
|
287
|
+
address,
|
|
288
|
+
pendingSlots: [],
|
|
289
|
+
sponsorAddress: SPONSOR_ADDRESSES[NETWORK] ?? null,
|
|
290
|
+
sponsorMissingNonces: [],
|
|
291
|
+
summary: { total: 0, sponsored: 0, direct: 0, blocked: 0, notInSponsorMempool: 0 },
|
|
292
|
+
message: "No pending transactions in local tracker for this address.",
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
// Group pending log entries by nonce (handle RBF — multiple txids per nonce)
|
|
296
|
+
const byNonce = new Map();
|
|
297
|
+
for (const entry of localState.pending) {
|
|
298
|
+
const existing = byNonce.get(entry.nonce) ?? [];
|
|
299
|
+
existing.push(entry);
|
|
300
|
+
byNonce.set(entry.nonce, existing);
|
|
301
|
+
}
|
|
302
|
+
// Determine sponsor address for this network
|
|
303
|
+
const sponsorAddress = SPONSOR_ADDRESSES[NETWORK];
|
|
304
|
+
// Fetch sponsor data (best-effort — failures degrade gracefully)
|
|
305
|
+
let sponsorMempoolIndex = new Map();
|
|
306
|
+
let sponsorMissingNonces = [];
|
|
307
|
+
if (sponsorAddress) {
|
|
308
|
+
const hiroApi = getHiroApi(NETWORK);
|
|
309
|
+
// Fetch sponsor mempool txs and nonce gaps in parallel
|
|
310
|
+
const [sponsorMempoolResult, sponsorNonceInfo] = await Promise.all([
|
|
311
|
+
hiroApi
|
|
312
|
+
.getMempoolTransactions({ sender_address: sponsorAddress, limit: 200 })
|
|
313
|
+
.catch(() => null),
|
|
314
|
+
hiroApi.getNonceInfo(sponsorAddress).catch(() => null),
|
|
315
|
+
]);
|
|
316
|
+
if (sponsorMempoolResult) {
|
|
317
|
+
for (const tx of sponsorMempoolResult.results) {
|
|
318
|
+
sponsorMempoolIndex.set(tx.tx_id, {
|
|
319
|
+
nonce: tx.nonce,
|
|
320
|
+
sponsor_nonce: tx.sponsor_nonce,
|
|
321
|
+
fee_rate: tx.fee_rate ?? "unknown",
|
|
322
|
+
tx_status: tx.tx_status,
|
|
323
|
+
sponsored: tx.sponsored ?? false,
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (sponsorNonceInfo) {
|
|
328
|
+
sponsorMissingNonces = sponsorNonceInfo.detected_missing_nonces ?? [];
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
const sponsorMissingSet = new Set(sponsorMissingNonces);
|
|
332
|
+
// Build diagnostic per nonce slot
|
|
333
|
+
const pendingSlots = [];
|
|
334
|
+
const sortedNonces = [...byNonce.keys()].sort((a, b) => a - b);
|
|
335
|
+
let totalSponsored = 0;
|
|
336
|
+
let totalDirect = 0;
|
|
337
|
+
let totalBlocked = 0;
|
|
338
|
+
let totalNotInSponsorMempool = 0;
|
|
339
|
+
for (const senderNonce of sortedNonces) {
|
|
340
|
+
const entries = byNonce.get(senderNonce);
|
|
341
|
+
const candidates = [];
|
|
342
|
+
for (const entry of entries) {
|
|
343
|
+
const sponsorTx = sponsorMempoolIndex.get(entry.txid);
|
|
344
|
+
const inSponsorMempool = !!sponsorTx;
|
|
345
|
+
const isSponsored = inSponsorMempool ? (sponsorTx.sponsored || sponsorTx.sponsor_nonce !== undefined) : false;
|
|
346
|
+
let blocked = false;
|
|
347
|
+
let blockingGaps = [];
|
|
348
|
+
if (isSponsored && sponsorTx?.sponsor_nonce !== undefined) {
|
|
349
|
+
// Find sponsor nonce gaps below this tx's sponsor_nonce that would block it
|
|
350
|
+
blockingGaps = sponsorMissingNonces.filter((missing) => missing < sponsorTx.sponsor_nonce);
|
|
351
|
+
blocked = blockingGaps.length > 0;
|
|
352
|
+
}
|
|
353
|
+
candidates.push({
|
|
354
|
+
txid: entry.txid,
|
|
355
|
+
timestamp: entry.timestamp,
|
|
356
|
+
sponsored: isSponsored,
|
|
357
|
+
...(sponsorTx?.sponsor_nonce !== undefined
|
|
358
|
+
? { sponsorNonce: sponsorTx.sponsor_nonce }
|
|
359
|
+
: {}),
|
|
360
|
+
...(sponsorTx ? { feeRate: sponsorTx.fee_rate, txStatus: sponsorTx.tx_status } : {}),
|
|
361
|
+
inSponsorMempool,
|
|
362
|
+
blocked,
|
|
363
|
+
...(blockingGaps.length > 0 ? { blockingGaps } : {}),
|
|
364
|
+
});
|
|
365
|
+
if (isSponsored)
|
|
366
|
+
totalSponsored++;
|
|
367
|
+
else
|
|
368
|
+
totalDirect++;
|
|
369
|
+
if (blocked)
|
|
370
|
+
totalBlocked++;
|
|
371
|
+
if (!inSponsorMempool)
|
|
372
|
+
totalNotInSponsorMempool++;
|
|
373
|
+
}
|
|
374
|
+
pendingSlots.push({ senderNonce, candidates });
|
|
375
|
+
}
|
|
376
|
+
const total = localState.pending.length;
|
|
377
|
+
return createJsonResponse({
|
|
378
|
+
address,
|
|
379
|
+
pendingSlots,
|
|
380
|
+
sponsorAddress: sponsorAddress ?? null,
|
|
381
|
+
sponsorMissingNonces,
|
|
382
|
+
summary: {
|
|
383
|
+
total,
|
|
384
|
+
sponsored: totalSponsored,
|
|
385
|
+
direct: totalDirect,
|
|
386
|
+
blocked: totalBlocked,
|
|
387
|
+
notInSponsorMempool: totalNotInSponsorMempool,
|
|
388
|
+
},
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
catch (error) {
|
|
392
|
+
return createErrorResponse(error);
|
|
393
|
+
}
|
|
394
|
+
});
|
|
395
|
+
// ============================================================================
|
|
396
|
+
// nonce_heal — diagnose, fill gaps, and optionally RBF-bump the chain head
|
|
397
|
+
// ============================================================================
|
|
398
|
+
server.registerTool("nonce_heal", {
|
|
399
|
+
description: `Diagnose and heal the full nonce state for the active wallet in one shot.
|
|
400
|
+
|
|
401
|
+
Handles 90% of stuck-tx cases automatically:
|
|
402
|
+
1. Fetches current nonce state from Hiro API (gaps, mempool)
|
|
403
|
+
2. In dryRun mode: shows what would happen without broadcasting
|
|
404
|
+
3. In execute mode (dryRun=false):
|
|
405
|
+
- Fills every gap with a 1 uSTX self-transfer to the PoX burn address
|
|
406
|
+
- Optionally RBF-bumps the chain head (lowest non-gap pending tx) to kick off processing
|
|
407
|
+
|
|
408
|
+
RBF bump behavior:
|
|
409
|
+
- Token-transfer txs: rebuilt at same nonce with fee * feeMultiplier and rebroadcast
|
|
410
|
+
- Sponsored txs: skipped with explanation (sender cannot RBF without sponsor key)
|
|
411
|
+
- Contract-call txs: skipped with manual RBF instructions
|
|
412
|
+
|
|
413
|
+
Always run nonce_health first to understand the current state.
|
|
414
|
+
Requires wallet to be unlocked for execute mode (dryRun=false).
|
|
415
|
+
|
|
416
|
+
Returns:
|
|
417
|
+
- address, dryRun flag, confirmedNonce
|
|
418
|
+
- gapsFound: list of missing nonces
|
|
419
|
+
- actions: per-action detail (fill_gap or bump_head) with txids, fees, status
|
|
420
|
+
- warnings: informational notes
|
|
421
|
+
- summary: human-readable description of what happened`,
|
|
422
|
+
inputSchema: {
|
|
423
|
+
address: z
|
|
424
|
+
.string()
|
|
425
|
+
.optional()
|
|
426
|
+
.describe("STX address to heal. Defaults to the active wallet address."),
|
|
427
|
+
dryRun: z
|
|
428
|
+
.boolean()
|
|
429
|
+
.default(true)
|
|
430
|
+
.describe("If true (default), preview proposed actions without broadcasting. Set to false to execute."),
|
|
431
|
+
bumpHead: z
|
|
432
|
+
.boolean()
|
|
433
|
+
.default(true)
|
|
434
|
+
.describe("Whether to RBF-bump the first real pending tx (chain head) after filling gaps. Default true."),
|
|
435
|
+
feeMultiplier: z
|
|
436
|
+
.number()
|
|
437
|
+
.min(1.1)
|
|
438
|
+
.default(1.5)
|
|
439
|
+
.describe("Fee multiplier for RBF bump (e.g. 1.5 = 50% higher fee). Minimum 1.1. Default 1.5."),
|
|
440
|
+
},
|
|
441
|
+
}, async ({ address: inputAddress, dryRun, bumpHead, feeMultiplier }) => {
|
|
442
|
+
try {
|
|
443
|
+
const walletAccount = getWalletManager().getAccount();
|
|
444
|
+
const address = inputAddress || walletAccount?.address;
|
|
445
|
+
if (!address) {
|
|
446
|
+
return createJsonResponse({
|
|
447
|
+
error: "No address provided and no wallet is unlocked. Provide an address or unlock a wallet first.",
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
if (!dryRun && !walletAccount) {
|
|
451
|
+
return createJsonResponse({
|
|
452
|
+
error: "Wallet must be unlocked to execute heal actions. Use wallet_unlock first, or set dryRun=true to preview.",
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
// Reload from disk to pick up changes from other processes
|
|
456
|
+
await reloadFromDisk();
|
|
457
|
+
const nonceInfo = await getHiroApi(NETWORK).getNonceInfo(address);
|
|
458
|
+
const confirmedNonce = nonceInfo.last_executed_tx_nonce;
|
|
459
|
+
const gapsFound = nonceInfo.detected_missing_nonces ?? [];
|
|
460
|
+
const mempoolNonces = nonceInfo.detected_mempool_nonces ?? [];
|
|
461
|
+
const gapSet = new Set(gapsFound);
|
|
462
|
+
const actions = [];
|
|
463
|
+
const warnings = [];
|
|
464
|
+
// Identify chain head: lowest non-gap mempool nonce
|
|
465
|
+
const chainHeadNonce = mempoolNonces.length > 0
|
|
466
|
+
? mempoolNonces.filter((n) => !gapSet.has(n)).sort((a, b) => a - b)[0]
|
|
467
|
+
: undefined;
|
|
468
|
+
// ----------------------------------------------------------------
|
|
469
|
+
// dryRun: build proposed actions and return early
|
|
470
|
+
// ----------------------------------------------------------------
|
|
471
|
+
if (dryRun) {
|
|
472
|
+
for (const n of gapsFound) {
|
|
473
|
+
actions.push({ type: "fill_gap", nonce: n, txid: null, status: "proposed" });
|
|
474
|
+
}
|
|
475
|
+
if (bumpHead && chainHeadNonce !== undefined) {
|
|
476
|
+
// Find the chain head tx to inspect its type
|
|
477
|
+
const mempoolResult = await getHiroApi(NETWORK)
|
|
478
|
+
.getMempoolTransactions({ sender_address: address, limit: 50 })
|
|
479
|
+
.catch(() => null);
|
|
480
|
+
const headTx = mempoolResult?.results.find((tx) => tx.nonce === chainHeadNonce);
|
|
481
|
+
if (!headTx) {
|
|
482
|
+
warnings.push(`Could not find chain head tx at nonce ${chainHeadNonce} in mempool. It may have confirmed already.`);
|
|
483
|
+
}
|
|
484
|
+
else if (headTx.sponsored) {
|
|
485
|
+
actions.push({
|
|
486
|
+
type: "bump_head",
|
|
487
|
+
nonce: chainHeadNonce,
|
|
488
|
+
originalTxid: headTx.tx_id,
|
|
489
|
+
newTxid: null,
|
|
490
|
+
status: "skipped",
|
|
491
|
+
reason: "Sponsored tx — sender cannot RBF. Relay must recover.",
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
// Fetch the full tx for tx_type
|
|
496
|
+
const fullTx = await getHiroApi(NETWORK)
|
|
497
|
+
.getTransaction(headTx.tx_id)
|
|
498
|
+
.catch(() => null);
|
|
499
|
+
if (fullTx?.tx_type === "token_transfer") {
|
|
500
|
+
const originalFee = parseInt(headTx.fee_rate ?? "0", 10);
|
|
501
|
+
const newFee = Math.ceil(originalFee * (feeMultiplier ?? 1.5));
|
|
502
|
+
actions.push({
|
|
503
|
+
type: "bump_head",
|
|
504
|
+
nonce: chainHeadNonce,
|
|
505
|
+
originalTxid: headTx.tx_id,
|
|
506
|
+
newTxid: null,
|
|
507
|
+
newFee: String(newFee),
|
|
508
|
+
status: "proposed",
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
else {
|
|
512
|
+
actions.push({
|
|
513
|
+
type: "bump_head",
|
|
514
|
+
nonce: chainHeadNonce,
|
|
515
|
+
originalTxid: headTx.tx_id,
|
|
516
|
+
newTxid: null,
|
|
517
|
+
status: "skipped",
|
|
518
|
+
reason: `Manual RBF needed for ${fullTx?.tx_type ?? "unknown"} at nonce ${chainHeadNonce} — rebuild and resubmit manually.`,
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
const gapCount = gapsFound.length;
|
|
524
|
+
const bumpAction = actions.find((a) => a.type === "bump_head");
|
|
525
|
+
const summary = gapCount === 0 && !bumpAction
|
|
526
|
+
? "No gaps found and no head bump needed. Nonce state looks healthy."
|
|
527
|
+
: `Would fill ${gapCount} gap(s)${bumpAction ? ` and ${bumpAction.status === "proposed" ? "bump" : "skip"} chain head at nonce ${bumpAction.nonce}` : ""}. Set dryRun=false to execute.`;
|
|
528
|
+
return createJsonResponse({
|
|
529
|
+
address,
|
|
530
|
+
dryRun: true,
|
|
531
|
+
confirmedNonce,
|
|
532
|
+
gapsFound,
|
|
533
|
+
actions,
|
|
534
|
+
warnings,
|
|
535
|
+
summary,
|
|
536
|
+
});
|
|
537
|
+
}
|
|
538
|
+
// ----------------------------------------------------------------
|
|
539
|
+
// Execute mode
|
|
540
|
+
// ----------------------------------------------------------------
|
|
541
|
+
const fee = await resolveDefaultFee(NETWORK, "token_transfer");
|
|
542
|
+
// Fill each gap
|
|
543
|
+
for (const n of gapsFound) {
|
|
544
|
+
try {
|
|
545
|
+
const result = await broadcastGapFill(walletAccount.privateKey, walletAccount.address, n, fee);
|
|
546
|
+
actions.push({ type: "fill_gap", ...result });
|
|
547
|
+
if (result.status === "failed") {
|
|
548
|
+
warnings.push(`Gap fill at nonce ${n} failed: ${result.error}`);
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
catch (err) {
|
|
552
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
553
|
+
actions.push({ type: "fill_gap", nonce: n, txid: null, status: "failed", error: msg });
|
|
554
|
+
warnings.push(`Gap fill at nonce ${n} threw: ${msg}`);
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
// RBF bump chain head
|
|
558
|
+
if (bumpHead && chainHeadNonce !== undefined) {
|
|
559
|
+
const mempoolResult = await getHiroApi(NETWORK)
|
|
560
|
+
.getMempoolTransactions({ sender_address: address, limit: 50 })
|
|
561
|
+
.catch(() => null);
|
|
562
|
+
const headTx = mempoolResult?.results.find((tx) => tx.nonce === chainHeadNonce);
|
|
563
|
+
if (!headTx) {
|
|
564
|
+
warnings.push(`Could not find chain head tx at nonce ${chainHeadNonce} in mempool. It may have confirmed already.`);
|
|
565
|
+
}
|
|
566
|
+
else if (headTx.sponsored) {
|
|
567
|
+
actions.push({
|
|
568
|
+
type: "bump_head",
|
|
569
|
+
nonce: chainHeadNonce,
|
|
570
|
+
originalTxid: headTx.tx_id,
|
|
571
|
+
newTxid: null,
|
|
572
|
+
status: "skipped",
|
|
573
|
+
reason: "Sponsored tx — sender cannot RBF. Relay must recover.",
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
else {
|
|
577
|
+
const fullTx = await getHiroApi(NETWORK)
|
|
578
|
+
.getTransaction(headTx.tx_id)
|
|
579
|
+
.catch(() => null);
|
|
580
|
+
if (fullTx?.tx_type === "token_transfer") {
|
|
581
|
+
try {
|
|
582
|
+
const originalFee = parseInt(headTx.fee_rate ?? "0", 10);
|
|
583
|
+
const newFee = Math.ceil(originalFee * (feeMultiplier ?? 1.5));
|
|
584
|
+
const rbfTx = await makeSTXTokenTransfer({
|
|
585
|
+
recipient: POX_BURN_ADDRESS,
|
|
586
|
+
amount: 1n,
|
|
587
|
+
senderKey: walletAccount.privateKey,
|
|
588
|
+
network: getStacksNetwork(NETWORK),
|
|
589
|
+
memo: `rbf-bump:${chainHeadNonce}`,
|
|
590
|
+
nonce: BigInt(chainHeadNonce),
|
|
591
|
+
fee: BigInt(newFee),
|
|
592
|
+
});
|
|
593
|
+
const rbfBroadcast = await broadcastTransaction({
|
|
594
|
+
transaction: rbfTx,
|
|
595
|
+
network: getStacksNetwork(NETWORK),
|
|
596
|
+
});
|
|
597
|
+
if ("error" in rbfBroadcast) {
|
|
598
|
+
actions.push({
|
|
599
|
+
type: "bump_head",
|
|
600
|
+
nonce: chainHeadNonce,
|
|
601
|
+
originalTxid: headTx.tx_id,
|
|
602
|
+
newTxid: null,
|
|
603
|
+
newFee: String(newFee),
|
|
604
|
+
status: "failed",
|
|
605
|
+
error: `${rbfBroadcast.error} - ${rbfBroadcast.reason}`,
|
|
606
|
+
});
|
|
607
|
+
warnings.push(`RBF bump at nonce ${chainHeadNonce} failed: ${rbfBroadcast.error}`);
|
|
608
|
+
}
|
|
609
|
+
else {
|
|
610
|
+
await recordNonceUsed(walletAccount.address, chainHeadNonce, rbfBroadcast.txid);
|
|
611
|
+
actions.push({
|
|
612
|
+
type: "bump_head",
|
|
613
|
+
nonce: chainHeadNonce,
|
|
614
|
+
originalTxid: headTx.tx_id,
|
|
615
|
+
newTxid: rbfBroadcast.txid,
|
|
616
|
+
newFee: String(newFee),
|
|
617
|
+
status: "broadcast",
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
catch (err) {
|
|
622
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
623
|
+
actions.push({
|
|
624
|
+
type: "bump_head",
|
|
625
|
+
nonce: chainHeadNonce,
|
|
626
|
+
originalTxid: headTx.tx_id,
|
|
627
|
+
newTxid: null,
|
|
628
|
+
status: "failed",
|
|
629
|
+
error: msg,
|
|
630
|
+
});
|
|
631
|
+
warnings.push(`RBF bump at nonce ${chainHeadNonce} threw: ${msg}`);
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
else {
|
|
635
|
+
actions.push({
|
|
636
|
+
type: "bump_head",
|
|
637
|
+
nonce: chainHeadNonce,
|
|
638
|
+
originalTxid: headTx.tx_id,
|
|
639
|
+
newTxid: null,
|
|
640
|
+
status: "skipped",
|
|
641
|
+
reason: `Manual RBF needed for ${fullTx?.tx_type ?? "unknown"} at nonce ${chainHeadNonce} — rebuild and resubmit manually.`,
|
|
642
|
+
});
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
// Build summary
|
|
647
|
+
const filledCount = actions.filter((a) => a.type === "fill_gap" && a.status === "broadcast").length;
|
|
648
|
+
const failedGaps = actions.filter((a) => a.type === "fill_gap" && a.status === "failed").length;
|
|
649
|
+
const bumpAction = actions.find((a) => a.type === "bump_head");
|
|
650
|
+
let summary = "";
|
|
651
|
+
if (filledCount > 0) {
|
|
652
|
+
summary += `Filled ${filledCount} gap(s). `;
|
|
653
|
+
}
|
|
654
|
+
if (failedGaps > 0) {
|
|
655
|
+
summary += `${failedGaps} gap fill(s) failed (see warnings). `;
|
|
656
|
+
}
|
|
657
|
+
if (bumpAction) {
|
|
658
|
+
if (bumpAction.status === "broadcast") {
|
|
659
|
+
summary += `Bumped chain head at nonce ${bumpAction.nonce}. Chain should unstick within 1-2 blocks.`;
|
|
660
|
+
}
|
|
661
|
+
else if (bumpAction.status === "skipped") {
|
|
662
|
+
summary += `Chain head at nonce ${bumpAction.nonce} skipped: ${bumpAction.reason}`;
|
|
663
|
+
}
|
|
664
|
+
else if (bumpAction.status === "failed") {
|
|
665
|
+
summary += `Chain head bump at nonce ${bumpAction.nonce} failed (see warnings).`;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
if (!summary) {
|
|
669
|
+
summary =
|
|
670
|
+
gapsFound.length === 0
|
|
671
|
+
? "No gaps found. Nonce state looks healthy."
|
|
672
|
+
: "Actions attempted — check action statuses for details.";
|
|
673
|
+
}
|
|
674
|
+
return createJsonResponse({
|
|
675
|
+
address,
|
|
676
|
+
dryRun: false,
|
|
677
|
+
confirmedNonce,
|
|
678
|
+
gapsFound,
|
|
679
|
+
actions,
|
|
680
|
+
warnings,
|
|
681
|
+
summary: summary.trim(),
|
|
215
682
|
});
|
|
216
683
|
}
|
|
217
684
|
catch (error) {
|