@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 @@
|
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/studio/install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps-api-tools.d.ts","sourceRoot":"","sources":["../../src/tools/apps-api-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,6FAA6F;AAC7F,eAAO,MAAM,YAAY,EAAE,cAAc,EAsFxC,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.appsApiTools = void 0;
|
|
4
|
+
const gikz_1 = require("../export/gikz");
|
|
5
|
+
const geogebra_tools_1 = require("./geogebra-tools");
|
|
6
|
+
const result = (value) => ({
|
|
7
|
+
content: [{ type: 'text', text: JSON.stringify(value) }], structuredContent: value,
|
|
8
|
+
});
|
|
9
|
+
/** A schema-checked bridge to the public methods exposed by the loaded GeoGebra Apps API. */
|
|
10
|
+
exports.appsApiTools = [
|
|
11
|
+
{
|
|
12
|
+
tool: {
|
|
13
|
+
name: 'geogebra_api_list_methods',
|
|
14
|
+
description: 'List callable methods exposed by the active GeoGebra Apps API. Availability depends on the loaded GeoGebra app/version.',
|
|
15
|
+
annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
16
|
+
inputSchema: { type: 'object', properties: {}, additionalProperties: false },
|
|
17
|
+
},
|
|
18
|
+
handler: async () => {
|
|
19
|
+
try {
|
|
20
|
+
const methods = await (await geogebra_tools_1.instancePool.getDefaultInstance()).listAppsApiMethods();
|
|
21
|
+
return result({ success: true, methods, count: methods.length });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return { ...result({ success: false, error: error instanceof Error ? error.message : String(error) }), isError: true };
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
tool: {
|
|
30
|
+
name: 'geogebra_api_call',
|
|
31
|
+
description: 'Call a public GeoGebra Apps API method by name with JSON arguments. Use geogebra_api_list_methods first. For one-shot callback exports set waitForCallbackIndex (0 for getBase64/exportSVG/getScreenshotBase64; 1 for exportPDF). For persistent listener functions put {"$ggbCallbackId":"my-id"} at that argument, then poll geogebra_api_get_callback_events; reuse the same marker to unregister. exportPGF always returns Gikz-cleaned standalone TikZ through this bridge. Destructive methods require allowDestructive=true.',
|
|
32
|
+
annotations: { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: 'object',
|
|
35
|
+
properties: {
|
|
36
|
+
method: { type: 'string', minLength: 1, maxLength: 100 },
|
|
37
|
+
args: { type: 'array', maxItems: 20, items: {} },
|
|
38
|
+
waitForCallbackIndex: { type: 'integer', minimum: 0, maximum: 20 },
|
|
39
|
+
callbackTimeoutMs: { type: 'integer', minimum: 100, maximum: 60000 },
|
|
40
|
+
allowDestructive: { type: 'boolean', description: 'Required for methods that clear, replace, open, or remove a construction/applet.' },
|
|
41
|
+
},
|
|
42
|
+
required: ['method'], additionalProperties: false,
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
handler: async (params) => {
|
|
46
|
+
try {
|
|
47
|
+
const method = params['method'];
|
|
48
|
+
if (method === 'exportPGF') {
|
|
49
|
+
const source = await (await geogebra_tools_1.instancePool.getDefaultInstance()).exportNativeTikZ();
|
|
50
|
+
const value = await (0, gikz_1.cleanWithGikz)(source, { standalone: true });
|
|
51
|
+
return result({ success: true, method, value, backend: 'native-pgf+gikz', cleaned: true, semantics: 'visual-snapshot' });
|
|
52
|
+
}
|
|
53
|
+
const dangerous = new Set(['newConstruction', 'reset', 'openFile', 'setXML', 'evalXML', 'setBase64', 'remove']);
|
|
54
|
+
if (dangerous.has(method) && params['allowDestructive'] !== true) {
|
|
55
|
+
throw new Error(`${method} can replace or clear construction data; set allowDestructive=true to proceed`);
|
|
56
|
+
}
|
|
57
|
+
const args = params['args'] ?? [];
|
|
58
|
+
const callbacks = [];
|
|
59
|
+
for (let i = 0; i < args.length; i++) {
|
|
60
|
+
const arg = args[i];
|
|
61
|
+
if (arg && typeof arg === 'object' && !Array.isArray(arg) && typeof arg['$ggbCallbackId'] === 'string') {
|
|
62
|
+
callbacks.push({ argumentIndex: i, id: arg['$ggbCallbackId'] });
|
|
63
|
+
args[i] = null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const value = await (await geogebra_tools_1.instancePool.getDefaultInstance()).callAppsApi(method, args, {
|
|
67
|
+
...(typeof params['waitForCallbackIndex'] === 'number' ? { waitForCallbackIndex: params['waitForCallbackIndex'] } : {}),
|
|
68
|
+
...(typeof params['callbackTimeoutMs'] === 'number' ? { callbackTimeoutMs: params['callbackTimeoutMs'] } : {}),
|
|
69
|
+
...(callbacks.length ? { callbacks } : {}),
|
|
70
|
+
});
|
|
71
|
+
return result({ success: true, method, value: value === undefined ? null : value });
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return { ...result({ success: false, error: error instanceof Error ? error.message : String(error) }), isError: true };
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
tool: {
|
|
80
|
+
name: 'geogebra_api_get_callback_events',
|
|
81
|
+
description: 'Read events captured from persistent GeoGebra Apps API listeners registered through geogebra_api_call. Set clear=false to read without clearing the queue.',
|
|
82
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
83
|
+
inputSchema: { type: 'object', properties: { callbackId: { type: 'string', minLength: 1, maxLength: 80 }, clear: { type: 'boolean', default: true } }, required: ['callbackId'], additionalProperties: false },
|
|
84
|
+
},
|
|
85
|
+
handler: async (params) => {
|
|
86
|
+
try {
|
|
87
|
+
const events = await (await geogebra_tools_1.instancePool.getDefaultInstance()).readAppsApiCallbackEvents(params['callbackId'], params['clear'] !== false);
|
|
88
|
+
return result({ success: true, callbackId: params['callbackId'], events });
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
return { ...result({ success: false, error: error instanceof Error ? error.message : String(error) }), isError: true };
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
//# sourceMappingURL=apps-api-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apps-api-tools.js","sourceRoot":"","sources":["../../src/tools/apps-api-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ToolDefinition } from '../types/mcp';
|
|
2
|
+
export type TemplateCategory = 'geometry' | 'algebra' | 'calculus' | 'statistics' | 'proofs';
|
|
3
|
+
export interface EducationalTemplate {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
category: TemplateCategory;
|
|
7
|
+
description: string;
|
|
8
|
+
gradeLevel: string;
|
|
9
|
+
objectives: string[];
|
|
10
|
+
prerequisites: string[];
|
|
11
|
+
estimatedTime: number;
|
|
12
|
+
setup: () => Promise<any>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Educational template registry
|
|
16
|
+
*/
|
|
17
|
+
export declare class EducationalTemplateRegistry {
|
|
18
|
+
private templates;
|
|
19
|
+
register(template: EducationalTemplate): void;
|
|
20
|
+
getTemplate(id: string): EducationalTemplate | undefined;
|
|
21
|
+
getTemplatesByCategory(category: TemplateCategory): EducationalTemplate[];
|
|
22
|
+
getAllTemplates(): EducationalTemplate[];
|
|
23
|
+
}
|
|
24
|
+
export declare const templateRegistry: EducationalTemplateRegistry;
|
|
25
|
+
/**
|
|
26
|
+
* Core educational template tools
|
|
27
|
+
*/
|
|
28
|
+
export declare const educationalTemplateTools: ToolDefinition[];
|
|
29
|
+
/**
|
|
30
|
+
* Initialize and register all educational templates
|
|
31
|
+
*/
|
|
32
|
+
export declare function initializeEducationalTemplates(): void;
|
|
33
|
+
//# sourceMappingURL=educational-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"educational-templates.d.ts","sourceRoot":"","sources":["../../src/tools/educational-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoB9C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,QAAQ,CAAC;AAG7F,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,SAAS,CAA+C;IAEhE,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAO7C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIxD,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,mBAAmB,EAAE;IAIzE,eAAe,IAAI,mBAAmB,EAAE;CAGzC;AAED,eAAO,MAAM,gBAAgB,6BAAoC,CAAC;AAElE;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAAc,EA8MpD,CAAC;AAEF;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAkBrD"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.educationalTemplateTools = exports.templateRegistry = exports.EducationalTemplateRegistry = void 0;
|
|
7
|
+
exports.initializeEducationalTemplates = initializeEducationalTemplates;
|
|
8
|
+
const index_1 = require("./index");
|
|
9
|
+
const logger_1 = __importDefault(require("../utils/logger"));
|
|
10
|
+
/**
|
|
11
|
+
* Educational Templates for GeoGebra MCP Tool - GEB-8 Implementation
|
|
12
|
+
*
|
|
13
|
+
* Pre-built mathematical scenarios for common educational use cases:
|
|
14
|
+
* - Geometry fundamentals
|
|
15
|
+
* - Algebra visualizations
|
|
16
|
+
* - Calculus demonstrations
|
|
17
|
+
* - Statistics and probability
|
|
18
|
+
* - Mathematical proofs
|
|
19
|
+
*/
|
|
20
|
+
// Check if we're in MCP mode (stdio communication)
|
|
21
|
+
// When piping input, process.stdin.isTTY is undefined, not false
|
|
22
|
+
const isMcpMode = !process.stdin.isTTY;
|
|
23
|
+
/**
|
|
24
|
+
* Educational template registry
|
|
25
|
+
*/
|
|
26
|
+
class EducationalTemplateRegistry {
|
|
27
|
+
templates = new Map();
|
|
28
|
+
register(template) {
|
|
29
|
+
this.templates.set(template.id, template);
|
|
30
|
+
if (!isMcpMode) {
|
|
31
|
+
logger_1.default.info(`Registered educational template: ${template.id}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
getTemplate(id) {
|
|
35
|
+
return this.templates.get(id);
|
|
36
|
+
}
|
|
37
|
+
getTemplatesByCategory(category) {
|
|
38
|
+
return Array.from(this.templates.values()).filter(t => t.category === category);
|
|
39
|
+
}
|
|
40
|
+
getAllTemplates() {
|
|
41
|
+
return Array.from(this.templates.values());
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.EducationalTemplateRegistry = EducationalTemplateRegistry;
|
|
45
|
+
exports.templateRegistry = new EducationalTemplateRegistry();
|
|
46
|
+
/**
|
|
47
|
+
* Core educational template tools
|
|
48
|
+
*/
|
|
49
|
+
exports.educationalTemplateTools = [
|
|
50
|
+
{
|
|
51
|
+
tool: {
|
|
52
|
+
name: 'geogebra_list_educational_templates',
|
|
53
|
+
description: 'List all available educational templates by category',
|
|
54
|
+
inputSchema: {
|
|
55
|
+
type: 'object',
|
|
56
|
+
properties: {
|
|
57
|
+
category: {
|
|
58
|
+
type: 'string',
|
|
59
|
+
enum: ['geometry', 'algebra', 'calculus', 'statistics', 'proofs'],
|
|
60
|
+
description: 'Filter templates by category (optional)'
|
|
61
|
+
},
|
|
62
|
+
gradeLevel: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Filter by grade level (e.g., "6-8", "9-12", "college")'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
required: []
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
handler: async (params) => {
|
|
71
|
+
const { category, gradeLevel } = params;
|
|
72
|
+
let templates = exports.templateRegistry.getAllTemplates();
|
|
73
|
+
if (category) {
|
|
74
|
+
templates = templates.filter(t => t.category === category);
|
|
75
|
+
}
|
|
76
|
+
if (gradeLevel) {
|
|
77
|
+
templates = templates.filter(t => t.gradeLevel === gradeLevel);
|
|
78
|
+
}
|
|
79
|
+
const templateList = templates.map(template => ({
|
|
80
|
+
id: template.id,
|
|
81
|
+
name: template.name,
|
|
82
|
+
category: template.category,
|
|
83
|
+
description: template.description,
|
|
84
|
+
gradeLevel: template.gradeLevel,
|
|
85
|
+
estimatedTime: template.estimatedTime,
|
|
86
|
+
objectives: template.objectives
|
|
87
|
+
}));
|
|
88
|
+
return {
|
|
89
|
+
content: [{
|
|
90
|
+
type: 'text',
|
|
91
|
+
text: JSON.stringify({
|
|
92
|
+
success: true,
|
|
93
|
+
count: templateList.length,
|
|
94
|
+
templates: templateList
|
|
95
|
+
}, null, 2)
|
|
96
|
+
}]
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
tool: {
|
|
102
|
+
name: 'geogebra_load_educational_template',
|
|
103
|
+
description: 'Load and execute a specific educational template',
|
|
104
|
+
inputSchema: {
|
|
105
|
+
type: 'object',
|
|
106
|
+
properties: {
|
|
107
|
+
templateId: {
|
|
108
|
+
type: 'string',
|
|
109
|
+
description: 'The ID of the educational template to load'
|
|
110
|
+
},
|
|
111
|
+
customizations: {
|
|
112
|
+
type: 'object',
|
|
113
|
+
description: 'Optional customizations for the template (colors, parameters, etc.)',
|
|
114
|
+
properties: {
|
|
115
|
+
colors: {
|
|
116
|
+
type: 'object',
|
|
117
|
+
description: 'Custom color scheme'
|
|
118
|
+
},
|
|
119
|
+
parameters: {
|
|
120
|
+
type: 'object',
|
|
121
|
+
description: 'Custom parameter values'
|
|
122
|
+
},
|
|
123
|
+
showLabels: {
|
|
124
|
+
type: 'boolean',
|
|
125
|
+
description: 'Whether to show object labels'
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
required: ['templateId']
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
handler: async (params) => {
|
|
134
|
+
const { templateId } = params;
|
|
135
|
+
// Note: customizations parameter is accepted but not yet implemented
|
|
136
|
+
// Future enhancement: apply color schemes, parameters, and display options
|
|
137
|
+
// const customizations = params['customizations'] || {};
|
|
138
|
+
const template = exports.templateRegistry.getTemplate(templateId);
|
|
139
|
+
if (!template) {
|
|
140
|
+
throw new Error(`Educational template not found: ${templateId}`);
|
|
141
|
+
}
|
|
142
|
+
logger_1.default.info(`Loading educational template: ${template.name}`);
|
|
143
|
+
// Clear existing construction
|
|
144
|
+
await index_1.toolRegistry.executeTool('geogebra_clear_construction', {});
|
|
145
|
+
// Execute template setup
|
|
146
|
+
const result = await template.setup();
|
|
147
|
+
return {
|
|
148
|
+
content: [{
|
|
149
|
+
type: 'text',
|
|
150
|
+
text: JSON.stringify({
|
|
151
|
+
success: true,
|
|
152
|
+
template: {
|
|
153
|
+
id: template.id,
|
|
154
|
+
name: template.name,
|
|
155
|
+
category: template.category,
|
|
156
|
+
loaded: true
|
|
157
|
+
},
|
|
158
|
+
objectives: template.objectives,
|
|
159
|
+
instructions: `Template "${template.name}" loaded successfully. Estimated time: ${template.estimatedTime} minutes.`,
|
|
160
|
+
result
|
|
161
|
+
}, null, 2)
|
|
162
|
+
}]
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
tool: {
|
|
168
|
+
name: 'geogebra_create_lesson_plan',
|
|
169
|
+
description: 'Generate a complete lesson plan using multiple educational templates',
|
|
170
|
+
inputSchema: {
|
|
171
|
+
type: 'object',
|
|
172
|
+
properties: {
|
|
173
|
+
topic: {
|
|
174
|
+
type: 'string',
|
|
175
|
+
description: 'The mathematical topic for the lesson'
|
|
176
|
+
},
|
|
177
|
+
gradeLevel: {
|
|
178
|
+
type: 'string',
|
|
179
|
+
description: 'Target grade level'
|
|
180
|
+
},
|
|
181
|
+
duration: {
|
|
182
|
+
type: 'number',
|
|
183
|
+
description: 'Lesson duration in minutes'
|
|
184
|
+
},
|
|
185
|
+
templateIds: {
|
|
186
|
+
type: 'array',
|
|
187
|
+
items: { type: 'string' },
|
|
188
|
+
description: 'Specific template IDs to include in the lesson'
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
required: ['topic', 'gradeLevel', 'duration']
|
|
192
|
+
}
|
|
193
|
+
},
|
|
194
|
+
handler: async (params) => {
|
|
195
|
+
const { topic, gradeLevel, duration, templateIds } = params;
|
|
196
|
+
// Auto-select templates if not specified
|
|
197
|
+
let selectedTemplates;
|
|
198
|
+
if (templateIds && Array.isArray(templateIds)) {
|
|
199
|
+
selectedTemplates = templateIds
|
|
200
|
+
.map(id => exports.templateRegistry.getTemplate(id))
|
|
201
|
+
.filter(Boolean);
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
// Auto-select based on topic and grade level
|
|
205
|
+
selectedTemplates = exports.templateRegistry.getAllTemplates()
|
|
206
|
+
.filter(t => t.gradeLevel === gradeLevel)
|
|
207
|
+
.filter(t => t.estimatedTime <= duration)
|
|
208
|
+
.reduce((chosen, t) => { if (chosen.length < 3 && chosen.reduce((sum, item) => sum + item.estimatedTime, 0) + t.estimatedTime <= duration)
|
|
209
|
+
chosen.push(t); return chosen; }, []);
|
|
210
|
+
}
|
|
211
|
+
const lessonPlan = {
|
|
212
|
+
topic,
|
|
213
|
+
gradeLevel,
|
|
214
|
+
duration,
|
|
215
|
+
templates: selectedTemplates.map(t => ({
|
|
216
|
+
id: t.id,
|
|
217
|
+
name: t.name,
|
|
218
|
+
category: t.category,
|
|
219
|
+
gradeLevel: t.gradeLevel,
|
|
220
|
+
estimatedTime: t.estimatedTime,
|
|
221
|
+
objectives: t.objectives,
|
|
222
|
+
prerequisites: t.prerequisites
|
|
223
|
+
})),
|
|
224
|
+
totalTime: selectedTemplates.reduce((sum, t) => sum + t.estimatedTime, 0),
|
|
225
|
+
structure: {
|
|
226
|
+
introduction: "5 minutes - Review prerequisites and introduce objectives",
|
|
227
|
+
activities: selectedTemplates.map((t, i) => `Activity ${i + 1}: ${t.name} (${t.estimatedTime} min) - ${t.description}`),
|
|
228
|
+
conclusion: "5 minutes - Summary and assessment"
|
|
229
|
+
}
|
|
230
|
+
};
|
|
231
|
+
return {
|
|
232
|
+
content: [{
|
|
233
|
+
type: 'text',
|
|
234
|
+
text: JSON.stringify(lessonPlan, null, 2)
|
|
235
|
+
}]
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
];
|
|
240
|
+
/**
|
|
241
|
+
* Initialize and register all educational templates
|
|
242
|
+
*/
|
|
243
|
+
function initializeEducationalTemplates() {
|
|
244
|
+
// Import templates from different categories
|
|
245
|
+
const { geometryTemplates } = require('./templates/geometry-templates');
|
|
246
|
+
const { algebraTemplates } = require('./templates/algebra-templates');
|
|
247
|
+
// Register geometry templates
|
|
248
|
+
geometryTemplates.forEach((template) => {
|
|
249
|
+
exports.templateRegistry.register(template);
|
|
250
|
+
});
|
|
251
|
+
// Register algebra templates
|
|
252
|
+
algebraTemplates.forEach((template) => {
|
|
253
|
+
exports.templateRegistry.register(template);
|
|
254
|
+
});
|
|
255
|
+
if (!isMcpMode) {
|
|
256
|
+
logger_1.default.info(`Registered ${exports.templateRegistry.getAllTemplates().length} educational templates`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// Initialize templates when module is loaded
|
|
260
|
+
initializeEducationalTemplates();
|
|
261
|
+
//# sourceMappingURL=educational-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"educational-templates.js","sourceRoot":"","sources":["../../src/tools/educational-templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-tools.d.ts","sourceRoot":"","sources":["../../src/tools/export-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsC9C,eAAO,MAAM,WAAW,EAAE,cAAc,EAqEvC,CAAC"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.exportTools = void 0;
|
|
4
|
+
const artifact_1 = require("../studio/artifact");
|
|
5
|
+
const html_1 = require("../export/html");
|
|
6
|
+
const semantic_1 = require("../export/semantic");
|
|
7
|
+
const gikz_1 = require("../export/gikz");
|
|
8
|
+
const files_1 = require("../export/files");
|
|
9
|
+
const geogebra_tools_1 = require("./geogebra-tools");
|
|
10
|
+
const textResult = (value) => ({ content: [{ type: 'text', text: JSON.stringify(value) }], structuredContent: value });
|
|
11
|
+
const safe = (handler) => async (params) => {
|
|
12
|
+
try {
|
|
13
|
+
return await handler(params);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
return { ...textResult({ success: false, error: e instanceof Error ? e.message : String(e) }), isError: true };
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
const scene = async (params) => (0, semantic_1.sceneFromXML)(typeof params['xml'] === 'string' ? params['xml'] : await (await geogebra_tools_1.instancePool.getDefaultInstance()).getConstructionXML());
|
|
20
|
+
/** Both named TikZ export and format=tikz use native PGF, then mandatory Gikz.
|
|
21
|
+
* Optional XML is loaded temporarily; restore the shared live construction even on failure.
|
|
22
|
+
*/
|
|
23
|
+
async function nativeCleanedTikz(p) {
|
|
24
|
+
const engine = await geogebra_tools_1.instancePool.getDefaultInstance();
|
|
25
|
+
const xml = typeof p['xml'] === 'string' ? (0, semantic_1.sceneFromXML)(p['xml']).xml : undefined;
|
|
26
|
+
const previous = xml ? await engine.getConstructionXML() : undefined;
|
|
27
|
+
let source;
|
|
28
|
+
try {
|
|
29
|
+
if (xml)
|
|
30
|
+
await engine.callAppsApi('setXML', [xml]);
|
|
31
|
+
source = await engine.exportNativeTikZ();
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
if (previous)
|
|
35
|
+
await engine.callAppsApi('setXML', [previous]);
|
|
36
|
+
}
|
|
37
|
+
const code = await (0, gikz_1.cleanWithGikz)(source, { standalone: p['standalone'] !== false });
|
|
38
|
+
const saved = await (0, files_1.saveText)(p['filename'], code);
|
|
39
|
+
return textResult({ success: true, format: 'tikz', code, backend: 'native-pgf+gikz', cleaned: true,
|
|
40
|
+
semantics: 'visual-snapshot', complete: false, coordinateFallbacks: [], unsupportedObjects: [],
|
|
41
|
+
warnings: ['Native PGF followed by Gikz produces a visual snapshot; construction dependencies are retained in GGB/XML, not guaranteed in TikZ.',
|
|
42
|
+
'Gikz normalizes colors, line widths, labels and coordinate precision. Inspect the printed result.'],
|
|
43
|
+
...(saved ? { filename: saved } : {}), renderVerified: false });
|
|
44
|
+
}
|
|
45
|
+
const filename = { type: 'string', description: 'Optional new file within workspace; existing files are not overwritten.' };
|
|
46
|
+
exports.exportTools = [
|
|
47
|
+
{
|
|
48
|
+
tool: { name: 'geogebra_build_artifact', description: 'Default geometry delivery: execute ordered commands in an isolated GeoGebra engine, check visible definitions, embed a packed editable GGB into local HTML, reopen and check equal axes, and return a preview for visual review. Requires Chrome and GeoGebra network access; writes new workspace files only.',
|
|
49
|
+
_meta: { ui: { resourceUri: 'ui://geogebra/preview.html' } },
|
|
50
|
+
inputSchema: { type: 'object', properties: {
|
|
51
|
+
commands: { type: 'array', items: { type: 'string', maxLength: 10000 }, maxItems: 2000 }, ggbBase64: { type: 'string' },
|
|
52
|
+
title: { type: 'string', maxLength: 500 }, filename: { type: 'string', description: 'New .html file within the workspace; a sibling .preview.png is also created.' },
|
|
53
|
+
width: { type: 'integer', minimum: 200, maximum: 4000 }, height: { type: 'integer', minimum: 200, maximum: 4000 },
|
|
54
|
+
visibleLabels: { type: 'array', items: { type: 'string' } }, captionOverrides: { type: 'object', additionalProperties: { type: 'string' } }
|
|
55
|
+
}, required: ['filename'], additionalProperties: false } },
|
|
56
|
+
handler: safe(async (p) => (0, artifact_1.buildArtifact)(p)),
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
tool: { name: 'geogebra_create_html', description: 'Generate an unverified command-template GeoGebra HTML; prefer geogebra_build_artifact for default checked delivery. This generates an interactive GeoGebra HTML with current-state GGB, PNG, SVG, Gikz-cleaned native TikZ, PDF, XML and HTML downloads. No Chromium needed to generate; opening requires GeoGebra network access.',
|
|
60
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
61
|
+
_meta: { ui: { resourceUri: 'ui://geogebra/preview.html' } },
|
|
62
|
+
inputSchema: { type: 'object', properties: {
|
|
63
|
+
title: { type: 'string', maxLength: 500 }, commands: { type: 'array', items: { type: 'string', maxLength: 10000 }, maxItems: 2000 },
|
|
64
|
+
ggbBase64: { type: 'string', description: 'Optional packed GGB; commands run after loading it.' },
|
|
65
|
+
width: { type: 'integer', minimum: 200, maximum: 4000 }, height: { type: 'integer', minimum: 200, maximum: 4000 },
|
|
66
|
+
visibleLabels: { type: 'array', items: { type: 'string' } },
|
|
67
|
+
captionOverrides: { type: 'object', description: 'Optional LaTeX or plain-text captions keyed by GeoGebra object name.', additionalProperties: { type: 'string' } },
|
|
68
|
+
filename,
|
|
69
|
+
}, additionalProperties: false } },
|
|
70
|
+
handler: safe(async (p) => {
|
|
71
|
+
if (!p['commands'] && !p['ggbBase64'])
|
|
72
|
+
throw new Error('Provide commands or ggbBase64');
|
|
73
|
+
const html = (0, html_1.constructionHtml)(p);
|
|
74
|
+
const saved = await (0, files_1.saveText)(p['filename'], html);
|
|
75
|
+
return textResult({ success: true, format: 'html', html, ...(saved ? { filename: saved } : {}), requiresNetwork: true, renderVerified: false });
|
|
76
|
+
}),
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
tool: { name: 'geogebra_export_html', description: 'Package the current server-side construction in an interactive HTML, preserving its GGB styling and definitions.', _meta: { ui: { resourceUri: 'ui://geogebra/preview.html' } }, inputSchema: { type: 'object', properties: { title: { type: 'string' }, filename }, additionalProperties: false } },
|
|
80
|
+
handler: safe(async (p) => {
|
|
81
|
+
const ggbBase64 = await (await geogebra_tools_1.instancePool.getDefaultInstance()).exportGGB();
|
|
82
|
+
const html = (0, html_1.constructionHtml)({ title: typeof p['title'] === 'string' ? p['title'] : 'GeoGebra construction', ggbBase64 });
|
|
83
|
+
const saved = await (0, files_1.saveText)(p['filename'], html);
|
|
84
|
+
return textResult({ success: true, format: 'html', html, ...(saved ? { filename: saved } : {}), requiresNetwork: true });
|
|
85
|
+
}),
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
tool: { name: 'geogebra_get_semantic_scene', description: 'Read the original construction XML, command dependencies, coordinates, visibility, captions, and styles for editable export or AI-assisted reconstruction.',
|
|
89
|
+
inputSchema: { type: 'object', properties: { xml: { type: 'string', description: 'Optional original XML; omit to inspect live GeoGebra.' } }, additionalProperties: false } },
|
|
90
|
+
handler: safe(async (p) => textResult({ success: true, scene: await scene(p) })),
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
tool: { name: 'geogebra_export_tikz', description: 'Export current GeoGebra native PGF through mandatory Gikz cleanup. Returns a visual snapshot, not editable construction dependencies. No raw fallback.',
|
|
94
|
+
inputSchema: { type: 'object', properties: { xml: { type: 'string' }, standalone: { type: 'boolean', default: true }, filename }, additionalProperties: false } },
|
|
95
|
+
handler: safe(nativeCleanedTikz),
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
tool: { name: 'geogebra_export_source', description: 'TikZ always uses GeoGebra native PGF followed by mandatory Gikz cleanup (visual snapshot). Asymptote and mixed TSQX/Asymptote use the explicit semantic subset with strict validation; strict applies to those formats only.',
|
|
99
|
+
inputSchema: { type: 'object', properties: { format: { type: 'string', enum: ['tikz', 'asymptote', 'tsqx'] }, xml: { type: 'string' }, strict: { type: 'boolean', default: true }, standalone: { type: 'boolean', default: true }, filename }, required: ['format'], additionalProperties: false } },
|
|
100
|
+
handler: safe(async (p) => {
|
|
101
|
+
if (p['format'] === 'tikz')
|
|
102
|
+
return nativeCleanedTikz(p);
|
|
103
|
+
const result = (0, semantic_1.exportSource)(await scene(p), p['format'], p['strict'] !== false, p['standalone'] !== false);
|
|
104
|
+
const saved = await (0, files_1.saveText)(p['filename'], result.code);
|
|
105
|
+
return textResult({ success: true, ...result, ...(saved ? { filename: saved } : {}), renderVerified: false });
|
|
106
|
+
}),
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
tool: { name: 'geogebra_clean_tikz', description: 'Clean native GeoGebra TikZ text or convert XML through built-in Gikz. This is visual cleanup, not a guarantee of preserved construction semantics.',
|
|
110
|
+
inputSchema: { type: 'object', properties: { source: { type: 'string', maxLength: 10000000 }, standalone: { type: 'boolean' }, points: { type: 'boolean' }, labels: { type: 'boolean' }, round: { type: 'boolean' }, filename }, required: ['source'], additionalProperties: false } },
|
|
111
|
+
handler: safe(async (p) => {
|
|
112
|
+
const code = await (0, gikz_1.cleanWithGikz)(p['source'], p);
|
|
113
|
+
const saved = await (0, files_1.saveText)(p['filename'], code);
|
|
114
|
+
return textResult({ success: true, format: 'tikz', code, ...(saved ? { filename: saved } : {}), backend: 'built-in-gikz', semantics: 'not-guaranteed', renderVerified: false });
|
|
115
|
+
}),
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
//# sourceMappingURL=export-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-tools.js","sourceRoot":"","sources":["../../src/tools/export-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ToolDefinition } from '../types/mcp';
|
|
2
|
+
import { GeoGebraInstance } from '../utils/geogebra-instance';
|
|
3
|
+
declare class GeoGebraInstancePool {
|
|
4
|
+
private instances;
|
|
5
|
+
private defaultInstance;
|
|
6
|
+
getDefaultInstance(): Promise<GeoGebraInstance>;
|
|
7
|
+
cleanup(): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
export declare const instancePool: GeoGebraInstancePool;
|
|
10
|
+
/**
|
|
11
|
+
* GeoGebra MCP Tools
|
|
12
|
+
*/
|
|
13
|
+
export declare const geogebraTools: ToolDefinition[];
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=geogebra-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"geogebra-tools.d.ts","sourceRoot":"","sources":["../../src/tools/geogebra-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AA4B9D,cAAM,oBAAoB;IACxB,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,eAAe,CAA+B;IAEhD,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAwB/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAW/B;AAED,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAmPvD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cAAc,EA67GzC,CAAC"}
|