@gala-chain/launchpad-mcp-server 8.0.0 → 8.0.2
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/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/tools/dex/helpers.d.ts +10 -1
- package/dist/tools/dex/helpers.d.ts.map +1 -1
- package/dist/tools/dex/helpers.js +44 -2
- package/dist/tools/dex/helpers.js.map +1 -1
- package/dist/tools/dex/index.d.ts.map +1 -1
- package/dist/tools/dex/index.js +69 -18
- package/dist/tools/dex/index.js.map +1 -1
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +3 -2
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/error-templates.d.ts +39 -2
- package/dist/utils/error-templates.d.ts.map +1 -1
- package/dist/utils/error-templates.js +176 -3
- package/dist/utils/error-templates.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Shared formatting and argument helpers for the v6 GSwap MCP tools. */
|
|
2
2
|
import type { GSwap, Position, PriceIn, Slot0, TradingSymbol } from '@gala-chain/gswap-sdk';
|
|
3
3
|
import type { LaunchpadSDK } from '@gala-chain/launchpad-sdk';
|
|
4
|
-
import type { MCPTool } from '../../types/mcp.js';
|
|
4
|
+
import type { MCPTool, MCPToolResponse } from '../../types/mcp.js';
|
|
5
5
|
export interface TokenPairParams {
|
|
6
6
|
token0: string;
|
|
7
7
|
token1: string;
|
|
@@ -14,6 +14,15 @@ export interface TokenPairWithTicksParams extends TokenPairParams {
|
|
|
14
14
|
export declare function extractTokenPairParams(args: Record<string, unknown>): TokenPairParams;
|
|
15
15
|
export declare function extractTokenPairWithTicksParams(args: Record<string, unknown>): TokenPairWithTicksParams;
|
|
16
16
|
export declare function mapTokenAssets(result: unknown): Array<Record<string, unknown>>;
|
|
17
|
+
/**
|
|
18
|
+
* The machine-readable answer when a wallet's balances could not be read: `balancesAvailable: false`
|
|
19
|
+
* and NO asset list, so an agent can never read the outage as "the wallet is empty". Returns null
|
|
20
|
+
* when the error is not a balance-source failure (the caller rethrows it for the generic tips).
|
|
21
|
+
*/
|
|
22
|
+
export declare function balancesUnavailableResponse(walletAddress: string, error: unknown, progress?: {
|
|
23
|
+
page: number;
|
|
24
|
+
assetsRead: number;
|
|
25
|
+
}): MCPToolResponse | null;
|
|
17
26
|
export declare function mapTokenMetadataArray(tokens: TradingSymbol[]): Array<Record<string, unknown>>;
|
|
18
27
|
export declare function formatFeeTierPercent(fee: number): string;
|
|
19
28
|
export declare function formatFeeTiersPercent(fees: number[]): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/dex/helpers.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EAEP,KAAK,EACL,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/tools/dex/helpers.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,KAAK,EACV,KAAK,EACL,QAAQ,EACR,OAAO,EAEP,KAAK,EACL,aAAa,EACd,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AASnE,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,CAMrF;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAMvG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAY9E;AAeD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAC9C,eAAe,GAAG,IAAI,CA2BxB;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAU7F;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,8CAA8C;AAC9C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAoCpE;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAyB1E;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB1E;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAErF;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEtF;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjE;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG1F;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AA4BD,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Shared formatting and argument helpers for the v6 GSwap MCP tools. */
|
|
2
|
+
import { extractErrorDetails } from '../../utils/error-templates.js';
|
|
2
3
|
import { formatSdkResult, formatSuccess } from '../../utils/response-formatter.js';
|
|
3
4
|
import { withErrorHandling } from '../../utils/error-handler.js';
|
|
4
5
|
import { DEX_POOL_QUOTE_INPUT_SCHEMA, SWAP_QUOTE_INPUT_SCHEMA, } from '../../schemas/common-schemas.js';
|
|
@@ -29,6 +30,47 @@ export function mapTokenAssets(result) {
|
|
|
29
30
|
quantity: token.quantity,
|
|
30
31
|
}));
|
|
31
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* gswap-sdk codes for "the balance source did not give a usable answer": the backend answered with
|
|
35
|
+
* an error status (defi-backend answers a failed balance lookup on `/user/assets` with an error,
|
|
36
|
+
* never with zero rows), the request timed out or never got an answer, or the answer was malformed.
|
|
37
|
+
* Anything else (validation of the arguments, a required update) is not a balance outage.
|
|
38
|
+
*/
|
|
39
|
+
const BALANCES_UNAVAILABLE_CODES = new Set([
|
|
40
|
+
'HTTP_ERROR',
|
|
41
|
+
'TRANSPORT_ERROR',
|
|
42
|
+
'REQUEST_TIMEOUT',
|
|
43
|
+
'INVALID_CHAIN_RESPONSE',
|
|
44
|
+
]);
|
|
45
|
+
/**
|
|
46
|
+
* The machine-readable answer when a wallet's balances could not be read: `balancesAvailable: false`
|
|
47
|
+
* and NO asset list, so an agent can never read the outage as "the wallet is empty". Returns null
|
|
48
|
+
* when the error is not a balance-source failure (the caller rethrows it for the generic tips).
|
|
49
|
+
*/
|
|
50
|
+
export function balancesUnavailableResponse(walletAddress, error, progress) {
|
|
51
|
+
const { code, status } = extractErrorDetails(error);
|
|
52
|
+
if (code === undefined || !BALANCES_UNAVAILABLE_CODES.has(code))
|
|
53
|
+
return null;
|
|
54
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
55
|
+
return {
|
|
56
|
+
content: [
|
|
57
|
+
{
|
|
58
|
+
type: 'text',
|
|
59
|
+
text: JSON.stringify({
|
|
60
|
+
balancesAvailable: false,
|
|
61
|
+
walletAddress,
|
|
62
|
+
code,
|
|
63
|
+
...(status === undefined ? {} : { status }),
|
|
64
|
+
...(progress === undefined ? {} : { failedPage: progress.page, assetsReadBeforeFailure: progress.assetsRead }),
|
|
65
|
+
message: `Balances for wallet ${walletAddress} are UNKNOWN: the balance source did not answer (${reason}). ` +
|
|
66
|
+
'This is NOT a zero balance and NOT an empty wallet. No asset list is returned.',
|
|
67
|
+
tip: 'Do not tell the user the wallet is empty or hold nothing. Retry in a few seconds; if it keeps failing, report that balances are temporarily unavailable. If the failure is HTTP 400 on every retry, also check the wallet address format.',
|
|
68
|
+
}, null, 2),
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
isError: true,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
32
74
|
export function mapTokenMetadataArray(tokens) {
|
|
33
75
|
return tokens.map((token) => ({
|
|
34
76
|
symbol: token.symbol,
|
|
@@ -78,7 +120,7 @@ export function createSwapQuoteTool(config) {
|
|
|
78
120
|
...quote,
|
|
79
121
|
inputAmount: quote.amountIn,
|
|
80
122
|
estimatedOutput: quote.amountOut,
|
|
81
|
-
priceImpact: quote.priceImpact
|
|
123
|
+
priceImpact: quote.priceImpact.toString(),
|
|
82
124
|
message: `Quote: ${quote.amountIn} ${fromToken} -> ~${quote.amountOut} ${toToken}`,
|
|
83
125
|
});
|
|
84
126
|
}),
|
|
@@ -106,7 +148,7 @@ export function createDexPoolQuoteTool(config) {
|
|
|
106
148
|
...quote,
|
|
107
149
|
mode: 'external',
|
|
108
150
|
pool: { token0: requiredString(args, 'token0'), token1: requiredString(args, 'token1'), fee },
|
|
109
|
-
priceImpact: quote.priceImpact
|
|
151
|
+
priceImpact: quote.priceImpact.toString(),
|
|
110
152
|
});
|
|
111
153
|
}),
|
|
112
154
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/tools/dex/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/tools/dex/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/dex/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAG1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/dex/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAG1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AA0BlD,eAAO,MAAM,0BAA0B,EAAE,OAKvC,CAAC;AAEH,eAAO,MAAM,2BAA2B,EAAE,OAKxC,CAAC;AAEH,eAAO,MAAM,8BAA8B,EAAE,OAG3C,CAAC;AAEH,eAAO,MAAM,iCAAiC,EAAE,OAG9C,CAAC;AAEH,eAAO,MAAM,eAAe,EAAE,OA8C7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OAuB/B,CAAC;AA0CF,eAAO,MAAM,qBAAqB,EAAE,OA0BnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OA4CtC,CAAC;AAmBF,eAAO,MAAM,QAAQ,EAAE,OAAO,EAS7B,CAAC"}
|
package/dist/tools/dex/index.js
CHANGED
|
@@ -9,7 +9,8 @@ const SWAP_UNIQUE_KEY_SCHEMA = {
|
|
|
9
9
|
};
|
|
10
10
|
import { formatSuccess } from '../../utils/response-formatter.js';
|
|
11
11
|
import { withErrorHandling } from '../../utils/error-handler.js';
|
|
12
|
-
import {
|
|
12
|
+
import { classifyDexCode, extractErrorDetails } from '../../utils/error-templates.js';
|
|
13
|
+
import { balancesUnavailableResponse, createDexPoolQuoteTool, createSwapQuoteTool, formatDexSubmission, mapTokenAssets, } from './helpers.js';
|
|
13
14
|
export const getSwapQuoteExactInputTool = createSwapQuoteTool({
|
|
14
15
|
name: 'gala_launchpad_get_swap_quote_exact_input',
|
|
15
16
|
description: 'Get a v6 GSwap quote for an exact input amount through sdk.dex.quoting.',
|
|
@@ -108,13 +109,34 @@ export const getSwapResultTool = {
|
|
|
108
109
|
* later; a chain rejection is terminal and is rethrown unchanged.
|
|
109
110
|
*/
|
|
110
111
|
function withUniqueKey(error, uniqueKey) {
|
|
111
|
-
|
|
112
|
+
// The swap is already queued here (we hold its uniqueKey), so like gswap-sdk's
|
|
113
|
+
// classifyFailure(error, { afterQueued: true }) only the chain's own verdict is terminal.
|
|
114
|
+
// Every other failure, recognized code or not, may still apply: never invite a resubmit.
|
|
115
|
+
if (isChainVerdict(error))
|
|
112
116
|
return error;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
return
|
|
117
|
-
|
|
117
|
+
return new UnresolvedSwapError(error, uniqueKey);
|
|
118
|
+
}
|
|
119
|
+
function isChainVerdict(error) {
|
|
120
|
+
return classifyDexCode(extractErrorDetails(error)) === 'rejected';
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A swap whose outcome is unknown, carrying the original error's `code` (so formatError selects
|
|
124
|
+
* the do-not-resubmit tip from the code, not from the English text), the uniqueKey to resolve it
|
|
125
|
+
* with, and the original error as `cause`.
|
|
126
|
+
*/
|
|
127
|
+
class UnresolvedSwapError extends Error {
|
|
128
|
+
code;
|
|
129
|
+
uniqueKey;
|
|
130
|
+
/** Read by extractErrorDetails: the failing step ran after the swap was queued. */
|
|
131
|
+
afterQueued = true;
|
|
132
|
+
constructor(cause, uniqueKey) {
|
|
133
|
+
const causeMessage = cause instanceof Error ? cause.message : String(cause);
|
|
134
|
+
super(`${causeMessage} The swap outcome is still unknown for uniqueKey ${uniqueKey}; ` +
|
|
135
|
+
'resolve it with gala_launchpad_get_swap_result instead of submitting again.', { cause });
|
|
136
|
+
this.name = 'UnresolvedSwapError';
|
|
137
|
+
this.code = extractErrorDetails(cause).code;
|
|
138
|
+
this.uniqueKey = uniqueKey;
|
|
139
|
+
}
|
|
118
140
|
}
|
|
119
141
|
export const getSwapUserAssetsTool = {
|
|
120
142
|
name: 'gala_launchpad_get_swap_user_assets',
|
|
@@ -126,8 +148,18 @@ export const getSwapUserAssetsTool = {
|
|
|
126
148
|
},
|
|
127
149
|
handler: withErrorHandling(async (sdk, args) => {
|
|
128
150
|
const walletAddress = requiredString(args, 'walletAddress');
|
|
129
|
-
|
|
151
|
+
let result;
|
|
152
|
+
try {
|
|
153
|
+
result = await sdk.dex.assets.getUserAssets(walletAddress, 1, 100);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const unavailable = balancesUnavailableResponse(walletAddress, error);
|
|
157
|
+
if (unavailable !== null)
|
|
158
|
+
return unavailable;
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
130
161
|
return formatSuccess({
|
|
162
|
+
balancesAvailable: true,
|
|
131
163
|
walletAddress,
|
|
132
164
|
assetCount: result.tokens.length,
|
|
133
165
|
assets: mapTokenAssets(result),
|
|
@@ -145,22 +177,41 @@ export const getAllSwapUserAssetsTool = {
|
|
|
145
177
|
},
|
|
146
178
|
handler: withErrorHandling(async (sdk, args) => {
|
|
147
179
|
const walletAddress = requiredString(args, 'walletAddress');
|
|
148
|
-
|
|
149
|
-
const tokens = [
|
|
150
|
-
let
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
180
|
+
let page = 1;
|
|
181
|
+
const tokens = [];
|
|
182
|
+
let reportedCount;
|
|
183
|
+
try {
|
|
184
|
+
const firstPage = await sdk.dex.assets.getUserAssets(walletAddress, 1, 100);
|
|
185
|
+
tokens.push(...firstPage.tokens);
|
|
186
|
+
reportedCount = firstPage.count;
|
|
187
|
+
page = 2;
|
|
188
|
+
while (tokens.length < reportedCount) {
|
|
189
|
+
const nextPage = await sdk.dex.assets.getUserAssets(walletAddress, page, 100);
|
|
190
|
+
if (nextPage.tokens.length === 0)
|
|
191
|
+
break;
|
|
192
|
+
tokens.push(...nextPage.tokens);
|
|
193
|
+
page += 1;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
// A page that fails mid-way voids the whole answer: a partial list is never handed back as the wallet.
|
|
198
|
+
const unavailable = balancesUnavailableResponse(walletAddress, error, { page, assetsRead: tokens.length });
|
|
199
|
+
if (unavailable !== null)
|
|
200
|
+
return unavailable;
|
|
201
|
+
throw error;
|
|
157
202
|
}
|
|
203
|
+
const complete = tokens.length >= reportedCount;
|
|
158
204
|
const result = { tokens, count: tokens.length };
|
|
159
205
|
return formatSuccess({
|
|
206
|
+
balancesAvailable: true,
|
|
207
|
+
complete,
|
|
160
208
|
walletAddress,
|
|
161
209
|
assetCount: result.tokens.length,
|
|
210
|
+
...(complete ? {} : { reportedCount }),
|
|
162
211
|
assets: mapTokenAssets(result),
|
|
163
|
-
message:
|
|
212
|
+
message: complete
|
|
213
|
+
? `${result.tokens.length} total assets found for wallet ${walletAddress}.`
|
|
214
|
+
: `INCOMPLETE: ${result.tokens.length} of ${reportedCount} assets were read for wallet ${walletAddress}; a later page came back empty. The list is missing assets: retry before concluding what the wallet holds.`,
|
|
164
215
|
});
|
|
165
216
|
}),
|
|
166
217
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/dex/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/dex/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"error-handler.d.ts","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAmB3D;AA+BD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,SAAS,OAAO,EAAE,EACvD,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,GACtE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,eAAe,CAAC,CAQ9C"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @see src/utils/error-templates.ts
|
|
8
8
|
*/
|
|
9
|
-
import { enhanceErrorMessage } from './error-templates.js';
|
|
9
|
+
import { enhanceErrorMessage, extractErrorDetails } from './error-templates.js';
|
|
10
10
|
/**
|
|
11
11
|
* Format error for MCP response with AI-friendly tips
|
|
12
12
|
*/
|
|
@@ -15,7 +15,8 @@ export function formatError(error) {
|
|
|
15
15
|
// Sanitize sensitive information from error messages
|
|
16
16
|
const sanitized = sanitizeError(errorMessage);
|
|
17
17
|
// Add AI-friendly tips using centralized templates
|
|
18
|
-
|
|
18
|
+
// A known gswap-sdk `code` selects the tip; the message regexes are only the fallback.
|
|
19
|
+
const withTips = enhanceErrorMessage(sanitized, extractErrorDetails(error));
|
|
19
20
|
return {
|
|
20
21
|
content: [
|
|
21
22
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"error-handler.js","sourceRoot":"","sources":["../../src/utils/error-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5E,qDAAqD;IACrD,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAE9C,mDAAmD;IACnD,uFAAuF;IACvF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,UAAU,QAAQ,EAAE;aAC3B;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,OAAe;IACpC,oCAAoC;IACpC,IAAI,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;IAE/D,gDAAgD;IAChD,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;IAElE,8CAA8C;IAC9C,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAE/D,iEAAiE;IACjE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,uDAAuD,EAAE,gBAAgB,CAAC,CAAC;IAEzG,uBAAuB;IACvB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;IAE9E,sFAAsF;IACtF,uFAAuF;IACvF,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,sCAAsC,EAAE,WAAW,CAAC,CAAC;IAEnF,yFAAyF;IACzF,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,2DAA2D,EAAE,SAAS,CAAC,CAAC;IAEtG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAuE;IAEvE,OAAO,KAAK,EAAE,GAAG,IAAW,EAA4B,EAAE;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -83,6 +83,38 @@ export declare const GENERIC_VALIDATION_ERROR: ErrorTemplate;
|
|
|
83
83
|
* All error templates in priority order (checked sequentially)
|
|
84
84
|
*/
|
|
85
85
|
export declare const ERROR_TEMPLATES: ErrorTemplate[];
|
|
86
|
+
/**
|
|
87
|
+
* What the MCP layer reads from a thrown error, by duck typing (gswap-sdk 1.0.x and 1.2 both
|
|
88
|
+
* expose a string `code`; 1.2 adds flat `params`, `status` and `uniqueKey`). Nothing here is
|
|
89
|
+
* parsed from English message text.
|
|
90
|
+
*/
|
|
91
|
+
export interface ErrorDetails {
|
|
92
|
+
/** The error's string `code`; numeric codes (EIP-1193 4001) and non-strings are ignored. */
|
|
93
|
+
code?: string;
|
|
94
|
+
/** HTTP status, from `error.status` or `params.status`. */
|
|
95
|
+
status?: number;
|
|
96
|
+
/** The swap's uniqueKey when the error carries one in the swap backend's key format. */
|
|
97
|
+
uniqueKey?: string;
|
|
98
|
+
/** False when the error says it came from a read (`GSwapSDKError.write === false`). */
|
|
99
|
+
write?: boolean;
|
|
100
|
+
/** Server/chain text (`params.serverMessage`, `chainMessage`): only used to detect slippage. */
|
|
101
|
+
chainText?: string;
|
|
102
|
+
/** True when the failing step ran after the swap was queued (set by this server's own wrapper). */
|
|
103
|
+
afterQueued?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Reads the code-first fields from a thrown value. One level of `cause` is followed so a wrapper
|
|
107
|
+
* that kept the original error as its cause does not hide the code.
|
|
108
|
+
*/
|
|
109
|
+
export declare function extractErrorDetails(error: unknown): ErrorDetails;
|
|
110
|
+
type CodedOutcome = 'unknown' | 'rejected' | 'not_queued' | 'not_sent' | 'no_market';
|
|
111
|
+
/**
|
|
112
|
+
* The outcome class of a recognized gswap-sdk code, or null for any other code (launchpad's own
|
|
113
|
+
* `POOL_NOT_FOUND`, `BUNDLE_CONFIRMATION_TIMEOUT`, ...). Exact string equality only.
|
|
114
|
+
* `CHAIN_DISPATCH_FAILED` and `HTTP_ERROR` depend on the status exactly as in gswap-sdk's
|
|
115
|
+
* `classifyChainDispatchFailed` / `classifyHttpError`.
|
|
116
|
+
*/
|
|
117
|
+
export declare function classifyDexCode(details: ErrorDetails): CodedOutcome | null;
|
|
86
118
|
/**
|
|
87
119
|
* Finds the best matching error template for a message
|
|
88
120
|
*/
|
|
@@ -92,9 +124,13 @@ export declare function findErrorTemplate(message: string): ErrorTemplate | null
|
|
|
92
124
|
*/
|
|
93
125
|
export declare function getErrorTip(message: string): string | null;
|
|
94
126
|
/**
|
|
95
|
-
* Applies AI-friendly tip to error message
|
|
127
|
+
* Applies AI-friendly tip to error message.
|
|
128
|
+
*
|
|
129
|
+
* With `details` (read from the thrown error by {@link extractErrorDetails}) a known gswap-sdk
|
|
130
|
+
* `code` selects the tip and the English message is never consulted for the outcome; without a
|
|
131
|
+
* known code the regex templates above decide, exactly as before.
|
|
96
132
|
*/
|
|
97
|
-
export declare function enhanceErrorMessage(message: string): string;
|
|
133
|
+
export declare function enhanceErrorMessage(message: string, details?: ErrorDetails): string;
|
|
98
134
|
/**
|
|
99
135
|
* Gets error category for an error message
|
|
100
136
|
*/
|
|
@@ -106,4 +142,5 @@ export declare const errorTemplates: {
|
|
|
106
142
|
enhance: typeof enhanceErrorMessage;
|
|
107
143
|
getCategory: typeof getErrorCategory;
|
|
108
144
|
};
|
|
145
|
+
export {};
|
|
109
146
|
//# sourceMappingURL=error-templates.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-templates.d.ts","sourceRoot":"","sources":["../../src/utils/error-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC9E;AAMD;;GAEG;AACH,eAAO,MAAM,YAAY;aACvB,KAAK;iBACH,OAAO;iBACP,GAAG,EAAE;;;;;+CAKsC;iBAC3C,QAAQ,EAAE,YAAY;;aAExB,IAAI;iBACF,OAAO;iBACP,GAAG,EAAE;;;+CAGsC;iBAC3C,QAAQ,EAAE,YAAY;;CAEhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAS9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAShC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAOlC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAcjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAUhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,
|
|
1
|
+
{"version":3,"file":"error-templates.d.ts","sourceRoot":"","sources":["../../src/utils/error-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAC;CAC9E;AAMD;;GAEG;AACH,eAAO,MAAM,YAAY;aACvB,KAAK;iBACH,OAAO;iBACP,GAAG,EAAE;;;;;+CAKsC;iBAC3C,QAAQ,EAAE,YAAY;;aAExB,IAAI;iBACF,OAAO;iBACP,GAAG,EAAE;;;+CAGsC;iBAC3C,QAAQ,EAAE,YAAY;;CAEhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAS9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAShC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAOlC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,aAcjC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAUhC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,aAOxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,aAW5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAU9B,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAS9B,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,aAUtC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAgB1C,CAAC;AAMF;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,4FAA4F;IAC5F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gGAAgG;IAChG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,CAmBhE;AAkDD,KAAK,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAErF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,GAAG,IAAI,CAO1E;AAuED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAgBvE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM,CASnF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGxD;AAMD,eAAO,MAAM,cAAc;IACzB,SAAS;IACT,YAAY;IACZ,MAAM;IACN,OAAO;IACP,WAAW;CACZ,CAAC"}
|
|
@@ -110,7 +110,8 @@ This request's uniqueKey is consumed; the swap did NOT execute, so a new request
|
|
|
110
110
|
* TRADE_TIMEOUT_ERROR, whose tip is about launchpad bonding-curve trades.
|
|
111
111
|
*/
|
|
112
112
|
export const SWAP_OUTCOME_UNKNOWN_ERROR = {
|
|
113
|
-
|
|
113
|
+
// `\b` keeps launchpad's own BUNDLE_CONFIRMATION_TIMEOUT out (`_` is a word character).
|
|
114
|
+
pattern: /(outcome is (still )?unknown|may still apply|\bSUBMISSION_OUTCOME_UNKNOWN|\bCONFIRMATION_TIMEOUT)/i,
|
|
114
115
|
tip: `💡 AI TIP: The swap was queued on chain and may still execute. Do NOT submit it again.
|
|
115
116
|
Call gala_launchpad_get_swap_result with the uniqueKey from this error to resolve the outcome
|
|
116
117
|
(results are retained for 7 days).`,
|
|
@@ -200,6 +201,169 @@ export const ERROR_TEMPLATES = [
|
|
|
200
201
|
// Generic errors last (lower priority)
|
|
201
202
|
GENERIC_VALIDATION_ERROR,
|
|
202
203
|
];
|
|
204
|
+
const UNIQUE_KEY_FORMAT = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
205
|
+
function asRecord(value) {
|
|
206
|
+
return typeof value === 'object' && value !== null ? value : undefined;
|
|
207
|
+
}
|
|
208
|
+
function stringProp(record, key) {
|
|
209
|
+
const value = record?.[key];
|
|
210
|
+
return typeof value === 'string' ? value : undefined;
|
|
211
|
+
}
|
|
212
|
+
function numberProp(record, key) {
|
|
213
|
+
const value = record?.[key];
|
|
214
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Reads the code-first fields from a thrown value. One level of `cause` is followed so a wrapper
|
|
218
|
+
* that kept the original error as its cause does not hide the code.
|
|
219
|
+
*/
|
|
220
|
+
export function extractErrorDetails(error) {
|
|
221
|
+
const own = asRecord(error);
|
|
222
|
+
const wrapped = asRecord(own?.['cause']);
|
|
223
|
+
const code = stringProp(own, 'code') ?? stringProp(wrapped, 'code');
|
|
224
|
+
const source = stringProp(own, 'code') !== undefined ? own : wrapped;
|
|
225
|
+
const params = asRecord(source?.['params']) ?? asRecord(source?.['details']);
|
|
226
|
+
const status = numberProp(source, 'status') ?? numberProp(params, 'status');
|
|
227
|
+
const rawKey = stringProp(source, 'uniqueKey') ?? stringProp(own, 'uniqueKey') ?? stringProp(params, 'uniqueKey');
|
|
228
|
+
const writeFlag = source?.['write'];
|
|
229
|
+
const chainText = stringProp(params, 'serverMessage') ?? stringProp(source, 'chainMessage');
|
|
230
|
+
const details = {};
|
|
231
|
+
if (code !== undefined)
|
|
232
|
+
details.code = code;
|
|
233
|
+
if (status !== undefined)
|
|
234
|
+
details.status = status;
|
|
235
|
+
if (rawKey !== undefined && UNIQUE_KEY_FORMAT.test(rawKey))
|
|
236
|
+
details.uniqueKey = rawKey;
|
|
237
|
+
if (typeof writeFlag === 'boolean')
|
|
238
|
+
details.write = writeFlag;
|
|
239
|
+
if (own?.['afterQueued'] === true)
|
|
240
|
+
details.afterQueued = true;
|
|
241
|
+
if (chainText !== undefined)
|
|
242
|
+
details.chainText = chainText;
|
|
243
|
+
return details;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Codes whose outcome is `unknown` regardless of status: the write may have been queued, so it
|
|
247
|
+
* must never be resubmitted. Copied from gswap-sdk `src/utils/failure_classification.ts`
|
|
248
|
+
* (`BY_CODE` rows classified UNKNOWN: the codes `mayHaveBeenQueued` is true for).
|
|
249
|
+
*/
|
|
250
|
+
const OUTCOME_UNKNOWN_CODES = new Set([
|
|
251
|
+
'SUBMISSION_OUTCOME_UNKNOWN',
|
|
252
|
+
'GATEWAY_REPORTED_ERROR',
|
|
253
|
+
'GATEWAY_DATA_MISSING',
|
|
254
|
+
'GATEWAY_MODE_INVALID',
|
|
255
|
+
'GATEWAY_SYNC_REQUEST_TRADE',
|
|
256
|
+
'MISSING_UNIQUE_KEY',
|
|
257
|
+
'UNIQUE_KEY_MISMATCH',
|
|
258
|
+
'CONFIRMATION_TIMEOUT',
|
|
259
|
+
'CONFIRMATION_ABORTED',
|
|
260
|
+
'CONFIRMATION_FAILED',
|
|
261
|
+
'CONFIRMATION_MALFORMED',
|
|
262
|
+
'CONFIRMATION_KEY_MISMATCH',
|
|
263
|
+
]);
|
|
264
|
+
/** Gateway refusals before queueing (`not_queued` in gswap-sdk `failure_classification.ts`). */
|
|
265
|
+
const NOT_QUEUED_CODES = new Set([
|
|
266
|
+
'SHADOW_NOT_QUEUED',
|
|
267
|
+
'METHOD_NOT_ALLOWED',
|
|
268
|
+
'SIGNATURE_INVALID',
|
|
269
|
+
'SIGNER_MISMATCH',
|
|
270
|
+
'DTO_INVALID',
|
|
271
|
+
'BOUNDS_VIOLATION',
|
|
272
|
+
'SYMBOL_CONFLICT',
|
|
273
|
+
'RATE_LIMITED',
|
|
274
|
+
'GATEWAY_REJECTED',
|
|
275
|
+
'UPDATE_REQUIRED',
|
|
276
|
+
]);
|
|
277
|
+
/** Failures before anything was signed or sent (`not_sent` in `failure_classification.ts`). */
|
|
278
|
+
const NOT_SENT_CODES = new Set([
|
|
279
|
+
'SIGNING_FAILED',
|
|
280
|
+
'KEY_PROVIDER_FAILED',
|
|
281
|
+
'TOKEN_RESOLUTION_FAILED',
|
|
282
|
+
]);
|
|
283
|
+
/** No market for the pair (gswap-sdk `isNoMarket`, catalog codes). */
|
|
284
|
+
const NO_MARKET_CODES = new Set([
|
|
285
|
+
'NO_POOL_AVAILABLE',
|
|
286
|
+
'INSUFFICIENT_LIQUIDITY',
|
|
287
|
+
'UNKNOWN_TOKEN',
|
|
288
|
+
]);
|
|
289
|
+
/**
|
|
290
|
+
* The outcome class of a recognized gswap-sdk code, or null for any other code (launchpad's own
|
|
291
|
+
* `POOL_NOT_FOUND`, `BUNDLE_CONFIRMATION_TIMEOUT`, ...). Exact string equality only.
|
|
292
|
+
* `CHAIN_DISPATCH_FAILED` and `HTTP_ERROR` depend on the status exactly as in gswap-sdk's
|
|
293
|
+
* `classifyChainDispatchFailed` / `classifyHttpError`.
|
|
294
|
+
*/
|
|
295
|
+
export function classifyDexCode(details) {
|
|
296
|
+
const outcome = classifyByCode(details);
|
|
297
|
+
// Once the swap is queued (we hold its uniqueKey), only the chain's own verdict is terminal:
|
|
298
|
+
// gswap-sdk's classifyFailure(error, { afterQueued: true }). Anything else, a recognized code
|
|
299
|
+
// or not, may still apply and must never invite a resubmit.
|
|
300
|
+
if (details.afterQueued === true && outcome !== 'rejected')
|
|
301
|
+
return 'unknown';
|
|
302
|
+
return outcome;
|
|
303
|
+
}
|
|
304
|
+
function classifyByCode(details) {
|
|
305
|
+
const { code, status } = details;
|
|
306
|
+
if (code === undefined)
|
|
307
|
+
return null;
|
|
308
|
+
if (OUTCOME_UNKNOWN_CODES.has(code))
|
|
309
|
+
return 'unknown';
|
|
310
|
+
if (code === 'CHAIN_REJECTED')
|
|
311
|
+
return 'rejected';
|
|
312
|
+
if (NOT_QUEUED_CODES.has(code))
|
|
313
|
+
return 'not_queued';
|
|
314
|
+
if (NOT_SENT_CODES.has(code))
|
|
315
|
+
return 'not_sent';
|
|
316
|
+
if (NO_MARKET_CODES.has(code))
|
|
317
|
+
return 'no_market';
|
|
318
|
+
if (code === 'CHAIN_DISPATCH_FAILED') {
|
|
319
|
+
if (status === undefined || status === 409 || status >= 500)
|
|
320
|
+
return 'unknown';
|
|
321
|
+
return status === 422 ? 'rejected' : 'not_queued';
|
|
322
|
+
}
|
|
323
|
+
if (code === 'HTTP_ERROR' && details.uniqueKey !== undefined && details.write !== false) {
|
|
324
|
+
if (status === undefined || status === 408 || status >= 500)
|
|
325
|
+
return 'unknown';
|
|
326
|
+
return 'not_queued';
|
|
327
|
+
}
|
|
328
|
+
return null;
|
|
329
|
+
}
|
|
330
|
+
const DEX_REJECTED_TIP = `💡 AI TIP: The chain evaluated this swap and rejected it; it did NOT execute.
|
|
331
|
+
The request's uniqueKey is consumed. Fix the cause named in the error (re-quote, balance, token
|
|
332
|
+
format) and submit a NEW request.`;
|
|
333
|
+
const DEX_NOT_QUEUED_TIP = `💡 AI TIP: The swap backend refused this request before queueing it; nothing is pending and the
|
|
334
|
+
swap did NOT execute. Fix the cause named in the error, then submit a new request.`;
|
|
335
|
+
const DEX_NOT_SENT_TIP = `💡 AI TIP: This request failed before anything was sent (signing or token lookup); nothing is
|
|
336
|
+
pending and no swap was queued. Fix the cause and try again.`;
|
|
337
|
+
const DEX_NO_MARKET_TIP = `💡 AI TIP: No usable market for this pair/fee tier; nothing was submitted. Check the tokens with
|
|
338
|
+
gala_launchpad_get_swap_quote_exact_input across fee tiers (500, 3000, 10000) before swapping.`;
|
|
339
|
+
function outcomeUnknownTip(details) {
|
|
340
|
+
const key = details.uniqueKey === undefined ? '' : `\nuniqueKey: ${details.uniqueKey}`;
|
|
341
|
+
return `${SWAP_OUTCOME_UNKNOWN_ERROR.tip}${key}`;
|
|
342
|
+
}
|
|
343
|
+
/** The code-selected tip for an error, or null when its code is not a recognized gswap code. */
|
|
344
|
+
function findCodedTip(message, details) {
|
|
345
|
+
const outcome = classifyDexCode(details);
|
|
346
|
+
const code = details.code;
|
|
347
|
+
if (outcome === null)
|
|
348
|
+
return null;
|
|
349
|
+
switch (outcome) {
|
|
350
|
+
case 'unknown':
|
|
351
|
+
return { code, tip: outcomeUnknownTip(details) };
|
|
352
|
+
case 'rejected': {
|
|
353
|
+
// The chain's slippage verdict is identified by its own message text, which passes through.
|
|
354
|
+
const slippage = DEX_SLIPPAGE_ERROR.pattern;
|
|
355
|
+
const isSlippage = slippage instanceof RegExp &&
|
|
356
|
+
(slippage.test(message) || (details.chainText !== undefined && slippage.test(details.chainText)));
|
|
357
|
+
return { code, tip: isSlippage ? DEX_SLIPPAGE_ERROR.tip : DEX_REJECTED_TIP };
|
|
358
|
+
}
|
|
359
|
+
case 'not_queued':
|
|
360
|
+
return { code, tip: DEX_NOT_QUEUED_TIP };
|
|
361
|
+
case 'not_sent':
|
|
362
|
+
return { code, tip: DEX_NOT_SENT_TIP };
|
|
363
|
+
case 'no_market':
|
|
364
|
+
return { code, tip: DEX_NO_MARKET_TIP };
|
|
365
|
+
}
|
|
366
|
+
}
|
|
203
367
|
// =============================================================================
|
|
204
368
|
// Template Matching Functions
|
|
205
369
|
// =============================================================================
|
|
@@ -230,9 +394,18 @@ export function getErrorTip(message) {
|
|
|
230
394
|
return template ? template.tip : null;
|
|
231
395
|
}
|
|
232
396
|
/**
|
|
233
|
-
* Applies AI-friendly tip to error message
|
|
397
|
+
* Applies AI-friendly tip to error message.
|
|
398
|
+
*
|
|
399
|
+
* With `details` (read from the thrown error by {@link extractErrorDetails}) a known gswap-sdk
|
|
400
|
+
* `code` selects the tip and the English message is never consulted for the outcome; without a
|
|
401
|
+
* known code the regex templates above decide, exactly as before.
|
|
234
402
|
*/
|
|
235
|
-
export function enhanceErrorMessage(message) {
|
|
403
|
+
export function enhanceErrorMessage(message, details) {
|
|
404
|
+
const coded = details === undefined ? null : findCodedTip(message, details);
|
|
405
|
+
if (coded !== null) {
|
|
406
|
+
const prefix = coded.code === undefined ? '' : `[${coded.code}] `;
|
|
407
|
+
return `${prefix}${message}\n\n${coded.tip}`;
|
|
408
|
+
}
|
|
236
409
|
const tip = getErrorTip(message);
|
|
237
410
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- Defensive null/undefined check
|
|
238
411
|
return tip !== null && tip !== undefined ? `${message}\n\n${tip}` : message;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-templates.js","sourceRoot":"","sources":["../../src/utils/error-templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAeH,gFAAgF;AAChF,6BAA6B;AAC7B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QACL,OAAO,EAAE,mBAAmB;QAC5B,GAAG,EAAE;;;;;+CAKsC;QAC3C,QAAQ,EAAE,YAAqB;KAChC;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,oBAAoB;QAC7B,GAAG,EAAE;;;+CAGsC;QAC3C,QAAQ,EAAE,YAAqB;KAChC;CACO,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB;IAC7C,OAAO,EAAE,mCAAmC;IAC5C,GAAG,EAAE;;;;;sEAK+D;IACpE,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,OAAO,EAAE,qCAAqC;IAC9C,GAAG,EAAE;;;;;iEAK0D;IAC/D,QAAQ,EAAE,YAAY;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,OAAO,EAAE,+BAA+B;IACxC,GAAG,EAAE;;;yCAGkC;IACvC,QAAQ,EAAE,QAAQ;CACnB,CAAC;AAEF,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAkB;IAChD,OAAO,EAAE,sBAAsB;IAC/B,GAAG,EAAE;;;;;;;;;;gEAUyD;IAC9D,QAAQ,EAAE,SAAS;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,OAAO,EAAE,qCAAqC;IAC9C,GAAG,EAAE;;;;;;0FAMmF;IACxF,QAAQ,EAAE,gBAAgB;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAkB;IACvD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"error-templates.js","sourceRoot":"","sources":["../../src/utils/error-templates.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gala-chain/launchpad-mcp-server",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "8.0.
|
|
4
|
+
"version": "8.0.2",
|
|
5
5
|
"description": "MCP server for Gala Launchpad - 323 tools (pool management, event watchers, GSwap DEX trading, price history, token creation, wallet management, DEX pool discovery, liquidity positions, token locks/burns, locked token queries, composite pool data, cross-chain bridging, wrap/unwrap, key derivation, streaming, chat, session auth, ban management, API keys, moderator invites, content flags, content reactions, comments, overseers, CCTV dashboard, weekly challenge leaderboard, oEmbed metadata, platform stats, AI moderation) supporting optional wallet (read-only and full-access modes). Production-grade AI agent integration for Claude Desktop with comprehensive validation and 80%+ test coverage",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
},
|
|
64
64
|
"dependencies": {
|
|
65
65
|
"@gala-chain/api": "^3.3.0",
|
|
66
|
-
"@gala-chain/gswap-sdk": "^1.
|
|
66
|
+
"@gala-chain/gswap-sdk": "^1.2.0",
|
|
67
67
|
"@modelcontextprotocol/sdk": "^1.30.1",
|
|
68
68
|
"axios": "^1.20.0",
|
|
69
69
|
"bignumber.js": "^11.1.5",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"socket.io-client": "^4.8.3",
|
|
72
72
|
"zod": "^4.3.6",
|
|
73
73
|
"zod-to-json-schema": "^3.25.1",
|
|
74
|
-
"@gala-chain/launchpad-sdk": "8.0.
|
|
74
|
+
"@gala-chain/launchpad-sdk": "8.0.2"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@eslint/js": "^10.0.1",
|