@lydt/geogebra-studio 0.0.0-stage → 0.4.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/plugins/marketplace.json +21 -0
- package/.codex-plugin/plugin.json +21 -0
- package/.mcp.json +18 -0
- package/LICENSE +339 -0
- package/LICENSE-MIT +21 -0
- package/README.md +108 -2
- package/README.zh-CN.md +89 -0
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/dist/cli.d.ts +27 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +234 -0
- package/dist/cli.js.map +1 -0
- package/dist/export/files.d.ts +4 -0
- package/dist/export/files.d.ts.map +1 -0
- package/dist/export/files.js +44 -0
- package/dist/export/files.js.map +1 -0
- package/dist/export/gikz.d.ts +11 -0
- package/dist/export/gikz.d.ts.map +1 -0
- package/dist/export/gikz.js +28 -0
- package/dist/export/gikz.js.map +1 -0
- package/dist/export/html.d.ts +14 -0
- package/dist/export/html.d.ts.map +1 -0
- package/dist/export/html.js +97 -0
- package/dist/export/html.js.map +1 -0
- package/dist/export/semantic.d.ts +43 -0
- package/dist/export/semantic.d.ts.map +1 -0
- package/dist/export/semantic.js +212 -0
- package/dist/export/semantic.js.map +1 -0
- package/dist/export/viewer-themes.d.ts +76 -0
- package/dist/export/viewer-themes.d.ts.map +1 -0
- package/dist/export/viewer-themes.js +169 -0
- package/dist/export/viewer-themes.js.map +1 -0
- package/dist/export/workspace.d.ts +4 -0
- package/dist/export/workspace.d.ts.map +1 -0
- package/dist/export/workspace.js +25 -0
- package/dist/export/workspace.js.map +1 -0
- package/dist/gikz-browser.js +770 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +84 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +35 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +187 -0
- package/dist/server.js.map +1 -0
- package/dist/studio/artifact.d.ts +37 -0
- package/dist/studio/artifact.d.ts.map +1 -0
- package/dist/studio/artifact.js +61 -0
- package/dist/studio/artifact.js.map +1 -0
- package/dist/studio/browser.d.ts +7 -0
- package/dist/studio/browser.d.ts.map +1 -0
- package/dist/studio/browser.js +67 -0
- package/dist/studio/browser.js.map +1 -0
- package/dist/studio/install.d.ts +4 -0
- package/dist/studio/install.d.ts.map +1 -0
- package/dist/studio/install.js +60 -0
- package/dist/studio/install.js.map +1 -0
- package/dist/tools/apps-api-tools.d.ts +4 -0
- package/dist/tools/apps-api-tools.d.ts.map +1 -0
- package/dist/tools/apps-api-tools.js +96 -0
- package/dist/tools/apps-api-tools.js.map +1 -0
- package/dist/tools/educational-templates.d.ts +33 -0
- package/dist/tools/educational-templates.d.ts.map +1 -0
- package/dist/tools/educational-templates.js +261 -0
- package/dist/tools/educational-templates.js.map +1 -0
- package/dist/tools/export-tools.d.ts +3 -0
- package/dist/tools/export-tools.d.ts.map +1 -0
- package/dist/tools/export-tools.js +118 -0
- package/dist/tools/export-tools.js.map +1 -0
- package/dist/tools/geogebra-tools.d.ts +15 -0
- package/dist/tools/geogebra-tools.d.ts.map +1 -0
- package/dist/tools/geogebra-tools.js +3442 -0
- package/dist/tools/geogebra-tools.js.map +1 -0
- package/dist/tools/index.d.ts +43 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +183 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/performance-tools.d.ts +7 -0
- package/dist/tools/performance-tools.d.ts.map +1 -0
- package/dist/tools/performance-tools.js +312 -0
- package/dist/tools/performance-tools.js.map +1 -0
- package/dist/tools/templates/algebra-templates.d.ts +7 -0
- package/dist/tools/templates/algebra-templates.d.ts.map +1 -0
- package/dist/tools/templates/algebra-templates.js +568 -0
- package/dist/tools/templates/algebra-templates.js.map +1 -0
- package/dist/tools/templates/geometry-templates.d.ts +7 -0
- package/dist/tools/templates/geometry-templates.d.ts.map +1 -0
- package/dist/tools/templates/geometry-templates.js +492 -0
- package/dist/tools/templates/geometry-templates.js.map +1 -0
- package/dist/types/geogebra.d.ts +103 -0
- package/dist/types/geogebra.d.ts.map +1 -0
- package/dist/types/geogebra.js +34 -0
- package/dist/types/geogebra.js.map +1 -0
- package/dist/types/mcp.d.ts +125 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +19 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/utils/app-info.d.ts +12 -0
- package/dist/utils/app-info.d.ts.map +1 -0
- package/dist/utils/app-info.js +30 -0
- package/dist/utils/app-info.js.map +1 -0
- package/dist/utils/errors.d.ts +37 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +72 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/gemini-compatibility.d.ts +39 -0
- package/dist/utils/gemini-compatibility.d.ts.map +1 -0
- package/dist/utils/gemini-compatibility.js +154 -0
- package/dist/utils/gemini-compatibility.js.map +1 -0
- package/dist/utils/geogebra-instance.d.ts +252 -0
- package/dist/utils/geogebra-instance.d.ts.map +1 -0
- package/dist/utils/geogebra-instance.js +1560 -0
- package/dist/utils/geogebra-instance.js.map +1 -0
- package/dist/utils/geogebra-mock.d.ts +172 -0
- package/dist/utils/geogebra-mock.d.ts.map +1 -0
- package/dist/utils/geogebra-mock.js +732 -0
- package/dist/utils/geogebra-mock.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +46 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/performance/index.d.ts +76 -0
- package/dist/utils/performance/index.d.ts.map +1 -0
- package/dist/utils/performance/index.js +163 -0
- package/dist/utils/performance/index.js.map +1 -0
- package/dist/utils/performance/instance-pool.d.ts +78 -0
- package/dist/utils/performance/instance-pool.d.ts.map +1 -0
- package/dist/utils/performance/instance-pool.js +268 -0
- package/dist/utils/performance/instance-pool.js.map +1 -0
- package/dist/utils/validation.d.ts +92 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +557 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/widget.html +110 -0
- package/docs/APPS-API-BRIDGE.md +28 -0
- package/docs/MODERNIZATION.md +15 -0
- package/docs/TANGENT-REGRESSION.md +34 -0
- package/docs/VALIDATION.md +26 -0
- package/docs/VISUAL-STANDARD.md +26 -0
- package/docs/images/native-construction.png +0 -0
- package/examples/tangent-construction.json +26 -0
- package/gikz/LICENSE +339 -0
- package/gikz/PROVENANCE.md +8 -0
- package/gikz/browser.cjs +2 -0
- package/gikz/cli.cjs +195 -0
- package/gikz/core.cjs +806 -0
- package/mcp.json +20 -0
- package/package.json +107 -4
- package/plugin.json +35 -0
- package/runtime/package.json +4 -0
- package/scripts/build-plugin.cjs +15 -0
- package/scripts/build-widget.cjs +7 -0
- package/skills/geogebra-construct/SKILL.md +40 -0
- package/skills/geogebra-setup/SKILL.md +37 -0
- package/skills/geometry-export/SKILL.md +31 -0
- package/src/cli.ts +212 -0
- package/src/export/files.ts +26 -0
- package/src/export/gikz.ts +22 -0
- package/src/export/html.ts +108 -0
- package/src/export/semantic.ts +180 -0
- package/src/export/viewer-themes.ts +165 -0
- package/src/export/workspace.ts +15 -0
- package/src/index.ts +71 -0
- package/src/server.ts +168 -0
- package/src/studio/artifact.ts +50 -0
- package/src/studio/browser.ts +38 -0
- package/src/studio/install.ts +43 -0
- package/src/tools/apps-api-tools.ts +96 -0
- package/src/tools/educational-templates.ts +299 -0
- package/src/tools/export-tools.ts +110 -0
- package/src/tools/geogebra-tools.ts +3836 -0
- package/src/tools/index.ts +192 -0
- package/src/tools/performance-tools.ts +322 -0
- package/src/tools/templates/algebra-templates.ts +619 -0
- package/src/tools/templates/geometry-templates.ts +550 -0
- package/src/types/geogebra.ts +140 -0
- package/src/types/global.d.ts +31 -0
- package/src/types/mcp.ts +141 -0
- package/src/utils/app-info.ts +35 -0
- package/src/utils/errors.ts +97 -0
- package/src/utils/gemini-compatibility.ts +193 -0
- package/src/utils/geogebra-instance.ts +1712 -0
- package/src/utils/geogebra-mock.ts +867 -0
- package/src/utils/logger.ts +60 -0
- package/src/utils/performance/index.ts +211 -0
- package/src/utils/performance/instance-pool.ts +323 -0
- package/src/utils/validation.ts +647 -0
- package/tsconfig.json +35 -0
- package/widget/main.ts +12 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Optimized GeoGebra Instance Pool Management
|
|
4
|
+
* GEB-9: Performance Optimization: Response Time and Resource Management
|
|
5
|
+
*/
|
|
6
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
7
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
8
|
+
};
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.optimizedInstancePool = exports.OptimizedInstancePool = void 0;
|
|
11
|
+
const geogebra_instance_1 = require("../geogebra-instance");
|
|
12
|
+
const logger_1 = __importDefault(require("../logger"));
|
|
13
|
+
const index_1 = require("./index");
|
|
14
|
+
// Check if we're in MCP mode (stdio communication)
|
|
15
|
+
// When piping input, process.stdin.isTTY is undefined, not false
|
|
16
|
+
const isMcpMode = !process.stdin.isTTY;
|
|
17
|
+
class OptimizedInstancePool {
|
|
18
|
+
static poolInstance;
|
|
19
|
+
instances = new Map();
|
|
20
|
+
config;
|
|
21
|
+
cleanupInterval;
|
|
22
|
+
defaultConfig = {
|
|
23
|
+
maxInstances: 3, // Maximum concurrent instances
|
|
24
|
+
instanceTimeout: 300000, // 5 minutes
|
|
25
|
+
maxIdleTime: 600000, // 10 minutes
|
|
26
|
+
headless: true,
|
|
27
|
+
browserArgs: [
|
|
28
|
+
'--no-sandbox',
|
|
29
|
+
'--disable-setuid-sandbox',
|
|
30
|
+
'--disable-dev-shm-usage',
|
|
31
|
+
'--disable-accelerated-2d-canvas',
|
|
32
|
+
'--no-first-run',
|
|
33
|
+
'--no-zygote',
|
|
34
|
+
'--disable-gpu',
|
|
35
|
+
'--memory-pressure-off', // Reduce memory pressure
|
|
36
|
+
'--max_old_space_size=512' // Limit memory usage
|
|
37
|
+
]
|
|
38
|
+
};
|
|
39
|
+
constructor(config) {
|
|
40
|
+
this.config = { ...this.defaultConfig, ...config };
|
|
41
|
+
this.startCleanupTimer();
|
|
42
|
+
// Transport lifecycle owns graceful cleanup.
|
|
43
|
+
if (!isMcpMode) {
|
|
44
|
+
logger_1.default.info('Optimized Instance Pool initialized', { config: this.config });
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
static getInstance(config) {
|
|
48
|
+
if (!OptimizedInstancePool.poolInstance) {
|
|
49
|
+
OptimizedInstancePool.poolInstance = new OptimizedInstancePool(config);
|
|
50
|
+
}
|
|
51
|
+
return OptimizedInstancePool.poolInstance;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get an available instance from the pool
|
|
55
|
+
*/
|
|
56
|
+
async getInstance() {
|
|
57
|
+
return index_1.performanceMonitor.measureOperation('instance_pool_get', async () => {
|
|
58
|
+
// Try to find an available instance
|
|
59
|
+
let availableInstance = this.findAvailableInstance();
|
|
60
|
+
if (!availableInstance) {
|
|
61
|
+
// Create new instance if under limit
|
|
62
|
+
if (this.instances.size < this.config.maxInstances) {
|
|
63
|
+
availableInstance = await this.createNewInstance();
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// Wait for an instance to become available or force cleanup
|
|
67
|
+
await this.forceCleanupOldest();
|
|
68
|
+
availableInstance = await this.createNewInstance();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Mark as active and update usage stats
|
|
72
|
+
const pooled = this.instances.get(availableInstance.id);
|
|
73
|
+
pooled.isActive = true;
|
|
74
|
+
pooled.lastUsed = new Date();
|
|
75
|
+
pooled.usageCount++;
|
|
76
|
+
logger_1.default.debug(`Instance ${availableInstance.id} acquired from pool`, {
|
|
77
|
+
totalInstances: this.instances.size,
|
|
78
|
+
activeInstances: this.getActiveCount(),
|
|
79
|
+
usageCount: pooled.usageCount
|
|
80
|
+
});
|
|
81
|
+
return availableInstance;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Release an instance back to the pool
|
|
86
|
+
*/
|
|
87
|
+
async releaseInstance(instance) {
|
|
88
|
+
return index_1.performanceMonitor.measureOperation('instance_pool_release', async () => {
|
|
89
|
+
const pooled = this.instances.get(instance.id);
|
|
90
|
+
if (pooled) {
|
|
91
|
+
pooled.isActive = false;
|
|
92
|
+
pooled.lastUsed = new Date();
|
|
93
|
+
// Clear construction to reset state for next use
|
|
94
|
+
try {
|
|
95
|
+
await instance.newConstruction();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
logger_1.default.warn(`Failed to clear construction on release: ${error}`);
|
|
99
|
+
}
|
|
100
|
+
logger_1.default.debug(`Instance ${instance.id} released to pool`, {
|
|
101
|
+
totalInstances: this.instances.size,
|
|
102
|
+
activeInstances: this.getActiveCount()
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Find an available (non-active) instance
|
|
109
|
+
*/
|
|
110
|
+
findAvailableInstance() {
|
|
111
|
+
for (const [, pooled] of this.instances) {
|
|
112
|
+
if (!pooled.isActive) {
|
|
113
|
+
return pooled.instance;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a new instance and add to pool
|
|
120
|
+
*/
|
|
121
|
+
async createNewInstance() {
|
|
122
|
+
return index_1.performanceMonitor.measureOperation('instance_pool_create', async () => {
|
|
123
|
+
const instance = new geogebra_instance_1.GeoGebraInstance({
|
|
124
|
+
appName: 'classic',
|
|
125
|
+
width: 800,
|
|
126
|
+
height: 600,
|
|
127
|
+
showMenuBar: false,
|
|
128
|
+
showToolBar: false,
|
|
129
|
+
showAlgebraInput: false
|
|
130
|
+
});
|
|
131
|
+
await instance.initialize(this.config.headless, this.config.browserArgs);
|
|
132
|
+
const pooled = {
|
|
133
|
+
instance,
|
|
134
|
+
isActive: false,
|
|
135
|
+
lastUsed: new Date(),
|
|
136
|
+
createdAt: new Date(),
|
|
137
|
+
usageCount: 0
|
|
138
|
+
};
|
|
139
|
+
this.instances.set(instance.id, pooled);
|
|
140
|
+
logger_1.default.info(`New instance ${instance.id} created and added to pool`, {
|
|
141
|
+
totalInstances: this.instances.size
|
|
142
|
+
});
|
|
143
|
+
return instance;
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Force cleanup of the oldest instance to make room
|
|
148
|
+
*/
|
|
149
|
+
async forceCleanupOldest() {
|
|
150
|
+
let oldestId = null;
|
|
151
|
+
let oldestTime = Date.now();
|
|
152
|
+
// Find oldest inactive instance
|
|
153
|
+
for (const [id, pooled] of this.instances) {
|
|
154
|
+
if (!pooled.isActive && pooled.lastUsed.getTime() < oldestTime) {
|
|
155
|
+
oldestTime = pooled.lastUsed.getTime();
|
|
156
|
+
oldestId = id;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// If no inactive instance, find oldest active one
|
|
160
|
+
if (!oldestId) {
|
|
161
|
+
for (const [id, pooled] of this.instances) {
|
|
162
|
+
if (pooled.lastUsed.getTime() < oldestTime) {
|
|
163
|
+
oldestTime = pooled.lastUsed.getTime();
|
|
164
|
+
oldestId = id;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (oldestId) {
|
|
169
|
+
await this.removeInstance(oldestId);
|
|
170
|
+
logger_1.default.info(`Forced cleanup of oldest instance ${oldestId} to make room`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Remove and cleanup an instance
|
|
175
|
+
*/
|
|
176
|
+
async removeInstance(instanceId) {
|
|
177
|
+
const pooled = this.instances.get(instanceId);
|
|
178
|
+
if (pooled) {
|
|
179
|
+
try {
|
|
180
|
+
await pooled.instance.cleanup();
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
logger_1.default.error(`Error cleaning up instance ${instanceId}:`, error);
|
|
184
|
+
}
|
|
185
|
+
this.instances.delete(instanceId);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Start automatic cleanup timer
|
|
190
|
+
*/
|
|
191
|
+
startCleanupTimer() {
|
|
192
|
+
this.cleanupInterval = setInterval(() => {
|
|
193
|
+
this.performCleanup();
|
|
194
|
+
}, 60000); // Run cleanup every minute
|
|
195
|
+
this.cleanupInterval.unref();
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Perform periodic cleanup of idle instances
|
|
199
|
+
*/
|
|
200
|
+
async performCleanup() {
|
|
201
|
+
const now = Date.now();
|
|
202
|
+
const instancesToRemove = [];
|
|
203
|
+
for (const [id, pooled] of this.instances) {
|
|
204
|
+
const idleTime = now - pooled.lastUsed.getTime();
|
|
205
|
+
const isExpired = idleTime > this.config.maxIdleTime;
|
|
206
|
+
const isOld = (now - pooled.createdAt.getTime()) > this.config.instanceTimeout;
|
|
207
|
+
if (!pooled.isActive && (isExpired || isOld)) {
|
|
208
|
+
instancesToRemove.push(id);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
for (const id of instancesToRemove) {
|
|
212
|
+
await this.removeInstance(id);
|
|
213
|
+
logger_1.default.debug(`Cleaned up idle instance ${id}`);
|
|
214
|
+
}
|
|
215
|
+
if (instancesToRemove.length > 0) {
|
|
216
|
+
logger_1.default.info(`Cleanup completed: removed ${instancesToRemove.length} idle instances`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get count of active instances
|
|
221
|
+
*/
|
|
222
|
+
getActiveCount() {
|
|
223
|
+
return Array.from(this.instances.values()).filter(p => p.isActive).length;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Get pool statistics
|
|
227
|
+
*/
|
|
228
|
+
getStats() {
|
|
229
|
+
const instances = Array.from(this.instances.values());
|
|
230
|
+
const now = Date.now();
|
|
231
|
+
return {
|
|
232
|
+
totalInstances: instances.length,
|
|
233
|
+
activeInstances: this.getActiveCount(),
|
|
234
|
+
averageUsage: instances.reduce((sum, p) => sum + p.usageCount, 0) / instances.length || 0,
|
|
235
|
+
oldestInstanceAge: instances.length > 0
|
|
236
|
+
? Math.max(...instances.map(p => now - p.createdAt.getTime())) / 1000
|
|
237
|
+
: 0,
|
|
238
|
+
memoryEstimate: instances.length * 75 // Approximate 75MB per instance
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Cleanup all instances and stop timers
|
|
243
|
+
*/
|
|
244
|
+
async cleanup() {
|
|
245
|
+
if (this.cleanupInterval) {
|
|
246
|
+
clearInterval(this.cleanupInterval);
|
|
247
|
+
this.cleanupInterval = undefined;
|
|
248
|
+
}
|
|
249
|
+
const cleanupPromises = Array.from(this.instances.keys()).map(id => this.removeInstance(id));
|
|
250
|
+
await Promise.all(cleanupPromises);
|
|
251
|
+
logger_1.default.info('Instance pool cleaned up completely');
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Warm up the pool by pre-creating instances
|
|
255
|
+
*/
|
|
256
|
+
async warmUp(count = 1) {
|
|
257
|
+
const warmUpPromises = [];
|
|
258
|
+
for (let i = 0; i < count && this.instances.size < this.config.maxInstances; i++) {
|
|
259
|
+
warmUpPromises.push(this.createNewInstance().then(instance => this.releaseInstance(instance)));
|
|
260
|
+
}
|
|
261
|
+
await Promise.all(warmUpPromises);
|
|
262
|
+
logger_1.default.info(`Pool warmed up with ${count} pre-created instances`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
exports.OptimizedInstancePool = OptimizedInstancePool;
|
|
266
|
+
// Global optimized pool instance
|
|
267
|
+
exports.optimizedInstancePool = OptimizedInstancePool.getInstance();
|
|
268
|
+
//# sourceMappingURL=instance-pool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instance-pool.js","sourceRoot":"","sources":["../../../src/utils/performance/instance-pool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Validation utilities for GeoGebra MCP tools
|
|
3
|
+
*/
|
|
4
|
+
export interface ValidationResult {
|
|
5
|
+
isValid: boolean;
|
|
6
|
+
error?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Validate point name (GeoGebra naming conventions)
|
|
10
|
+
*/
|
|
11
|
+
export declare function validatePointName(name: string): ValidationResult;
|
|
12
|
+
/**
|
|
13
|
+
* Validate object name (general GeoGebra naming conventions)
|
|
14
|
+
*/
|
|
15
|
+
export declare function validateObjectName(name: string): ValidationResult;
|
|
16
|
+
/**
|
|
17
|
+
* Validate coordinates
|
|
18
|
+
*/
|
|
19
|
+
export declare function validateCoordinates(x: number, y: number): ValidationResult;
|
|
20
|
+
/**
|
|
21
|
+
* Validate radius
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateRadius(radius: number): ValidationResult;
|
|
24
|
+
/**
|
|
25
|
+
* Validate polygon vertices
|
|
26
|
+
*/
|
|
27
|
+
export declare function validatePolygonVertices(vertices: string[]): ValidationResult;
|
|
28
|
+
/**
|
|
29
|
+
* Validate linear equation format
|
|
30
|
+
*/
|
|
31
|
+
export declare function validateLinearEquation(equation: string): ValidationResult;
|
|
32
|
+
/**
|
|
33
|
+
* Validate that required parameters are provided for a given method
|
|
34
|
+
*/
|
|
35
|
+
export declare function validateRequiredParams(params: Record<string, unknown>, required: string[]): ValidationResult;
|
|
36
|
+
/**
|
|
37
|
+
* Validate function expression for standard functions f(x) = ...
|
|
38
|
+
*/
|
|
39
|
+
export declare function validateFunctionExpression(expression: string): ValidationResult;
|
|
40
|
+
/**
|
|
41
|
+
* Validate parametric function expressions
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateParametricExpressions(xExpr: string, yExpr: string, parameter: string): ValidationResult;
|
|
44
|
+
/**
|
|
45
|
+
* Validate implicit function expression
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateImplicitExpression(expression: string): ValidationResult;
|
|
48
|
+
/**
|
|
49
|
+
* Validate domain range parameters
|
|
50
|
+
*/
|
|
51
|
+
export declare function validateDomainRange(min: number, max: number, paramName?: string): ValidationResult;
|
|
52
|
+
/**
|
|
53
|
+
* Validate function styling parameters
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateFunctionStyling(color?: string, thickness?: number, style?: string): ValidationResult;
|
|
56
|
+
/**
|
|
57
|
+
* Validate algebraic expression for CAS operations
|
|
58
|
+
*/
|
|
59
|
+
export declare function validateAlgebraicExpression(expression: string): ValidationResult;
|
|
60
|
+
/**
|
|
61
|
+
* Validate equation format for solving
|
|
62
|
+
*/
|
|
63
|
+
export declare function validateEquation(equation: string): ValidationResult;
|
|
64
|
+
/**
|
|
65
|
+
* Validate variable name for CAS operations
|
|
66
|
+
*/
|
|
67
|
+
export declare function validateVariableName(variable: string): ValidationResult;
|
|
68
|
+
/**
|
|
69
|
+
* Validate system of equations
|
|
70
|
+
*/
|
|
71
|
+
export declare function validateSystemOfEquations(equations: string[]): ValidationResult;
|
|
72
|
+
/**
|
|
73
|
+
* Validate variables list for system solving
|
|
74
|
+
*/
|
|
75
|
+
export declare function validateVariablesList(variables: string[]): ValidationResult;
|
|
76
|
+
/**
|
|
77
|
+
* Validates slider parameters for creation
|
|
78
|
+
*/
|
|
79
|
+
export declare function validateSliderParameters(name: string, min: number, max: number, increment?: number, defaultValue?: number): ValidationResult;
|
|
80
|
+
/**
|
|
81
|
+
* Validates animation speed parameter
|
|
82
|
+
*/
|
|
83
|
+
export declare function validateAnimationSpeed(speed: number): ValidationResult;
|
|
84
|
+
/**
|
|
85
|
+
* Validates animation direction parameter
|
|
86
|
+
*/
|
|
87
|
+
export declare function validateAnimationDirection(direction?: string): ValidationResult;
|
|
88
|
+
/**
|
|
89
|
+
* Validates parameters for animation export
|
|
90
|
+
*/
|
|
91
|
+
export declare function validateAnimationExportParameters(frameCount: number, frameDelay: number, totalDuration?: number): ValidationResult;
|
|
92
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAgBhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAEjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAgB1E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,CAkB/D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAgC5E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA6BzE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAO5G;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CA+B/E;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAwB/G;AAuCD;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAmC/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,GAAE,MAAoB,GAAG,gBAAgB,CA6B/G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAuC5G;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAiChF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAmCnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA0BvE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,gBAAgB,CA0B/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAgC3E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAuBlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUtE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAM/E;AAED;;GAEG;AACH,wBAAgB,iCAAiC,CAC/C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,gBAAgB,CAkBlB"}
|