@aibtc/mcp-server 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +340 -0
  2. package/dist/api.d.ts +9 -0
  3. package/dist/api.d.ts.map +1 -0
  4. package/dist/api.js +79 -0
  5. package/dist/api.js.map +1 -0
  6. package/dist/config/contracts.d.ts +169 -0
  7. package/dist/config/contracts.d.ts.map +1 -0
  8. package/dist/config/contracts.js +250 -0
  9. package/dist/config/contracts.js.map +1 -0
  10. package/dist/config/index.d.ts +3 -0
  11. package/dist/config/index.d.ts.map +1 -0
  12. package/dist/config/index.js +3 -0
  13. package/dist/config/index.js.map +1 -0
  14. package/dist/config/networks.d.ts +11 -0
  15. package/dist/config/networks.d.ts.map +1 -0
  16. package/dist/config/networks.js +21 -0
  17. package/dist/config/networks.js.map +1 -0
  18. package/dist/endpoints/index.d.ts +2 -0
  19. package/dist/endpoints/index.d.ts.map +1 -0
  20. package/dist/endpoints/index.js +2 -0
  21. package/dist/endpoints/index.js.map +1 -0
  22. package/dist/endpoints/registry.d.ts +38 -0
  23. package/dist/endpoints/registry.d.ts.map +1 -0
  24. package/dist/endpoints/registry.js +935 -0
  25. package/dist/endpoints/registry.js.map +1 -0
  26. package/dist/index.d.ts +3 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +79 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/services/bitflow.service.d.ts +159 -0
  31. package/dist/services/bitflow.service.d.ts.map +1 -0
  32. package/dist/services/bitflow.service.js +325 -0
  33. package/dist/services/bitflow.service.js.map +1 -0
  34. package/dist/services/bns.service.d.ts +87 -0
  35. package/dist/services/bns.service.d.ts.map +1 -0
  36. package/dist/services/bns.service.js +312 -0
  37. package/dist/services/bns.service.js.map +1 -0
  38. package/dist/services/defi.service.d.ts +146 -0
  39. package/dist/services/defi.service.d.ts.map +1 -0
  40. package/dist/services/defi.service.js +461 -0
  41. package/dist/services/defi.service.js.map +1 -0
  42. package/dist/services/hiro-api.d.ts +438 -0
  43. package/dist/services/hiro-api.d.ts.map +1 -0
  44. package/dist/services/hiro-api.js +376 -0
  45. package/dist/services/hiro-api.js.map +1 -0
  46. package/dist/services/nft.service.d.ts +70 -0
  47. package/dist/services/nft.service.d.ts.map +1 -0
  48. package/dist/services/nft.service.js +148 -0
  49. package/dist/services/nft.service.js.map +1 -0
  50. package/dist/services/sbtc.service.d.ts +44 -0
  51. package/dist/services/sbtc.service.d.ts.map +1 -0
  52. package/dist/services/sbtc.service.js +100 -0
  53. package/dist/services/sbtc.service.js.map +1 -0
  54. package/dist/services/scaffold.service.d.ts +41 -0
  55. package/dist/services/scaffold.service.d.ts.map +1 -0
  56. package/dist/services/scaffold.service.js +1055 -0
  57. package/dist/services/scaffold.service.js.map +1 -0
  58. package/dist/services/stacking.service.d.ts +58 -0
  59. package/dist/services/stacking.service.d.ts.map +1 -0
  60. package/dist/services/stacking.service.js +153 -0
  61. package/dist/services/stacking.service.js.map +1 -0
  62. package/dist/services/tokens.service.d.ts +62 -0
  63. package/dist/services/tokens.service.d.ts.map +1 -0
  64. package/dist/services/tokens.service.js +119 -0
  65. package/dist/services/tokens.service.js.map +1 -0
  66. package/dist/services/wallet-manager.d.ts +107 -0
  67. package/dist/services/wallet-manager.d.ts.map +1 -0
  68. package/dist/services/wallet-manager.js +389 -0
  69. package/dist/services/wallet-manager.js.map +1 -0
  70. package/dist/services/x402.service.d.ts +26 -0
  71. package/dist/services/x402.service.d.ts.map +1 -0
  72. package/dist/services/x402.service.js +125 -0
  73. package/dist/services/x402.service.js.map +1 -0
  74. package/dist/tools/bitflow.tools.d.ts +3 -0
  75. package/dist/tools/bitflow.tools.d.ts.map +1 -0
  76. package/dist/tools/bitflow.tools.js +501 -0
  77. package/dist/tools/bitflow.tools.js.map +1 -0
  78. package/dist/tools/bns.tools.d.ts +3 -0
  79. package/dist/tools/bns.tools.d.ts.map +1 -0
  80. package/dist/tools/bns.tools.js +164 -0
  81. package/dist/tools/bns.tools.js.map +1 -0
  82. package/dist/tools/contract.tools.d.ts +3 -0
  83. package/dist/tools/contract.tools.d.ts.map +1 -0
  84. package/dist/tools/contract.tools.js +126 -0
  85. package/dist/tools/contract.tools.js.map +1 -0
  86. package/dist/tools/defi.tools.d.ts +3 -0
  87. package/dist/tools/defi.tools.d.ts.map +1 -0
  88. package/dist/tools/defi.tools.js +425 -0
  89. package/dist/tools/defi.tools.js.map +1 -0
  90. package/dist/tools/endpoint.tools.d.ts +3 -0
  91. package/dist/tools/endpoint.tools.d.ts.map +1 -0
  92. package/dist/tools/endpoint.tools.js +157 -0
  93. package/dist/tools/endpoint.tools.js.map +1 -0
  94. package/dist/tools/index.d.ts +6 -0
  95. package/dist/tools/index.d.ts.map +1 -0
  96. package/dist/tools/index.js +52 -0
  97. package/dist/tools/index.js.map +1 -0
  98. package/dist/tools/nft.tools.d.ts +3 -0
  99. package/dist/tools/nft.tools.d.ts.map +1 -0
  100. package/dist/tools/nft.tools.js +154 -0
  101. package/dist/tools/nft.tools.js.map +1 -0
  102. package/dist/tools/openrouter.tools.d.ts +3 -0
  103. package/dist/tools/openrouter.tools.d.ts.map +1 -0
  104. package/dist/tools/openrouter.tools.js +664 -0
  105. package/dist/tools/openrouter.tools.js.map +1 -0
  106. package/dist/tools/query.tools.d.ts +3 -0
  107. package/dist/tools/query.tools.d.ts.map +1 -0
  108. package/dist/tools/query.tools.js +209 -0
  109. package/dist/tools/query.tools.js.map +1 -0
  110. package/dist/tools/sbtc.tools.d.ts +3 -0
  111. package/dist/tools/sbtc.tools.d.ts.map +1 -0
  112. package/dist/tools/sbtc.tools.js +103 -0
  113. package/dist/tools/sbtc.tools.js.map +1 -0
  114. package/dist/tools/scaffold.tools.d.ts +3 -0
  115. package/dist/tools/scaffold.tools.d.ts.map +1 -0
  116. package/dist/tools/scaffold.tools.js +216 -0
  117. package/dist/tools/scaffold.tools.js.map +1 -0
  118. package/dist/tools/stacking.tools.d.ts +3 -0
  119. package/dist/tools/stacking.tools.d.ts.map +1 -0
  120. package/dist/tools/stacking.tools.js +112 -0
  121. package/dist/tools/stacking.tools.js.map +1 -0
  122. package/dist/tools/tokens.tools.d.ts +3 -0
  123. package/dist/tools/tokens.tools.d.ts.map +1 -0
  124. package/dist/tools/tokens.tools.js +154 -0
  125. package/dist/tools/tokens.tools.js.map +1 -0
  126. package/dist/tools/transfer.tools.d.ts +3 -0
  127. package/dist/tools/transfer.tools.d.ts.map +1 -0
  128. package/dist/tools/transfer.tools.js +62 -0
  129. package/dist/tools/transfer.tools.js.map +1 -0
  130. package/dist/tools/wallet-management.tools.d.ts +6 -0
  131. package/dist/tools/wallet-management.tools.d.ts.map +1 -0
  132. package/dist/tools/wallet-management.tools.js +390 -0
  133. package/dist/tools/wallet-management.tools.js.map +1 -0
  134. package/dist/tools/wallet.tools.d.ts +3 -0
  135. package/dist/tools/wallet.tools.d.ts.map +1 -0
  136. package/dist/tools/wallet.tools.js +105 -0
  137. package/dist/tools/wallet.tools.js.map +1 -0
  138. package/dist/transactions/builder.d.ts +56 -0
  139. package/dist/transactions/builder.d.ts.map +1 -0
  140. package/dist/transactions/builder.js +134 -0
  141. package/dist/transactions/builder.js.map +1 -0
  142. package/dist/transactions/clarity-values.d.ts +67 -0
  143. package/dist/transactions/clarity-values.d.ts.map +1 -0
  144. package/dist/transactions/clarity-values.js +169 -0
  145. package/dist/transactions/clarity-values.js.map +1 -0
  146. package/dist/transactions/post-conditions.d.ts +27 -0
  147. package/dist/transactions/post-conditions.d.ts.map +1 -0
  148. package/dist/transactions/post-conditions.js +101 -0
  149. package/dist/transactions/post-conditions.js.map +1 -0
  150. package/dist/utils/encryption.d.ts +33 -0
  151. package/dist/utils/encryption.d.ts.map +1 -0
  152. package/dist/utils/encryption.js +110 -0
  153. package/dist/utils/encryption.js.map +1 -0
  154. package/dist/utils/errors.d.ts +84 -0
  155. package/dist/utils/errors.d.ts.map +1 -0
  156. package/dist/utils/errors.js +132 -0
  157. package/dist/utils/errors.js.map +1 -0
  158. package/dist/utils/formatting.d.ts +51 -0
  159. package/dist/utils/formatting.d.ts.map +1 -0
  160. package/dist/utils/formatting.js +114 -0
  161. package/dist/utils/formatting.js.map +1 -0
  162. package/dist/utils/index.d.ts +6 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +6 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/storage.d.ts +90 -0
  167. package/dist/utils/storage.d.ts.map +1 -0
  168. package/dist/utils/storage.js +196 -0
  169. package/dist/utils/storage.js.map +1 -0
  170. package/dist/utils/validation.d.ts +67 -0
  171. package/dist/utils/validation.d.ts.map +1 -0
  172. package/dist/utils/validation.js +74 -0
  173. package/dist/utils/validation.js.map +1 -0
  174. package/dist/wallet.d.ts +86 -0
  175. package/dist/wallet.d.ts.map +1 -0
  176. package/dist/wallet.js +279 -0
  177. package/dist/wallet.js.map +1 -0
  178. package/package.json +58 -0
@@ -0,0 +1,110 @@
1
+ import crypto from "crypto";
2
+ // Scrypt parameters - memory-hard to resist GPU/ASIC attacks
3
+ const SCRYPT_PARAMS = {
4
+ N: 16384, // 2^14 - CPU/memory cost
5
+ r: 8, // Block size
6
+ p: 1, // Parallelization
7
+ keyLen: 32, // 256 bits for AES-256
8
+ };
9
+ const CURRENT_VERSION = 1;
10
+ /**
11
+ * Derive encryption key from password using Scrypt
12
+ */
13
+ function deriveKey(password, salt) {
14
+ return new Promise((resolve, reject) => {
15
+ crypto.scrypt(password, salt, SCRYPT_PARAMS.keyLen, {
16
+ N: SCRYPT_PARAMS.N,
17
+ r: SCRYPT_PARAMS.r,
18
+ p: SCRYPT_PARAMS.p,
19
+ }, (err, derivedKey) => {
20
+ if (err) {
21
+ reject(err);
22
+ }
23
+ else {
24
+ resolve(derivedKey);
25
+ }
26
+ });
27
+ });
28
+ }
29
+ /**
30
+ * Encrypt plaintext with password using AES-256-GCM
31
+ */
32
+ export async function encrypt(plaintext, password) {
33
+ // Generate random salt and IV
34
+ const salt = crypto.randomBytes(32);
35
+ const iv = crypto.randomBytes(12); // GCM recommended IV size
36
+ // Derive key from password
37
+ const key = await deriveKey(password, salt);
38
+ // Encrypt with AES-256-GCM
39
+ const cipher = crypto.createCipheriv("aes-256-gcm", key, iv);
40
+ const encrypted = Buffer.concat([
41
+ cipher.update(plaintext, "utf8"),
42
+ cipher.final(),
43
+ ]);
44
+ const authTag = cipher.getAuthTag();
45
+ return {
46
+ ciphertext: encrypted.toString("base64"),
47
+ iv: iv.toString("base64"),
48
+ authTag: authTag.toString("base64"),
49
+ salt: salt.toString("base64"),
50
+ scryptParams: SCRYPT_PARAMS,
51
+ version: CURRENT_VERSION,
52
+ };
53
+ }
54
+ /**
55
+ * Decrypt ciphertext with password using AES-256-GCM
56
+ */
57
+ export async function decrypt(encrypted, password) {
58
+ // Decode from base64
59
+ const ciphertext = Buffer.from(encrypted.ciphertext, "base64");
60
+ const iv = Buffer.from(encrypted.iv, "base64");
61
+ const authTag = Buffer.from(encrypted.authTag, "base64");
62
+ const salt = Buffer.from(encrypted.salt, "base64");
63
+ // Derive key using stored parameters
64
+ const key = await deriveKeyWithParams(password, salt, encrypted.scryptParams);
65
+ // Decrypt with AES-256-GCM
66
+ const decipher = crypto.createDecipheriv("aes-256-gcm", key, iv);
67
+ decipher.setAuthTag(authTag);
68
+ try {
69
+ const decrypted = Buffer.concat([
70
+ decipher.update(ciphertext),
71
+ decipher.final(),
72
+ ]);
73
+ return decrypted.toString("utf8");
74
+ }
75
+ catch {
76
+ throw new Error("Decryption failed - invalid password or corrupted data");
77
+ }
78
+ }
79
+ /**
80
+ * Derive key with custom scrypt parameters (for stored data)
81
+ */
82
+ function deriveKeyWithParams(password, salt, params) {
83
+ return new Promise((resolve, reject) => {
84
+ crypto.scrypt(password, salt, params.keyLen, {
85
+ N: params.N,
86
+ r: params.r,
87
+ p: params.p,
88
+ }, (err, derivedKey) => {
89
+ if (err) {
90
+ reject(err);
91
+ }
92
+ else {
93
+ resolve(derivedKey);
94
+ }
95
+ });
96
+ });
97
+ }
98
+ /**
99
+ * Generate cryptographically secure random bytes
100
+ */
101
+ export function randomBytes(length) {
102
+ return crypto.randomBytes(length);
103
+ }
104
+ /**
105
+ * Generate a random UUID for wallet IDs
106
+ */
107
+ export function generateWalletId() {
108
+ return crypto.randomUUID();
109
+ }
110
+ //# sourceMappingURL=encryption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/utils/encryption.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Base error class for aibtc-mcp-server
3
+ */
4
+ export declare class AibtcError extends Error {
5
+ readonly code: string;
6
+ readonly details?: unknown | undefined;
7
+ constructor(message: string, code: string, details?: unknown | undefined);
8
+ }
9
+ /**
10
+ * Error for invalid configuration
11
+ */
12
+ export declare class ConfigError extends AibtcError {
13
+ constructor(message: string, details?: unknown);
14
+ }
15
+ /**
16
+ * Error for transaction failures
17
+ */
18
+ export declare class TransactionError extends AibtcError {
19
+ readonly txid?: string | undefined;
20
+ constructor(message: string, txid?: string | undefined, details?: unknown);
21
+ }
22
+ /**
23
+ * Error for API failures
24
+ */
25
+ export declare class ApiError extends AibtcError {
26
+ readonly statusCode?: number | undefined;
27
+ constructor(message: string, statusCode?: number | undefined, details?: unknown);
28
+ }
29
+ /**
30
+ * Error for contract call failures
31
+ */
32
+ export declare class ContractError extends AibtcError {
33
+ readonly contractId?: string | undefined;
34
+ constructor(message: string, contractId?: string | undefined, details?: unknown);
35
+ }
36
+ /**
37
+ * Base error for wallet operations
38
+ */
39
+ export declare class WalletError extends AibtcError {
40
+ constructor(message: string, details?: unknown);
41
+ }
42
+ /**
43
+ * Error when wallet is locked and operation requires unlocked wallet
44
+ */
45
+ export declare class WalletLockedError extends WalletError {
46
+ constructor();
47
+ }
48
+ /**
49
+ * Error when wallet is not found
50
+ */
51
+ export declare class WalletNotFoundError extends WalletError {
52
+ constructor(walletId: string);
53
+ }
54
+ /**
55
+ * Error for invalid password
56
+ */
57
+ export declare class InvalidPasswordError extends WalletError {
58
+ constructor();
59
+ }
60
+ /**
61
+ * Error for invalid mnemonic
62
+ */
63
+ export declare class InvalidMnemonicError extends WalletError {
64
+ constructor();
65
+ }
66
+ /**
67
+ * Format error for tool response
68
+ */
69
+ export declare function formatError(error: unknown): {
70
+ message: string;
71
+ code?: string;
72
+ details?: unknown;
73
+ };
74
+ /**
75
+ * Create error response for MCP tools
76
+ */
77
+ export declare function createErrorResponse(error: unknown): {
78
+ content: Array<{
79
+ type: "text";
80
+ text: string;
81
+ }>;
82
+ isError: true;
83
+ };
84
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;aAGjB,IAAI,EAAE,MAAM;aACZ,OAAO,CAAC,EAAE,OAAO;gBAFjC,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,YAAA;CAKpC;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;aACD,IAAI,CAAC,EAAE,MAAM;gBAA9C,OAAO,EAAE,MAAM,EAAkB,IAAI,CAAC,EAAE,MAAM,YAAA,EAAE,OAAO,CAAC,EAAE,OAAO;CAI9E;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,UAAU;aAGpB,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnC,OAAO,CAAC,EAAE,OAAO;CAKpB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,UAAU;aAGzB,UAAU,CAAC,EAAE,MAAM;gBADnC,OAAO,EAAE,MAAM,EACC,UAAU,CAAC,EAAE,MAAM,YAAA,EACnC,OAAO,CAAC,EAAE,OAAO;CAKpB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,UAAU;gBAC7B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO;CAI/C;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;CAKjD;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,WAAW;gBACtC,QAAQ,EAAE,MAAM;CAI7B;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;;CAKpD;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,WAAW;;CAKpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAcjG;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG;IACnD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf,CAWA"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Base error class for aibtc-mcp-server
3
+ */
4
+ export class AibtcError extends Error {
5
+ code;
6
+ details;
7
+ constructor(message, code, details) {
8
+ super(message);
9
+ this.code = code;
10
+ this.details = details;
11
+ this.name = "AibtcError";
12
+ }
13
+ }
14
+ /**
15
+ * Error for invalid configuration
16
+ */
17
+ export class ConfigError extends AibtcError {
18
+ constructor(message, details) {
19
+ super(message, "CONFIG_ERROR", details);
20
+ this.name = "ConfigError";
21
+ }
22
+ }
23
+ /**
24
+ * Error for transaction failures
25
+ */
26
+ export class TransactionError extends AibtcError {
27
+ txid;
28
+ constructor(message, txid, details) {
29
+ super(message, "TRANSACTION_ERROR", details);
30
+ this.txid = txid;
31
+ this.name = "TransactionError";
32
+ }
33
+ }
34
+ /**
35
+ * Error for API failures
36
+ */
37
+ export class ApiError extends AibtcError {
38
+ statusCode;
39
+ constructor(message, statusCode, details) {
40
+ super(message, "API_ERROR", details);
41
+ this.statusCode = statusCode;
42
+ this.name = "ApiError";
43
+ }
44
+ }
45
+ /**
46
+ * Error for contract call failures
47
+ */
48
+ export class ContractError extends AibtcError {
49
+ contractId;
50
+ constructor(message, contractId, details) {
51
+ super(message, "CONTRACT_ERROR", details);
52
+ this.contractId = contractId;
53
+ this.name = "ContractError";
54
+ }
55
+ }
56
+ /**
57
+ * Base error for wallet operations
58
+ */
59
+ export class WalletError extends AibtcError {
60
+ constructor(message, details) {
61
+ super(message, "WALLET_ERROR", details);
62
+ this.name = "WalletError";
63
+ }
64
+ }
65
+ /**
66
+ * Error when wallet is locked and operation requires unlocked wallet
67
+ */
68
+ export class WalletLockedError extends WalletError {
69
+ constructor() {
70
+ super("Wallet is locked. Use wallet_unlock to unlock it.");
71
+ this.name = "WalletLockedError";
72
+ }
73
+ }
74
+ /**
75
+ * Error when wallet is not found
76
+ */
77
+ export class WalletNotFoundError extends WalletError {
78
+ constructor(walletId) {
79
+ super(`Wallet not found: ${walletId}`);
80
+ this.name = "WalletNotFoundError";
81
+ }
82
+ }
83
+ /**
84
+ * Error for invalid password
85
+ */
86
+ export class InvalidPasswordError extends WalletError {
87
+ constructor() {
88
+ super("Invalid password");
89
+ this.name = "InvalidPasswordError";
90
+ }
91
+ }
92
+ /**
93
+ * Error for invalid mnemonic
94
+ */
95
+ export class InvalidMnemonicError extends WalletError {
96
+ constructor() {
97
+ super("Invalid mnemonic phrase");
98
+ this.name = "InvalidMnemonicError";
99
+ }
100
+ }
101
+ /**
102
+ * Format error for tool response
103
+ */
104
+ export function formatError(error) {
105
+ if (error instanceof AibtcError) {
106
+ return {
107
+ message: error.message,
108
+ code: error.code,
109
+ details: error.details,
110
+ };
111
+ }
112
+ if (error instanceof Error) {
113
+ return { message: error.message };
114
+ }
115
+ return { message: "Unknown error occurred" };
116
+ }
117
+ /**
118
+ * Create error response for MCP tools
119
+ */
120
+ export function createErrorResponse(error) {
121
+ const formatted = formatError(error);
122
+ return {
123
+ content: [
124
+ {
125
+ type: "text",
126
+ text: `Error: ${formatted.message}${formatted.code ? ` (${formatted.code})` : ""}`,
127
+ },
128
+ ],
129
+ isError: true,
130
+ };
131
+ }
132
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Format STX amount from micro-STX to STX
3
+ */
4
+ export declare function formatStx(microStx: string | bigint): string;
5
+ /**
6
+ * Format sBTC amount from sats to BTC
7
+ */
8
+ export declare function formatSbtc(sats: string | bigint): string;
9
+ /**
10
+ * Format token amount with decimals
11
+ */
12
+ export declare function formatTokenAmount(amount: string | bigint, decimals: number, symbol?: string): string;
13
+ /**
14
+ * Parse STX amount string to micro-STX
15
+ */
16
+ export declare function parseStxAmount(amount: string): bigint;
17
+ /**
18
+ * Format address for display (truncated)
19
+ */
20
+ export declare function formatAddress(address: string, chars?: number): string;
21
+ /**
22
+ * Format transaction ID for display
23
+ */
24
+ export declare function formatTxId(txid: string, chars?: number): string;
25
+ /**
26
+ * Format date from timestamp
27
+ */
28
+ export declare function formatDate(timestamp: number): string;
29
+ /**
30
+ * Format block height
31
+ */
32
+ export declare function formatBlockHeight(height: number): string;
33
+ /**
34
+ * Create JSON response for MCP tools
35
+ */
36
+ export declare function createJsonResponse(data: unknown): {
37
+ content: Array<{
38
+ type: "text";
39
+ text: string;
40
+ }>;
41
+ };
42
+ /**
43
+ * Create success response for MCP tools
44
+ */
45
+ export declare function createSuccessResponse(message: string, data?: unknown): {
46
+ content: Array<{
47
+ type: "text";
48
+ text: string;
49
+ }>;
50
+ };
51
+ //# sourceMappingURL=formatting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.d.ts","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAW3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAWxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAWrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAKxE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG;IACjD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CASA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,OAAO,GACb;IACD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChD,CAaA"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Format STX amount from micro-STX to STX
3
+ */
4
+ export function formatStx(microStx) {
5
+ const value = BigInt(microStx);
6
+ const stx = value / BigInt(1_000_000);
7
+ const remainder = value % BigInt(1_000_000);
8
+ if (remainder === BigInt(0)) {
9
+ return `${stx} STX`;
10
+ }
11
+ const decimal = remainder.toString().padStart(6, "0").replace(/0+$/, "");
12
+ return `${stx}.${decimal} STX`;
13
+ }
14
+ /**
15
+ * Format sBTC amount from sats to BTC
16
+ */
17
+ export function formatSbtc(sats) {
18
+ const value = BigInt(sats);
19
+ const btc = value / BigInt(100_000_000);
20
+ const remainder = value % BigInt(100_000_000);
21
+ if (remainder === BigInt(0)) {
22
+ return `${btc} sBTC`;
23
+ }
24
+ const decimal = remainder.toString().padStart(8, "0").replace(/0+$/, "");
25
+ return `${btc}.${decimal} sBTC`;
26
+ }
27
+ /**
28
+ * Format token amount with decimals
29
+ */
30
+ export function formatTokenAmount(amount, decimals, symbol) {
31
+ const value = BigInt(amount);
32
+ const divisor = BigInt(10 ** decimals);
33
+ const whole = value / divisor;
34
+ const remainder = value % divisor;
35
+ let result;
36
+ if (remainder === BigInt(0)) {
37
+ result = whole.toString();
38
+ }
39
+ else {
40
+ const decimal = remainder.toString().padStart(decimals, "0").replace(/0+$/, "");
41
+ result = `${whole}.${decimal}`;
42
+ }
43
+ return symbol ? `${result} ${symbol}` : result;
44
+ }
45
+ /**
46
+ * Parse STX amount string to micro-STX
47
+ */
48
+ export function parseStxAmount(amount) {
49
+ // Remove STX suffix if present
50
+ const cleaned = amount.replace(/\s*STX$/i, "").trim();
51
+ if (cleaned.includes(".")) {
52
+ const [whole, decimal] = cleaned.split(".");
53
+ const paddedDecimal = (decimal || "").padEnd(6, "0").slice(0, 6);
54
+ return BigInt(whole || "0") * BigInt(1_000_000) + BigInt(paddedDecimal);
55
+ }
56
+ return BigInt(cleaned) * BigInt(1_000_000);
57
+ }
58
+ /**
59
+ * Format address for display (truncated)
60
+ */
61
+ export function formatAddress(address, chars = 8) {
62
+ if (address.length <= chars * 2 + 3) {
63
+ return address;
64
+ }
65
+ return `${address.slice(0, chars)}...${address.slice(-chars)}`;
66
+ }
67
+ /**
68
+ * Format transaction ID for display
69
+ */
70
+ export function formatTxId(txid, chars = 8) {
71
+ return formatAddress(txid, chars);
72
+ }
73
+ /**
74
+ * Format date from timestamp
75
+ */
76
+ export function formatDate(timestamp) {
77
+ return new Date(timestamp * 1000).toISOString();
78
+ }
79
+ /**
80
+ * Format block height
81
+ */
82
+ export function formatBlockHeight(height) {
83
+ return height.toLocaleString();
84
+ }
85
+ /**
86
+ * Create JSON response for MCP tools
87
+ */
88
+ export function createJsonResponse(data) {
89
+ return {
90
+ content: [
91
+ {
92
+ type: "text",
93
+ text: JSON.stringify(data, null, 2),
94
+ },
95
+ ],
96
+ };
97
+ }
98
+ /**
99
+ * Create success response for MCP tools
100
+ */
101
+ export function createSuccessResponse(message, data) {
102
+ const response = data
103
+ ? { success: true, message, ...data }
104
+ : { success: true, message };
105
+ return {
106
+ content: [
107
+ {
108
+ type: "text",
109
+ text: JSON.stringify(response, null, 2),
110
+ },
111
+ ],
112
+ };
113
+ }
114
+ //# sourceMappingURL=formatting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatting.js","sourceRoot":"","sources":["../../src/utils/formatting.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export * from "./errors.js";
2
+ export * from "./formatting.js";
3
+ export * from "./validation.js";
4
+ export * from "./encryption.js";
5
+ export * from "./storage.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export * from "./errors.js";
2
+ export * from "./formatting.js";
3
+ export * from "./validation.js";
4
+ export * from "./encryption.js";
5
+ export * from "./storage.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,90 @@
1
+ import type { EncryptedData } from "./encryption.js";
2
+ import type { Network } from "../config/networks.js";
3
+ /**
4
+ *
5
+ * Wallet metadata (stored in index, no sensitive data)
6
+ */
7
+ export interface WalletMetadata {
8
+ id: string;
9
+ name: string;
10
+ address: string;
11
+ network: Network;
12
+ createdAt: string;
13
+ lastUsed?: string;
14
+ }
15
+ /**
16
+ * Wallet index file structure
17
+ */
18
+ export interface WalletIndex {
19
+ version: number;
20
+ wallets: WalletMetadata[];
21
+ }
22
+ /**
23
+ * App configuration
24
+ */
25
+ export interface AppConfig {
26
+ version: number;
27
+ activeWalletId: string | null;
28
+ autoLockTimeout: number;
29
+ }
30
+ /**
31
+ * Keystore file structure (contains encrypted mnemonic)
32
+ */
33
+ export interface KeystoreFile {
34
+ version: number;
35
+ encrypted: EncryptedData;
36
+ addressIndex: number;
37
+ }
38
+ /**
39
+ * Get storage directory path
40
+ */
41
+ export declare function getStorageDir(): string;
42
+ /**
43
+ * Check if storage directory exists
44
+ */
45
+ export declare function storageExists(): Promise<boolean>;
46
+ /**
47
+ * Initialize storage directory structure
48
+ */
49
+ export declare function initializeStorage(): Promise<void>;
50
+ /**
51
+ * Read wallet index
52
+ */
53
+ export declare function readWalletIndex(): Promise<WalletIndex>;
54
+ /**
55
+ * Write wallet index (atomic write with temp file)
56
+ */
57
+ export declare function writeWalletIndex(index: WalletIndex): Promise<void>;
58
+ /**
59
+ * Read app config
60
+ */
61
+ export declare function readAppConfig(): Promise<AppConfig>;
62
+ /**
63
+ * Write app config (atomic write)
64
+ */
65
+ export declare function writeAppConfig(config: AppConfig): Promise<void>;
66
+ /**
67
+ * Read keystore for a wallet
68
+ */
69
+ export declare function readKeystore(walletId: string): Promise<KeystoreFile>;
70
+ /**
71
+ * Write keystore for a wallet (creates directory if needed)
72
+ */
73
+ export declare function writeKeystore(walletId: string, keystore: KeystoreFile): Promise<void>;
74
+ /**
75
+ * Delete a wallet directory and its contents
76
+ */
77
+ export declare function deleteWalletStorage(walletId: string): Promise<void>;
78
+ /**
79
+ * Update wallet metadata in index
80
+ */
81
+ export declare function updateWalletMetadata(walletId: string, updates: Partial<WalletMetadata>): Promise<void>;
82
+ /**
83
+ * Add wallet to index
84
+ */
85
+ export declare function addWalletToIndex(wallet: WalletMetadata): Promise<void>;
86
+ /**
87
+ * Remove wallet from index
88
+ */
89
+ export declare function removeWalletFromIndex(walletId: string): Promise<void>;
90
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/utils/storage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AA6BrD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,aAAa,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAOtD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BvD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAU5D;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,SAAS,CAAC,CAWxD;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAMrE;AASD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAI1E;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3E"}