@gala-chain/launchpad-mcp-server 1.4.0 → 1.5.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/.eslintrc.json +9 -1
- 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/schemas/common-schemas.d.ts +121 -16
- package/dist/schemas/common-schemas.d.ts.map +1 -1
- package/dist/schemas/common-schemas.js +122 -17
- package/dist/schemas/common-schemas.js.map +1 -1
- package/dist/scripts/test-all-prompts.d.ts +6 -0
- package/dist/scripts/test-all-prompts.d.ts.map +1 -0
- package/dist/scripts/test-all-prompts.js +158 -0
- package/dist/scripts/test-all-prompts.js.map +1 -0
- package/dist/server.js +1 -1
- package/dist/tools/balance/index.d.ts.map +1 -1
- package/dist/tools/balance/index.js +5 -4
- package/dist/tools/balance/index.js.map +1 -1
- package/dist/tools/creation/index.d.ts.map +1 -1
- package/dist/tools/creation/index.js +6 -11
- package/dist/tools/creation/index.js.map +1 -1
- package/dist/tools/index.d.ts +9 -2
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +58 -14
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/pools/fetchPoolDetailsForCalculation.d.ts +2 -3
- package/dist/tools/pools/fetchPoolDetailsForCalculation.d.ts.map +1 -1
- package/dist/tools/pools/fetchPoolDetailsForCalculation.js +5 -17
- package/dist/tools/pools/fetchPoolDetailsForCalculation.js.map +1 -1
- package/dist/tools/pools/index.d.ts.map +1 -1
- package/dist/tools/pools/index.js +51 -137
- package/dist/tools/pools/index.js.map +1 -1
- package/dist/tools/social/index.d.ts.map +1 -1
- package/dist/tools/social/index.js +4 -3
- package/dist/tools/social/index.js.map +1 -1
- package/dist/tools/trading/index.d.ts.map +1 -1
- package/dist/tools/trading/index.js +7 -21
- package/dist/tools/trading/index.js.map +1 -1
- package/dist/tools/utils/createWallet.d.ts +2 -3
- package/dist/tools/utils/createWallet.d.ts.map +1 -1
- package/dist/tools/utils/createWallet.js +8 -13
- package/dist/tools/utils/createWallet.js.map +1 -1
- package/dist/tools/utils/getAddress.d.ts +2 -3
- package/dist/tools/utils/getAddress.d.ts.map +1 -1
- package/dist/tools/utils/getAddress.js +6 -13
- package/dist/tools/utils/getAddress.js.map +1 -1
- package/dist/tools/utils/getConfig.d.ts +2 -3
- package/dist/tools/utils/getConfig.d.ts.map +1 -1
- package/dist/tools/utils/getConfig.js +5 -13
- package/dist/tools/utils/getConfig.js.map +1 -1
- package/dist/tools/utils/getEthereumAddress.d.ts +2 -3
- package/dist/tools/utils/getEthereumAddress.d.ts.map +1 -1
- package/dist/tools/utils/getEthereumAddress.js +6 -13
- package/dist/tools/utils/getEthereumAddress.js.map +1 -1
- package/dist/tools/utils/getUrlByTokenName.d.ts +2 -3
- package/dist/tools/utils/getUrlByTokenName.d.ts.map +1 -1
- package/dist/tools/utils/getUrlByTokenName.js +6 -20
- package/dist/tools/utils/getUrlByTokenName.js.map +1 -1
- package/dist/tools/utils/isTokenGraduated.d.ts +2 -3
- package/dist/tools/utils/isTokenGraduated.d.ts.map +1 -1
- package/dist/tools/utils/isTokenGraduated.js +6 -17
- package/dist/tools/utils/isTokenGraduated.js.map +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/default-values.d.ts +147 -0
- package/dist/utils/default-values.d.ts.map +1 -0
- package/dist/utils/default-values.js +177 -0
- package/dist/utils/default-values.js.map +1 -0
- package/dist/utils/error-handler.d.ts +9 -2
- package/dist/utils/error-handler.d.ts.map +1 -1
- package/dist/utils/error-handler.js +14 -59
- package/dist/utils/error-handler.js.map +1 -1
- package/dist/utils/error-templates.d.ts +96 -0
- package/dist/utils/error-templates.d.ts.map +1 -0
- package/dist/utils/error-templates.js +244 -0
- package/dist/utils/error-templates.js.map +1 -0
- package/dist/utils/tool-factory.d.ts +154 -0
- package/dist/utils/tool-factory.d.ts.map +1 -0
- package/dist/utils/tool-factory.js +194 -0
- package/dist/utils/tool-factory.js.map +1 -0
- package/dist/utils/tool-registry.d.ts +92 -0
- package/dist/utils/tool-registry.d.ts.map +1 -0
- package/dist/utils/tool-registry.js +227 -0
- package/dist/utils/tool-registry.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/jest.integration.config.js +70 -0
- package/package.json +10 -6
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry System
|
|
3
|
+
*
|
|
4
|
+
* Enhanced tool registration with auto-validation, metadata, and search capabilities.
|
|
5
|
+
* Provides runtime validation and developer-friendly tool discovery.
|
|
6
|
+
*
|
|
7
|
+
* @see Phase 3.1 of refactoring plan
|
|
8
|
+
*/
|
|
9
|
+
import type { MCPTool } from '../types/mcp.js';
|
|
10
|
+
/**
|
|
11
|
+
* Tool category metadata
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolCategory {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
tools: MCPTool[];
|
|
17
|
+
count: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Tool registry with metadata and search capabilities
|
|
21
|
+
*/
|
|
22
|
+
export interface ToolRegistry {
|
|
23
|
+
tools: MCPTool[];
|
|
24
|
+
categories: Map<string, ToolCategory>;
|
|
25
|
+
totalCount: number;
|
|
26
|
+
expectedCount: number;
|
|
27
|
+
isValid: boolean;
|
|
28
|
+
errors: string[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Tool validation result
|
|
32
|
+
*/
|
|
33
|
+
export interface ToolValidationResult {
|
|
34
|
+
isValid: boolean;
|
|
35
|
+
errors: string[];
|
|
36
|
+
warnings: string[];
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validates a single tool definition
|
|
40
|
+
*/
|
|
41
|
+
export declare function validateTool(tool: MCPTool): ToolValidationResult;
|
|
42
|
+
/**
|
|
43
|
+
* Validates all tools in a registry
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateTools(tools: MCPTool[]): ToolValidationResult;
|
|
46
|
+
/**
|
|
47
|
+
* Creates a tool registry with metadata and validation
|
|
48
|
+
*/
|
|
49
|
+
export declare function createToolRegistry(categories: Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
description: string;
|
|
52
|
+
tools: MCPTool[];
|
|
53
|
+
}>, expectedCount?: number): ToolRegistry;
|
|
54
|
+
/**
|
|
55
|
+
* Finds a tool by name
|
|
56
|
+
*/
|
|
57
|
+
export declare function findTool(registry: ToolRegistry, name: string): MCPTool | undefined;
|
|
58
|
+
/**
|
|
59
|
+
* Finds tools by category
|
|
60
|
+
*/
|
|
61
|
+
export declare function findToolsByCategory(registry: ToolRegistry, categoryName: string): MCPTool[];
|
|
62
|
+
/**
|
|
63
|
+
* Searches tools by name pattern
|
|
64
|
+
*/
|
|
65
|
+
export declare function searchTools(registry: ToolRegistry, pattern: string): MCPTool[];
|
|
66
|
+
/**
|
|
67
|
+
* Gets tool statistics by category
|
|
68
|
+
*/
|
|
69
|
+
export declare function getToolStatistics(registry: ToolRegistry): {
|
|
70
|
+
total: number;
|
|
71
|
+
byCategory: Record<string, number>;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* Logs tool registry statistics
|
|
75
|
+
*/
|
|
76
|
+
export declare function logToolRegistry(registry: ToolRegistry): void;
|
|
77
|
+
/**
|
|
78
|
+
* Generates markdown documentation for tool registry
|
|
79
|
+
*/
|
|
80
|
+
export declare function generateToolDocumentation(registry: ToolRegistry): string;
|
|
81
|
+
export declare const toolRegistry: {
|
|
82
|
+
createToolRegistry: typeof createToolRegistry;
|
|
83
|
+
validateTool: typeof validateTool;
|
|
84
|
+
validateTools: typeof validateTools;
|
|
85
|
+
findTool: typeof findTool;
|
|
86
|
+
findToolsByCategory: typeof findToolsByCategory;
|
|
87
|
+
searchTools: typeof searchTools;
|
|
88
|
+
getToolStatistics: typeof getToolStatistics;
|
|
89
|
+
logToolRegistry: typeof logToolRegistry;
|
|
90
|
+
generateToolDocumentation: typeof generateToolDocumentation;
|
|
91
|
+
};
|
|
92
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/utils/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAM/C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,oBAAoB,CA6ChE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,oBAAoB,CA+BpE;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,EAC1E,aAAa,CAAC,EAAE,MAAM,GACrB,YAAY,CAyCd;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAElF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,EAAE,CAGX;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAG9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAWA;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAgB5D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAiBxE;AAMD,eAAO,MAAM,YAAY;;;;;;;;;;CAUxB,CAAC"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Tool Registry System
|
|
4
|
+
*
|
|
5
|
+
* Enhanced tool registration with auto-validation, metadata, and search capabilities.
|
|
6
|
+
* Provides runtime validation and developer-friendly tool discovery.
|
|
7
|
+
*
|
|
8
|
+
* @see Phase 3.1 of refactoring plan
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.toolRegistry = void 0;
|
|
12
|
+
exports.validateTool = validateTool;
|
|
13
|
+
exports.validateTools = validateTools;
|
|
14
|
+
exports.createToolRegistry = createToolRegistry;
|
|
15
|
+
exports.findTool = findTool;
|
|
16
|
+
exports.findToolsByCategory = findToolsByCategory;
|
|
17
|
+
exports.searchTools = searchTools;
|
|
18
|
+
exports.getToolStatistics = getToolStatistics;
|
|
19
|
+
exports.logToolRegistry = logToolRegistry;
|
|
20
|
+
exports.generateToolDocumentation = generateToolDocumentation;
|
|
21
|
+
// =============================================================================
|
|
22
|
+
// Validation Functions
|
|
23
|
+
// =============================================================================
|
|
24
|
+
/**
|
|
25
|
+
* Validates a single tool definition
|
|
26
|
+
*/
|
|
27
|
+
function validateTool(tool) {
|
|
28
|
+
const errors = [];
|
|
29
|
+
const warnings = [];
|
|
30
|
+
// Required fields
|
|
31
|
+
if (!tool.name) {
|
|
32
|
+
errors.push('Tool name is required');
|
|
33
|
+
}
|
|
34
|
+
else if (typeof tool.name !== 'string') {
|
|
35
|
+
errors.push('Tool name must be a string');
|
|
36
|
+
}
|
|
37
|
+
else if (!tool.name.startsWith('gala_launchpad_')) {
|
|
38
|
+
warnings.push(`Tool name "${tool.name}" should start with "gala_launchpad_"`);
|
|
39
|
+
}
|
|
40
|
+
if (!tool.description) {
|
|
41
|
+
errors.push('Tool description is required');
|
|
42
|
+
}
|
|
43
|
+
else if (typeof tool.description !== 'string') {
|
|
44
|
+
errors.push('Tool description must be a string');
|
|
45
|
+
}
|
|
46
|
+
if (!tool.inputSchema) {
|
|
47
|
+
errors.push('Tool inputSchema is required');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Validate input schema structure
|
|
51
|
+
if (tool.inputSchema.type !== 'object') {
|
|
52
|
+
errors.push('inputSchema.type must be "object"');
|
|
53
|
+
}
|
|
54
|
+
if (!tool.inputSchema.properties) {
|
|
55
|
+
warnings.push('inputSchema.properties is empty');
|
|
56
|
+
}
|
|
57
|
+
if (tool.inputSchema.required && !Array.isArray(tool.inputSchema.required)) {
|
|
58
|
+
errors.push('inputSchema.required must be an array');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!tool.handler) {
|
|
62
|
+
errors.push('Tool handler is required');
|
|
63
|
+
}
|
|
64
|
+
else if (typeof tool.handler !== 'function') {
|
|
65
|
+
errors.push('Tool handler must be a function');
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
isValid: errors.length === 0,
|
|
69
|
+
errors,
|
|
70
|
+
warnings,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Validates all tools in a registry
|
|
75
|
+
*/
|
|
76
|
+
function validateTools(tools) {
|
|
77
|
+
const allErrors = [];
|
|
78
|
+
const allWarnings = [];
|
|
79
|
+
const toolNames = new Set();
|
|
80
|
+
tools.forEach((tool, index) => {
|
|
81
|
+
const result = validateTool(tool);
|
|
82
|
+
// Collect errors with tool context
|
|
83
|
+
result.errors.forEach((error) => {
|
|
84
|
+
allErrors.push(`Tool #${index + 1} (${tool.name || 'unknown'}): ${error}`);
|
|
85
|
+
});
|
|
86
|
+
result.warnings.forEach((warning) => {
|
|
87
|
+
allWarnings.push(`Tool #${index + 1} (${tool.name || 'unknown'}): ${warning}`);
|
|
88
|
+
});
|
|
89
|
+
// Check for duplicate names
|
|
90
|
+
if (tool.name) {
|
|
91
|
+
if (toolNames.has(tool.name)) {
|
|
92
|
+
allErrors.push(`Duplicate tool name: ${tool.name}`);
|
|
93
|
+
}
|
|
94
|
+
toolNames.add(tool.name);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
return {
|
|
98
|
+
isValid: allErrors.length === 0,
|
|
99
|
+
errors: allErrors,
|
|
100
|
+
warnings: allWarnings,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
// =============================================================================
|
|
104
|
+
// Registry Functions
|
|
105
|
+
// =============================================================================
|
|
106
|
+
/**
|
|
107
|
+
* Creates a tool registry with metadata and validation
|
|
108
|
+
*/
|
|
109
|
+
function createToolRegistry(categories, expectedCount) {
|
|
110
|
+
const allTools = [];
|
|
111
|
+
const categoryMap = new Map();
|
|
112
|
+
const registryErrors = [];
|
|
113
|
+
// Process each category
|
|
114
|
+
categories.forEach((category) => {
|
|
115
|
+
const toolCategory = {
|
|
116
|
+
name: category.name,
|
|
117
|
+
description: category.description,
|
|
118
|
+
tools: category.tools,
|
|
119
|
+
count: category.tools.length,
|
|
120
|
+
};
|
|
121
|
+
categoryMap.set(category.name, toolCategory);
|
|
122
|
+
allTools.push(...category.tools);
|
|
123
|
+
});
|
|
124
|
+
// Validate all tools
|
|
125
|
+
const validation = validateTools(allTools);
|
|
126
|
+
registryErrors.push(...validation.errors);
|
|
127
|
+
// Check expected count
|
|
128
|
+
const actualCount = allTools.length;
|
|
129
|
+
const hasExpectedCount = expectedCount !== undefined;
|
|
130
|
+
const countMatches = hasExpectedCount ? actualCount === expectedCount : true;
|
|
131
|
+
if (hasExpectedCount && !countMatches) {
|
|
132
|
+
registryErrors.push(`Tool count mismatch: expected ${expectedCount}, got ${actualCount}`);
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
tools: allTools,
|
|
136
|
+
categories: categoryMap,
|
|
137
|
+
totalCount: actualCount,
|
|
138
|
+
expectedCount: expectedCount ?? actualCount,
|
|
139
|
+
isValid: registryErrors.length === 0,
|
|
140
|
+
errors: registryErrors,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Finds a tool by name
|
|
145
|
+
*/
|
|
146
|
+
function findTool(registry, name) {
|
|
147
|
+
return registry.tools.find((tool) => tool.name === name);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Finds tools by category
|
|
151
|
+
*/
|
|
152
|
+
function findToolsByCategory(registry, categoryName) {
|
|
153
|
+
const category = registry.categories.get(categoryName);
|
|
154
|
+
return category ? category.tools : [];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Searches tools by name pattern
|
|
158
|
+
*/
|
|
159
|
+
function searchTools(registry, pattern) {
|
|
160
|
+
const regex = new RegExp(pattern, 'i');
|
|
161
|
+
return registry.tools.filter((tool) => regex.test(tool.name));
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Gets tool statistics by category
|
|
165
|
+
*/
|
|
166
|
+
function getToolStatistics(registry) {
|
|
167
|
+
const byCategory = {};
|
|
168
|
+
registry.categories.forEach((category, name) => {
|
|
169
|
+
byCategory[name] = category.count;
|
|
170
|
+
});
|
|
171
|
+
return {
|
|
172
|
+
total: registry.totalCount,
|
|
173
|
+
byCategory,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
// =============================================================================
|
|
177
|
+
// Logging and Reporting
|
|
178
|
+
// =============================================================================
|
|
179
|
+
/**
|
|
180
|
+
* Logs tool registry statistics
|
|
181
|
+
*/
|
|
182
|
+
function logToolRegistry(registry) {
|
|
183
|
+
console.log('\n📦 Tool Registry Statistics:');
|
|
184
|
+
console.log(` Total Tools: ${registry.totalCount}/${registry.expectedCount}`);
|
|
185
|
+
console.log(` Valid: ${registry.isValid ? '✅' : '❌'}`);
|
|
186
|
+
if (!registry.isValid && registry.errors.length > 0) {
|
|
187
|
+
console.log('\n❌ Validation Errors:');
|
|
188
|
+
registry.errors.forEach((error) => console.log(` - ${error}`));
|
|
189
|
+
}
|
|
190
|
+
console.log('\n📂 Categories:');
|
|
191
|
+
registry.categories.forEach((category) => {
|
|
192
|
+
console.log(` ${category.name}: ${category.count} tools`);
|
|
193
|
+
});
|
|
194
|
+
console.log('');
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Generates markdown documentation for tool registry
|
|
198
|
+
*/
|
|
199
|
+
function generateToolDocumentation(registry) {
|
|
200
|
+
let doc = '# MCP Tool Registry\n\n';
|
|
201
|
+
doc += `**Total Tools**: ${registry.totalCount}\n\n`;
|
|
202
|
+
doc += '## Categories\n\n';
|
|
203
|
+
registry.categories.forEach((category) => {
|
|
204
|
+
doc += `### ${category.name} (${category.count} tools)\n\n`;
|
|
205
|
+
doc += `${category.description}\n\n`;
|
|
206
|
+
category.tools.forEach((tool) => {
|
|
207
|
+
doc += `- **${tool.name}**: ${tool.description}\n`;
|
|
208
|
+
});
|
|
209
|
+
doc += '\n';
|
|
210
|
+
});
|
|
211
|
+
return doc;
|
|
212
|
+
}
|
|
213
|
+
// =============================================================================
|
|
214
|
+
// Export All
|
|
215
|
+
// =============================================================================
|
|
216
|
+
exports.toolRegistry = {
|
|
217
|
+
createToolRegistry,
|
|
218
|
+
validateTool,
|
|
219
|
+
validateTools,
|
|
220
|
+
findTool,
|
|
221
|
+
findToolsByCategory,
|
|
222
|
+
searchTools,
|
|
223
|
+
getToolStatistics,
|
|
224
|
+
logToolRegistry,
|
|
225
|
+
generateToolDocumentation,
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=tool-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../src/utils/tool-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation Utilities for MCP Prompts
|
|
3
|
+
*
|
|
4
|
+
* Input validation functions for slash command arguments.
|
|
5
|
+
* Prevents malformed inputs and provides clear error messages.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Validation error class for better error handling
|
|
9
|
+
*/
|
|
10
|
+
export declare class ValidationError extends Error {
|
|
11
|
+
field: string;
|
|
12
|
+
constructor(field: string, message: string);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate token name format
|
|
16
|
+
*
|
|
17
|
+
* Token names must be 2-20 characters, alphanumeric with hyphens and underscores.
|
|
18
|
+
*
|
|
19
|
+
* @param name - Token name to validate
|
|
20
|
+
* @param fieldName - Field name for error messages (default: 'tokenName')
|
|
21
|
+
* @throws {ValidationError} If token name is invalid
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* validateTokenName('anime'); // ✅ Valid
|
|
26
|
+
* validateTokenName('test-123'); // ✅ Valid
|
|
27
|
+
* validateTokenName('my_token'); // ✅ Valid
|
|
28
|
+
* validateTokenName('a'); // ❌ Throws: too short
|
|
29
|
+
* validateTokenName('token@#$'); // ❌ Throws: invalid characters
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateTokenName(name: string, fieldName?: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Validate numeric amount
|
|
35
|
+
*
|
|
36
|
+
* Amounts must be positive numbers (integers or decimals).
|
|
37
|
+
*
|
|
38
|
+
* @param amount - Amount to validate (string or number)
|
|
39
|
+
* @param fieldName - Field name for error messages
|
|
40
|
+
* @throws {ValidationError} If amount is invalid
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* validateNumericAmount('100', 'galaAmount'); // ✅ Valid
|
|
45
|
+
* validateNumericAmount('99.5', 'tokenAmount'); // ✅ Valid
|
|
46
|
+
* validateNumericAmount('-5', 'amount'); // ❌ Throws: negative
|
|
47
|
+
* validateNumericAmount('abc', 'amount'); // ❌ Throws: not a number
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateNumericAmount(amount: string | number, fieldName: string): void;
|
|
51
|
+
/**
|
|
52
|
+
* Validate slippage tolerance percentage
|
|
53
|
+
*
|
|
54
|
+
* Slippage must be between 0.01% and 100%.
|
|
55
|
+
*
|
|
56
|
+
* @param slippage - Slippage percentage to validate
|
|
57
|
+
* @param fieldName - Field name for error messages (default: 'slippage')
|
|
58
|
+
* @throws {ValidationError} If slippage is invalid
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* validateSlippage('1'); // ✅ Valid (1%)
|
|
63
|
+
* validateSlippage('0.5'); // ✅ Valid (0.5%)
|
|
64
|
+
* validateSlippage('50'); // ✅ Valid (50%)
|
|
65
|
+
* validateSlippage('0'); // ❌ Throws: too low
|
|
66
|
+
* validateSlippage('150'); // ❌ Throws: too high
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function validateSlippage(slippage: string | number, fieldName?: string): void;
|
|
70
|
+
/**
|
|
71
|
+
* Validate wallet address format
|
|
72
|
+
*
|
|
73
|
+
* Supports both GalaChain format (eth|0x...) and standard Ethereum format (0x...).
|
|
74
|
+
*
|
|
75
|
+
* @param address - Wallet address to validate
|
|
76
|
+
* @param fieldName - Field name for error messages (default: 'address')
|
|
77
|
+
* @throws {ValidationError} If address is invalid
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* validateAddress('eth|0x1234567890abcdef1234567890abcdef12345678'); // ✅ Valid
|
|
82
|
+
* validateAddress('0x1234567890abcdef1234567890abcdef12345678'); // ✅ Valid
|
|
83
|
+
* validateAddress('invalid'); // ❌ Throws: invalid format
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function validateAddress(address: string, fieldName?: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Validate token symbol format
|
|
89
|
+
*
|
|
90
|
+
* Symbols must be 1-8 uppercase letters.
|
|
91
|
+
*
|
|
92
|
+
* @param symbol - Token symbol to validate
|
|
93
|
+
* @param fieldName - Field name for error messages (default: 'symbol')
|
|
94
|
+
* @throws {ValidationError} If symbol is invalid
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```typescript
|
|
98
|
+
* validateTokenSymbol('GALA'); // ✅ Valid
|
|
99
|
+
* validateTokenSymbol('TEST'); // ✅ Valid
|
|
100
|
+
* validateTokenSymbol('test'); // ❌ Throws: must be uppercase
|
|
101
|
+
* validateTokenSymbol('TOOLONG123'); // ❌ Throws: too long
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare function validateTokenSymbol(symbol: string, fieldName?: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Validate pagination limit
|
|
107
|
+
*
|
|
108
|
+
* Limits must be positive integers within reasonable range (1-100).
|
|
109
|
+
*
|
|
110
|
+
* @param limit - Pagination limit to validate
|
|
111
|
+
* @param max - Maximum allowed limit (default: 100)
|
|
112
|
+
* @param fieldName - Field name for error messages (default: 'limit')
|
|
113
|
+
* @throws {ValidationError} If limit is invalid
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```typescript
|
|
117
|
+
* validatePaginationLimit('20'); // ✅ Valid
|
|
118
|
+
* validatePaginationLimit('1'); // ✅ Valid
|
|
119
|
+
* validatePaginationLimit('0'); // ❌ Throws: too low
|
|
120
|
+
* validatePaginationLimit('150'); // ❌ Throws: too high
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
export declare function validatePaginationLimit(limit: string | number, max?: number, fieldName?: string): void;
|
|
124
|
+
/**
|
|
125
|
+
* Validate comma-separated token list
|
|
126
|
+
*
|
|
127
|
+
* For batch operations that accept multiple token names.
|
|
128
|
+
*
|
|
129
|
+
* @param tokens - Comma-separated token names
|
|
130
|
+
* @param fieldName - Field name for error messages (default: 'tokens')
|
|
131
|
+
* @throws {ValidationError} If token list is invalid
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* validateTokenList('anime,test,dragon'); // ✅ Valid
|
|
136
|
+
* validateTokenList('token1'); // ✅ Valid (single token)
|
|
137
|
+
* validateTokenList(''); // ❌ Throws: empty list
|
|
138
|
+
* validateTokenList('token1,invalid@#$'); // ❌ Throws: invalid token name
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
export declare function validateTokenList(tokens: string, fieldName?: string): string[];
|
|
142
|
+
/**
|
|
143
|
+
* Safe validation wrapper that doesn't throw
|
|
144
|
+
*
|
|
145
|
+
* Useful for non-critical validation where you want to continue with a warning.
|
|
146
|
+
*
|
|
147
|
+
* @param validationFn - Validation function to execute
|
|
148
|
+
* @returns Object with success flag and optional error
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```typescript
|
|
152
|
+
* const result = safeValidate(() => validateTokenName('anime'));
|
|
153
|
+
* if (!result.success) {
|
|
154
|
+
* console.warn('Validation warning:', result.error);
|
|
155
|
+
* }
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
158
|
+
export declare function safeValidate(validationFn: () => void): {
|
|
159
|
+
success: boolean;
|
|
160
|
+
error?: string;
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAE/B,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM,EACpB,OAAO,EAAE,MAAM;CAKlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAc,GAAG,IAAI,CAmB7E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,IAAI,CAqBN;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,GAAG,MAAM,EACzB,SAAS,SAAa,GACrB,IAAI,CAoBN;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,IAAI,CAgB5E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAW,GAAG,IAAI,CAmB9E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,GAAG,SAAM,EACT,SAAS,SAAU,GAClB,IAAI,CAoBN;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,SAAW,GAAG,MAAM,EAAE,CA2BhF;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,YAAY,CAC1B,YAAY,EAAE,MAAM,IAAI,GACvB;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAUtC"}
|