@gala-chain/launchpad-mcp-server 8.0.0 → 8.0.1
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/index.d.ts.map +1 -1
- package/dist/tools/dex/index.js +28 -6
- 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 +2 -2
|
@@ -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;AAyBlD,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,OAkBnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,OA2BtC,CAAC;AAmBF,eAAO,MAAM,QAAQ,EAAE,OAAO,EAS7B,CAAC"}
|
package/dist/tools/dex/index.js
CHANGED
|
@@ -9,6 +9,7 @@ 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 { classifyDexCode, extractErrorDetails } from '../../utils/error-templates.js';
|
|
12
13
|
import { createDexPoolQuoteTool, createSwapQuoteTool, formatDexSubmission, mapTokenAssets, } from './helpers.js';
|
|
13
14
|
export const getSwapQuoteExactInputTool = createSwapQuoteTool({
|
|
14
15
|
name: 'gala_launchpad_get_swap_quote_exact_input',
|
|
@@ -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',
|
|
@@ -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.1",
|
|
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": {
|
|
@@ -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.1"
|
|
75
75
|
},
|
|
76
76
|
"devDependencies": {
|
|
77
77
|
"@eslint/js": "^10.0.1",
|