@aibtc/mcp-server 1.48.0 → 1.49.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/services/lightning/provider.d.ts +68 -0
- package/dist/services/lightning/provider.d.ts.map +1 -0
- package/dist/services/lightning/provider.js +8 -0
- package/dist/services/lightning/provider.js.map +1 -0
- package/dist/services/lightning/spark-provider.d.ts +41 -0
- package/dist/services/lightning/spark-provider.d.ts.map +1 -0
- package/dist/services/lightning/spark-provider.js +165 -0
- package/dist/services/lightning/spark-provider.js.map +1 -0
- package/dist/services/lightning-manager.d.ts +96 -0
- package/dist/services/lightning-manager.d.ts.map +1 -0
- package/dist/services/lightning-manager.js +226 -0
- package/dist/services/lightning-manager.js.map +1 -0
- package/dist/services/sbtc-deposit.service.d.ts.map +1 -1
- package/dist/services/sbtc-deposit.service.js +7 -13
- package/dist/services/sbtc-deposit.service.js.map +1 -1
- package/dist/services/unisat-indexer.d.ts +5 -0
- package/dist/services/unisat-indexer.d.ts.map +1 -1
- package/dist/services/unisat-indexer.js +8 -0
- package/dist/services/unisat-indexer.js.map +1 -1
- package/dist/services/x402.service.d.ts.map +1 -1
- package/dist/services/x402.service.js +228 -0
- package/dist/services/x402.service.js.map +1 -1
- package/dist/tools/bitcoin.tools.d.ts.map +1 -1
- package/dist/tools/bitcoin.tools.js +26 -46
- package/dist/tools/bitcoin.tools.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/lightning.tools.d.ts +11 -0
- package/dist/tools/lightning.tools.d.ts.map +1 -0
- package/dist/tools/lightning.tools.js +333 -0
- package/dist/tools/lightning.tools.js.map +1 -0
- package/dist/tools/styx.tools.d.ts.map +1 -1
- package/dist/tools/styx.tools.js +28 -30
- package/dist/tools/styx.tools.js.map +1 -1
- package/dist/utils/l402-protocol.d.ts +64 -0
- package/dist/utils/l402-protocol.d.ts.map +1 -0
- package/dist/utils/l402-protocol.js +114 -0
- package/dist/utils/l402-protocol.js.map +1 -0
- package/package.json +3 -1
- package/skill/SKILL.md +1 -1
- package/dist/services/ordinal-indexer.d.ts +0 -128
- package/dist/services/ordinal-indexer.d.ts.map +0 -1
- package/dist/services/ordinal-indexer.js +0 -126
- package/dist/services/ordinal-indexer.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styx.tools.d.ts","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"styx.tools.d.ts","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAwBpE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwbzD"}
|
package/dist/tools/styx.tools.js
CHANGED
|
@@ -23,7 +23,7 @@ import { NETWORK } from "../config/networks.js";
|
|
|
23
23
|
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
24
24
|
import { getWalletManager } from "../services/wallet-manager.js";
|
|
25
25
|
import { MempoolApi, getMempoolTxUrl } from "../services/mempool-api.js";
|
|
26
|
-
import {
|
|
26
|
+
import { UnisatIndexer } from "../services/unisat-indexer.js";
|
|
27
27
|
import { getBtcNetwork } from "../transactions/bitcoin-builder.js";
|
|
28
28
|
const FEE_PRIORITIES = ["low", "medium", "high"];
|
|
29
29
|
export function registerStyxTools(server) {
|
|
@@ -187,39 +187,37 @@ export function registerStyxTools(server) {
|
|
|
187
187
|
walletProvider: null,
|
|
188
188
|
poolId: pool,
|
|
189
189
|
});
|
|
190
|
-
// Step 3: Filter ordinal UTXOs
|
|
190
|
+
// Step 3: Filter ordinal/rune UTXOs to protect inscriptions and runes
|
|
191
191
|
let safeUtxos = prepared.utxos;
|
|
192
192
|
let ordinalsFiltered = false;
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
"Cannot deposit without risking inscription loss.");
|
|
203
|
-
}
|
|
204
|
-
// Recompute change after removing ordinal inputs
|
|
205
|
-
const originalTotal = prepared.utxos.reduce((sum, u) => sum + u.value, 0);
|
|
206
|
-
const filteredTotal = filtered.reduce((sum, u) => sum + u.value, 0);
|
|
207
|
-
const originalFee = originalTotal - prepared.amountInSatoshis - prepared.changeAmount;
|
|
208
|
-
if (originalFee < 0) {
|
|
209
|
-
throw new Error("Invalid Styx transaction preparation: negative implied fee.");
|
|
210
|
-
}
|
|
211
|
-
const requiredTotal = prepared.amountInSatoshis + originalFee;
|
|
212
|
-
if (filteredTotal < requiredTotal) {
|
|
213
|
-
throw new Error(`After removing ${removed} ordinal UTXO(s), remaining cardinal balance ` +
|
|
214
|
-
`(${filteredTotal} sats) is insufficient for deposit (${amountSats} sats) ` +
|
|
215
|
-
`and fee (${originalFee} sats).`);
|
|
216
|
-
}
|
|
217
|
-
prepared.changeAmount =
|
|
218
|
-
filteredTotal - prepared.amountInSatoshis - originalFee;
|
|
219
|
-
ordinalsFiltered = true;
|
|
193
|
+
const indexer = new UnisatIndexer(NETWORK);
|
|
194
|
+
const cardinalUtxos = await indexer.getCardinalUtxos(resolvedBtcSender);
|
|
195
|
+
const cardinalSet = new Set(cardinalUtxos.map((u) => `${u.txid}:${u.vout}`));
|
|
196
|
+
const filtered = prepared.utxos.filter((u) => cardinalSet.has(`${u.txid}:${u.vout}`));
|
|
197
|
+
if (filtered.length < prepared.utxos.length) {
|
|
198
|
+
const removed = prepared.utxos.length - filtered.length;
|
|
199
|
+
if (filtered.length === 0) {
|
|
200
|
+
throw new Error(`All ${removed} UTXO(s) selected by Styx carry inscriptions or runes. ` +
|
|
201
|
+
"Cannot deposit without risking inscription or rune loss.");
|
|
220
202
|
}
|
|
221
|
-
|
|
203
|
+
// Recompute change after removing ordinal/rune inputs
|
|
204
|
+
const originalTotal = prepared.utxos.reduce((sum, u) => sum + u.value, 0);
|
|
205
|
+
const filteredTotal = filtered.reduce((sum, u) => sum + u.value, 0);
|
|
206
|
+
const originalFee = originalTotal - prepared.amountInSatoshis - prepared.changeAmount;
|
|
207
|
+
if (originalFee < 0) {
|
|
208
|
+
throw new Error("Invalid Styx transaction preparation: negative implied fee.");
|
|
209
|
+
}
|
|
210
|
+
const requiredTotal = prepared.amountInSatoshis + originalFee;
|
|
211
|
+
if (filteredTotal < requiredTotal) {
|
|
212
|
+
throw new Error(`After removing ${removed} inscription/rune UTXO(s), remaining cardinal balance ` +
|
|
213
|
+
`(${filteredTotal} sats) is insufficient for deposit (${amountSats} sats) ` +
|
|
214
|
+
`and fee (${originalFee} sats).`);
|
|
215
|
+
}
|
|
216
|
+
prepared.changeAmount =
|
|
217
|
+
filteredTotal - prepared.amountInSatoshis - originalFee;
|
|
218
|
+
ordinalsFiltered = true;
|
|
222
219
|
}
|
|
220
|
+
safeUtxos = filtered;
|
|
223
221
|
// Step 4: Build PSBT locally with @scure/btc-signer
|
|
224
222
|
const btcNetwork = getBtcNetwork(NETWORK);
|
|
225
223
|
const tx = new btc.Transaction({ allowUnknownOutputs: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"styx.tools.js","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,GAAG,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,OAAO,EACP,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,8EAA8E;IAC9E,mBAAmB;IACnB,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,8CAA8C;YAC9C,6DAA6D;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,6EAA6E,CAAC;SAC3F;KACF,EACD,KAAK,EAAE,EAAE,IAAI,GAAG,MAAM,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,MAAM,GAAe,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,kBAAkB,CAAC;gBACxB,IAAI;gBACJ,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;gBAC7C,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,GAAG,GAAG,CAAC;gBACnE,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,OAAO;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EACT,2DAA2D;YAC3D,oFAAoF;YACpF,8CAA8C;QAChD,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,KAAK,GAAiB,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC9D,OAAO,kBAAkB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,YAAY;IACZ,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,WAAW,EAAE,kFAAkF;QAC/F,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,IAAI,GAAiB,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC;YAC3D,OAAO,kBAAkB,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,aAAa;IACb,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,YAAY,EACZ;QACE,WAAW,EAAE,yCAAyC;QACtD,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YAC1C,OAAO,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,eAAe;IACf,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,wDAAwD;YACxD,8EAA8E;YAC9E,sDAAsD;YACtD,2DAA2D;YAC3D,oFAAoF;YACpF,2EAA2E;QAC7E,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,MAAM;iBACN,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,gBAAgB,CAAC;iBACrB,QAAQ,CAAC,sCAAsC,gBAAgB,mBAAmB,CAAC;YACtF,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;YACrF,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,yEAAyE;gBACvE,gCAAgC,CACnC;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,GAAG,EAAE,CAAC;iBACH,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;iBAC/B,QAAQ,EAAE;iBACV,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;KACF,EACD,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,GAAG,GAAG,QAAQ,EAAE,EAAE,EAAE;QAC1E,IAAI,SAA6B,CAAC;QAClC,IAAI,aAAiC,CAAC;QAEtC,IAAI,CAAC;YACH,iGAAiG;YACjG,MAAM,UAAU,GAAG,MAAM,CAAC;YAE1B,+EAA+E;YAC/E,MAAM,WAAW,GAAG,GAAkB,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,sBAAsB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC3E,CAAC;YACJ,CAAC;YAED,aAAa;YACb,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;YAC3E,CAAC;YAED,gEAAgE;YAChE,IAAI,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CACb,cAAc,SAAS,6CAA6C;oBAClE,IAAI,OAAO,CAAC,UAAU,mDAAmD,CAC5E,CAAC;YACJ,CAAC;YACD,MAAM,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;YAC7C,MAAM,mBAAmB,GAAG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAE3D,uBAAuB;YACvB,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,CAAC;YACtE,IAAI,UAAU,GAAG,aAAa,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,qCAAqC,UAAU,oBAAoB,aAAa,OAAO,CACxF,CAAC;YACJ,CAAC;YAED,iCAAiC;YACjC,MAAM,SAAS,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChD,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;gBACtC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC;gBAChC,WAAW,EAAE,mBAAmB;gBAChC,SAAS,EAAE,iBAAiB;gBAC5B,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,kEAAkE;YAClE,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC;gBAChD,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,mBAAmB;gBAChC,UAAU,EAAE,iBAAiB;gBAC7B,WAAW;gBACX,cAAc,EAAE,IAAI;gBACpB,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,kEAAkE;YAClE,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC;gBAC5C,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;gBACxE,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAChD,CAAC;gBACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CACvC,CAAC;gBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBACxD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,MAAM,IAAI,KAAK,CACb,OAAO,OAAO,kDAAkD;4BAC9D,kDAAkD,CACrD,CAAC;oBACJ,CAAC;oBACD,iDAAiD;oBACjD,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBAC1E,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACpE,MAAM,WAAW,GACf,aAAa,GAAG,QAAQ,CAAC,gBAAgB,GAAG,QAAQ,CAAC,YAAY,CAAC;oBACpE,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;wBACpB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;oBACJ,CAAC;oBACD,MAAM,aAAa,GAAG,QAAQ,CAAC,gBAAgB,GAAG,WAAW,CAAC;oBAC9D,IAAI,aAAa,GAAG,aAAa,EAAE,CAAC;wBAClC,MAAM,IAAI,KAAK,CACb,kBAAkB,OAAO,+CAA+C;4BACtE,IAAI,aAAa,uCAAuC,UAAU,SAAS;4BAC3E,YAAY,WAAW,SAAS,CACnC,CAAC;oBACJ,CAAC;oBACD,QAAQ,CAAC,YAAY;wBACnB,aAAa,GAAG,QAAQ,CAAC,gBAAgB,GAAG,WAAW,CAAC;oBAC1D,gBAAgB,GAAG,IAAI,CAAC;gBAC1B,CAAC;gBACD,SAAS,GAAG,QAAQ,CAAC;YACvB,CAAC;YAED,oDAAoD;YACpD,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAElE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,EAAE,CAAC,QAAQ,CAAC;oBACV,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,IAAI;oBAChB,WAAW,EAAE;wBACX,MAAM,EAAE,YAAY,CAAC,MAAM;wBAC3B,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;qBAC3B;iBACF,CAAC,CAAC;YACL,CAAC;YAED,wFAAwF;YACxF,0EAA0E;YAC1E,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;gBAC1B,EAAE,CAAC,SAAS,CAAC;oBACX,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;oBACzC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;iBAClB,CAAC,CAAC;YACL,CAAC;YAED,kDAAkD;YAClD,EAAE,CAAC,gBAAgB,CACjB,QAAQ,CAAC,cAAc,EACvB,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACjC,UAAU,CACX,CAAC;YAEF,gBAAgB;YAChB,IAAI,QAAQ,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBAC9B,EAAE,CAAC,gBAAgB,CACjB,iBAAiB,EACjB,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,EAC7B,UAAU,CACX,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC/B,EAAE,CAAC,QAAQ,EAAE,CAAC;YAEd,oBAAoB;YACpB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3C,aAAa,GAAG,MAAM,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAE9D,wDAAwD;YACxD,IAAI,mBAAuC,CAAC;YAC5C,MAAM,aAAa,GAAG;gBACpB,EAAE,EAAE,SAAS;gBACb,IAAI,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,WAAoB,EAAE;aAC/D,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,WAAW,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBACnD,CAAC;gBAAC,MAAM,CAAC;oBACP,mBAAmB;wBACjB,oEAAoE;4BACpE,+CAA+C;4BAC/C,CAAC,WAAW,YAAY,KAAK;gCAC3B,CAAC,CAAC,WAAW,CAAC,OAAO;gCACrB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,IAAI;gBACb,SAAS;gBACT,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,eAAe,CAAC,aAAa,EAAE,OAAO,CAAC;gBACpD,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE;gBAC5C,IAAI;gBACJ,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,8EAA8E;gBAC9E,6EAA6E;gBAC7E,GAAG,CAAC,gBAAgB;oBAClB,CAAC,CAAC,EAAE,OAAO,EAAE,2DAA2D,EAAE;oBAC1E,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrD,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,0EAA0E;gBAChF,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;YACxD,IAAI,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,mBAAmB,CAAC;wBAChC,EAAE,EAAE,SAAS;wBACb,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;qBAC7B,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,qEAAqE;gBACvE,CAAC;YACH,CAAC;YACD,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,cAAc;IACd,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACrD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAC/D;KACF,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;YACtF,CAAC;YACD,IAAI,OAAgB,CAAC;YACrB,IAAI,EAAE,EAAE,CAAC;gBACP,OAAO,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,IAAK,CAAC,CAAC;YACxD,CAAC;YACD,OAAO,kBAAkB,CAAC;gBACxB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,OAAO,CAAC,OAAO;oBAC1B,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;oBAC3C,CAAC,CAAC,IAAI;aACT,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CACF,CAAC;IAEF,8EAA8E;IAC9E,eAAe;IACf,8EAA8E;IAC9E,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,8DAA8D;YAC9D,oEAAoE;QACtE,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,yDAAyD,CAAC;SACvE;KACF,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACpB,IAAI,CAAC;YACH,IAAI,eAAe,GAAG,OAAO,CAAC;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBACjD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACrE,CAAC;gBACD,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;YACpC,CAAC;YAED,MAAM,QAAQ,GAAc,MAAM,OAAO,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAC7E,OAAO,kBAAkB,CAAC;gBACxB,OAAO,EAAE,eAAe;gBACxB,KAAK,EAAE,QAAQ,CAAC,MAAM;gBACtB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,SAAS,EAAE,CAAC,CAAC,SAAS;iBACvB,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;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"styx.tools.js","sourceRoot":"","sources":["../../src/tools/styx.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L402 Protocol Helpers
|
|
3
|
+
*
|
|
4
|
+
* Parses L402 challenge headers of the form:
|
|
5
|
+
* WWW-Authenticate: L402 macaroon="...", invoice="..."
|
|
6
|
+
*
|
|
7
|
+
* Builds the Authorization header used to retry the request after the
|
|
8
|
+
* Lightning invoice has been paid:
|
|
9
|
+
* Authorization: L402 <macaroon>:<preimage>
|
|
10
|
+
*
|
|
11
|
+
* References:
|
|
12
|
+
* - L402 (formerly LSAT) protocol: https://docs.lightning.engineering/the-lightning-network/l402
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Parsed fields from an L402 challenge header.
|
|
16
|
+
*/
|
|
17
|
+
export interface L402Challenge {
|
|
18
|
+
macaroon: string;
|
|
19
|
+
invoice: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Parse a `WWW-Authenticate: L402 macaroon="...", invoice="..."` header.
|
|
23
|
+
*
|
|
24
|
+
* Tolerates:
|
|
25
|
+
* - case-insensitive scheme ("L402" or "l402"; legacy "LSAT" aliased)
|
|
26
|
+
* - whitespace between key/value pairs
|
|
27
|
+
* - either single or double quotes around the values
|
|
28
|
+
* - key order (macaroon/invoice swapped)
|
|
29
|
+
*
|
|
30
|
+
* Returns null when the header doesn't match the L402 scheme or either field
|
|
31
|
+
* is missing. Callers should treat null as "not an L402 challenge".
|
|
32
|
+
*/
|
|
33
|
+
export declare function parseL402Challenge(header: string | null | undefined): L402Challenge | null;
|
|
34
|
+
/**
|
|
35
|
+
* Build the L402 Authorization header: `L402 <macaroon>:<preimage>`.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildL402AuthHeader(macaroon: string, preimage: string): string;
|
|
38
|
+
interface CachedMacaroon {
|
|
39
|
+
macaroon: string;
|
|
40
|
+
preimage: string;
|
|
41
|
+
cachedAt: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build the canonical cache key for a request.
|
|
45
|
+
*/
|
|
46
|
+
export declare function l402CacheKey(method: string, url: string): string;
|
|
47
|
+
/**
|
|
48
|
+
* Look up a cached macaroon+preimage pair. Returns null on miss.
|
|
49
|
+
*/
|
|
50
|
+
export declare function getCachedL402Auth(method: string, url: string): CachedMacaroon | null;
|
|
51
|
+
/**
|
|
52
|
+
* Store the macaroon+preimage pair for future reuse.
|
|
53
|
+
*/
|
|
54
|
+
export declare function cacheL402Auth(method: string, url: string, macaroon: string, preimage: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Drop a cached entry (e.g. after the server returned 401 despite a cache hit).
|
|
57
|
+
*/
|
|
58
|
+
export declare function invalidateL402Auth(method: string, url: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Testing helper: clear the whole cache.
|
|
61
|
+
*/
|
|
62
|
+
export declare function clearL402Cache(): void;
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=l402-protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l402-protocol.d.ts","sourceRoot":"","sources":["../../src/utils/l402-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,aAAa,GAAG,IAAI,CAetB;AAuCD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAER;AAQD,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,cAAc,GAAG,IAAI,CAEvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAMN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAErC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* L402 Protocol Helpers
|
|
3
|
+
*
|
|
4
|
+
* Parses L402 challenge headers of the form:
|
|
5
|
+
* WWW-Authenticate: L402 macaroon="...", invoice="..."
|
|
6
|
+
*
|
|
7
|
+
* Builds the Authorization header used to retry the request after the
|
|
8
|
+
* Lightning invoice has been paid:
|
|
9
|
+
* Authorization: L402 <macaroon>:<preimage>
|
|
10
|
+
*
|
|
11
|
+
* References:
|
|
12
|
+
* - L402 (formerly LSAT) protocol: https://docs.lightning.engineering/the-lightning-network/l402
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Parse a `WWW-Authenticate: L402 macaroon="...", invoice="..."` header.
|
|
16
|
+
*
|
|
17
|
+
* Tolerates:
|
|
18
|
+
* - case-insensitive scheme ("L402" or "l402"; legacy "LSAT" aliased)
|
|
19
|
+
* - whitespace between key/value pairs
|
|
20
|
+
* - either single or double quotes around the values
|
|
21
|
+
* - key order (macaroon/invoice swapped)
|
|
22
|
+
*
|
|
23
|
+
* Returns null when the header doesn't match the L402 scheme or either field
|
|
24
|
+
* is missing. Callers should treat null as "not an L402 challenge".
|
|
25
|
+
*/
|
|
26
|
+
export function parseL402Challenge(header) {
|
|
27
|
+
if (!header)
|
|
28
|
+
return null;
|
|
29
|
+
const trimmed = header.trim();
|
|
30
|
+
// Accept both "L402 ..." and legacy "LSAT ..." schemes.
|
|
31
|
+
const schemeMatch = /^(L402|LSAT)\s+(.+)$/i.exec(trimmed);
|
|
32
|
+
if (!schemeMatch)
|
|
33
|
+
return null;
|
|
34
|
+
const body = schemeMatch[2];
|
|
35
|
+
const macaroon = extractParam(body, "macaroon");
|
|
36
|
+
const invoice = extractParam(body, "invoice");
|
|
37
|
+
if (!macaroon || !invoice)
|
|
38
|
+
return null;
|
|
39
|
+
return { macaroon, invoice };
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Escape regex special characters so a caller-provided key can be safely
|
|
43
|
+
* interpolated into a RegExp. Keeps the helper defensive even though today's
|
|
44
|
+
* callers only pass hardcoded literals.
|
|
45
|
+
*/
|
|
46
|
+
function escapeRegExp(s) {
|
|
47
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Extract a quoted or unquoted param value from an RFC-7235-style header body.
|
|
51
|
+
*
|
|
52
|
+
* Supports double-quoted, single-quoted, and unquoted values to match the
|
|
53
|
+
* docstring claim and tolerate well-meaning servers that emit single quotes.
|
|
54
|
+
* RFC 7235 only mandates double quotes, but real-world implementations are
|
|
55
|
+
* forgiving here.
|
|
56
|
+
*/
|
|
57
|
+
function extractParam(body, key) {
|
|
58
|
+
const escapedKey = escapeRegExp(key);
|
|
59
|
+
// Double-quoted value: key="..."
|
|
60
|
+
const doubleQuoted = new RegExp(`${escapedKey}\\s*=\\s*"([^"]+)"`, "i").exec(body);
|
|
61
|
+
if (doubleQuoted)
|
|
62
|
+
return doubleQuoted[1];
|
|
63
|
+
// Single-quoted value: key='...'
|
|
64
|
+
const singleQuoted = new RegExp(`${escapedKey}\\s*=\\s*'([^']+)'`, "i").exec(body);
|
|
65
|
+
if (singleQuoted)
|
|
66
|
+
return singleQuoted[1];
|
|
67
|
+
// Unquoted value: key=value[,\s]
|
|
68
|
+
const unquoted = new RegExp(`${escapedKey}\\s*=\\s*([^,\\s]+)`, "i").exec(body);
|
|
69
|
+
if (unquoted)
|
|
70
|
+
return unquoted[1];
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Build the L402 Authorization header: `L402 <macaroon>:<preimage>`.
|
|
75
|
+
*/
|
|
76
|
+
export function buildL402AuthHeader(macaroon, preimage) {
|
|
77
|
+
return `L402 ${macaroon}:${preimage}`;
|
|
78
|
+
}
|
|
79
|
+
const macaroonCache = new Map();
|
|
80
|
+
/**
|
|
81
|
+
* Build the canonical cache key for a request.
|
|
82
|
+
*/
|
|
83
|
+
export function l402CacheKey(method, url) {
|
|
84
|
+
return `${method.toUpperCase()}:${url}`;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Look up a cached macaroon+preimage pair. Returns null on miss.
|
|
88
|
+
*/
|
|
89
|
+
export function getCachedL402Auth(method, url) {
|
|
90
|
+
return macaroonCache.get(l402CacheKey(method, url)) ?? null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Store the macaroon+preimage pair for future reuse.
|
|
94
|
+
*/
|
|
95
|
+
export function cacheL402Auth(method, url, macaroon, preimage) {
|
|
96
|
+
macaroonCache.set(l402CacheKey(method, url), {
|
|
97
|
+
macaroon,
|
|
98
|
+
preimage,
|
|
99
|
+
cachedAt: Date.now(),
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Drop a cached entry (e.g. after the server returned 401 despite a cache hit).
|
|
104
|
+
*/
|
|
105
|
+
export function invalidateL402Auth(method, url) {
|
|
106
|
+
macaroonCache.delete(l402CacheKey(method, url));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Testing helper: clear the whole cache.
|
|
110
|
+
*/
|
|
111
|
+
export function clearL402Cache() {
|
|
112
|
+
macaroonCache.clear();
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=l402-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"l402-protocol.js","sourceRoot":"","sources":["../../src/utils/l402-protocol.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.
|
|
3
|
+
"version": "1.49.1",
|
|
4
4
|
"description": "Bitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.",
|
|
5
5
|
"mcpName": "io.github.aibtcdev/mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@aibtc/tx-schemas": "^0.7.0",
|
|
47
47
|
"@bitflowlabs/core-sdk": "^3.0.0",
|
|
48
|
+
"@buildonspark/spark-sdk": "^0.7.14",
|
|
48
49
|
"@faktoryfun/styx-sdk": "^1.3.5",
|
|
49
50
|
"@modelcontextprotocol/sdk": "^1.27.1",
|
|
50
51
|
"@noble/curves": "^2.0.1",
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
"alex-sdk": "^3.2.1",
|
|
62
63
|
"axios": "^1.15.0",
|
|
63
64
|
"dotenv": "^17.3.1",
|
|
65
|
+
"light-bolt11-decoder": "^3.2.0",
|
|
64
66
|
"micro-ordinals": "^0.3.0",
|
|
65
67
|
"nostr-tools": "^2.23.3",
|
|
66
68
|
"sbtc": "^0.3.2",
|
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.
|
|
7
|
+
version: 1.49.1 # x-release-please-version
|
|
8
8
|
npm: "@aibtc/mcp-server"
|
|
9
9
|
github: https://github.com/aibtcdev/aibtc-mcp-server
|
|
10
10
|
---
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ordinal Indexer Service
|
|
3
|
-
*
|
|
4
|
-
* Combines Hiro Ordinals API with mempool.space to classify UTXOs:
|
|
5
|
-
* - Cardinal: Safe to spend (no inscriptions)
|
|
6
|
-
* - Ordinal: Contains inscriptions (must not spend accidentally)
|
|
7
|
-
*
|
|
8
|
-
* Uses free APIs:
|
|
9
|
-
* - Hiro Ordinals API: https://api.hiro.so/ordinals/v1/inscriptions?address={address}
|
|
10
|
-
* - mempool.space API: via MempoolApi service
|
|
11
|
-
*/
|
|
12
|
-
import type { Network } from "../config/networks.js";
|
|
13
|
-
import type { UTXO } from "./mempool-api.js";
|
|
14
|
-
/**
|
|
15
|
-
* Inscription data from Hiro Ordinals API
|
|
16
|
-
*/
|
|
17
|
-
export interface Inscription {
|
|
18
|
-
/**
|
|
19
|
-
* Inscription ID (txid + inscription number)
|
|
20
|
-
*/
|
|
21
|
-
id: string;
|
|
22
|
-
/**
|
|
23
|
-
* Inscription number (global ordinal)
|
|
24
|
-
*/
|
|
25
|
-
number: number;
|
|
26
|
-
/**
|
|
27
|
-
* Content type (e.g., "text/plain", "image/png")
|
|
28
|
-
*/
|
|
29
|
-
content_type: string;
|
|
30
|
-
/**
|
|
31
|
-
* Content length in bytes
|
|
32
|
-
*/
|
|
33
|
-
content_length: number;
|
|
34
|
-
/**
|
|
35
|
-
* Genesis transaction ID
|
|
36
|
-
*/
|
|
37
|
-
genesis_tx_id: string;
|
|
38
|
-
/**
|
|
39
|
-
* Genesis block height
|
|
40
|
-
*/
|
|
41
|
-
genesis_block_height: number;
|
|
42
|
-
/**
|
|
43
|
-
* Genesis block hash
|
|
44
|
-
*/
|
|
45
|
-
genesis_block_hash: string;
|
|
46
|
-
/**
|
|
47
|
-
* Genesis timestamp
|
|
48
|
-
*/
|
|
49
|
-
genesis_timestamp: number;
|
|
50
|
-
/**
|
|
51
|
-
* Location of the inscription (txid:vout:offset)
|
|
52
|
-
*/
|
|
53
|
-
location: string;
|
|
54
|
-
/**
|
|
55
|
-
* Output reference (txid:vout) - this is what we use to match UTXOs
|
|
56
|
-
*/
|
|
57
|
-
output: string;
|
|
58
|
-
/**
|
|
59
|
-
* Current owner address
|
|
60
|
-
*/
|
|
61
|
-
address: string;
|
|
62
|
-
/**
|
|
63
|
-
* Offset within the output
|
|
64
|
-
*/
|
|
65
|
-
offset: string;
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Classified UTXOs
|
|
69
|
-
*/
|
|
70
|
-
export interface ClassifiedUtxos {
|
|
71
|
-
/**
|
|
72
|
-
* Cardinal UTXOs - safe to spend (no inscriptions)
|
|
73
|
-
*/
|
|
74
|
-
cardinal: UTXO[];
|
|
75
|
-
/**
|
|
76
|
-
* Ordinal UTXOs - contain inscriptions (do not spend)
|
|
77
|
-
*/
|
|
78
|
-
ordinal: UTXO[];
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Ordinal Indexer Service
|
|
82
|
-
*
|
|
83
|
-
* Note: Hiro Ordinals API only supports mainnet. On testnet, all UTXOs are
|
|
84
|
-
* treated as cardinal (safe to spend) since we cannot index inscriptions.
|
|
85
|
-
*/
|
|
86
|
-
export declare class OrdinalIndexer {
|
|
87
|
-
private readonly network;
|
|
88
|
-
private readonly mempoolApi;
|
|
89
|
-
private readonly isMainnet;
|
|
90
|
-
constructor(network: Network);
|
|
91
|
-
/**
|
|
92
|
-
* Get all inscriptions for a Bitcoin address
|
|
93
|
-
*
|
|
94
|
-
* @param address - Bitcoin address (bc1... for mainnet)
|
|
95
|
-
* @returns Array of inscriptions with their output references (empty on testnet)
|
|
96
|
-
* @throws Error if API request fails
|
|
97
|
-
*/
|
|
98
|
-
getInscriptionsForAddress(address: string): Promise<Inscription[]>;
|
|
99
|
-
/**
|
|
100
|
-
* Classify UTXOs into cardinal (safe to spend) and ordinal (contains inscriptions)
|
|
101
|
-
*
|
|
102
|
-
* @param address - Bitcoin address
|
|
103
|
-
* @returns Classified UTXOs
|
|
104
|
-
* @throws Error if API requests fail
|
|
105
|
-
*/
|
|
106
|
-
classifyUtxos(address: string): Promise<ClassifiedUtxos>;
|
|
107
|
-
/**
|
|
108
|
-
* Get cardinal UTXOs (safe to spend - no inscriptions)
|
|
109
|
-
*
|
|
110
|
-
* @param address - Bitcoin address
|
|
111
|
-
* @returns Cardinal UTXOs only
|
|
112
|
-
* @throws Error if API requests fail
|
|
113
|
-
*/
|
|
114
|
-
getCardinalUtxos(address: string): Promise<UTXO[]>;
|
|
115
|
-
/**
|
|
116
|
-
* Get ordinal UTXOs (contain inscriptions - do not spend)
|
|
117
|
-
*
|
|
118
|
-
* @param address - Bitcoin address
|
|
119
|
-
* @returns Ordinal UTXOs only
|
|
120
|
-
* @throws Error if API requests fail
|
|
121
|
-
*/
|
|
122
|
-
getOrdinalUtxos(address: string): Promise<UTXO[]>;
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* Create an ordinal indexer for the given network
|
|
126
|
-
*/
|
|
127
|
-
export declare function createOrdinalIndexer(network: Network): OrdinalIndexer;
|
|
128
|
-
//# sourceMappingURL=ordinal-indexer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordinal-indexer.d.ts","sourceRoot":"","sources":["../../src/services/ordinal-indexer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAI7C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB;;OAEG;IACH,OAAO,EAAE,IAAI,EAAE,CAAC;CACjB;AAID;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAExB,OAAO,EAAE,OAAO;IAM5B;;;;;;OAMG;IACG,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA8CxE;;;;;;OAMG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA6B9D;;;;;;OAMG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAKxD;;;;;;OAMG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;CAKxD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAErE"}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ordinal Indexer Service
|
|
3
|
-
*
|
|
4
|
-
* Combines Hiro Ordinals API with mempool.space to classify UTXOs:
|
|
5
|
-
* - Cardinal: Safe to spend (no inscriptions)
|
|
6
|
-
* - Ordinal: Contains inscriptions (must not spend accidentally)
|
|
7
|
-
*
|
|
8
|
-
* Uses free APIs:
|
|
9
|
-
* - Hiro Ordinals API: https://api.hiro.so/ordinals/v1/inscriptions?address={address}
|
|
10
|
-
* - mempool.space API: via MempoolApi service
|
|
11
|
-
*/
|
|
12
|
-
import { MempoolApi } from "./mempool-api.js";
|
|
13
|
-
import { HiroApiRateLimitError } from "./hiro-api.js";
|
|
14
|
-
const HIRO_ORDINALS_API_URL = "https://api.hiro.so/ordinals/v1";
|
|
15
|
-
/**
|
|
16
|
-
* Ordinal Indexer Service
|
|
17
|
-
*
|
|
18
|
-
* Note: Hiro Ordinals API only supports mainnet. On testnet, all UTXOs are
|
|
19
|
-
* treated as cardinal (safe to spend) since we cannot index inscriptions.
|
|
20
|
-
*/
|
|
21
|
-
export class OrdinalIndexer {
|
|
22
|
-
network;
|
|
23
|
-
mempoolApi;
|
|
24
|
-
isMainnet;
|
|
25
|
-
constructor(network) {
|
|
26
|
-
this.network = network;
|
|
27
|
-
this.mempoolApi = new MempoolApi(network);
|
|
28
|
-
this.isMainnet = network === "mainnet";
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Get all inscriptions for a Bitcoin address
|
|
32
|
-
*
|
|
33
|
-
* @param address - Bitcoin address (bc1... for mainnet)
|
|
34
|
-
* @returns Array of inscriptions with their output references (empty on testnet)
|
|
35
|
-
* @throws Error if API request fails
|
|
36
|
-
*/
|
|
37
|
-
async getInscriptionsForAddress(address) {
|
|
38
|
-
// Testnet: return empty (Hiro API doesn't index testnet inscriptions)
|
|
39
|
-
if (!this.isMainnet) {
|
|
40
|
-
return [];
|
|
41
|
-
}
|
|
42
|
-
const allInscriptions = [];
|
|
43
|
-
let offset = 0;
|
|
44
|
-
const limit = 60; // Hiro API default/max per page
|
|
45
|
-
// Fetch all pages
|
|
46
|
-
while (true) {
|
|
47
|
-
const url = `${HIRO_ORDINALS_API_URL}/inscriptions?address=${address}&limit=${limit}&offset=${offset}`;
|
|
48
|
-
const response = await fetch(url);
|
|
49
|
-
if (!response.ok) {
|
|
50
|
-
if (response.status === 429) {
|
|
51
|
-
const retryAfter = response.headers.get("Retry-After");
|
|
52
|
-
const retryAfterSeconds = retryAfter && !isNaN(parseInt(retryAfter, 10)) ? parseInt(retryAfter, 10) : 60;
|
|
53
|
-
throw new HiroApiRateLimitError(`Hiro Ordinals API rate limit exceeded. Retry after ${retryAfterSeconds}s`, retryAfterSeconds);
|
|
54
|
-
}
|
|
55
|
-
const errorText = await response.text().catch(() => "Unknown error");
|
|
56
|
-
throw new Error(`Failed to fetch inscriptions from Hiro API: ${response.status} ${response.statusText} - ${errorText}`);
|
|
57
|
-
}
|
|
58
|
-
const data = (await response.json());
|
|
59
|
-
allInscriptions.push(...data.results);
|
|
60
|
-
// Check if we've fetched all inscriptions
|
|
61
|
-
if (offset + data.results.length >= data.total) {
|
|
62
|
-
break;
|
|
63
|
-
}
|
|
64
|
-
offset += limit;
|
|
65
|
-
}
|
|
66
|
-
return allInscriptions;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Classify UTXOs into cardinal (safe to spend) and ordinal (contains inscriptions)
|
|
70
|
-
*
|
|
71
|
-
* @param address - Bitcoin address
|
|
72
|
-
* @returns Classified UTXOs
|
|
73
|
-
* @throws Error if API requests fail
|
|
74
|
-
*/
|
|
75
|
-
async classifyUtxos(address) {
|
|
76
|
-
// Fetch UTXOs from mempool.space
|
|
77
|
-
const utxos = await this.mempoolApi.getUtxos(address);
|
|
78
|
-
// Fetch inscriptions from Hiro Ordinals API
|
|
79
|
-
const inscriptions = await this.getInscriptionsForAddress(address);
|
|
80
|
-
// Build set of outputs that contain inscriptions
|
|
81
|
-
// Hiro API returns "output" field as "txid:vout"
|
|
82
|
-
const ordinalOutputs = new Set(inscriptions.map((inscription) => inscription.output));
|
|
83
|
-
// Classify UTXOs
|
|
84
|
-
const cardinal = [];
|
|
85
|
-
const ordinal = [];
|
|
86
|
-
for (const utxo of utxos) {
|
|
87
|
-
const outputRef = `${utxo.txid}:${utxo.vout}`;
|
|
88
|
-
if (ordinalOutputs.has(outputRef)) {
|
|
89
|
-
ordinal.push(utxo);
|
|
90
|
-
}
|
|
91
|
-
else {
|
|
92
|
-
cardinal.push(utxo);
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return { cardinal, ordinal };
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Get cardinal UTXOs (safe to spend - no inscriptions)
|
|
99
|
-
*
|
|
100
|
-
* @param address - Bitcoin address
|
|
101
|
-
* @returns Cardinal UTXOs only
|
|
102
|
-
* @throws Error if API requests fail
|
|
103
|
-
*/
|
|
104
|
-
async getCardinalUtxos(address) {
|
|
105
|
-
const classified = await this.classifyUtxos(address);
|
|
106
|
-
return classified.cardinal;
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* Get ordinal UTXOs (contain inscriptions - do not spend)
|
|
110
|
-
*
|
|
111
|
-
* @param address - Bitcoin address
|
|
112
|
-
* @returns Ordinal UTXOs only
|
|
113
|
-
* @throws Error if API requests fail
|
|
114
|
-
*/
|
|
115
|
-
async getOrdinalUtxos(address) {
|
|
116
|
-
const classified = await this.classifyUtxos(address);
|
|
117
|
-
return classified.ordinal;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
/**
|
|
121
|
-
* Create an ordinal indexer for the given network
|
|
122
|
-
*/
|
|
123
|
-
export function createOrdinalIndexer(network) {
|
|
124
|
-
return new OrdinalIndexer(network);
|
|
125
|
-
}
|
|
126
|
-
//# sourceMappingURL=ordinal-indexer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ordinal-indexer.js","sourceRoot":"","sources":["../../src/services/ordinal-indexer.ts"],"names":[],"mappings":"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"}
|