@kasarlabs/fibrous-mcp 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +29 -0
- package/bin/fibrous-mcp.js +14 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +58 -0
- package/build/index.js.map +1 -0
- package/build/lib/abis/erc20Abi.d.ts +89 -0
- package/build/lib/abis/erc20Abi.js +128 -0
- package/build/lib/abis/erc20Abi.js.map +1 -0
- package/build/lib/constants/index.d.ts +2 -0
- package/build/lib/constants/index.js +3 -0
- package/build/lib/constants/index.js.map +1 -0
- package/build/lib/dependances/types.d.ts +85 -0
- package/build/lib/dependances/types.js +51 -0
- package/build/lib/dependances/types.js.map +1 -0
- package/build/lib/types/index.d.ts +48 -0
- package/build/lib/types/index.js +2 -0
- package/build/lib/types/index.js.map +1 -0
- package/build/lib/utils/contractInteractor.d.ts +16 -0
- package/build/lib/utils/contractInteractor.js +114 -0
- package/build/lib/utils/contractInteractor.js.map +1 -0
- package/build/lib/utils/transactionMonitor.d.ts +11 -0
- package/build/lib/utils/transactionMonitor.js +82 -0
- package/build/lib/utils/transactionMonitor.js.map +1 -0
- package/build/lib/utils/utils.d.ts +10 -0
- package/build/lib/utils/utils.js +15 -0
- package/build/lib/utils/utils.js.map +1 -0
- package/build/schemas/index.d.ts +41 -0
- package/build/schemas/index.js +25 -0
- package/build/schemas/index.js.map +1 -0
- package/build/tools/approval.d.ts +6 -0
- package/build/tools/approval.js +39 -0
- package/build/tools/approval.js.map +1 -0
- package/build/tools/batchSwap.d.ts +62 -0
- package/build/tools/batchSwap.js +120 -0
- package/build/tools/batchSwap.js.map +1 -0
- package/build/tools/fetchRoute.d.ts +15 -0
- package/build/tools/fetchRoute.js +57 -0
- package/build/tools/fetchRoute.js.map +1 -0
- package/build/tools/fetchTokens.d.ts +10 -0
- package/build/tools/fetchTokens.js +26 -0
- package/build/tools/fetchTokens.js.map +1 -0
- package/build/tools/swap.d.ts +19 -0
- package/build/tools/swap.js +100 -0
- package/build/tools/swap.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Token } from 'fibrous-router-sdk';
|
|
2
|
+
export declare class TokenService {
|
|
3
|
+
private tokens;
|
|
4
|
+
initializeTokens(): Promise<void>;
|
|
5
|
+
getToken(symbol: string): Token | undefined;
|
|
6
|
+
validateTokenPair(sellSymbol: string, buySymbol: string): {
|
|
7
|
+
sellToken: Token;
|
|
8
|
+
buyToken: Token;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
2
|
+
export class TokenService {
|
|
3
|
+
async initializeTokens() {
|
|
4
|
+
try {
|
|
5
|
+
const fibrous = new FibrousRouter();
|
|
6
|
+
const tokensRecord = await fibrous.supportedTokens('starknet');
|
|
7
|
+
this.tokens = new Map(Object.entries(tokensRecord));
|
|
8
|
+
}
|
|
9
|
+
catch (error) {
|
|
10
|
+
throw new Error(`Failed to initialize tokens: ${error.message}`);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
getToken(symbol) {
|
|
14
|
+
return this.tokens.get(symbol.toLowerCase());
|
|
15
|
+
}
|
|
16
|
+
validateTokenPair(sellSymbol, buySymbol) {
|
|
17
|
+
const sellToken = this.getToken(sellSymbol);
|
|
18
|
+
const buyToken = this.getToken(buySymbol);
|
|
19
|
+
if (!sellToken)
|
|
20
|
+
throw new Error(`Sell token ${sellSymbol} not supported`);
|
|
21
|
+
if (!buyToken)
|
|
22
|
+
throw new Error(`Buy token ${buySymbol} not supported`);
|
|
23
|
+
return { sellToken, buyToken };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=fetchTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchTokens.js","sourceRoot":"","sources":["../../src/tools/fetchTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEpE,MAAM,OAAO,YAAY;IAGvB,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,MAAc;QACrB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB,CACf,UAAkB,EAClB,SAAiB;QAKjB,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,UAAU,gBAAgB,CAAC,CAAC;QAC1E,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,aAAa,SAAS,gBAAgB,CAAC,CAAC;QAEvE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { onchainWrite } from '@kasarlabs/ask-starknet-core';
|
|
2
|
+
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
3
|
+
import { SwapResult, SwapParams } from '../lib/types/index.js';
|
|
4
|
+
export declare class SwapService {
|
|
5
|
+
private env;
|
|
6
|
+
private walletAddress;
|
|
7
|
+
private router;
|
|
8
|
+
private tokenService;
|
|
9
|
+
private approvalService;
|
|
10
|
+
constructor(env: onchainWrite, walletAddress: string, router: FibrousRouter);
|
|
11
|
+
initialize(): Promise<void>;
|
|
12
|
+
executeSwapTransaction(params: SwapParams): Promise<SwapResult>;
|
|
13
|
+
private monitorSwapStatus;
|
|
14
|
+
}
|
|
15
|
+
export declare const createSwapService: (env: onchainWrite, walletAddress?: string) => SwapService;
|
|
16
|
+
export declare const swapTokensFibrous: (env: onchainWrite, params: SwapParams) => Promise<SwapResult | {
|
|
17
|
+
status: string;
|
|
18
|
+
error: string;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Account, constants } from 'starknet';
|
|
2
|
+
import { ApprovalService } from './approval.js';
|
|
3
|
+
import { SLIPPAGE_PERCENTAGE } from '../lib/constants/index.js';
|
|
4
|
+
import { TokenService } from './fetchTokens.js';
|
|
5
|
+
import { Router as FibrousRouter } from 'fibrous-router-sdk';
|
|
6
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
7
|
+
import { getV3DetailsPayload } from '../lib/utils/utils.js';
|
|
8
|
+
import { ContractInteractor } from '../lib/utils/contractInteractor.js';
|
|
9
|
+
import { TransactionMonitor } from '../lib/utils/transactionMonitor.js';
|
|
10
|
+
export class SwapService {
|
|
11
|
+
constructor(env, walletAddress, router) {
|
|
12
|
+
this.env = env;
|
|
13
|
+
this.walletAddress = walletAddress;
|
|
14
|
+
this.router = router;
|
|
15
|
+
this.tokenService = new TokenService();
|
|
16
|
+
this.approvalService = new ApprovalService();
|
|
17
|
+
this.router = new FibrousRouter();
|
|
18
|
+
}
|
|
19
|
+
async initialize() {
|
|
20
|
+
await this.tokenService.initializeTokens();
|
|
21
|
+
}
|
|
22
|
+
async executeSwapTransaction(params) {
|
|
23
|
+
try {
|
|
24
|
+
await this.initialize();
|
|
25
|
+
const provider = this.env.provider;
|
|
26
|
+
const contractInteractor = new ContractInteractor(provider);
|
|
27
|
+
const account = new Account(provider, this.walletAddress, this.env.account.signer, undefined, constants.TRANSACTION_VERSION.V3);
|
|
28
|
+
const { sellToken, buyToken } = this.tokenService.validateTokenPair(params.sellTokenSymbol, params.buyTokenSymbol);
|
|
29
|
+
const formattedAmount = BigNumber.from(contractInteractor.formatTokenAmount(params.sellAmount.toString(), sellToken.decimals));
|
|
30
|
+
const route = await this.router.getBestRoute(BigNumber.from(formattedAmount.toString()), sellToken.address, buyToken.address, 'starknet');
|
|
31
|
+
if (!route?.success) {
|
|
32
|
+
throw new Error('No routes available for this swap');
|
|
33
|
+
}
|
|
34
|
+
const destinationAddress = account.address;
|
|
35
|
+
const swapCall = await this.router.buildTransaction(formattedAmount, sellToken.address, buyToken.address, SLIPPAGE_PERCENTAGE, destinationAddress, 'starknet');
|
|
36
|
+
if (!swapCall) {
|
|
37
|
+
throw new Error('Calldata not available for this swap');
|
|
38
|
+
}
|
|
39
|
+
const approveCalldata = await this.approvalService.checkAndGetApproveToken(account, sellToken.address, this.router.STARKNET_ROUTER_ADDRESS, formattedAmount.toString());
|
|
40
|
+
let calldata = [];
|
|
41
|
+
if (approveCalldata) {
|
|
42
|
+
calldata = [approveCalldata, swapCall];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
calldata = [swapCall];
|
|
46
|
+
}
|
|
47
|
+
const swapResult = await account.execute(calldata, getV3DetailsPayload());
|
|
48
|
+
const { receipt, events } = await this.monitorSwapStatus(swapResult.transaction_hash);
|
|
49
|
+
return {
|
|
50
|
+
status: 'success',
|
|
51
|
+
message: `Successfully swapped ${params.sellAmount} ${params.sellTokenSymbol} for ${params.buyTokenSymbol}`,
|
|
52
|
+
transactionHash: swapResult.transaction_hash,
|
|
53
|
+
sellAmount: params.sellAmount,
|
|
54
|
+
sellToken: params.sellTokenSymbol,
|
|
55
|
+
buyToken: params.buyTokenSymbol,
|
|
56
|
+
receipt,
|
|
57
|
+
events,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
console.error('Detailed swap error:', error);
|
|
62
|
+
if (error instanceof Error) {
|
|
63
|
+
console.error('Error type:', error.constructor.name);
|
|
64
|
+
console.error('Error message:', error.message);
|
|
65
|
+
console.error('Error stack:', error.stack);
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
status: 'failure',
|
|
69
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
async monitorSwapStatus(txHash) {
|
|
74
|
+
const transactionMonitor = new TransactionMonitor(this.env.provider);
|
|
75
|
+
const receipt = await transactionMonitor.waitForTransaction(txHash, (status) => console.error('Swap status:', status));
|
|
76
|
+
const events = await transactionMonitor.getTransactionEvents(txHash);
|
|
77
|
+
return { receipt, events };
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
export const createSwapService = (env, walletAddress) => {
|
|
81
|
+
if (!walletAddress) {
|
|
82
|
+
throw new Error('Wallet address not configured');
|
|
83
|
+
}
|
|
84
|
+
return new SwapService(env, walletAddress, new FibrousRouter());
|
|
85
|
+
};
|
|
86
|
+
export const swapTokensFibrous = async (env, params) => {
|
|
87
|
+
const accountAddress = env.account?.address;
|
|
88
|
+
try {
|
|
89
|
+
const swapService = createSwapService(env, accountAddress);
|
|
90
|
+
const result = await swapService.executeSwapTransaction(params);
|
|
91
|
+
return result;
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return {
|
|
95
|
+
status: 'failure',
|
|
96
|
+
error: error instanceof Error ? error.message : 'Unknown error',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=swap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swap.js","sourceRoot":"","sources":["../../src/tools/swap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAQ,SAAS,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,MAAM,OAAO,WAAW;IAItB,YACU,GAAiB,EACjB,aAAqB,EACrB,MAAqB;QAFrB,QAAG,GAAH,GAAG,CAAc;QACjB,kBAAa,GAAb,aAAa,CAAQ;QACrB,WAAM,GAAN,MAAM,CAAe;QAE7B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAkB;QAC7C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnC,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,OAAO,CACzB,QAAQ,EACR,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EACvB,SAAS,EACT,SAAS,CAAC,mBAAmB,CAAC,EAAE,CACjC,CAAC;YAEF,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CACjE,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,cAAc,CACtB,CAAC;YAEF,MAAM,eAAe,GAAG,SAAS,CAAC,IAAI,CACpC,kBAAkB,CAAC,iBAAiB,CAClC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,EAC5B,SAAS,CAAC,QAAQ,CACnB,CACF,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAC1C,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EAC1C,SAAS,CAAC,OAAO,EACjB,QAAQ,CAAC,OAAO,EAChB,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CACjD,eAAe,EACf,SAAS,CAAC,OAAO,EACjB,QAAQ,CAAC,OAAO,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,CACX,CAAC;YAEF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;YAC1D,CAAC;YAED,MAAM,eAAe,GACnB,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAChD,OAAO,EACP,SAAS,CAAC,OAAO,EACjB,IAAI,CAAC,MAAM,CAAC,uBAAuB,EACnC,eAAe,CAAC,QAAQ,EAAE,CAC3B,CAAC;YAEJ,IAAI,QAAQ,GAAW,EAAE,CAAC;YAE1B,IAAI,eAAe,EAAE,CAAC;gBACpB,QAAQ,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,CAAC;YAED,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAE1E,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CACtD,UAAU,CAAC,gBAAgB,CAC5B,CAAC;YAEF,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,wBAAwB,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,eAAe,QAAQ,MAAM,CAAC,cAAc,EAAE;gBAC3G,eAAe,EAAE,UAAU,CAAC,gBAAgB;gBAC5C,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,SAAS,EAAE,MAAM,CAAC,eAAe;gBACjC,QAAQ,EAAE,MAAM,CAAC,cAAc;gBAC/B,OAAO;gBACP,MAAM;aACP,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrD,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB,CAAC,MAAc;QAC5C,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CACzD,MAAM,EACN,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAClD,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QACrE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,GAAiB,EACjB,aAAsB,EACT,EAAE;IACf,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,aAAa,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EACpC,GAAiB,EACjB,MAAkB,EAClB,EAAE;IACF,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,iBAAiB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kasarlabs/fibrous-mcp",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"fibrous-mcp": "./bin/fibrous-mcp.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc && chmod 755 build/index.js",
|
|
11
|
+
"clean": "rm -rf build",
|
|
12
|
+
"clean:all": "rm -rf build node_modules",
|
|
13
|
+
"start": "node build/index.js"
|
|
14
|
+
},
|
|
15
|
+
"files": [
|
|
16
|
+
"build"
|
|
17
|
+
],
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@ethersproject/bignumber": "^5.7.0",
|
|
20
|
+
"@kasarlabs/ask-starknet-core": "0.1.0",
|
|
21
|
+
"@langchain/core": "^0.3.42",
|
|
22
|
+
"@modelcontextprotocol/sdk": "^1.11.2",
|
|
23
|
+
"dotenv": "^16.4.7",
|
|
24
|
+
"fibrous-router-sdk": "0.4.3",
|
|
25
|
+
"starknet": "^7.6.4",
|
|
26
|
+
"winston": "^3.17.0",
|
|
27
|
+
"zod": "^3.24.2"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@types/node": "^22.13.10",
|
|
31
|
+
"typescript": "^5.8.2"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"mcp",
|
|
35
|
+
"starknet",
|
|
36
|
+
"fibrous"
|
|
37
|
+
],
|
|
38
|
+
"author": "kasarlabs",
|
|
39
|
+
"license": "MIT",
|
|
40
|
+
"description": "MCP server for interacting with the Fibrous decentralized exchange, enabling single and batch token swaps.",
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"gitHead": "2239ec60f8e369abd318807cecd22fe97c0ab917"
|
|
45
|
+
}
|