starkfi 0.3.2 → 0.3.4

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 (146) hide show
  1. package/MCP.md +1 -1
  2. package/README.md +27 -6
  3. package/dist/commands/auth/login.js +2 -1
  4. package/dist/commands/auth/login.js.map +1 -1
  5. package/dist/commands/batch/batch.d.ts.map +1 -1
  6. package/dist/commands/batch/batch.js +6 -15
  7. package/dist/commands/batch/batch.js.map +1 -1
  8. package/dist/commands/chain/tx-status.d.ts.map +1 -1
  9. package/dist/commands/chain/tx-status.js +8 -13
  10. package/dist/commands/chain/tx-status.js.map +1 -1
  11. package/dist/commands/config/config.d.ts.map +1 -1
  12. package/dist/commands/config/config.js +9 -6
  13. package/dist/commands/config/config.js.map +1 -1
  14. package/dist/commands/lending/lending.d.ts.map +1 -1
  15. package/dist/commands/lending/lending.js +46 -11
  16. package/dist/commands/lending/lending.js.map +1 -1
  17. package/dist/commands/portfolio/portfolio.d.ts.map +1 -1
  18. package/dist/commands/portfolio/portfolio.js +21 -7
  19. package/dist/commands/portfolio/portfolio.js.map +1 -1
  20. package/dist/commands/staking/staking.d.ts.map +1 -1
  21. package/dist/commands/staking/staking.js +30 -9
  22. package/dist/commands/staking/staking.js.map +1 -1
  23. package/dist/commands/system/status.d.ts +3 -0
  24. package/dist/commands/system/status.d.ts.map +1 -0
  25. package/dist/commands/system/status.js +41 -0
  26. package/dist/commands/system/status.js.map +1 -0
  27. package/dist/commands/trade/multi-swap.d.ts.map +1 -1
  28. package/dist/commands/trade/multi-swap.js +5 -14
  29. package/dist/commands/trade/multi-swap.js.map +1 -1
  30. package/dist/commands/trade/swap.d.ts.map +1 -1
  31. package/dist/commands/trade/swap.js +4 -13
  32. package/dist/commands/trade/swap.js.map +1 -1
  33. package/dist/commands/wallet/address.d.ts.map +1 -1
  34. package/dist/commands/wallet/address.js +1 -1
  35. package/dist/commands/wallet/address.js.map +1 -1
  36. package/dist/commands/wallet/balance.d.ts.map +1 -1
  37. package/dist/commands/wallet/balance.js +8 -7
  38. package/dist/commands/wallet/balance.js.map +1 -1
  39. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  40. package/dist/commands/wallet/deploy.js +9 -15
  41. package/dist/commands/wallet/deploy.js.map +1 -1
  42. package/dist/commands/wallet/send.d.ts.map +1 -1
  43. package/dist/commands/wallet/send.js +4 -13
  44. package/dist/commands/wallet/send.js.map +1 -1
  45. package/dist/index.js +3 -3
  46. package/dist/index.js.map +1 -1
  47. package/dist/lib/cli-helpers.d.ts +8 -0
  48. package/dist/lib/cli-helpers.d.ts.map +1 -0
  49. package/dist/lib/cli-helpers.js +20 -0
  50. package/dist/lib/cli-helpers.js.map +1 -0
  51. package/dist/lib/config.d.ts +1 -1
  52. package/dist/lib/config.d.ts.map +1 -1
  53. package/dist/lib/config.js +1 -1
  54. package/dist/lib/config.js.map +1 -1
  55. package/dist/lib/format.d.ts +2 -1
  56. package/dist/lib/format.d.ts.map +1 -1
  57. package/dist/lib/format.js +21 -4
  58. package/dist/lib/format.js.map +1 -1
  59. package/dist/lib/parse-starknet-error.d.ts +2 -0
  60. package/dist/lib/parse-starknet-error.d.ts.map +1 -0
  61. package/dist/lib/parse-starknet-error.js +81 -0
  62. package/dist/lib/parse-starknet-error.js.map +1 -0
  63. package/dist/mcp/handlers/auth.js +1 -1
  64. package/dist/mcp/handlers/auth.js.map +1 -1
  65. package/dist/mcp/handlers/batch.d.ts.map +1 -1
  66. package/dist/mcp/handlers/batch.js +17 -24
  67. package/dist/mcp/handlers/batch.js.map +1 -1
  68. package/dist/mcp/handlers/config.d.ts +1 -1
  69. package/dist/mcp/handlers/config.d.ts.map +1 -1
  70. package/dist/mcp/handlers/config.js +4 -0
  71. package/dist/mcp/handlers/config.js.map +1 -1
  72. package/dist/mcp/handlers/context.d.ts +10 -0
  73. package/dist/mcp/handlers/context.d.ts.map +1 -0
  74. package/dist/mcp/handlers/context.js +16 -0
  75. package/dist/mcp/handlers/context.js.map +1 -0
  76. package/dist/mcp/handlers/index.d.ts +1 -0
  77. package/dist/mcp/handlers/index.d.ts.map +1 -1
  78. package/dist/mcp/handlers/index.js +1 -0
  79. package/dist/mcp/handlers/index.js.map +1 -1
  80. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  81. package/dist/mcp/handlers/lending.js +105 -116
  82. package/dist/mcp/handlers/lending.js.map +1 -1
  83. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -1
  84. package/dist/mcp/handlers/multi-swap.js +31 -39
  85. package/dist/mcp/handlers/multi-swap.js.map +1 -1
  86. package/dist/mcp/handlers/portfolio.d.ts.map +1 -1
  87. package/dist/mcp/handlers/portfolio.js +5 -6
  88. package/dist/mcp/handlers/portfolio.js.map +1 -1
  89. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  90. package/dist/mcp/handlers/staking.js +73 -77
  91. package/dist/mcp/handlers/staking.js.map +1 -1
  92. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  93. package/dist/mcp/handlers/trade.js +32 -40
  94. package/dist/mcp/handlers/trade.js.map +1 -1
  95. package/dist/mcp/handlers/utils.d.ts +7 -0
  96. package/dist/mcp/handlers/utils.d.ts.map +1 -1
  97. package/dist/mcp/handlers/utils.js +14 -0
  98. package/dist/mcp/handlers/utils.js.map +1 -1
  99. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  100. package/dist/mcp/handlers/wallet.js +61 -65
  101. package/dist/mcp/handlers/wallet.js.map +1 -1
  102. package/dist/mcp/tools/auth.d.ts.map +1 -1
  103. package/dist/mcp/tools/auth.js +10 -2
  104. package/dist/mcp/tools/auth.js.map +1 -1
  105. package/dist/mcp/tools/error-handling.d.ts.map +1 -1
  106. package/dist/mcp/tools/error-handling.js +9 -15
  107. package/dist/mcp/tools/error-handling.js.map +1 -1
  108. package/dist/services/auth/session.js +1 -1
  109. package/dist/services/auth/session.js.map +1 -1
  110. package/dist/services/config/config.d.ts +1 -0
  111. package/dist/services/config/config.d.ts.map +1 -1
  112. package/dist/services/config/config.js +4 -0
  113. package/dist/services/config/config.js.map +1 -1
  114. package/dist/services/fibrous/route.d.ts +1 -0
  115. package/dist/services/fibrous/route.d.ts.map +1 -1
  116. package/dist/services/fibrous/route.js +26 -1
  117. package/dist/services/fibrous/route.js.map +1 -1
  118. package/dist/services/portfolio/portfolio.d.ts +2 -0
  119. package/dist/services/portfolio/portfolio.d.ts.map +1 -1
  120. package/dist/services/portfolio/portfolio.js +21 -24
  121. package/dist/services/portfolio/portfolio.js.map +1 -1
  122. package/dist/services/simulate/simulate.d.ts.map +1 -1
  123. package/dist/services/simulate/simulate.js +7 -6
  124. package/dist/services/simulate/simulate.js.map +1 -1
  125. package/dist/services/staking/staking.d.ts.map +1 -1
  126. package/dist/services/staking/staking.js +16 -3
  127. package/dist/services/staking/staking.js.map +1 -1
  128. package/dist/services/starkzap/client.d.ts +1 -1
  129. package/dist/services/starkzap/client.d.ts.map +1 -1
  130. package/dist/services/starkzap/client.js +11 -6
  131. package/dist/services/starkzap/client.js.map +1 -1
  132. package/dist/services/tokens/tokens.d.ts.map +1 -1
  133. package/dist/services/tokens/tokens.js +17 -9
  134. package/dist/services/tokens/tokens.js.map +1 -1
  135. package/dist/services/vesu/lending.d.ts.map +1 -1
  136. package/dist/services/vesu/lending.js +0 -7
  137. package/dist/services/vesu/lending.js.map +1 -1
  138. package/dist/services/vesu/pools.d.ts +4 -0
  139. package/dist/services/vesu/pools.d.ts.map +1 -1
  140. package/dist/services/vesu/pools.js +8 -0
  141. package/dist/services/vesu/pools.js.map +1 -1
  142. package/package.json +7 -3
  143. package/skills/config/SKILL.md +9 -0
  144. package/skills/lending/SKILL.md +20 -9
  145. package/skills/portfolio/SKILL.md +1 -1
  146. package/skills/staking/SKILL.md +1 -1
@@ -0,0 +1,8 @@
1
+ import { createSpinner } from "./format.js";
2
+ type Spinner = ReturnType<typeof createSpinner>;
3
+ export declare function runCommand<T>(spinnerText: string, successText: string, failText: string, fn: (spinner: Spinner) => Promise<T>, render: (data: T) => void): Promise<void>;
4
+ export declare function outputResult(data: Record<string, unknown>, opts: {
5
+ json?: boolean;
6
+ }): void;
7
+ export {};
8
+ //# sourceMappingURL=cli-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/cli-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA6B,MAAM,aAAa,CAAC;AAEvE,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC;AAGhD,wBAAsB,UAAU,CAAC,CAAC,EACjC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EACpC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GACvB,OAAO,CAAC,IAAI,CAAC,CAWf;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAE1F"}
@@ -0,0 +1,20 @@
1
+ import { createSpinner, formatResult, formatError } from "./format.js";
2
+ // Wraps the standard CLI spinner + try/catch + process.exit(1) pattern.
3
+ export async function runCommand(spinnerText, successText, failText, fn, render) {
4
+ const spinner = createSpinner(spinnerText).start();
5
+ try {
6
+ const result = await fn(spinner);
7
+ spinner.succeed(successText);
8
+ render(result);
9
+ }
10
+ catch (error) {
11
+ spinner.fail(failText);
12
+ console.error(formatError(error));
13
+ process.exit(1);
14
+ }
15
+ }
16
+ // Outputs a result object, respecting the --json flag.
17
+ export function outputResult(data, opts) {
18
+ console.log(formatResult(data, { json: opts.json }));
19
+ }
20
+ //# sourceMappingURL=cli-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-helpers.js","sourceRoot":"","sources":["../../src/lib/cli-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAIvE,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC/B,WAAmB,EACnB,WAAmB,EACnB,QAAgB,EAChB,EAAoC,EACpC,MAAyB;IAEzB,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC7B,MAAM,CAAC,MAAM,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,IAA6B,EAAE,IAAwB;IACnF,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const STARKFI_API_URL_DEFAULT = "http://localhost:3001";
1
+ export declare const STARKFI_API_URL_DEFAULT = "https://2c29jsb475.eu-central-1.awsapprunner.com";
2
2
  export declare const DATA_DIR: string;
3
3
  export declare const CONFIG_DIR: string;
4
4
  export declare function explorerUrl(hash: string, network: "mainnet" | "sepolia"): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,0BAA0B,CAAC;AAE/D,eAAO,MAAM,QAAQ,QAAa,CAAC;AACnC,eAAO,MAAM,UAAU,QAAe,CAAC;AAEvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAIhF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,uBAAuB,qDAAqD,CAAC;AAE1F,eAAO,MAAM,QAAQ,QAAa,CAAC;AACnC,eAAO,MAAM,UAAU,QAAe,CAAC;AAEvC,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAIhF"}
@@ -1,6 +1,6 @@
1
1
  import envPaths from "env-paths";
2
2
  const paths = envPaths("starkfi");
3
- export const STARKFI_API_URL_DEFAULT = "http://localhost:3001";
3
+ export const STARKFI_API_URL_DEFAULT = "https://2c29jsb475.eu-central-1.awsapprunner.com";
4
4
  export const DATA_DIR = paths.data;
5
5
  export const CONFIG_DIR = paths.config;
6
6
  export function explorerUrl(hash, network) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAEvC,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAA8B;IACvE,MAAM,IAAI,GACT,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gCAAgC,CAAC;IACrF,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,uBAAuB,GAAG,kDAAkD,CAAC;AAE1F,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;AAEvC,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,OAA8B;IACvE,MAAM,IAAI,GACT,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,gCAAgC,CAAC;IACrF,OAAO,GAAG,IAAI,OAAO,IAAI,EAAE,CAAC;AAC7B,CAAC"}
@@ -1,9 +1,9 @@
1
1
  export declare function formatResult(data: Record<string, unknown>, options?: {
2
2
  json?: boolean;
3
3
  }): string;
4
+ export declare function formatActualFee(rawFee: unknown, fallback?: string): string;
4
5
  export declare function formatError(error: unknown): string;
5
6
  export declare function formatTable(headers: string[], rows: string[][]): string;
6
- export declare function sectionHeader(title: string): string;
7
7
  export declare function success(msg: string): string;
8
8
  export declare function warn(msg: string): string;
9
9
  export declare function createSpinner(text: string): NonTtySpinner | import("ora").Ora;
@@ -15,6 +15,7 @@ declare class NonTtySpinner {
15
15
  succeed(msg: string): this;
16
16
  fail(msg: string): this;
17
17
  info(msg: string): this;
18
+ warn(msg: string): this;
18
19
  }
19
20
  export {};
20
21
  //# sourceMappingURL=format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAuBA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAmBhG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAwBvE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,qCAKzC;AAGD,cAAM,aAAa;IAClB,IAAI,EAAE,MAAM,CAAC;gBACD,WAAW,EAAE,MAAM;IAG/B,KAAK,IAAI,IAAI;IAGb,IAAI,IAAI,IAAI;IAGZ,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAIvB"}
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAwBA,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAmBhG;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,SAAQ,GAAG,MAAM,CAWzE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIlD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAwBvE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExC;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,qCAKzC;AAGD,cAAM,aAAa;IAClB,IAAI,EAAE,MAAM,CAAC;gBACD,WAAW,EAAE,MAAM;IAG/B,KAAK,IAAI,IAAI;IAGb,IAAI,IAAI,IAAI;IAGZ,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI1B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAIvB"}
@@ -1,6 +1,7 @@
1
1
  import chalk from "chalk";
2
2
  import ora from "ora";
3
3
  import { BLUE, MINT, SLATE } from "./brand.js";
4
+ import { parseStarknetError } from "./parse-starknet-error.js";
4
5
  function hyperlink(text, url) {
5
6
  return `\x1b]8;;${url}\x07${text}\x1b]8;;\x07`;
6
7
  }
@@ -40,9 +41,24 @@ export function formatResult(data, options) {
40
41
  })
41
42
  .join("\n");
42
43
  }
44
+ // Convert Starknet receipt actual_fee ({amount, unit}) to readable format.
45
+ export function formatActualFee(rawFee, fallback = "N/A") {
46
+ if (!rawFee)
47
+ return fallback;
48
+ if (typeof rawFee === "object" && rawFee !== null && "amount" in rawFee) {
49
+ const fee = rawFee;
50
+ const value = BigInt(fee.amount);
51
+ const whole = value / BigInt(10 ** 18);
52
+ const frac = value % BigInt(10 ** 18);
53
+ const fracStr = frac.toString().padStart(18, "0").slice(0, 6);
54
+ return `${whole}.${fracStr} STRK`;
55
+ }
56
+ return String(rawFee);
57
+ }
43
58
  export function formatError(error) {
44
59
  const msg = error instanceof Error ? error.message : String(error);
45
- return chalk.red(`✖ ${msg}`);
60
+ const parsed = parseStarknetError(msg);
61
+ return chalk.red(`✖ ${parsed}`);
46
62
  }
47
63
  export function formatTable(headers, rows) {
48
64
  const colWidths = headers.map((h, colIdx) => Math.max(h.length, ...rows.map((r) => (r[colIdx] ?? "").length)));
@@ -62,9 +78,6 @@ export function formatTable(headers, rows) {
62
78
  });
63
79
  return [headerLine, separator, ...dataLines].join("\n");
64
80
  }
65
- export function sectionHeader(title) {
66
- return chalk.bold.hex(MINT)(title);
67
- }
68
81
  export function success(msg) {
69
82
  return chalk.hex(MINT).bold(`✔ ${msg}`);
70
83
  }
@@ -101,5 +114,9 @@ class NonTtySpinner {
101
114
  console.log(chalk.hex(BLUE)(`ℹ ${msg}`));
102
115
  return this;
103
116
  }
117
+ warn(msg) {
118
+ console.log(chalk.yellow(`⚠ ${msg}`));
119
+ return this;
120
+ }
104
121
  }
105
122
  //# sourceMappingURL=format.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,SAAS,SAAS,CAAC,IAAY,EAAE,GAAW;IAC3C,OAAO,WAAW,GAAG,OAAO,IAAI,cAAc,CAAC;AAChD,CAAC;AAED,sDAAsD;AACtD,SAAS,aAAa,CAAC,GAAW,EAAE,KAAa;IAChD,IAAI,GAAG,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,GAAG,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,GAAG,KAAK,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAc;IACnD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAA6B,EAAE,OAA4B;IACvF,IAAI,OAAO,EAAE,IAAI,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAChD,MAAM,GAAG,GACR,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ;YACrD,CAAC,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QACrD,OAAO,KAAK,KAAK,GAAG,GAAG,EAAE,CAAC;IAC3B,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AACd,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,QAAQ,GAAG,KAAK;IAChE,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAC7B,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;QACzE,MAAM,GAAG,GAAG,MAA0C,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,KAAK,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9D,OAAO,GAAG,KAAK,IAAI,OAAO,OAAO,CAAC;IACnC,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACzC,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAiB,EAAE,IAAgB;IAC9D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC3C,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAChE,CAAC;IAEF,MAAM,UAAU,GACf,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnF,MAAM,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,CACN,IAAI;YACJ,GAAG;iBACD,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;gBACrB,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtD,IAAI,MAAM,KAAK,CAAC;oBAAE,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC7C,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9D,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IAClC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,GAAW;IAC/B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAED,4DAA4D;AAC5D,MAAM,aAAa;IAClB,IAAI,CAAS;IACb,YAAY,WAAmB;QAC9B,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IACzB,CAAC;IACD,KAAK;QACJ,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI;QACH,OAAO,IAAI,CAAC;IACb,CAAC;IACD,OAAO,CAAC,GAAW;QAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAW;QACf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAW;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,CAAC,GAAW;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IACb,CAAC;CACD"}
@@ -0,0 +1,2 @@
1
+ export declare function parseStarknetError(raw: string): string;
2
+ //# sourceMappingURL=parse-starknet-error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-starknet-error.d.ts","sourceRoot":"","sources":["../../src/lib/parse-starknet-error.ts"],"names":[],"mappings":"AAyCA,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAwBtD"}
@@ -0,0 +1,81 @@
1
+ // Maps raw Starknet/Cairo execution errors to human-readable messages.
2
+ // Cairo errors are short-strings encoded as hex felt values inside
3
+ // TRANSACTION_EXECUTION_ERROR payloads.
4
+ const ERROR_MAP = [
5
+ [
6
+ /u256_sub Overflow/i,
7
+ "Insufficient balance — you don't have enough tokens (including gas fees)",
8
+ ],
9
+ [/u256_add Overflow/i, "Amount overflow — the value is too large"],
10
+ [/ERC20:?\s*transfer amount exceeds balance/i, "Insufficient token balance for this transfer"],
11
+ [/ERC20:?\s*burn amount exceeds balance/i, "Insufficient token balance to burn"],
12
+ [
13
+ /ERC20:?\s*insufficient allowance/i,
14
+ "Token approval required — not enough allowance for this operation",
15
+ ],
16
+ [/argent\/multicall-failed/i, "One or more calls in the transaction failed"],
17
+ [
18
+ /argent\/invalid-signature/i,
19
+ "Invalid signature — try re-authenticating with: starkfi auth login",
20
+ ],
21
+ [/argent\/invalid-timestamp/i, "Transaction expired — please retry"],
22
+ [/is_valid_signature/i, "Signature validation failed — try re-authenticating"],
23
+ [/assert_not_zero/i, "Operation failed — a required value was zero"],
24
+ [
25
+ /Contract not found/i,
26
+ "Contract not found — the target contract does not exist on this network",
27
+ ],
28
+ [/UNAUTHORIZED/i, "Unauthorized — session may have expired, try: starkfi auth login"],
29
+ [/nonce/i, "Transaction nonce error — please retry"],
30
+ [
31
+ /dusty-collateral-balance/i,
32
+ "Collateral amount is below the pool's minimum (dust limit). Please increase the amount.",
33
+ ],
34
+ [
35
+ /dusty-debt-balance/i,
36
+ "Borrow amount is below the pool's minimum (dust limit). Please increase the amount.",
37
+ ],
38
+ ];
39
+ // Extract the innermost meaningful error from a Starknet execution error.
40
+ export function parseStarknetError(raw) {
41
+ // Try to extract the execution_error JSON field from the raw dump.
42
+ const execMatch = raw.match(/execution_error["']?\s*:\s*["'](.+?)["']\s*\}/s);
43
+ const errorBody = execMatch?.[1] ?? raw;
44
+ // Decode any hex-encoded short-strings like 0x753235365f737562204f766572666c6f77
45
+ const decoded = decodeHexStrings(errorBody);
46
+ // Strip ENTRYPOINT_FAILED noise — it's just a wrapper, not the real error.
47
+ const cleaned = decoded.replace(/,?\s*ENTRYPOINT_FAILED/g, "").trim();
48
+ // Match against known error patterns.
49
+ for (const [pattern, message] of ERROR_MAP) {
50
+ if (pattern.test(cleaned)) {
51
+ return message;
52
+ }
53
+ }
54
+ // If it looks like a massive RPC dump (contains "params"), extract just the error part.
55
+ if (raw.includes("TRANSACTION_EXECUTION_ERROR") && cleaned.length < raw.length) {
56
+ return cleaned || raw;
57
+ }
58
+ return raw;
59
+ }
60
+ // Decode hex-encoded Cairo short-strings inline.
61
+ function decodeHexStrings(input) {
62
+ // Already-decoded strings in parenthesized comments: 0x... ('readable')
63
+ // Extract the readable parts and discard hex.
64
+ const withDecoded = input.replace(/0x[0-9a-fA-F]+\s*\('([^']+)'\)/g, (_, decoded) => decoded);
65
+ // Any remaining bare hex strings that look like felt-encoded ASCII.
66
+ return withDecoded.replace(/0x([0-9a-fA-F]{2,})/g, (full, hex) => {
67
+ try {
68
+ const bytes = Buffer.from(hex, "hex");
69
+ const text = bytes.toString("utf8");
70
+ // Only replace if it produced printable ASCII (not garbage).
71
+ if (/^[\x20-\x7e]+$/.test(text)) {
72
+ return text;
73
+ }
74
+ }
75
+ catch {
76
+ // Not decodable — leave as-is.
77
+ }
78
+ return full;
79
+ });
80
+ }
81
+ //# sourceMappingURL=parse-starknet-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-starknet-error.js","sourceRoot":"","sources":["../../src/lib/parse-starknet-error.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,mEAAmE;AACnE,wCAAwC;AAExC,MAAM,SAAS,GAAyC;IACvD;QACC,oBAAoB;QACpB,0EAA0E;KAC1E;IACD,CAAC,oBAAoB,EAAE,0CAA0C,CAAC;IAClE,CAAC,4CAA4C,EAAE,8CAA8C,CAAC;IAC9F,CAAC,wCAAwC,EAAE,oCAAoC,CAAC;IAChF;QACC,mCAAmC;QACnC,mEAAmE;KACnE;IACD,CAAC,2BAA2B,EAAE,6CAA6C,CAAC;IAC5E;QACC,4BAA4B;QAC5B,oEAAoE;KACpE;IACD,CAAC,4BAA4B,EAAE,oCAAoC,CAAC;IACpE,CAAC,qBAAqB,EAAE,qDAAqD,CAAC;IAC9E,CAAC,kBAAkB,EAAE,8CAA8C,CAAC;IACpE;QACC,qBAAqB;QACrB,yEAAyE;KACzE;IACD,CAAC,eAAe,EAAE,kEAAkE,CAAC;IACrF,CAAC,QAAQ,EAAE,wCAAwC,CAAC;IACpD;QACC,2BAA2B;QAC3B,yFAAyF;KACzF;IACD;QACC,qBAAqB;QACrB,qFAAqF;KACrF;CACD,CAAC;AAEF,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC7C,mEAAmE;IACnE,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAExC,iFAAiF;IACjF,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE5C,2EAA2E;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtE,sCAAsC;IACtC,KAAK,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC;QAChB,CAAC;IACF,CAAC;IAED,wFAAwF;IACxF,IAAI,GAAG,CAAC,QAAQ,CAAC,6BAA6B,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAChF,OAAO,OAAO,IAAI,GAAG,CAAC;IACvB,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC;AAED,iDAAiD;AACjD,SAAS,gBAAgB,CAAC,KAAa;IACtC,wEAAwE;IACxE,8CAA8C;IAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAChC,iCAAiC,EACjC,CAAC,CAAC,EAAE,OAAe,EAAE,EAAE,CAAC,OAAO,CAC/B,CAAC;IAEF,oEAAoE;IACpE,OAAO,WAAW,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,GAAW,EAAE,EAAE;QACxE,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACpC,6DAA6D;YAC7D,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,+BAA+B;QAChC,CAAC;QACD,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -8,7 +8,7 @@ export async function handleGetAuthStatus() {
8
8
  return jsonResult({
9
9
  authenticated: false,
10
10
  fibrous: health,
11
- message: "Not authenticated. Use 'starkfi auth login' or 'starkfi auth import'.",
11
+ message: "Not authenticated. Use 'starkfi auth login'.",
12
12
  });
13
13
  }
14
14
  return jsonResult({
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/mcp/handlers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACxC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,uEAAuE;SAChF,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;QACjB,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/mcp/handlers/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACxC,MAAM,OAAO,GAAG,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,kBAAkB,EAAE,CAAC;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,UAAU,CAAC;YACjB,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,8CAA8C;SACvD,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;QACjB,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,MAAM;KACf,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAOA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;GAgCA"}
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,EAAE,CAAC;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;;;;;GAwBA"}
@@ -1,33 +1,26 @@
1
- import { requireSession } from "../../services/auth/session.js";
2
- import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
1
  import { buildBatch } from "../../services/batch/batch.js";
4
2
  import { simulateTransaction } from "../../services/simulate/simulate.js";
5
- import { jsonResult } from "./utils.js";
3
+ import { withWallet } from "./context.js";
4
+ import { jsonResult, simulationResult } from "./utils.js";
6
5
  export async function handleBatchExecute(args) {
7
- const session = requireSession();
8
- const { wallet } = await initSDKAndWallet(session);
9
- await wallet.ensureReady({ deploy: "if_needed" });
10
- const operations = args.operations;
11
- const { builder, summary } = await buildBatch(wallet, session, operations);
12
- if (args.simulate) {
13
- const sim = await simulateTransaction(builder);
6
+ return withWallet(async ({ session, wallet }) => {
7
+ const operations = args.operations.map((op) => ({
8
+ type: op.type,
9
+ params: op.params,
10
+ }));
11
+ const { builder, summary } = await buildBatch(wallet, session, operations);
12
+ if (args.simulate) {
13
+ const sim = await simulateTransaction(builder);
14
+ return simulationResult(sim, { operations: summary });
15
+ }
16
+ const tx = await builder.send();
17
+ await tx.wait();
14
18
  return jsonResult({
15
- success: sim.success,
16
- mode: "SIMULATION (no TX sent)",
19
+ success: true,
20
+ txHash: tx.hash,
21
+ explorerUrl: tx.explorerUrl,
17
22
  operations: summary,
18
- estimatedFee: sim.estimatedFee,
19
- estimatedFeeUsd: sim.estimatedFeeUsd,
20
- callCount: sim.callCount,
21
- ...(sim.revertReason ? { revertReason: sim.revertReason } : {}),
22
23
  });
23
- }
24
- const tx = await builder.send();
25
- await tx.wait();
26
- return jsonResult({
27
- success: true,
28
- txHash: tx.hash,
29
- explorerUrl: tx.explorerUrl,
30
- operations: summary,
31
24
  });
32
25
  }
33
26
  //# sourceMappingURL=batch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAGxC;IACA,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEnD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAElD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAyC,CAAC;IAElE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IAE3E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,IAAI,EAAE,yBAAyB;YAC/B,UAAU,EAAE,OAAO;YACnB,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe;YACpC,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D,CAAC,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;IAChC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;IAEhB,OAAO,UAAU,CAAC;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE,CAAC,IAAI;QACf,WAAW,EAAE,EAAE,CAAC,WAAW;QAC3B,UAAU,EAAE,OAAO;KACnB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/mcp/handlers/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAuB,MAAM,+BAA+B,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAGxC;IACA,OAAO,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAqB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,MAAM,EAAE,EAAE,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;QAEJ,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAE3E,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAC/C,OAAO,gBAAgB,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAChC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAEhB,OAAO,UAAU,CAAC;YACjB,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE,CAAC,IAAI;YACf,WAAW,EAAE,EAAE,CAAC,WAAW;YAC3B,UAAU,EAAE,OAAO;SACnB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export declare function handleConfigAction(args: {
2
- action: "set-rpc" | "get-rpc" | "set-network" | "set-gasfree" | "set-gas-token" | "list";
2
+ action: "set-rpc" | "get-rpc" | "set-network" | "set-gasfree" | "set-gas-token" | "list" | "reset";
3
3
  value?: string;
4
4
  }): Promise<{
5
5
  content: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,GAAG,eAAe,GAAG,MAAM,CAAC;IACzF,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;;;;;GAuEA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAIA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,MAAM,EACH,SAAS,GACT,SAAS,GACT,aAAa,GACb,aAAa,GACb,eAAe,GACf,MAAM,GACN,OAAO,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;;;;;GA2EA"}
@@ -71,6 +71,10 @@ export async function handleConfigAction(args) {
71
71
  feeMode = `gasless (pays ${gasToken} via Paymaster)`;
72
72
  return jsonResult({ ...all, feeMode });
73
73
  }
74
+ case "reset": {
75
+ configService.clear();
76
+ return jsonResult({ success: true, note: "All settings reset to defaults." });
77
+ }
74
78
  default:
75
79
  return textResult(`Unknown action: ${args.action}`);
76
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAGxC;IACA,MAAM,aAAa,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IAElD,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC,4BAA4B,CAAC,CAAC;YACjE,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACxC,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YAChB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,yBAAyB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjE,OAAO,UAAU,CAAC,yCAAyC,CAAC,CAAC;YAC9D,CAAC;YACD,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,OAAO,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxD,OAAO,UAAU,CAAC,qCAAqC,CAAC,CAAC;YAC1D,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;YACpC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB;YACpE,OAAO,UAAU,CAAC;gBACjB,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;oBACZ,CAAC,CAAC,mEAAmE;oBACrE,CAAC,CAAC,uDAAuD;aAC1D,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,eAAe,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,OAAO,UAAU,CAAC,sCAAsC,CAAC,CAAC;YAC3E,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBACpE,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACjC,OAAO,UAAU,CAAC;oBACjB,OAAO,EAAE,IAAI;oBACb,QAAQ,EAAE,MAAM;oBAChB,IAAI,EAAE,kCAAkC;iBACxC,CAAC,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/C,OAAO,UAAU,CAChB,sBAAsB,IAAI,CAAC,KAAK,iBAAiB,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;YACH,CAAC;YACD,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB;YAC1D,aAAa,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,UAAU,CAAC;gBACjB,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,eAAe,KAAK,gBAAgB;aAC1C,CAAC,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC;YAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,QAA8B,CAAC;YACpD,IAAI,OAAO,GAAG,mCAAmC,CAAC;YAClD,IAAI,WAAW;gBAAE,OAAO,GAAG,6CAA6C,CAAC;iBACpE,IAAI,QAAQ;gBAAE,OAAO,GAAG,iBAAiB,QAAQ,iBAAiB,CAAC;YACxE,OAAO,UAAU,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACxC,CAAC;QACD;YACC,OAAO,UAAU,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/mcp/handlers/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { StarkZap, Wallet } from "starkzap";
2
+ import { type Session } from "../../services/auth/session.js";
3
+ export interface WalletContext {
4
+ session: Session;
5
+ sdk: StarkZap;
6
+ wallet: Wallet;
7
+ }
8
+ export declare function withWallet<T>(fn: (ctx: WalletContext) => Promise<T>): Promise<T>;
9
+ export declare function withReadonlyWallet<T>(fn: (ctx: WalletContext) => Promise<T>): Promise<T>;
10
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAG9E,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf;AAGD,wBAAsB,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAKtF;AAGD,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAI9F"}
@@ -0,0 +1,16 @@
1
+ import { requireSession } from "../../services/auth/session.js";
2
+ import { initSDKAndWallet } from "../../services/starkzap/client.js";
3
+ // Authenticate, init SDK + wallet, call ensureReady. For transactional handlers.
4
+ export async function withWallet(fn) {
5
+ const session = requireSession();
6
+ const { sdk, wallet } = await initSDKAndWallet(session);
7
+ await wallet.ensureReady({ deploy: "if_needed" });
8
+ return fn({ session, sdk, wallet });
9
+ }
10
+ // Authenticate and init SDK + wallet without ensureReady. For read-only handlers.
11
+ export async function withReadonlyWallet(fn) {
12
+ const session = requireSession();
13
+ const { sdk, wallet } = await initSDKAndWallet(session);
14
+ return fn({ session, sdk, wallet });
15
+ }
16
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/mcp/handlers/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAgB,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQrE,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAI,EAAsC;IACzE,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IAClD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,EAAsC;IACjF,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -7,4 +7,5 @@ export * from "./lending.js";
7
7
  export * from "./portfolio.js";
8
8
  export * from "./multi-swap.js";
9
9
  export * from "./batch.js";
10
+ export * from "./context.js";
10
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -7,4 +7,5 @@ export * from "./lending.js";
7
7
  export * from "./portfolio.js";
8
8
  export * from "./multi-swap.js";
9
9
  export * from "./batch.js";
10
+ export * from "./context.js";
10
11
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/handlers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/lending.ts"],"names":[],"mappings":"AAiBA,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;GAoBnE;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAuCA;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAiB7F;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAiB/F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;;;;;GA2CA;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CACzB;;;;;GAuBA;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;;;;;GAqBA"}
1
+ {"version":3,"file":"lending.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/lending.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,CAAC,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE;;;;;GAqBnE;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;GAsCA;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAe7F;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;GAe/F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;;;;;GAyCA;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CACzB;;;;;GAqBA;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;CACnB;;;;;GAmBA"}