@gala-chain/launchpad-mcp-server 1.4.0 → 1.5.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/dist/constants/mcpToolNames.d.ts +159 -0
- package/dist/constants/mcpToolNames.d.ts.map +1 -0
- package/dist/constants/mcpToolNames.js +131 -0
- package/dist/constants/mcpToolNames.js.map +1 -0
- package/dist/prompts/__tests__/promptStructure.test.d.ts +7 -0
- package/dist/prompts/__tests__/promptStructure.test.d.ts.map +1 -0
- package/dist/prompts/__tests__/promptStructure.test.js +106 -0
- package/dist/prompts/__tests__/promptStructure.test.js.map +1 -0
- package/dist/prompts/__tests__/registry.test.d.ts +7 -0
- package/dist/prompts/__tests__/registry.test.d.ts.map +1 -0
- package/dist/prompts/__tests__/registry.test.js +119 -0
- package/dist/prompts/__tests__/registry.test.js.map +1 -0
- package/dist/prompts/analysis.d.ts.map +1 -1
- package/dist/prompts/analysis.js +97 -65
- package/dist/prompts/analysis.js.map +1 -1
- package/dist/prompts/index.d.ts +58 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +83 -3
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/portfolio.d.ts.map +1 -1
- package/dist/prompts/portfolio.js +80 -76
- package/dist/prompts/portfolio.js.map +1 -1
- package/dist/prompts/trading.d.ts.map +1 -1
- package/dist/prompts/trading.js +76 -139
- package/dist/prompts/trading.js.map +1 -1
- package/dist/prompts/utils/workflowTemplates.d.ts +103 -0
- package/dist/prompts/utils/workflowTemplates.d.ts.map +1 -0
- package/dist/prompts/utils/workflowTemplates.js +315 -0
- package/dist/prompts/utils/workflowTemplates.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/utils/__tests__/validation.test.d.ts +7 -0
- package/dist/utils/__tests__/validation.test.d.ts.map +1 -0
- package/dist/utils/__tests__/validation.test.js +122 -0
- package/dist/utils/__tests__/validation.test.js.map +1 -0
- package/dist/utils/validation.d.ts +162 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +276 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +2 -2
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.portfolioPrompts = exports.profilePrompt = exports.balancePrompt = exports.tokensCreatedPrompt = exports.tokensHeldPrompt = exports.portfolioPrompt = void 0;
|
|
9
|
+
const mcpToolNames_js_1 = require("../constants/mcpToolNames.js");
|
|
10
|
+
const workflowTemplates_js_1 = require("./utils/workflowTemplates.js");
|
|
11
|
+
const validation_js_1 = require("../utils/validation.js");
|
|
9
12
|
/**
|
|
10
13
|
* Portfolio - Complete portfolio analysis
|
|
11
14
|
*/
|
|
@@ -17,32 +20,7 @@ exports.portfolioPrompt = {
|
|
|
17
20
|
role: 'user',
|
|
18
21
|
content: {
|
|
19
22
|
type: 'text',
|
|
20
|
-
text:
|
|
21
|
-
|
|
22
|
-
1. Get GALA balance using gala_launchpad_fetch_gala_balance
|
|
23
|
-
|
|
24
|
-
2. Get all tokens I'm holding using gala_launchpad_fetch_tokens_held
|
|
25
|
-
- Use pagination if needed to get all tokens
|
|
26
|
-
|
|
27
|
-
3. For each token, calculate USD value using optimized pattern:
|
|
28
|
-
a. Fetch pool details once: gala_launchpad_fetch_pool_details_for_calculation
|
|
29
|
-
b. Calculate spot price: gala_launchpad_fetch_launchpad_token_spot_price with LOCAL mode
|
|
30
|
-
c. Multiply token balance by spot price for USD value
|
|
31
|
-
|
|
32
|
-
4. Calculate GALA USD value using gala_launchpad_fetch_gala_spot_price
|
|
33
|
-
|
|
34
|
-
5. Present a comprehensive portfolio summary:
|
|
35
|
-
- GALA balance and USD value
|
|
36
|
-
- Each token holding with:
|
|
37
|
-
* Token name
|
|
38
|
-
* Balance
|
|
39
|
-
* USD spot price
|
|
40
|
-
* Total USD value
|
|
41
|
-
- Total portfolio value in USD
|
|
42
|
-
- Top 3 holdings by value
|
|
43
|
-
- Number of different tokens held
|
|
44
|
-
|
|
45
|
-
Use the performance optimization pattern to minimize network calls.`,
|
|
23
|
+
text: (0, workflowTemplates_js_1.createPortfolioWorkflow)(),
|
|
46
24
|
},
|
|
47
25
|
},
|
|
48
26
|
],
|
|
@@ -65,16 +43,25 @@ exports.tokensHeldPrompt = {
|
|
|
65
43
|
required: false,
|
|
66
44
|
},
|
|
67
45
|
],
|
|
68
|
-
handler: (args) =>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
46
|
+
handler: (args) => {
|
|
47
|
+
// Validate inputs
|
|
48
|
+
if (args.limit) {
|
|
49
|
+
(0, validation_js_1.validatePaginationLimit)(args.limit, 100);
|
|
50
|
+
}
|
|
51
|
+
const limit = args.limit || '20';
|
|
52
|
+
const searchFilter = args.search
|
|
53
|
+
? `- search: "${args.search}" (fuzzy match filter)`
|
|
54
|
+
: '- No search filter (show all tokens)';
|
|
55
|
+
return [
|
|
56
|
+
{
|
|
57
|
+
role: 'user',
|
|
58
|
+
content: {
|
|
59
|
+
type: 'text',
|
|
60
|
+
text: `Show me all Launchpad tokens I'm currently holding:
|
|
61
|
+
|
|
62
|
+
Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKENS_HELD} with:
|
|
63
|
+
${searchFilter}
|
|
64
|
+
- limit: ${limit}
|
|
78
65
|
|
|
79
66
|
For each token, display:
|
|
80
67
|
- Token name
|
|
@@ -84,9 +71,10 @@ For each token, display:
|
|
|
84
71
|
Sort by balance (highest to lowest).
|
|
85
72
|
|
|
86
73
|
If I have more tokens than the limit, show pagination info and offer to fetch more.`,
|
|
74
|
+
},
|
|
87
75
|
},
|
|
88
|
-
|
|
89
|
-
|
|
76
|
+
];
|
|
77
|
+
},
|
|
90
78
|
};
|
|
91
79
|
/**
|
|
92
80
|
* Tokens Created - Show tokens created by user
|
|
@@ -106,34 +94,44 @@ exports.tokensCreatedPrompt = {
|
|
|
106
94
|
required: false,
|
|
107
95
|
},
|
|
108
96
|
],
|
|
109
|
-
handler: (args) =>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
97
|
+
handler: (args) => {
|
|
98
|
+
// Validate inputs
|
|
99
|
+
if (args.limit) {
|
|
100
|
+
(0, validation_js_1.validatePaginationLimit)(args.limit, 100);
|
|
101
|
+
}
|
|
102
|
+
const limit = args.limit || '20';
|
|
103
|
+
const searchFilter = args.search
|
|
104
|
+
? `- search: "${args.search}" (fuzzy match filter)`
|
|
105
|
+
: '- No search filter (show all tokens)';
|
|
106
|
+
return [
|
|
107
|
+
{
|
|
108
|
+
role: 'user',
|
|
109
|
+
content: {
|
|
110
|
+
type: 'text',
|
|
111
|
+
text: `Show me all Launchpad tokens I've created:
|
|
112
|
+
|
|
113
|
+
Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKENS_CREATED} with:
|
|
114
|
+
${searchFilter}
|
|
115
|
+
- limit: ${limit}
|
|
119
116
|
|
|
120
117
|
For each token, display:
|
|
121
118
|
- Token name and symbol
|
|
122
|
-
- Current status (check using
|
|
119
|
+
- Current status (check using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_POOL_DETAILS}):
|
|
123
120
|
* Pool status (Ongoing/Completed)
|
|
124
121
|
* Current supply
|
|
125
122
|
* Remaining tokens
|
|
126
123
|
* Progress percentage
|
|
127
|
-
- Whether graduated (use
|
|
128
|
-
- Frontend URL (use
|
|
124
|
+
- Whether graduated (use ${mcpToolNames_js_1.MCP_TOOLS.IS_TOKEN_GRADUATED})
|
|
125
|
+
- Frontend URL (use ${mcpToolNames_js_1.MCP_TOOLS.GET_URL_BY_TOKEN_NAME})
|
|
129
126
|
|
|
130
127
|
Provide a summary:
|
|
131
128
|
- Total tokens created
|
|
132
129
|
- How many are graduated
|
|
133
130
|
- How many are still in bonding curve phase`,
|
|
131
|
+
},
|
|
134
132
|
},
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
];
|
|
134
|
+
},
|
|
137
135
|
};
|
|
138
136
|
/**
|
|
139
137
|
* Balance - Check GALA and specific token balances
|
|
@@ -148,37 +146,43 @@ exports.balancePrompt = {
|
|
|
148
146
|
required: false,
|
|
149
147
|
},
|
|
150
148
|
],
|
|
151
|
-
handler: (args) =>
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
149
|
+
handler: (args) => {
|
|
150
|
+
// Validate inputs
|
|
151
|
+
if (args.tokenName) {
|
|
152
|
+
(0, validation_js_1.validateTokenName)(args.tokenName);
|
|
153
|
+
}
|
|
154
|
+
return [
|
|
155
|
+
{
|
|
156
|
+
role: 'user',
|
|
157
|
+
content: {
|
|
158
|
+
type: 'text',
|
|
159
|
+
text: args.tokenName
|
|
160
|
+
? `Check my balances:
|
|
161
|
+
|
|
162
|
+
1. GALA balance using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_BALANCE}
|
|
163
|
+
2. ${args.tokenName} token balance using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKEN_BALANCE}
|
|
161
164
|
3. Calculate USD values:
|
|
162
|
-
- GALA USD value using
|
|
163
|
-
- ${args.tokenName} USD value using
|
|
165
|
+
- GALA USD value using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_SPOT_PRICE}
|
|
166
|
+
- ${args.tokenName} USD value using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_LAUNCHPAD_TOKEN_SPOT_PRICE}
|
|
164
167
|
|
|
165
168
|
Display:
|
|
166
169
|
- GALA: [amount] ($[USD value])
|
|
167
170
|
- ${args.tokenName}: [amount] ($[USD value])
|
|
168
171
|
- Total value: $[combined USD value]`
|
|
169
|
-
|
|
172
|
+
: `Check my GALA balance:
|
|
170
173
|
|
|
171
|
-
Use
|
|
172
|
-
Use
|
|
174
|
+
Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_BALANCE} to get current GALA balance.
|
|
175
|
+
Use ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_SPOT_PRICE} to calculate USD value.
|
|
173
176
|
|
|
174
177
|
Display:
|
|
175
178
|
- GALA: [amount]
|
|
176
179
|
- USD value: $[calculated value]
|
|
177
180
|
|
|
178
181
|
Tip: Add tokenName argument to check a specific token balance.`,
|
|
182
|
+
},
|
|
179
183
|
},
|
|
180
|
-
|
|
181
|
-
|
|
184
|
+
];
|
|
185
|
+
},
|
|
182
186
|
};
|
|
183
187
|
/**
|
|
184
188
|
* Profile - Show user profile information
|
|
@@ -193,19 +197,19 @@ exports.profilePrompt = {
|
|
|
193
197
|
type: 'text',
|
|
194
198
|
text: `Show my Gala Launchpad profile:
|
|
195
199
|
|
|
196
|
-
1. Get profile info using
|
|
200
|
+
1. Get profile info using ${mcpToolNames_js_1.MCP_TOOLS.FETCH_PROFILE}
|
|
197
201
|
- Full name
|
|
198
202
|
- Profile image URL
|
|
199
203
|
- Wallet address
|
|
200
204
|
|
|
201
205
|
2. Get activity summary:
|
|
202
|
-
- Tokens held count:
|
|
203
|
-
- Tokens created count:
|
|
206
|
+
- Tokens held count: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKENS_HELD} (limit: 1) for total
|
|
207
|
+
- Tokens created count: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_TOKENS_CREATED} (limit: 1) for total
|
|
204
208
|
|
|
205
209
|
3. Get wallet info:
|
|
206
|
-
- GalaChain address format:
|
|
207
|
-
- Ethereum address format:
|
|
208
|
-
- GALA balance:
|
|
210
|
+
- GalaChain address format: ${mcpToolNames_js_1.MCP_TOOLS.GET_ADDRESS}
|
|
211
|
+
- Ethereum address format: ${mcpToolNames_js_1.MCP_TOOLS.GET_ETHEREUM_ADDRESS}
|
|
212
|
+
- GALA balance: ${mcpToolNames_js_1.MCP_TOOLS.FETCH_GALA_BALANCE}
|
|
209
213
|
|
|
210
214
|
Display:
|
|
211
215
|
- Profile details
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/prompts/portfolio.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"portfolio.js","sourceRoot":"","sources":["../../src/prompts/portfolio.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../../src/prompts/trading.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../../src/prompts/trading.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAOjD;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAyBhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,SA4C7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SA2C9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAqCjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,EAKrC,CAAC"}
|
package/dist/prompts/trading.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
*/
|
|
7
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
8
|
exports.tradingPrompts = exports.graduateTokenPrompt = exports.sellTokensPrompt = exports.buyTokensPrompt = exports.analyzeTokenPrompt = void 0;
|
|
9
|
+
const workflowTemplates_js_1 = require("./utils/workflowTemplates.js");
|
|
10
|
+
const validation_js_1 = require("../utils/validation.js");
|
|
9
11
|
/**
|
|
10
12
|
* Analyze Token - Complete token analysis workflow
|
|
11
13
|
*/
|
|
@@ -19,29 +21,19 @@ exports.analyzeTokenPrompt = {
|
|
|
19
21
|
required: true,
|
|
20
22
|
},
|
|
21
23
|
],
|
|
22
|
-
handler: (args) =>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
4. Show remaining tokens and pool status (saleStatus)
|
|
33
|
-
5. Calculate pool progress percentage: (currentSupply / maxSupply * 100)
|
|
34
|
-
|
|
35
|
-
Use the performance optimization pattern from SDK v3.9.0 to minimize network calls.
|
|
36
|
-
|
|
37
|
-
Provide a brief analysis including:
|
|
38
|
-
- Current token price in USD
|
|
39
|
-
- Total GALA required to graduate the pool
|
|
40
|
-
- How close the token is to graduation (percentage)
|
|
41
|
-
- Whether this would be a good time to buy or wait`,
|
|
24
|
+
handler: (args) => {
|
|
25
|
+
// Validate inputs
|
|
26
|
+
(0, validation_js_1.validateTokenName)(args.tokenName);
|
|
27
|
+
return [
|
|
28
|
+
{
|
|
29
|
+
role: 'user',
|
|
30
|
+
content: {
|
|
31
|
+
type: 'text',
|
|
32
|
+
text: (0, workflowTemplates_js_1.createAnalysisWorkflow)(args.tokenName),
|
|
33
|
+
},
|
|
42
34
|
},
|
|
43
|
-
|
|
44
|
-
|
|
35
|
+
];
|
|
36
|
+
},
|
|
45
37
|
};
|
|
46
38
|
/**
|
|
47
39
|
* Buy Tokens - Guided token purchase workflow
|
|
@@ -66,42 +58,29 @@ exports.buyTokensPrompt = {
|
|
|
66
58
|
required: false,
|
|
67
59
|
},
|
|
68
60
|
],
|
|
69
|
-
handler: (args) =>
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
- Transaction fee
|
|
90
|
-
- Gas fee
|
|
91
|
-
- Reverse bonding curve fee
|
|
92
|
-
- Total cost
|
|
93
|
-
|
|
94
|
-
3. Ask for confirmation before executing
|
|
95
|
-
|
|
96
|
-
4. If I confirm, execute the buy using gala_launchpad_buy_tokens with:
|
|
97
|
-
- expectedAmount from calculation
|
|
98
|
-
- maxAcceptableReverseBondingCurveFee from calculation
|
|
99
|
-
- slippageToleranceFactor: ${parseFloat(args.slippage || '1') / 100}
|
|
100
|
-
|
|
101
|
-
5. After purchase, show transaction ID and verify balance`,
|
|
61
|
+
handler: (args) => {
|
|
62
|
+
// Validate inputs
|
|
63
|
+
(0, validation_js_1.validateTokenName)(args.tokenName);
|
|
64
|
+
(0, validation_js_1.validateNumericAmount)(args.galaAmount, 'galaAmount');
|
|
65
|
+
if (args.slippage) {
|
|
66
|
+
(0, validation_js_1.validateSlippage)(args.slippage);
|
|
67
|
+
}
|
|
68
|
+
return [
|
|
69
|
+
{
|
|
70
|
+
role: 'user',
|
|
71
|
+
content: {
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: (0, workflowTemplates_js_1.createTradingWorkflow)({
|
|
74
|
+
operation: 'buy',
|
|
75
|
+
tokenName: args.tokenName,
|
|
76
|
+
amount: args.galaAmount,
|
|
77
|
+
amountType: 'gala',
|
|
78
|
+
slippage: args.slippage || '1',
|
|
79
|
+
}),
|
|
80
|
+
},
|
|
102
81
|
},
|
|
103
|
-
|
|
104
|
-
|
|
82
|
+
];
|
|
83
|
+
},
|
|
105
84
|
};
|
|
106
85
|
/**
|
|
107
86
|
* Sell Tokens - Guided token sale workflow
|
|
@@ -126,44 +105,28 @@ exports.sellTokensPrompt = {
|
|
|
126
105
|
required: false,
|
|
127
106
|
},
|
|
128
107
|
],
|
|
129
|
-
handler: (args) =>
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
3. Show me the breakdown:
|
|
150
|
-
- GALA I'll receive
|
|
151
|
-
- Transaction fee
|
|
152
|
-
- Gas fee
|
|
153
|
-
- Reverse bonding curve fee
|
|
154
|
-
- Net proceeds
|
|
155
|
-
|
|
156
|
-
4. Ask for confirmation before executing
|
|
157
|
-
|
|
158
|
-
5. If I confirm, execute the sell using gala_launchpad_sell_tokens with:
|
|
159
|
-
- expectedAmount from calculation
|
|
160
|
-
- maxAcceptableReverseBondingCurveFee from calculation
|
|
161
|
-
- slippageToleranceFactor: ${parseFloat(args.slippage || '1') / 100}
|
|
162
|
-
|
|
163
|
-
6. After sale, show transaction ID and verify updated balance`,
|
|
108
|
+
handler: (args) => {
|
|
109
|
+
// Validate inputs
|
|
110
|
+
(0, validation_js_1.validateTokenName)(args.tokenName);
|
|
111
|
+
(0, validation_js_1.validateNumericAmount)(args.tokenAmount, 'tokenAmount');
|
|
112
|
+
if (args.slippage) {
|
|
113
|
+
(0, validation_js_1.validateSlippage)(args.slippage);
|
|
114
|
+
}
|
|
115
|
+
return [
|
|
116
|
+
{
|
|
117
|
+
role: 'user',
|
|
118
|
+
content: {
|
|
119
|
+
type: 'text',
|
|
120
|
+
text: (0, workflowTemplates_js_1.createTradingWorkflow)({
|
|
121
|
+
operation: 'sell',
|
|
122
|
+
tokenName: args.tokenName,
|
|
123
|
+
amount: args.tokenAmount,
|
|
124
|
+
slippage: args.slippage || '1',
|
|
125
|
+
}),
|
|
126
|
+
},
|
|
164
127
|
},
|
|
165
|
-
|
|
166
|
-
|
|
128
|
+
];
|
|
129
|
+
},
|
|
167
130
|
};
|
|
168
131
|
/**
|
|
169
132
|
* Graduate Token - One-step graduation workflow
|
|
@@ -183,52 +146,26 @@ exports.graduateTokenPrompt = {
|
|
|
183
146
|
required: false,
|
|
184
147
|
},
|
|
185
148
|
],
|
|
186
|
-
handler: (args) =>
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
- calculateAmountMode: "local"
|
|
204
|
-
- currentSupply from pool details
|
|
205
|
-
|
|
206
|
-
4. Show me the breakdown:
|
|
207
|
-
- GALA required to graduate: [amount field - this is GALA cost, NOT token quantity!]
|
|
208
|
-
- Transaction fee
|
|
209
|
-
- Gas fee
|
|
210
|
-
- Total cost
|
|
211
|
-
|
|
212
|
-
5. Check my GALA balance using gala_launchpad_fetch_gala_balance
|
|
213
|
-
- Verify I have enough GALA for graduation
|
|
214
|
-
|
|
215
|
-
6. Ask for confirmation before executing
|
|
216
|
-
|
|
217
|
-
7. If I confirm, execute graduation using gala_launchpad_graduate_token with:
|
|
218
|
-
- tokenName: "${args.tokenName}"
|
|
219
|
-
- slippageToleranceFactor: ${parseFloat(args.slippage || '1') / 100}
|
|
220
|
-
- calculateAmountMode: "local"
|
|
221
|
-
- currentSupply from pool details (optimization!)
|
|
222
|
-
|
|
223
|
-
8. After graduation:
|
|
224
|
-
- Show transaction ID
|
|
225
|
-
- Verify pool status changed to "Completed"
|
|
226
|
-
- Get frontend URL using gala_launchpad_get_url_by_token_name
|
|
227
|
-
|
|
228
|
-
IMPORTANT: The "amount" field in graduation calculations is GALA cost, not token quantity!`,
|
|
149
|
+
handler: (args) => {
|
|
150
|
+
// Validate inputs
|
|
151
|
+
(0, validation_js_1.validateTokenName)(args.tokenName);
|
|
152
|
+
if (args.slippage) {
|
|
153
|
+
(0, validation_js_1.validateSlippage)(args.slippage);
|
|
154
|
+
}
|
|
155
|
+
return [
|
|
156
|
+
{
|
|
157
|
+
role: 'user',
|
|
158
|
+
content: {
|
|
159
|
+
type: 'text',
|
|
160
|
+
text: (0, workflowTemplates_js_1.createTradingWorkflow)({
|
|
161
|
+
operation: 'graduate',
|
|
162
|
+
tokenName: args.tokenName,
|
|
163
|
+
slippage: args.slippage || '1',
|
|
164
|
+
}),
|
|
165
|
+
},
|
|
229
166
|
},
|
|
230
|
-
|
|
231
|
-
|
|
167
|
+
];
|
|
168
|
+
},
|
|
232
169
|
};
|
|
233
170
|
/**
|
|
234
171
|
* Export all trading prompts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trading.js","sourceRoot":"","sources":["../../src/prompts/trading.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;
|
|
1
|
+
{"version":3,"file":"trading.js","sourceRoot":"","sources":["../../src/prompts/trading.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow Template Utilities
|
|
3
|
+
*
|
|
4
|
+
* Reusable templates for common workflow patterns in prompts.
|
|
5
|
+
* Reduces duplication and ensures consistency across slash commands.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Configuration for trading workflow generation
|
|
9
|
+
*/
|
|
10
|
+
export interface TradingWorkflowConfig {
|
|
11
|
+
operation: 'buy' | 'sell' | 'graduate';
|
|
12
|
+
tokenName: string;
|
|
13
|
+
amount?: string;
|
|
14
|
+
amountType?: 'gala' | 'tokens';
|
|
15
|
+
slippage?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Create a complete trading workflow with all standard steps
|
|
19
|
+
*
|
|
20
|
+
* @param config - Trading workflow configuration
|
|
21
|
+
* @returns Formatted workflow text with numbered steps
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const workflow = createTradingWorkflow({
|
|
26
|
+
* operation: 'buy',
|
|
27
|
+
* tokenName: 'anime',
|
|
28
|
+
* amount: '100',
|
|
29
|
+
* amountType: 'gala',
|
|
30
|
+
* slippage: '1'
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function createTradingWorkflow(config: TradingWorkflowConfig): string;
|
|
35
|
+
/**
|
|
36
|
+
* Format a list of steps with numbers
|
|
37
|
+
*
|
|
38
|
+
* @param steps - Array of step descriptions
|
|
39
|
+
* @returns Formatted steps with numbering
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* formatWorkflowSteps([
|
|
44
|
+
* 'Fetch pool details',
|
|
45
|
+
* 'Calculate price',
|
|
46
|
+
* 'Show results'
|
|
47
|
+
* ]);
|
|
48
|
+
* // Returns:
|
|
49
|
+
* // "1. Fetch pool details
|
|
50
|
+
* // 2. Calculate price
|
|
51
|
+
* // 3. Show results"
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export declare function formatWorkflowSteps(steps: string[]): string;
|
|
55
|
+
/**
|
|
56
|
+
* Create a standard confirmation step for destructive operations
|
|
57
|
+
*
|
|
58
|
+
* @param operation - Operation name (e.g., 'buy', 'sell', 'graduate')
|
|
59
|
+
* @returns Confirmation step text
|
|
60
|
+
*/
|
|
61
|
+
export declare function createConfirmationStep(operation: string): string;
|
|
62
|
+
/**
|
|
63
|
+
* Create a standard verification step after transaction
|
|
64
|
+
*
|
|
65
|
+
* @param operation - Operation name
|
|
66
|
+
* @param verifications - Array of verification checks to perform
|
|
67
|
+
* @returns Verification step text
|
|
68
|
+
*/
|
|
69
|
+
export declare function createVerificationStep(operation: string, verifications: string[]): string;
|
|
70
|
+
/**
|
|
71
|
+
* Create an optimized performance note for LOCAL calculations
|
|
72
|
+
*
|
|
73
|
+
* @returns Performance optimization guidance text
|
|
74
|
+
*/
|
|
75
|
+
export declare function createPerformanceNote(): string;
|
|
76
|
+
/**
|
|
77
|
+
* Create a cost breakdown display template
|
|
78
|
+
*
|
|
79
|
+
* @param operation - Operation type for context
|
|
80
|
+
* @returns Cost breakdown template text
|
|
81
|
+
*/
|
|
82
|
+
export declare function createCostBreakdown(operation: 'buy' | 'sell' | 'graduate'): string;
|
|
83
|
+
/**
|
|
84
|
+
* Create a balance check step
|
|
85
|
+
*
|
|
86
|
+
* @param assetType - Type of asset to check ('GALA' or token name)
|
|
87
|
+
* @returns Balance check step text
|
|
88
|
+
*/
|
|
89
|
+
export declare function createBalanceCheckStep(assetType: 'GALA' | string): string;
|
|
90
|
+
/**
|
|
91
|
+
* Create analysis workflow for token evaluation
|
|
92
|
+
*
|
|
93
|
+
* @param tokenName - Token to analyze
|
|
94
|
+
* @returns Complete analysis workflow
|
|
95
|
+
*/
|
|
96
|
+
export declare function createAnalysisWorkflow(tokenName: string): string;
|
|
97
|
+
/**
|
|
98
|
+
* Create portfolio analysis workflow
|
|
99
|
+
*
|
|
100
|
+
* @returns Complete portfolio analysis workflow
|
|
101
|
+
*/
|
|
102
|
+
export declare function createPortfolioWorkflow(): string;
|
|
103
|
+
//# sourceMappingURL=workflowTemplates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflowTemplates.d.ts","sourceRoot":"","sources":["../../../src/prompts/utils/workflowTemplates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAa3E;AAqID;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,CAMR;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAuBlF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAKzE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgBhE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA2BhD"}
|