@continuumdao/ctm-mpc-defi 0.2.12 → 0.2.16

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 (41) hide show
  1. package/dist/agent/catalog.cjs +868 -283
  2. package/dist/agent/catalog.cjs.map +1 -1
  3. package/dist/agent/catalog.d.ts +1657 -304
  4. package/dist/agent/catalog.js +861 -284
  5. package/dist/agent/catalog.js.map +1 -1
  6. package/dist/agent/skills/morpho/SKILL.md +8 -22
  7. package/dist/chains/evm/index.cjs +75 -0
  8. package/dist/chains/evm/index.cjs.map +1 -1
  9. package/dist/chains/evm/index.d.ts +31 -1
  10. package/dist/chains/evm/index.js +73 -2
  11. package/dist/chains/evm/index.js.map +1 -1
  12. package/dist/index.cjs +140 -32
  13. package/dist/index.cjs.map +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +138 -34
  16. package/dist/index.js.map +1 -1
  17. package/dist/protocols/evm/euler-v2/index.cjs +29 -2
  18. package/dist/protocols/evm/euler-v2/index.cjs.map +1 -1
  19. package/dist/protocols/evm/euler-v2/index.d.ts +23 -1
  20. package/dist/protocols/evm/euler-v2/index.js +29 -3
  21. package/dist/protocols/evm/euler-v2/index.js.map +1 -1
  22. package/dist/protocols/evm/gmx/index.cjs +42 -8
  23. package/dist/protocols/evm/gmx/index.cjs.map +1 -1
  24. package/dist/protocols/evm/gmx/index.d.ts +20 -4
  25. package/dist/protocols/evm/gmx/index.js +42 -9
  26. package/dist/protocols/evm/gmx/index.js.map +1 -1
  27. package/dist/protocols/evm/maple/index.cjs +9 -1
  28. package/dist/protocols/evm/maple/index.cjs.map +1 -1
  29. package/dist/protocols/evm/maple/index.d.ts +2 -1
  30. package/dist/protocols/evm/maple/index.js +9 -1
  31. package/dist/protocols/evm/maple/index.js.map +1 -1
  32. package/dist/protocols/evm/morpho/index.cjs +56 -0
  33. package/dist/protocols/evm/morpho/index.cjs.map +1 -1
  34. package/dist/protocols/evm/morpho/index.d.ts +28 -1
  35. package/dist/protocols/evm/morpho/index.js +56 -1
  36. package/dist/protocols/evm/morpho/index.js.map +1 -1
  37. package/dist/protocols/evm/uniswap-v4/index.cjs +98 -26
  38. package/dist/protocols/evm/uniswap-v4/index.cjs.map +1 -1
  39. package/dist/protocols/evm/uniswap-v4/index.js +99 -27
  40. package/dist/protocols/evm/uniswap-v4/index.js.map +1 -1
  41. package/package.json +1 -1
@@ -125,8 +125,12 @@ declare function gmxFetchGmMarketsSummary(chainId: number): Promise<GmxGmMarketS
125
125
 
126
126
  type GmxPositionDisplayRow = {
127
127
  key: string;
128
+ /** GMX market symbol for build_decrease (from market registry). */
129
+ symbol: string | null;
128
130
  indexName: string;
129
131
  isLong: boolean;
132
+ /** long | short — copy to build_decrease direction. */
133
+ direction: 'long' | 'short';
130
134
  sizeUsd: string | null;
131
135
  collateralUsd: string | null;
132
136
  collateralSymbol: string | null;
@@ -138,16 +142,28 @@ type GmxPositionDisplayRow = {
138
142
  };
139
143
  declare function gmxFormatPositionsForDisplay(chainId: number, positions: Array<Record<string, unknown>>): Promise<GmxPositionDisplayRow[]>;
140
144
 
145
+ declare function gmxFetchPositionDisplayRows(args: {
146
+ chainId: number;
147
+ executorAddress: string;
148
+ }): Promise<GmxPositionDisplayRow[]>;
149
+ /** MCP fetch_positions — agent-facing rows with symbol/direction for build_decrease. */
141
150
  declare function gmxFetchPositionsForExecutor(args: {
142
151
  chainId: number;
143
152
  executorAddress: string;
144
153
  }): Promise<{
145
- positions: Array<Record<string, unknown>>;
154
+ positions: GmxPositionDisplayRow[];
146
155
  }>;
147
- declare function gmxFetchPositionDisplayRows(args: {
156
+ declare function gmxFetchOrdersSummary(args: {
148
157
  chainId: number;
149
158
  executorAddress: string;
150
- }): Promise<GmxPositionDisplayRow[]>;
159
+ }): Promise<{
160
+ orders: {
161
+ orderId: string;
162
+ isLong: boolean | undefined;
163
+ sizeDeltaUsd: string | null;
164
+ triggerPrice: string | null;
165
+ }[];
166
+ }>;
151
167
  declare function gmxFetchOrdersForExecutor(args: {
152
168
  chainId: number;
153
169
  executorAddress: string;
@@ -466,4 +482,4 @@ declare function gmxKeyForNodeAssetRow(args: {
466
482
  declare const GMX_PROTOCOL_ID = "gmx";
467
483
  declare const gmxProtocolModule: ProtocolModule;
468
484
 
469
- export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, type GmxApiSdkInstance, type GmxCancelOrderArgs, type GmxClosePositionCap, type GmxDecreaseOrderArgs, type GmxGmDepositArgs, type GmxGmLiquidityPositionRow, type GmxGmMarketSummaryRow, type GmxGmWithdrawArgs, type GmxIncreaseOrderArgs, type GmxMarketApySource, type GmxMarketPrices, type GmxMarketRow, type GmxMarketSnapshot, type GmxOhlcvCandleRow, type GmxOhlcvTimeframe, type GmxOrderRow, type GmxPositionDisplayRow, type GmxPositionRow, type GmxPrepareOrderResponse, type GmxStakeGmxArgs, type GmxSupportedChainId, type GmxTokenRow, type GmxTradeEstimate, type GmxUnstakeGmxArgs, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
485
+ export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, type GmxApiSdkInstance, type GmxCancelOrderArgs, type GmxClosePositionCap, type GmxDecreaseOrderArgs, type GmxGmDepositArgs, type GmxGmLiquidityPositionRow, type GmxGmMarketSummaryRow, type GmxGmWithdrawArgs, type GmxIncreaseOrderArgs, type GmxMarketApySource, type GmxMarketPrices, type GmxMarketRow, type GmxMarketSnapshot, type GmxOhlcvCandleRow, type GmxOhlcvTimeframe, type GmxOrderRow, type GmxPositionDisplayRow, type GmxPositionRow, type GmxPrepareOrderResponse, type GmxStakeGmxArgs, type GmxSupportedChainId, type GmxTokenRow, type GmxTradeEstimate, type GmxUnstakeGmxArgs, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
@@ -394,10 +394,14 @@ async function gmxFormatPositionsForDisplay(chainId, positions) {
394
394
  }
395
395
  const source = enriched ?? raw;
396
396
  const collateralToken = source.collateralToken;
397
+ const isLong = Boolean(source.isLong ?? raw.isLong);
398
+ const symbol = marketInfo ? String(marketInfo.name ?? marketInfo.symbol ?? "").trim() || null : null;
397
399
  return {
398
400
  key: String(raw.key ?? raw.contractKey ?? `${marketAddress}-${i}`),
401
+ symbol,
399
402
  indexName: pickIndexName(raw, enriched),
400
- isLong: Boolean(source.isLong ?? raw.isLong),
403
+ isLong,
404
+ direction: isLong ? "long" : "short",
401
405
  sizeUsd: formatGmxUsd30(asBigint(source.sizeInUsd ?? raw.sizeInUsd)),
402
406
  collateralUsd: formatGmxUsd30(asBigint(source.collateralUsd ?? raw.collateralUsd)),
403
407
  collateralSymbol: collateralToken?.symbol ? String(collateralToken.symbol) : null,
@@ -434,20 +438,33 @@ function gmxContractAddress(chainId, name) {
434
438
  }
435
439
 
436
440
  // src/protocols/evm/gmx/reads.ts
437
- async function gmxFetchPositionsForExecutor(args) {
441
+ async function gmxFetchRawPositionsForExecutor(args) {
438
442
  const sdk = getGmxApiSdk(args.chainId);
439
443
  const positions = await sdk.fetchPositionsInfo({
440
444
  address: args.executorAddress,
441
445
  includeRelatedOrders: true
442
446
  });
443
- return {
444
- positions
445
- };
447
+ return positions;
446
448
  }
447
449
  async function gmxFetchPositionDisplayRows(args) {
448
- const { positions } = await gmxFetchPositionsForExecutor(args);
450
+ const positions = await gmxFetchRawPositionsForExecutor(args);
449
451
  return gmxFormatPositionsForDisplay(args.chainId, positions);
450
452
  }
453
+ async function gmxFetchPositionsForExecutor(args) {
454
+ const positions = await gmxFetchPositionDisplayRows(args);
455
+ return { positions };
456
+ }
457
+ async function gmxFetchOrdersSummary(args) {
458
+ const orders = await gmxFetchOrdersForExecutor(args);
459
+ return {
460
+ orders: orders.map((o) => ({
461
+ orderId: String(o.key ?? "").trim(),
462
+ isLong: o.isLong,
463
+ sizeDeltaUsd: o.sizeDeltaUsd != null ? String(o.sizeDeltaUsd) : null,
464
+ triggerPrice: o.triggerPrice != null ? String(o.triggerPrice) : null
465
+ }))
466
+ };
467
+ }
451
468
  async function gmxFetchOrdersForExecutor(args) {
452
469
  const sdk = getGmxApiSdk(args.chainId);
453
470
  return sdk.fetchOrders({ address: args.executorAddress });
@@ -1462,7 +1479,8 @@ var GMX_WETH_DEPOSIT_FALLBACK2 = 120000n;
1462
1479
  var GMX_ERC20_APPROVE_FALLBACK2 = 100000n;
1463
1480
  var wethDepositAbi2 = parseAbi(["function deposit() payable"]);
1464
1481
  var erc20AllowanceAbi2 = parseAbi([
1465
- "function allowance(address owner, address spender) view returns (uint256)"
1482
+ "function allowance(address owner, address spender) view returns (uint256)",
1483
+ "function decimals() view returns (uint8)"
1466
1484
  ]);
1467
1485
  var erc20ApproveAbi2 = parseAbi(["function approve(address spender, uint256 amount) returns (bool)"]);
1468
1486
  async function buildApproveStepsIfNeeded(args) {
@@ -1684,7 +1702,22 @@ async function buildEvmMultisignBodyGmxGmWithdrawBatch(args) {
1684
1702
  const executor = getAddress(args.executorAddress);
1685
1703
  const market = await gmxResolveMarketBySymbol(args.chainId, args.marketSymbol);
1686
1704
  const gmToken = getAddress(market.marketTokenAddress);
1687
- const gmDecimals = args.gmDecimals ?? 18;
1705
+ let gmDecimals = args.gmDecimals;
1706
+ if (gmDecimals == null) {
1707
+ const ch = defineChain({
1708
+ id: args.chainId,
1709
+ name: "GMX",
1710
+ nativeCurrency: { decimals: 18, name: "Ether", symbol: "ETH" },
1711
+ rpcUrls: { default: { http: [args.rpcUrl] } }
1712
+ });
1713
+ const publicClient = createPublicClient({ chain: ch, transport: http(args.rpcUrl) });
1714
+ const onChain = await publicClient.readContract({
1715
+ address: gmToken,
1716
+ abi: erc20AllowanceAbi2,
1717
+ functionName: "decimals"
1718
+ });
1719
+ gmDecimals = Number(onChain);
1720
+ }
1688
1721
  const gmAmountWei = parseGmxTokenAmount(args.gmAmountHuman, gmDecimals);
1689
1722
  if (gmAmountWei === 0n) throw new Error("GM amount is zero after converting with token decimals.");
1690
1723
  const exchangeRouter = gmxContractAddress(args.chainId, "ExchangeRouter");
@@ -2176,6 +2209,6 @@ var gmxProtocolModule = {
2176
2209
  };
2177
2210
  registerProtocolModule(gmxProtocolModule);
2178
2211
 
2179
- export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
2212
+ export { GMX_NATIVE_GAS_SYMBOL_BY_CHAIN, GMX_OHLCV_TIMEFRAMES, GMX_PROTOCOL_ID, GMX_SUPPORTED_CHAIN_IDS, GMX_WRAPPED_NATIVE_SYMBOL_BY_CHAIN, assertGmxOhlcvTimeframe, buildEvmMultisignBodyGmxCancelBatch, buildEvmMultisignBodyGmxDecreaseBatch, buildEvmMultisignBodyGmxGmDepositBatch, buildEvmMultisignBodyGmxGmWithdrawBatch, buildEvmMultisignBodyGmxIncreaseBatch, buildEvmMultisignBodyGmxLimitDecreaseBatch, buildEvmMultisignBodyGmxLimitIncreaseBatch, buildEvmMultisignBodyGmxStakeGmxBatch, buildEvmMultisignBodyGmxUnstakeGmxBatch, formatGmxLeverageBps, formatGmxTokenAmountHuman, formatGmxUsd30, formatGmxUsd30HumanInput, getGmxApiSdk, gmxAssertIncreaseOrderWithinMaxLeverage, gmxContractAddress, gmxEnrichGmMarketRowWithApy, gmxEstimateDecreasePreview, gmxEstimateGmExecutionFee, gmxEstimateIncreasePreview, gmxFetchClosePositionCap, gmxFetchCollateralTokens, gmxFetchGmApy, gmxFetchGmLiquidityPositions, gmxFetchGmMarketForToken, gmxFetchGmMarkets, gmxFetchGmMarketsSummary, gmxFetchMarketPrices, gmxFetchMarketSnapshot, gmxFetchMarkets, gmxFetchMarketsSummary, gmxFetchOhlcv, gmxFetchOrdersForExecutor, gmxFetchOrdersSummary, gmxFetchPositionDisplayRows, gmxFetchPositionsForExecutor, gmxFetchStakingPower, gmxFetchTokens, gmxFindWrappedNativeToken, gmxFormatApyPercent, gmxFormatPositionsForDisplay, gmxGmxTokenAddress, gmxIsCloseSizeWithinPosition, gmxIsCollateralTokenSupported, gmxIsGmMarketTokenAddress, gmxIsGmxStakeTokenAddress, gmxKeyForNodeAssetRow, gmxLookupMarketApy, gmxMarketAcceptsCollateral, gmxMarketCollateralTokens, gmxMarketMaxLeverageBps, gmxMarketMaxLeverageLabel, gmxMarketsForCollateralSymbol, gmxNativeGasSymbolForChain, gmxProtocolModule, gmxResolveMarketByGmTokenAddress, gmxResolveMarketBySymbol, gmxResolveTokenBySymbol, gmxWrappedNativeSymbolForChain, gmxZeroAddress, isGmxChainSupported, parseGmxTokenAmount, parseGmxUsd30 };
2180
2213
  //# sourceMappingURL=index.js.map
2181
2214
  //# sourceMappingURL=index.js.map