equilibria-mcp-server 1.0.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.
Files changed (164) hide show
  1. package/CHANGELOG.md +142 -0
  2. package/LICENSE +21 -0
  3. package/README.md +240 -0
  4. package/dist/builders/YAMLBuilder.d.ts +77 -0
  5. package/dist/builders/YAMLBuilder.d.ts.map +1 -0
  6. package/dist/builders/YAMLBuilder.js +251 -0
  7. package/dist/builders/YAMLBuilder.js.map +1 -0
  8. package/dist/economics/constants.d.ts +39 -0
  9. package/dist/economics/constants.d.ts.map +1 -0
  10. package/dist/economics/constants.js +46 -0
  11. package/dist/economics/constants.js.map +1 -0
  12. package/dist/economics/formulas.d.ts +19 -0
  13. package/dist/economics/formulas.d.ts.map +1 -0
  14. package/dist/economics/formulas.js +260 -0
  15. package/dist/economics/formulas.js.map +1 -0
  16. package/dist/economics/index.d.ts +9 -0
  17. package/dist/economics/index.d.ts.map +1 -0
  18. package/dist/economics/index.js +9 -0
  19. package/dist/economics/index.js.map +1 -0
  20. package/dist/economics/validators.d.ts +18 -0
  21. package/dist/economics/validators.d.ts.map +1 -0
  22. package/dist/economics/validators.js +111 -0
  23. package/dist/economics/validators.js.map +1 -0
  24. package/dist/errors/index.d.ts +172 -0
  25. package/dist/errors/index.d.ts.map +1 -0
  26. package/dist/errors/index.js +313 -0
  27. package/dist/errors/index.js.map +1 -0
  28. package/dist/formatters/index.d.ts +8 -0
  29. package/dist/formatters/index.d.ts.map +1 -0
  30. package/dist/formatters/index.js +8 -0
  31. package/dist/formatters/index.js.map +1 -0
  32. package/dist/formatters/redux.d.ts +15 -0
  33. package/dist/formatters/redux.d.ts.map +1 -0
  34. package/dist/formatters/redux.js +35 -0
  35. package/dist/formatters/redux.js.map +1 -0
  36. package/dist/formatters/yaml.d.ts +18 -0
  37. package/dist/formatters/yaml.d.ts.map +1 -0
  38. package/dist/formatters/yaml.js +40 -0
  39. package/dist/formatters/yaml.js.map +1 -0
  40. package/dist/index.d.ts +11 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +19 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/server.d.ts +14 -0
  45. package/dist/server.d.ts.map +1 -0
  46. package/dist/server.js +86 -0
  47. package/dist/server.js.map +1 -0
  48. package/dist/templates/advancedMicro.d.ts +8 -0
  49. package/dist/templates/advancedMicro.d.ts.map +1 -0
  50. package/dist/templates/advancedMicro.js +834 -0
  51. package/dist/templates/advancedMicro.js.map +1 -0
  52. package/dist/templates/consumer.d.ts +12 -0
  53. package/dist/templates/consumer.d.ts.map +1 -0
  54. package/dist/templates/consumer.js +1978 -0
  55. package/dist/templates/consumer.js.map +1 -0
  56. package/dist/templates/elasticity.d.ts +8 -0
  57. package/dist/templates/elasticity.d.ts.map +1 -0
  58. package/dist/templates/elasticity.js +500 -0
  59. package/dist/templates/elasticity.js.map +1 -0
  60. package/dist/templates/externalities.d.ts +11 -0
  61. package/dist/templates/externalities.d.ts.map +1 -0
  62. package/dist/templates/externalities.js +997 -0
  63. package/dist/templates/externalities.js.map +1 -0
  64. package/dist/templates/financeBehavioral.d.ts +8 -0
  65. package/dist/templates/financeBehavioral.d.ts.map +1 -0
  66. package/dist/templates/financeBehavioral.js +860 -0
  67. package/dist/templates/financeBehavioral.js.map +1 -0
  68. package/dist/templates/growth.d.ts +8 -0
  69. package/dist/templates/growth.d.ts.map +1 -0
  70. package/dist/templates/growth.js +740 -0
  71. package/dist/templates/growth.js.map +1 -0
  72. package/dist/templates/index.d.ts +31 -0
  73. package/dist/templates/index.d.ts.map +1 -0
  74. package/dist/templates/index.js +91 -0
  75. package/dist/templates/index.js.map +1 -0
  76. package/dist/templates/inequality.d.ts +8 -0
  77. package/dist/templates/inequality.d.ts.map +1 -0
  78. package/dist/templates/inequality.js +562 -0
  79. package/dist/templates/inequality.js.map +1 -0
  80. package/dist/templates/intertemporalMacro.d.ts +8 -0
  81. package/dist/templates/intertemporalMacro.d.ts.map +1 -0
  82. package/dist/templates/intertemporalMacro.js +550 -0
  83. package/dist/templates/intertemporalMacro.js.map +1 -0
  84. package/dist/templates/isLM.d.ts +8 -0
  85. package/dist/templates/isLM.d.ts.map +1 -0
  86. package/dist/templates/isLM.js +747 -0
  87. package/dist/templates/isLM.js.map +1 -0
  88. package/dist/templates/macro.d.ts +8 -0
  89. package/dist/templates/macro.d.ts.map +1 -0
  90. package/dist/templates/macro.js +600 -0
  91. package/dist/templates/macro.js.map +1 -0
  92. package/dist/templates/marketStructures.d.ts +11 -0
  93. package/dist/templates/marketStructures.d.ts.map +1 -0
  94. package/dist/templates/marketStructures.js +1135 -0
  95. package/dist/templates/marketStructures.js.map +1 -0
  96. package/dist/templates/newKeynesian.d.ts +8 -0
  97. package/dist/templates/newKeynesian.d.ts.map +1 -0
  98. package/dist/templates/newKeynesian.js +633 -0
  99. package/dist/templates/newKeynesian.js.map +1 -0
  100. package/dist/templates/oligopoly.d.ts +11 -0
  101. package/dist/templates/oligopoly.d.ts.map +1 -0
  102. package/dist/templates/oligopoly.js +1113 -0
  103. package/dist/templates/oligopoly.js.map +1 -0
  104. package/dist/templates/ppf.d.ts +8 -0
  105. package/dist/templates/ppf.d.ts.map +1 -0
  106. package/dist/templates/ppf.js +439 -0
  107. package/dist/templates/ppf.js.map +1 -0
  108. package/dist/templates/producer.d.ts +11 -0
  109. package/dist/templates/producer.d.ts.map +1 -0
  110. package/dist/templates/producer.js +979 -0
  111. package/dist/templates/producer.js.map +1 -0
  112. package/dist/templates/production.d.ts +8 -0
  113. package/dist/templates/production.d.ts.map +1 -0
  114. package/dist/templates/production.js +574 -0
  115. package/dist/templates/production.js.map +1 -0
  116. package/dist/templates/supplyDemand.d.ts +8 -0
  117. package/dist/templates/supplyDemand.d.ts.map +1 -0
  118. package/dist/templates/supplyDemand.js +1282 -0
  119. package/dist/templates/supplyDemand.js.map +1 -0
  120. package/dist/templates/tradeGrowth.d.ts +8 -0
  121. package/dist/templates/tradeGrowth.d.ts.map +1 -0
  122. package/dist/templates/tradeGrowth.js +637 -0
  123. package/dist/templates/tradeGrowth.js.map +1 -0
  124. package/dist/tools/index.d.ts +25 -0
  125. package/dist/tools/index.d.ts.map +1 -0
  126. package/dist/tools/index.js +54 -0
  127. package/dist/tools/index.js.map +1 -0
  128. package/dist/tools/models.d.ts +8 -0
  129. package/dist/tools/models.d.ts.map +1 -0
  130. package/dist/tools/models.js +828 -0
  131. package/dist/tools/models.js.map +1 -0
  132. package/dist/tools/output.d.ts +8 -0
  133. package/dist/tools/output.d.ts.map +1 -0
  134. package/dist/tools/output.js +236 -0
  135. package/dist/tools/output.js.map +1 -0
  136. package/dist/tools/templates.d.ts +8 -0
  137. package/dist/tools/templates.d.ts.map +1 -0
  138. package/dist/tools/templates.js +247 -0
  139. package/dist/tools/templates.js.map +1 -0
  140. package/dist/tools/validation.d.ts +8 -0
  141. package/dist/tools/validation.d.ts.map +1 -0
  142. package/dist/tools/validation.js +181 -0
  143. package/dist/tools/validation.js.map +1 -0
  144. package/dist/types/index.d.ts +187 -0
  145. package/dist/types/index.d.ts.map +1 -0
  146. package/dist/types/index.js +7 -0
  147. package/dist/types/index.js.map +1 -0
  148. package/dist/utils/cache.d.ts +99 -0
  149. package/dist/utils/cache.d.ts.map +1 -0
  150. package/dist/utils/cache.js +192 -0
  151. package/dist/utils/cache.js.map +1 -0
  152. package/dist/utils/index.d.ts +8 -0
  153. package/dist/utils/index.d.ts.map +1 -0
  154. package/dist/utils/index.js +8 -0
  155. package/dist/utils/index.js.map +1 -0
  156. package/dist/utils/logger.d.ts +128 -0
  157. package/dist/utils/logger.d.ts.map +1 -0
  158. package/dist/utils/logger.js +251 -0
  159. package/dist/utils/logger.js.map +1 -0
  160. package/dist/validation/index.d.ts +42 -0
  161. package/dist/validation/index.d.ts.map +1 -0
  162. package/dist/validation/index.js +282 -0
  163. package/dist/validation/index.js.map +1 -0
  164. package/package.json +73 -0
@@ -0,0 +1,282 @@
1
+ /**
2
+ * Validation Module
3
+ *
4
+ * Provides validation utilities for expressions, documents, and dependencies.
5
+ * Enhanced with caching and improved error messages.
6
+ */
7
+ import { DocumentSchema, validateExpressionSyntax as engineValidateExpression, extractSymbolsFromExpression, validateDocumentReferences, parseYAML, } from 'equilibria-engine';
8
+ import { expressionCache, documentCache } from '../utils/cache.js';
9
+ import { logger } from '../utils/logger.js';
10
+ import { Errors } from '../errors/index.js';
11
+ /**
12
+ * Built-in Math.js functions and constants
13
+ */
14
+ const MATHJS_BUILTINS = new Set([
15
+ 'pi', 'e', 'i', 'Infinity', 'NaN',
16
+ 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',
17
+ 'sinh', 'cosh', 'tanh',
18
+ 'abs', 'ceil', 'floor', 'round', 'sign', 'sqrt', 'cbrt',
19
+ 'exp', 'log', 'log10', 'log2', 'pow',
20
+ 'min', 'max', 'mean', 'sum',
21
+ 'mod', 'gcd', 'lcm',
22
+ 'if', 'ifelse',
23
+ ]);
24
+ /**
25
+ * Validate a mathematical expression
26
+ * Results are cached to improve performance for repeated validations.
27
+ */
28
+ export function validateExpression(expression, availableParameters = [], allowX = true, allowT = false) {
29
+ // Create cache key from all inputs
30
+ const cacheKey = JSON.stringify({ expression, availableParameters, allowX, allowT });
31
+ // Check cache first
32
+ const cached = expressionCache.get(cacheKey);
33
+ if (cached) {
34
+ logger.debug('Expression validation cache hit', { expression });
35
+ return cached;
36
+ }
37
+ logger.debug('Validating expression', { expression });
38
+ const errors = [];
39
+ let symbols = [];
40
+ // Check syntax
41
+ const syntaxResult = engineValidateExpression(expression);
42
+ if (!syntaxResult.isValid) {
43
+ const enhancedError = Errors.invalidExpression(expression, syntaxResult.error || 'Invalid syntax');
44
+ errors.push({
45
+ path: enhancedError.path,
46
+ message: enhancedError.message,
47
+ suggestion: enhancedError.suggestion,
48
+ });
49
+ const result = { valid: false, errors, symbols };
50
+ expressionCache.set(cacheKey, result);
51
+ return result;
52
+ }
53
+ // Extract symbols
54
+ symbols = extractSymbolsFromExpression(expression);
55
+ // Check for unknown parameters
56
+ const availableSet = new Set(availableParameters);
57
+ if (allowX)
58
+ availableSet.add('x');
59
+ if (allowT)
60
+ availableSet.add('t');
61
+ for (const sym of symbols) {
62
+ if (!availableSet.has(sym) && !MATHJS_BUILTINS.has(sym)) {
63
+ const suggestion = findClosestMatch(sym, availableParameters);
64
+ const enhancedError = Errors.unknownParameter(sym, suggestion || undefined);
65
+ errors.push({
66
+ path: enhancedError.path,
67
+ message: enhancedError.message,
68
+ suggestion: enhancedError.suggestion,
69
+ });
70
+ }
71
+ }
72
+ const result = {
73
+ valid: errors.length === 0,
74
+ errors,
75
+ symbols: symbols.filter((s) => !MATHJS_BUILTINS.has(s)),
76
+ };
77
+ // Cache the result
78
+ expressionCache.set(cacheKey, result);
79
+ logger.validation('expression', result.valid, result.errors);
80
+ return result;
81
+ }
82
+ /**
83
+ * Validate a complete YAML document
84
+ * Results are cached with a short TTL.
85
+ */
86
+ export function validateDocument(yamlContent) {
87
+ // Check cache first
88
+ const cached = documentCache.get(yamlContent);
89
+ if (cached) {
90
+ logger.debug('Document validation cache hit');
91
+ return cached;
92
+ }
93
+ logger.debug('Validating document', { length: yamlContent.length });
94
+ const errors = [];
95
+ const warnings = [];
96
+ try {
97
+ // Parse YAML
98
+ const document = parseYAML(yamlContent);
99
+ // Validate with Zod schema
100
+ const schemaResult = DocumentSchema.safeParse(document);
101
+ if (!schemaResult.success) {
102
+ for (const issue of schemaResult.error.issues) {
103
+ const path = issue.path.join('.');
104
+ const enhancedMessage = enhanceZodError(issue);
105
+ errors.push({
106
+ path,
107
+ message: enhancedMessage.message,
108
+ suggestion: enhancedMessage.suggestion,
109
+ });
110
+ }
111
+ const result = { valid: false, errors, warnings };
112
+ documentCache.set(yamlContent, result);
113
+ return result;
114
+ }
115
+ // Validate cross-references
116
+ const refErrors = validateDocumentReferences(schemaResult.data);
117
+ for (const refError of refErrors) {
118
+ errors.push({
119
+ path: 'references',
120
+ message: refError,
121
+ suggestion: 'Check that all referenced IDs exist in the document',
122
+ });
123
+ }
124
+ const result = {
125
+ valid: errors.length === 0,
126
+ errors,
127
+ warnings,
128
+ };
129
+ documentCache.set(yamlContent, result);
130
+ logger.validation('document', result.valid, result.errors);
131
+ return result;
132
+ }
133
+ catch (error) {
134
+ const message = error instanceof Error ? error.message : 'Failed to parse document';
135
+ errors.push({
136
+ path: 'document',
137
+ message,
138
+ suggestion: 'Check YAML syntax: proper indentation, colons after keys, quotes around strings with special characters',
139
+ });
140
+ const result = { valid: false, errors, warnings };
141
+ documentCache.set(yamlContent, result);
142
+ return result;
143
+ }
144
+ }
145
+ /**
146
+ * Enhance Zod error with better messages
147
+ */
148
+ function enhanceZodError(issue) {
149
+ const path = issue.path.join('.');
150
+ switch (issue.code) {
151
+ case 'invalid_type':
152
+ return {
153
+ message: issue.message,
154
+ suggestion: `Check the type of "${path}". Common issues: numbers in quotes, missing quotes on strings.`,
155
+ };
156
+ case 'unrecognized_keys':
157
+ return {
158
+ message: issue.message,
159
+ suggestion: 'Remove unknown fields or check spelling.',
160
+ };
161
+ case 'invalid_enum_value':
162
+ return {
163
+ message: issue.message,
164
+ suggestion: 'Use one of the allowed values listed in the error.',
165
+ };
166
+ case 'too_small':
167
+ return {
168
+ message: issue.message,
169
+ suggestion: `Increase the value for "${path}" to meet the minimum requirement.`,
170
+ };
171
+ case 'too_big':
172
+ return {
173
+ message: issue.message,
174
+ suggestion: `Decrease the value for "${path}" to meet the maximum requirement.`,
175
+ };
176
+ default:
177
+ return {
178
+ message: issue.message,
179
+ suggestion: undefined,
180
+ };
181
+ }
182
+ }
183
+ /**
184
+ * Check for circular dependencies in parameter expressions
185
+ */
186
+ export function checkCircularDependencies(parameters) {
187
+ const graph = new Map();
188
+ // Build dependency graph
189
+ for (const [name, expression] of Object.entries(parameters)) {
190
+ const deps = extractSymbolsFromExpression(expression).filter((s) => !MATHJS_BUILTINS.has(s) && s !== 'x' && s !== 't');
191
+ graph.set(name, new Set(deps));
192
+ }
193
+ // Topological sort with cycle detection
194
+ const visited = new Set();
195
+ const visiting = new Set();
196
+ const order = [];
197
+ let cycle = [];
198
+ function visit(node, path) {
199
+ if (visiting.has(node)) {
200
+ // Found cycle
201
+ const cycleStart = path.indexOf(node);
202
+ cycle = path.slice(cycleStart);
203
+ return false;
204
+ }
205
+ if (visited.has(node)) {
206
+ return true;
207
+ }
208
+ visiting.add(node);
209
+ const deps = graph.get(node) || new Set();
210
+ for (const dep of deps) {
211
+ if (graph.has(dep) && !visit(dep, [...path, node])) {
212
+ return false;
213
+ }
214
+ }
215
+ visiting.delete(node);
216
+ visited.add(node);
217
+ order.push(node);
218
+ return true;
219
+ }
220
+ for (const node of graph.keys()) {
221
+ if (!visited.has(node) && !visit(node, [])) {
222
+ return { valid: false, cycle, order: [] };
223
+ }
224
+ }
225
+ return { valid: true, cycle: [], order };
226
+ }
227
+ /**
228
+ * Find closest match using Levenshtein distance
229
+ */
230
+ function findClosestMatch(input, options, maxDistance = 3) {
231
+ let closest = null;
232
+ let minDist = Infinity;
233
+ for (const opt of options) {
234
+ const dist = levenshteinDistance(input.toLowerCase(), opt.toLowerCase());
235
+ if (dist < minDist && dist <= maxDistance) {
236
+ minDist = dist;
237
+ closest = opt;
238
+ }
239
+ }
240
+ return closest;
241
+ }
242
+ /**
243
+ * Calculate Levenshtein distance
244
+ */
245
+ function levenshteinDistance(a, b) {
246
+ const matrix = [];
247
+ for (let i = 0; i <= b.length; i++) {
248
+ matrix[i] = [i];
249
+ }
250
+ for (let j = 0; j <= a.length; j++) {
251
+ matrix[0][j] = j;
252
+ }
253
+ for (let i = 1; i <= b.length; i++) {
254
+ for (let j = 1; j <= a.length; j++) {
255
+ if (b[i - 1] === a[j - 1]) {
256
+ matrix[i][j] = matrix[i - 1][j - 1];
257
+ }
258
+ else {
259
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
260
+ }
261
+ }
262
+ }
263
+ return matrix[b.length][a.length];
264
+ }
265
+ /**
266
+ * Clear all validation caches
267
+ */
268
+ export function clearValidationCaches() {
269
+ expressionCache.clear();
270
+ documentCache.clear();
271
+ logger.debug('Validation caches cleared');
272
+ }
273
+ /**
274
+ * Get validation cache statistics
275
+ */
276
+ export function getValidationCacheStats() {
277
+ return {
278
+ expression: expressionCache.getStats(),
279
+ document: documentCache.getStats(),
280
+ };
281
+ }
282
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/validation/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "equilibria-mcp-server",
3
+ "version": "1.0.0",
4
+ "description": "Model Context Protocol server for generating economic visualizations with the Equilibria Engine",
5
+ "license": "MIT",
6
+ "author": "Kinetonomics",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/DingleDongle93/Equilibria.git",
10
+ "directory": "packages/equilibria-mcp-server"
11
+ },
12
+ "homepage": "https://github.com/DingleDongle93/Equilibria#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/DingleDongle93/Equilibria/issues"
15
+ },
16
+ "keywords": [
17
+ "mcp",
18
+ "model-context-protocol",
19
+ "economics",
20
+ "visualization",
21
+ "equilibria",
22
+ "charts",
23
+ "graphs",
24
+ "ai",
25
+ "claude"
26
+ ],
27
+ "type": "module",
28
+ "main": "dist/index.js",
29
+ "types": "dist/index.d.ts",
30
+ "bin": {
31
+ "equilibria-mcp-server": "./dist/index.js"
32
+ },
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/index.js"
37
+ }
38
+ },
39
+ "files": [
40
+ "dist/",
41
+ "README.md",
42
+ "CHANGELOG.md",
43
+ "LICENSE"
44
+ ],
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "dev": "tsx watch src/index.ts",
48
+ "start": "node dist/index.js",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest",
51
+ "type-check": "tsc --noEmit",
52
+ "lint": "eslint src/",
53
+ "clean": "rm -rf dist",
54
+ "prepublishOnly": "pnpm run build"
55
+ },
56
+ "dependencies": {
57
+ "@modelcontextprotocol/sdk": "^1.0.0",
58
+ "equilibria-engine": "^1.4.2",
59
+ "mathjs": "^15.0.0",
60
+ "zod": "^3.25.76",
61
+ "js-yaml": "^4.1.0"
62
+ },
63
+ "devDependencies": {
64
+ "@types/js-yaml": "^4.0.9",
65
+ "@types/node": "^22.19.1",
66
+ "tsx": "^4.19.4",
67
+ "typescript": "^5.9.3",
68
+ "vitest": "^0.34.0"
69
+ },
70
+ "engines": {
71
+ "node": ">=18.0.0"
72
+ }
73
+ }