@gblin-protocol/mcp-server 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 +213 -0
- package/dist/abi.d.ts +260 -0
- package/dist/abi.d.ts.map +1 -0
- package/dist/abi.js +52 -0
- package/dist/abi.js.map +1 -0
- package/dist/client.d.ts +11247 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +26 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +36 -0
- package/dist/config.js.map +1 -0
- package/dist/helpers.d.ts +83 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +259 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/tools.d.ts +147 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +497 -0
- package/dist/tools.js.map +1 -0
- package/llms.txt +52 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GBLIN MCP — viem Public Client
|
|
3
|
+
*
|
|
4
|
+
* Read-only Base mainnet client. The MCP server never signs or broadcasts;
|
|
5
|
+
* it only reads state and builds calldata for the agent's wallet to execute.
|
|
6
|
+
*/
|
|
7
|
+
import { createPublicClient, http } from "viem";
|
|
8
|
+
import { base } from "viem/chains";
|
|
9
|
+
import { RPC_URL } from "./config.js";
|
|
10
|
+
export const client = createPublicClient({
|
|
11
|
+
chain: base,
|
|
12
|
+
transport: http(RPC_URL, {
|
|
13
|
+
timeout: 10_000,
|
|
14
|
+
retryCount: 2,
|
|
15
|
+
retryDelay: 500,
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Fetch the latest block timestamp from the chain.
|
|
20
|
+
* Used for cooldown checks — never trust local clock (Date.now()).
|
|
21
|
+
*/
|
|
22
|
+
export async function getOnChainTimestamp() {
|
|
23
|
+
const block = await client.getBlock();
|
|
24
|
+
return block.timestamp;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,CAAC,MAAM,MAAM,GAAG,kBAAkB,CAAC;IACvC,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;QACvB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,GAAG;KAChB,CAAC;CACH,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;IACtC,OAAO,KAAK,CAAC,SAAS,CAAC;AACzB,CAAC"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GBLIN MCP — Network Configuration
|
|
3
|
+
*
|
|
4
|
+
* All addresses, constants, and tunable parameters.
|
|
5
|
+
* Verified against GBLIN_V5 contract on Base mainnet.
|
|
6
|
+
*/
|
|
7
|
+
import type { Address } from "viem";
|
|
8
|
+
export declare const BASE_CHAIN_ID = 8453;
|
|
9
|
+
export declare const DEFAULT_RPC_URL = "https://base-rpc.publicnode.com";
|
|
10
|
+
export declare const RPC_URL: string;
|
|
11
|
+
export declare const GBLIN_V5: Address;
|
|
12
|
+
export declare const USDC: Address;
|
|
13
|
+
export declare const WETH: Address;
|
|
14
|
+
export declare const ETH_USD_FEED: Address;
|
|
15
|
+
export declare const WETH_USDC_POOL_FEE = 500;
|
|
16
|
+
export declare const MIN_DEPOSIT_WEI = 500000000000000n;
|
|
17
|
+
export declare const COOLDOWN_SECONDS = 120;
|
|
18
|
+
export declare const ORACLE_STALENESS_SECONDS = 86400;
|
|
19
|
+
export declare const SLIPPAGE_NORMAL_BPS = 250n;
|
|
20
|
+
export declare const SLIPPAGE_CRASH_SHIELD_BPS = 400n;
|
|
21
|
+
export declare const BPS_DENOMINATOR = 10000n;
|
|
22
|
+
export declare const NAV_CACHE_TTL_MS = 30000;
|
|
23
|
+
export declare const BASKET_CACHE_TTL_MS = 60000;
|
|
24
|
+
export declare const SERVER_NAME = "gblin-treasury-mcp";
|
|
25
|
+
export declare const SERVER_VERSION = "0.1.0";
|
|
26
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,eAAO,MAAM,aAAa,OAAO,CAAC;AAGlC,eAAO,MAAM,eAAe,oCAAoC,CAAC;AACjE,eAAO,MAAM,OAAO,QAA+C,CAAC;AAGpE,eAAO,MAAM,QAAQ,EAAE,OAAsD,CAAC;AAC9E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAC1E,eAAO,MAAM,IAAI,EAAE,OAAsD,CAAC;AAG1E,eAAO,MAAM,YAAY,EAAE,OAAsD,CAAC;AAGlF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,eAAO,MAAM,eAAe,mBAAuB,CAAC;AACpD,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAI/C,eAAO,MAAM,mBAAmB,OAAO,CAAC;AACxC,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAC9C,eAAO,MAAM,eAAe,SAAU,CAAC;AAGvC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAG1C,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,cAAc,UAAU,CAAC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GBLIN MCP — Network Configuration
|
|
3
|
+
*
|
|
4
|
+
* All addresses, constants, and tunable parameters.
|
|
5
|
+
* Verified against GBLIN_V5 contract on Base mainnet.
|
|
6
|
+
*/
|
|
7
|
+
// ─── Network ────────────────────────────────────────────────────────────────
|
|
8
|
+
export const BASE_CHAIN_ID = 8453;
|
|
9
|
+
// publicnode.com is a free, no-key, generously-rated Base mainnet RPC
|
|
10
|
+
// (verified May 2026). Users can override via GBLIN_RPC_URL for Alchemy/QuickNode.
|
|
11
|
+
export const DEFAULT_RPC_URL = "https://base-rpc.publicnode.com";
|
|
12
|
+
export const RPC_URL = process.env.GBLIN_RPC_URL ?? DEFAULT_RPC_URL;
|
|
13
|
+
// ─── Core Contracts (Base Mainnet, verified) ────────────────────────────────
|
|
14
|
+
export const GBLIN_V5 = "0x38DcDB3A381677239BBc652aed9811F2f8496345";
|
|
15
|
+
export const USDC = "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
16
|
+
export const WETH = "0x4200000000000000000000000000000000000006";
|
|
17
|
+
// Chainlink ETH/USD price feed on Base
|
|
18
|
+
export const ETH_USD_FEED = "0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70";
|
|
19
|
+
// Uniswap V3 pool fee tier used by `sellGBLINForToken` for WETH→USDC leg
|
|
20
|
+
export const WETH_USDC_POOL_FEE = 500; // 0.05%
|
|
21
|
+
// ─── Protocol Constants (mirrors GBLIN_V5.sol) ──────────────────────────────
|
|
22
|
+
export const MIN_DEPOSIT_WEI = 500000000000000n; // 0.0005 ETH
|
|
23
|
+
export const COOLDOWN_SECONDS = 120; // 2 minutes (sell lock after buy)
|
|
24
|
+
export const ORACLE_STALENESS_SECONDS = 86_400; // 24h Chainlink heartbeat
|
|
25
|
+
// ─── Slippage Buffers (basis points) ────────────────────────────────────────
|
|
26
|
+
// Applied on top of contract-internal slippage (maxInternalSlippage = 200 bps)
|
|
27
|
+
export const SLIPPAGE_NORMAL_BPS = 250n; // 2.5% — calm market
|
|
28
|
+
export const SLIPPAGE_CRASH_SHIELD_BPS = 400n; // 4.0% — Crash Shield active
|
|
29
|
+
export const BPS_DENOMINATOR = 10000n;
|
|
30
|
+
// ─── Caching ────────────────────────────────────────────────────────────────
|
|
31
|
+
export const NAV_CACHE_TTL_MS = 30_000; // 30 seconds
|
|
32
|
+
export const BASKET_CACHE_TTL_MS = 60_000; // 60 seconds
|
|
33
|
+
// ─── Metadata ───────────────────────────────────────────────────────────────
|
|
34
|
+
export const SERVER_NAME = "gblin-treasury-mcp";
|
|
35
|
+
export const SERVER_VERSION = "0.1.0";
|
|
36
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC;AAClC,sEAAsE;AACtE,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,iCAAiC,CAAC;AACjE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,eAAe,CAAC;AAEpE,+EAA+E;AAC/E,MAAM,CAAC,MAAM,QAAQ,GAAY,4CAA4C,CAAC;AAC9E,MAAM,CAAC,MAAM,IAAI,GAAY,4CAA4C,CAAC;AAC1E,MAAM,CAAC,MAAM,IAAI,GAAY,4CAA4C,CAAC;AAE1E,uCAAuC;AACvC,MAAM,CAAC,MAAM,YAAY,GAAY,4CAA4C,CAAC;AAElF,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAC,CAAC,QAAQ;AAE/C,+EAA+E;AAC/E,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAoB,CAAC,CAAC,aAAa;AAClE,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,CAAC,kCAAkC;AACvE,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC,CAAC,0BAA0B;AAE1E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,CAAC,qBAAqB;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,CAAC,CAAC,6BAA6B;AAC5E,MAAM,CAAC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEvC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,aAAa;AACrD,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,CAAC,aAAa;AAExD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,WAAW,GAAG,oBAAoB,CAAC;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GBLIN MCP — Core Helpers
|
|
3
|
+
*
|
|
4
|
+
* Domain logic shared by all tools: NAV calculation, Crash Shield detection,
|
|
5
|
+
* dynamic slippage, cooldown checks, and reverse JIT quoting.
|
|
6
|
+
*
|
|
7
|
+
* All functions are read-only against Base mainnet. No private keys involved.
|
|
8
|
+
*/
|
|
9
|
+
import type { Address } from "viem";
|
|
10
|
+
export declare function getEthPriceUsd(): Promise<number>;
|
|
11
|
+
export declare function getNavUsd(): Promise<number>;
|
|
12
|
+
export interface BasketEntry {
|
|
13
|
+
token: Address;
|
|
14
|
+
oracle: Address;
|
|
15
|
+
poolFee: number;
|
|
16
|
+
isStable: boolean;
|
|
17
|
+
baseWeightBps: number;
|
|
18
|
+
dynamicWeightBps: number;
|
|
19
|
+
isSlashed: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface BasketState {
|
|
22
|
+
entries: BasketEntry[];
|
|
23
|
+
crashShieldActive: boolean;
|
|
24
|
+
totalBaseWeight: number;
|
|
25
|
+
totalDynamicWeight: number;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Reads basket(0), basket(1), basket(2) from the contract and derives whether
|
|
29
|
+
* the Crash Shield is currently active.
|
|
30
|
+
*
|
|
31
|
+
* Crash Shield is "active" if any asset has dynamicWeight < baseWeight, which
|
|
32
|
+
* happens when the contract's `refreshWeights()` detected a >20% drawdown.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getBasketState(): Promise<BasketState>;
|
|
35
|
+
export interface SlippageProfile {
|
|
36
|
+
bps: bigint;
|
|
37
|
+
pct: number;
|
|
38
|
+
reason: "normal" | "crash_shield_active";
|
|
39
|
+
}
|
|
40
|
+
export declare function getDynamicSlippage(): Promise<SlippageProfile>;
|
|
41
|
+
/**
|
|
42
|
+
* Apply slippage buffer to an expected output amount.
|
|
43
|
+
* minOut = expected * (10000 - bps) / 10000
|
|
44
|
+
*/
|
|
45
|
+
export declare function applySlippageBuffer(expected: bigint, bps: bigint): bigint;
|
|
46
|
+
export interface CooldownStatus {
|
|
47
|
+
active: boolean;
|
|
48
|
+
secondsRemaining: number;
|
|
49
|
+
lastDeposit: number;
|
|
50
|
+
}
|
|
51
|
+
export declare function checkCooldown(wallet: Address): Promise<CooldownStatus>;
|
|
52
|
+
/**
|
|
53
|
+
* Given a USD target (e.g. "$5 needed for x402 payment"), compute how much
|
|
54
|
+
* GBLIN must be sold via sellGBLINForToken to receive that USD amount, with
|
|
55
|
+
* the dynamic slippage buffer baked in (so the call won't revert).
|
|
56
|
+
*
|
|
57
|
+
* Approach (no Quoter dependency in v0.1):
|
|
58
|
+
* 1. usdcTarget × buffer = grossUsdcTarget
|
|
59
|
+
* 2. grossUsdcTarget / navUsd = gblinToSell
|
|
60
|
+
*
|
|
61
|
+
* The buffer absorbs both protocol internal slippage and Uniswap WETH→USDC.
|
|
62
|
+
*/
|
|
63
|
+
export declare function quoteGblinForUsdc(usdcTargetStr: string): Promise<{
|
|
64
|
+
gblinToSell: bigint;
|
|
65
|
+
minUsdcOut: bigint;
|
|
66
|
+
expectedUsdcOut: bigint;
|
|
67
|
+
navUsd: number;
|
|
68
|
+
slippage: SlippageProfile;
|
|
69
|
+
}>;
|
|
70
|
+
export interface WalletBalances {
|
|
71
|
+
gblin: bigint;
|
|
72
|
+
gblinFormatted: string;
|
|
73
|
+
gblinValueUsd: number;
|
|
74
|
+
usdc: bigint;
|
|
75
|
+
usdcFormatted: string;
|
|
76
|
+
eth: bigint;
|
|
77
|
+
ethFormatted: string;
|
|
78
|
+
ethValueUsd: number;
|
|
79
|
+
totalUsd: number;
|
|
80
|
+
}
|
|
81
|
+
export declare function getWalletBalances(wallet: Address): Promise<WalletBalances>;
|
|
82
|
+
export declare function clearCaches(): void;
|
|
83
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA2BpC,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CA+BtD;AAQD,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAoBjD;AAMD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAID;;;;;;GAMG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC,CAyD3D;AAMD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,QAAQ,GAAG,qBAAqB,CAAC;CAC1C;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAcnE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzE;AAMD,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAuB5E;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IACT,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC,CAsCD;AAMD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAsChF;AAMD,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
|
package/dist/helpers.js
ADDED
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GBLIN MCP — Core Helpers
|
|
3
|
+
*
|
|
4
|
+
* Domain logic shared by all tools: NAV calculation, Crash Shield detection,
|
|
5
|
+
* dynamic slippage, cooldown checks, and reverse JIT quoting.
|
|
6
|
+
*
|
|
7
|
+
* All functions are read-only against Base mainnet. No private keys involved.
|
|
8
|
+
*/
|
|
9
|
+
import { formatUnits, parseUnits } from "viem";
|
|
10
|
+
import { client, getOnChainTimestamp } from "./client.js";
|
|
11
|
+
import { CHAINLINK_AGGREGATOR_ABI, ERC20_ABI, GBLIN_ABI, } from "./abi.js";
|
|
12
|
+
import { BASKET_CACHE_TTL_MS, BPS_DENOMINATOR, COOLDOWN_SECONDS, ETH_USD_FEED, GBLIN_V5, NAV_CACHE_TTL_MS, ORACLE_STALENESS_SECONDS, SLIPPAGE_CRASH_SHIELD_BPS, SLIPPAGE_NORMAL_BPS, USDC, } from "./config.js";
|
|
13
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
14
|
+
// ETH/USD PRICE (Chainlink) — with staleness guard
|
|
15
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
16
|
+
let ethPriceCache = null;
|
|
17
|
+
export async function getEthPriceUsd() {
|
|
18
|
+
const now = Date.now();
|
|
19
|
+
if (ethPriceCache && now - ethPriceCache.fetchedAt < NAV_CACHE_TTL_MS) {
|
|
20
|
+
return ethPriceCache.value;
|
|
21
|
+
}
|
|
22
|
+
const data = await client.readContract({
|
|
23
|
+
address: ETH_USD_FEED,
|
|
24
|
+
abi: CHAINLINK_AGGREGATOR_ABI,
|
|
25
|
+
functionName: "latestRoundData",
|
|
26
|
+
});
|
|
27
|
+
const answer = data[1]; // int256
|
|
28
|
+
const updatedAt = Number(data[3]); // uint256 → seconds
|
|
29
|
+
if (answer <= 0n) {
|
|
30
|
+
throw new Error("OracleDead: Chainlink ETH/USD feed returned non-positive value.");
|
|
31
|
+
}
|
|
32
|
+
const nowSec = Math.floor(now / 1_000);
|
|
33
|
+
if (nowSec - updatedAt > ORACLE_STALENESS_SECONDS) {
|
|
34
|
+
throw new Error(`OracleStale: Chainlink ETH/USD feed is ${nowSec - updatedAt}s old (max ${ORACLE_STALENESS_SECONDS}s). Aborting to protect against MEV/slippage.`);
|
|
35
|
+
}
|
|
36
|
+
// Chainlink ETH/USD on Base has 8 decimals
|
|
37
|
+
const price = Number(answer) / 1e8;
|
|
38
|
+
ethPriceCache = { value: price, fetchedAt: now };
|
|
39
|
+
return price;
|
|
40
|
+
}
|
|
41
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
42
|
+
// NAV — net asset value of 1 GBLIN in USD
|
|
43
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
44
|
+
let navCache = null;
|
|
45
|
+
export async function getNavUsd() {
|
|
46
|
+
const now = Date.now();
|
|
47
|
+
if (navCache && now - navCache.fetchedAt < NAV_CACHE_TTL_MS) {
|
|
48
|
+
return navCache.value;
|
|
49
|
+
}
|
|
50
|
+
const [ethPerGblinWei, ethPriceUsd] = await Promise.all([
|
|
51
|
+
client.readContract({
|
|
52
|
+
address: GBLIN_V5,
|
|
53
|
+
abi: GBLIN_ABI,
|
|
54
|
+
functionName: "quoteSellGBLIN",
|
|
55
|
+
args: [parseUnits("1", 18)],
|
|
56
|
+
}),
|
|
57
|
+
getEthPriceUsd(),
|
|
58
|
+
]);
|
|
59
|
+
const ethPerGblin = Number(formatUnits(ethPerGblinWei, 18));
|
|
60
|
+
const navUsd = ethPerGblin * ethPriceUsd;
|
|
61
|
+
navCache = { value: navUsd, fetchedAt: now };
|
|
62
|
+
return navUsd;
|
|
63
|
+
}
|
|
64
|
+
let basketCache = null;
|
|
65
|
+
/**
|
|
66
|
+
* Reads basket(0), basket(1), basket(2) from the contract and derives whether
|
|
67
|
+
* the Crash Shield is currently active.
|
|
68
|
+
*
|
|
69
|
+
* Crash Shield is "active" if any asset has dynamicWeight < baseWeight, which
|
|
70
|
+
* happens when the contract's `refreshWeights()` detected a >20% drawdown.
|
|
71
|
+
*/
|
|
72
|
+
export async function getBasketState() {
|
|
73
|
+
const now = Date.now();
|
|
74
|
+
if (basketCache && now - basketCache.fetchedAt < BASKET_CACHE_TTL_MS) {
|
|
75
|
+
return basketCache.value;
|
|
76
|
+
}
|
|
77
|
+
const entries = [];
|
|
78
|
+
let crashShieldActive = false;
|
|
79
|
+
let totalBase = 0;
|
|
80
|
+
let totalDynamic = 0;
|
|
81
|
+
// Basket has exactly 3 slots in V5 (cbBTC, WETH, USDC). We probe defensively
|
|
82
|
+
// up to 8 so future asset additions don't break the tool.
|
|
83
|
+
for (let i = 0; i < 8; i++) {
|
|
84
|
+
try {
|
|
85
|
+
const raw = await client.readContract({
|
|
86
|
+
address: GBLIN_V5,
|
|
87
|
+
abi: GBLIN_ABI,
|
|
88
|
+
functionName: "basket",
|
|
89
|
+
args: [BigInt(i)],
|
|
90
|
+
});
|
|
91
|
+
// raw is the 8-tuple: [token, oracle, poolFee, isStable, baseWeight, dynamicWeight, peakPrice, lastPeakUpdate]
|
|
92
|
+
const [token, oracle, poolFee, isStable, baseWeight, dynamicWeight] = raw;
|
|
93
|
+
const baseBps = Number(baseWeight);
|
|
94
|
+
const dynBps = Number(dynamicWeight);
|
|
95
|
+
if (baseBps === 0 && dynBps === 0)
|
|
96
|
+
break; // end of basket
|
|
97
|
+
const isSlashed = dynBps < baseBps;
|
|
98
|
+
if (isSlashed)
|
|
99
|
+
crashShieldActive = true;
|
|
100
|
+
entries.push({
|
|
101
|
+
token,
|
|
102
|
+
oracle,
|
|
103
|
+
poolFee: Number(poolFee),
|
|
104
|
+
isStable,
|
|
105
|
+
baseWeightBps: baseBps,
|
|
106
|
+
dynamicWeightBps: dynBps,
|
|
107
|
+
isSlashed,
|
|
108
|
+
});
|
|
109
|
+
totalBase += baseBps;
|
|
110
|
+
totalDynamic += dynBps;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
// Out-of-bounds index — viem throws. Treat as end of basket.
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const state = {
|
|
118
|
+
entries,
|
|
119
|
+
crashShieldActive,
|
|
120
|
+
totalBaseWeight: totalBase,
|
|
121
|
+
totalDynamicWeight: totalDynamic,
|
|
122
|
+
};
|
|
123
|
+
basketCache = { value: state, fetchedAt: now };
|
|
124
|
+
return state;
|
|
125
|
+
}
|
|
126
|
+
export async function getDynamicSlippage() {
|
|
127
|
+
const basket = await getBasketState();
|
|
128
|
+
if (basket.crashShieldActive) {
|
|
129
|
+
return {
|
|
130
|
+
bps: SLIPPAGE_CRASH_SHIELD_BPS,
|
|
131
|
+
pct: Number(SLIPPAGE_CRASH_SHIELD_BPS) / 100,
|
|
132
|
+
reason: "crash_shield_active",
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
bps: SLIPPAGE_NORMAL_BPS,
|
|
137
|
+
pct: Number(SLIPPAGE_NORMAL_BPS) / 100,
|
|
138
|
+
reason: "normal",
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Apply slippage buffer to an expected output amount.
|
|
143
|
+
* minOut = expected * (10000 - bps) / 10000
|
|
144
|
+
*/
|
|
145
|
+
export function applySlippageBuffer(expected, bps) {
|
|
146
|
+
return (expected * (BPS_DENOMINATOR - bps)) / BPS_DENOMINATOR;
|
|
147
|
+
}
|
|
148
|
+
export async function checkCooldown(wallet) {
|
|
149
|
+
const [lastDeposit, blockTimestamp] = await Promise.all([
|
|
150
|
+
client.readContract({
|
|
151
|
+
address: GBLIN_V5,
|
|
152
|
+
abi: GBLIN_ABI,
|
|
153
|
+
functionName: "lastDepositTime",
|
|
154
|
+
args: [wallet],
|
|
155
|
+
}),
|
|
156
|
+
getOnChainTimestamp(),
|
|
157
|
+
]);
|
|
158
|
+
const lastDepositNum = Number(lastDeposit);
|
|
159
|
+
const nowOnChain = Number(blockTimestamp);
|
|
160
|
+
const unlockAt = lastDepositNum + COOLDOWN_SECONDS;
|
|
161
|
+
if (nowOnChain < unlockAt) {
|
|
162
|
+
return {
|
|
163
|
+
active: true,
|
|
164
|
+
secondsRemaining: unlockAt - nowOnChain,
|
|
165
|
+
lastDeposit: lastDepositNum,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
return { active: false, secondsRemaining: 0, lastDeposit: lastDepositNum };
|
|
169
|
+
}
|
|
170
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
171
|
+
// REVERSE QUOTE — USD → GBLIN amount needed
|
|
172
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
173
|
+
/**
|
|
174
|
+
* Given a USD target (e.g. "$5 needed for x402 payment"), compute how much
|
|
175
|
+
* GBLIN must be sold via sellGBLINForToken to receive that USD amount, with
|
|
176
|
+
* the dynamic slippage buffer baked in (so the call won't revert).
|
|
177
|
+
*
|
|
178
|
+
* Approach (no Quoter dependency in v0.1):
|
|
179
|
+
* 1. usdcTarget × buffer = grossUsdcTarget
|
|
180
|
+
* 2. grossUsdcTarget / navUsd = gblinToSell
|
|
181
|
+
*
|
|
182
|
+
* The buffer absorbs both protocol internal slippage and Uniswap WETH→USDC.
|
|
183
|
+
*/
|
|
184
|
+
export async function quoteGblinForUsdc(usdcTargetStr) {
|
|
185
|
+
const navUsd = await getNavUsd();
|
|
186
|
+
const slippage = await getDynamicSlippage();
|
|
187
|
+
const usdcTargetUnits = parseUnits(usdcTargetStr, 6); // USDC = 6 decimals
|
|
188
|
+
// Gross-up the target by the slippage buffer so we sell enough GBLIN.
|
|
189
|
+
// grossTarget = target * 10000 / (10000 - bps)
|
|
190
|
+
const grossUsdcTarget = (usdcTargetUnits * BPS_DENOMINATOR) / (BPS_DENOMINATOR - slippage.bps);
|
|
191
|
+
// Convert USDC (6 dec) → GBLIN (18 dec) using NAV.
|
|
192
|
+
// gblin = (grossUsdc / 1e6) / navUsd → scale to 18-dec wei
|
|
193
|
+
// Using BigInt math: gblin = grossUsdc * 1e12 * 1e6 / (navUsd_scaled)
|
|
194
|
+
// We scale navUsd by 1e6 for precision.
|
|
195
|
+
const navUsdScaled = BigInt(Math.round(navUsd * 1_000_000));
|
|
196
|
+
// gblinToSell = grossUsdcTarget(6 dec) * 1e18 / (navUsdScaled / 1e6) → simplifies to:
|
|
197
|
+
// gblinToSell = grossUsdcTarget * 1e18 * 1e6 / (navUsdScaled * 1e6) = grossUsdcTarget * 1e18 / navUsdScaled
|
|
198
|
+
// Wait — need to align decimals carefully:
|
|
199
|
+
// grossUsdcTarget has 6 decimals → represents USD * 1e6
|
|
200
|
+
// navUsdScaled represents USD * 1e6
|
|
201
|
+
// So gblinUnits (18 decimals) = (grossUsdcTarget / navUsdScaled) * 1e18
|
|
202
|
+
const gblinToSell = (grossUsdcTarget * parseUnits("1", 18)) / navUsdScaled;
|
|
203
|
+
// minUsdcOut = exact target (we asked for this much; agent fails if it gets less)
|
|
204
|
+
const minUsdcOut = usdcTargetUnits;
|
|
205
|
+
// expectedUsdcOut = gross target (what the agent should approximately receive)
|
|
206
|
+
const expectedUsdcOut = grossUsdcTarget;
|
|
207
|
+
return {
|
|
208
|
+
gblinToSell,
|
|
209
|
+
minUsdcOut,
|
|
210
|
+
expectedUsdcOut,
|
|
211
|
+
navUsd,
|
|
212
|
+
slippage,
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
export async function getWalletBalances(wallet) {
|
|
216
|
+
const [gblin, usdc, eth, navUsd, ethPriceUsd] = await Promise.all([
|
|
217
|
+
client.readContract({
|
|
218
|
+
address: GBLIN_V5,
|
|
219
|
+
abi: GBLIN_ABI,
|
|
220
|
+
functionName: "balanceOf",
|
|
221
|
+
args: [wallet],
|
|
222
|
+
}),
|
|
223
|
+
client.readContract({
|
|
224
|
+
address: USDC,
|
|
225
|
+
abi: ERC20_ABI,
|
|
226
|
+
functionName: "balanceOf",
|
|
227
|
+
args: [wallet],
|
|
228
|
+
}),
|
|
229
|
+
client.getBalance({ address: wallet }),
|
|
230
|
+
getNavUsd(),
|
|
231
|
+
getEthPriceUsd(),
|
|
232
|
+
]);
|
|
233
|
+
const gblinFormatted = formatUnits(gblin, 18);
|
|
234
|
+
const usdcFormatted = formatUnits(usdc, 6);
|
|
235
|
+
const ethFormatted = formatUnits(eth, 18);
|
|
236
|
+
const gblinValueUsd = Number(gblinFormatted) * navUsd;
|
|
237
|
+
const ethValueUsd = Number(ethFormatted) * ethPriceUsd;
|
|
238
|
+
const totalUsd = gblinValueUsd + Number(usdcFormatted) + ethValueUsd;
|
|
239
|
+
return {
|
|
240
|
+
gblin,
|
|
241
|
+
gblinFormatted,
|
|
242
|
+
gblinValueUsd,
|
|
243
|
+
usdc,
|
|
244
|
+
usdcFormatted,
|
|
245
|
+
eth,
|
|
246
|
+
ethFormatted,
|
|
247
|
+
ethValueUsd,
|
|
248
|
+
totalUsd,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
252
|
+
// CACHE INVALIDATION (for tests)
|
|
253
|
+
// ───────────────────────────────────────────────────────────────────────────
|
|
254
|
+
export function clearCaches() {
|
|
255
|
+
ethPriceCache = null;
|
|
256
|
+
navCache = null;
|
|
257
|
+
basketCache = null;
|
|
258
|
+
}
|
|
259
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* GBLIN MCP Server — entry point.
|
|
4
|
+
*
|
|
5
|
+
* Speaks the Model Context Protocol over stdio. Clients (Claude Desktop,
|
|
6
|
+
* AgentKit, Eliza, custom agents) discover and invoke the 5 GBLIN tools.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: never write to stdout via console.log — that channel is reserved
|
|
9
|
+
* for MCP JSON-RPC frames. Use console.error (stderr) for diagnostics.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* GBLIN MCP Server — entry point.
|
|
4
|
+
*
|
|
5
|
+
* Speaks the Model Context Protocol over stdio. Clients (Claude Desktop,
|
|
6
|
+
* AgentKit, Eliza, custom agents) discover and invoke the 5 GBLIN tools.
|
|
7
|
+
*
|
|
8
|
+
* IMPORTANT: never write to stdout via console.log — that channel is reserved
|
|
9
|
+
* for MCP JSON-RPC frames. Use console.error (stderr) for diagnostics.
|
|
10
|
+
*/
|
|
11
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
12
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
13
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
14
|
+
import { SERVER_NAME, SERVER_VERSION } from "./config.js";
|
|
15
|
+
import { TOOL_DEFINITIONS, TOOL_HANDLERS } from "./tools.js";
|
|
16
|
+
const server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
|
|
17
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
18
|
+
tools: TOOL_DEFINITIONS,
|
|
19
|
+
}));
|
|
20
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
21
|
+
const { name, arguments: args } = request.params;
|
|
22
|
+
const handler = TOOL_HANDLERS[name];
|
|
23
|
+
if (!handler) {
|
|
24
|
+
return {
|
|
25
|
+
isError: true,
|
|
26
|
+
content: [
|
|
27
|
+
{
|
|
28
|
+
type: "text",
|
|
29
|
+
text: JSON.stringify({ error: `Unknown tool: ${name}` }),
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return handler(args ?? {});
|
|
35
|
+
});
|
|
36
|
+
async function main() {
|
|
37
|
+
const transport = new StdioServerTransport();
|
|
38
|
+
await server.connect(transport);
|
|
39
|
+
console.error(`[${SERVER_NAME}] v${SERVER_VERSION} online — listening on stdio (5 tools registered).`);
|
|
40
|
+
}
|
|
41
|
+
main().catch((err) => {
|
|
42
|
+
console.error("[gblin-mcp] fatal:", err);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,EAC9C,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE,gBAAgB;CACxB,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IACjD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC;iBACzD;aACF;SACF,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CACX,IAAI,WAAW,MAAM,cAAc,oDAAoD,CACxF,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|