@pixel-normal-edit/mcp 2.0.10 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/clear-firebase.js +37 -0
- package/core/command-bus.js +6 -3
- package/core/server.js +98 -3
- package/domains/art-tree/README.md +134 -0
- package/domains/art-tree/REORGANIZATION_PLAN.md +168 -0
- package/domains/art-tree/REORGANIZATION_SUMMARY.md +260 -0
- package/domains/art-tree/index.js +58 -58
- package/domains/art-tree/lessons/3d/box-properties.js +38 -0
- package/domains/art-tree/lessons/3d/cone-properties.js +31 -0
- package/domains/art-tree/lessons/3d/cylinder-properties.js +29 -0
- package/domains/art-tree/lessons/3d/sphere-properties.js +25 -0
- package/domains/art-tree/lessons/advanced/angles.js +30 -0
- package/domains/art-tree/lessons/advanced/distances.js +26 -0
- package/domains/art-tree/lessons/advanced/shape-ratios.js +25 -0
- package/domains/art-tree/lessons/advanced/shape-relationships.js +28 -0
- package/domains/art-tree/lessons/advanced/symmetry-and-axis.js +26 -0
- package/domains/art-tree/{analysis_lessons.js → lessons/analysis/object-analysis.js} +5 -16
- package/domains/art-tree/lessons/basic/circles.js +26 -0
- package/domains/art-tree/lessons/basic/composition.js +34 -0
- package/domains/art-tree/lessons/basic/curves.js +31 -0
- package/domains/art-tree/lessons/basic/ellipses.js +26 -0
- package/domains/art-tree/lessons/basic/freehand.js +19 -0
- package/domains/art-tree/lessons/basic/index.js +36 -0
- package/domains/art-tree/lessons/basic/lines.js +38 -0
- package/domains/art-tree/lessons/basic/parallel-and-intersecting.js +22 -0
- package/domains/art-tree/lessons/basic/polygons.js +25 -0
- package/domains/art-tree/lessons/basic/proportions-and-angles.js +20 -0
- package/domains/art-tree/lessons/basic/spiral.js +21 -0
- package/domains/art-tree/lessons/basic/squares.js +28 -0
- package/domains/art-tree/lessons/basic/strokes.js +23 -0
- package/domains/art-tree/lessons/basic/triangles.js +30 -0
- package/domains/art-tree/lessons/cross-sections/bottle-sections.js +26 -0
- package/domains/art-tree/lessons/cross-sections/glass-sections.js +24 -0
- package/domains/art-tree/lessons/cross-sections/head-sections.js +17 -0
- package/domains/art-tree/lessons/curves/curve-properties.js +50 -0
- package/domains/art-tree/lessons/curves/curve-topology.js +45 -0
- package/domains/art-tree/lessons/curves/curve-types.js +44 -0
- package/domains/art-tree/lessons/ellipses/coaxial-ellipses.js +29 -0
- package/domains/art-tree/lessons/ellipses/ellipse-anatomy.js +26 -0
- package/domains/art-tree/lessons/ellipses/ellipse-orientations.js +28 -0
- package/domains/art-tree/lessons/ellipses/ellipse-proportions.js +27 -0
- package/domains/art-tree/lessons/hidden/hidden-box.js +20 -0
- package/domains/art-tree/lessons/hidden/hidden-cup.js +19 -0
- package/domains/art-tree/lessons/hidden/hidden-head.js +18 -0
- package/domains/art-tree/lessons/index.js +42 -0
- package/domains/art-tree/{layer_lessons.js → lessons/layers/layer-step.js} +5 -16
- package/domains/art-tree/lessons/lighting/contact-shadow.js +33 -0
- package/domains/art-tree/lessons/lighting/light-direction.js +30 -0
- package/domains/art-tree/lessons/lighting/light-zones.js +30 -0
- package/domains/art-tree/lessons/materials/material-glass.js +21 -0
- package/domains/art-tree/lessons/materials/material-shiny.js +26 -0
- package/domains/art-tree/lessons/materials/material-texture.js +26 -0
- package/domains/art-tree/lessons/perspective/1point-perspective.js +30 -0
- package/domains/art-tree/lessons/perspective/2point-perspective.js +30 -0
- package/domains/art-tree/lessons/perspective/3point-perspective.js +45 -0
- package/domains/art-tree/lessons/perspective/foreshortening.js +38 -0
- package/domains/art-tree/lessons/sky/sun-shapes.js +25 -0
- package/domains/art-tree/lessons/sky/sunset-colors.js +27 -0
- package/domains/art-tree/lessons/sky/sunset-sky.js +32 -0
- package/domains/art-tree/{structure_lessons.js → lessons/structure/axis-orientation.js} +3 -53
- package/domains/art-tree/lessons/structure/complex-structure.js +21 -0
- package/domains/art-tree/lessons/structure/x-yzaxes.js +28 -0
- package/domains/art-tree/lessons/surfaces/chair-analysis.js +17 -0
- package/domains/art-tree/lessons/surfaces/cup-analysis.js +18 -0
- package/domains/art-tree/lessons/surfaces/edge-types.js +40 -0
- package/domains/art-tree/lessons/surfaces/surface-types.js +42 -0
- package/domains/art-tree/lessons/transforms/bend.js +27 -0
- package/domains/art-tree/{transform_lessons_2.js → lessons/transforms/combine.js} +3 -54
- package/domains/art-tree/lessons/transforms/cut.js +25 -0
- package/domains/art-tree/lessons/transforms/hollow.js +24 -0
- package/domains/art-tree/lessons/transforms/rotate.js +16 -0
- package/domains/art-tree/lessons/transforms/squash.js +31 -0
- package/domains/art-tree/lessons/transforms/stretch.js +31 -0
- package/domains/art-tree/lessons/transforms/taper-swell.js +33 -0
- package/domains/art-tree/{vocab_lessons.js → lessons/vocab/vocab-house.js} +5 -16
- package/domains/art-tree/lib/tool-register.js +104 -0
- package/domains/art-tree/lib/validators.js +78 -0
- package/domains/art-tree/shapes/grid.js +37 -0
- package/domains/art-tree/shapes/polyline.js +26 -0
- package/domains/art-tree/{3d_tools.js → tools/3d.js} +2 -2
- package/domains/art-tree/{advanced_tools.js → tools/advanced.js} +2 -2
- package/domains/art-tree/{analysis_tools.js → tools/analysis.js} +2 -2
- package/domains/art-tree/{tools.js → tools/basic.js} +3 -3
- package/domains/art-tree/{cross_section_tools.js → tools/cross-sections.js} +2 -2
- package/domains/art-tree/{curve_tools.js → tools/curves.js} +2 -2
- package/domains/art-tree/{ellipse_tools.js → tools/ellipses.js} +2 -2
- package/domains/art-tree/{hidden_tools.js → tools/hidden.js} +2 -2
- package/domains/art-tree/tools/index.js +53 -0
- package/domains/art-tree/{layer_tools.js → tools/layers.js} +2 -2
- package/domains/art-tree/{light_tools.js → tools/lighting.js} +2 -2
- package/domains/art-tree/{material_tools.js → tools/materials.js} +2 -2
- package/domains/art-tree/{perspective_tools.js → tools/perspective.js} +2 -2
- package/domains/art-tree/{sky_tools.js → tools/sky.js} +2 -2
- package/domains/art-tree/{structure_tools.js → tools/structure.js} +2 -2
- package/domains/art-tree/{surface_tools.js → tools/surfaces.js} +2 -2
- package/domains/art-tree/{transform_tools.js → tools/transforms.js} +3 -3
- package/domains/art-tree/{vocab_tools.js → tools/vocab.js} +2 -2
- package/package.json +1 -1
- package/rules/README.md +358 -285
- package/rules/index.js +9 -9
- package/rules/prerequisites.js +121 -64
- package/rules/rules.js +76 -35
- package/rules/workflow.js +270 -56
- package/tools/canvas-tools.js +2 -2
- package/tools/drawing-tools.js +23 -12
- package/tools/workspace-tools.js +5 -4
- package/domains/art-tree/3d_lessons.js +0 -114
- package/domains/art-tree/advanced_lessons.js +0 -124
- package/domains/art-tree/cross_section_lessons.js +0 -65
- package/domains/art-tree/curve_lessons.js +0 -138
- package/domains/art-tree/ellipse_lessons.js +0 -105
- package/domains/art-tree/hidden_lessons.js +0 -55
- package/domains/art-tree/lessons.js +0 -305
- package/domains/art-tree/light_lessons.js +0 -92
- package/domains/art-tree/material_lessons.js +0 -71
- package/domains/art-tree/perspective_lessons.js +0 -138
- package/domains/art-tree/sky_lessons_1.js +0 -82
- package/domains/art-tree/surface_lessons.js +0 -112
- package/domains/art-tree/transform_lessons_1.js +0 -108
- /package/domains/art-tree/{3d_shapes.js → shapes/3d.js} +0 -0
- /package/domains/art-tree/{advanced_shapes.js → shapes/advanced.js} +0 -0
- /package/domains/art-tree/{analysis_shapes.js → shapes/analysis.js} +0 -0
- /package/domains/art-tree/{shapes.js → shapes/basic.js} +0 -0
- /package/domains/art-tree/{cross_section_shapes.js → shapes/cross-sections.js} +0 -0
- /package/domains/art-tree/{curve_shapes.js → shapes/curves.js} +0 -0
- /package/domains/art-tree/{ellipse_shapes.js → shapes/ellipses.js} +0 -0
- /package/domains/art-tree/{hidden_shapes.js → shapes/hidden.js} +0 -0
- /package/domains/art-tree/{layer_shapes.js → shapes/layers.js} +0 -0
- /package/domains/art-tree/{light_shapes.js → shapes/lighting.js} +0 -0
- /package/domains/art-tree/{material_shapes.js → shapes/materials.js} +0 -0
- /package/domains/art-tree/{perspective_shapes.js → shapes/perspective.js} +0 -0
- /package/domains/art-tree/{sky_shapes_1.js → shapes/sky.js} +0 -0
- /package/domains/art-tree/{structure_shapes.js → shapes/structure.js} +0 -0
- /package/domains/art-tree/{surface_shapes.js → shapes/surfaces.js} +0 -0
- /package/domains/art-tree/{transform_shapes.js → shapes/transforms.js} +0 -0
- /package/domains/art-tree/{vocab_shapes.js → shapes/vocab.js} +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* shapes/polyline.js — Art Tree: Polyline Shape Primitives
|
|
4
|
+
*
|
|
5
|
+
* Polyline-related shape drawing functions.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const { drawLine } = require('./basic');
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Draw a continuous polyline from a list of points.
|
|
12
|
+
* @param {Array<{x: number, y: number}>} points - Array of vertices
|
|
13
|
+
* @param {string} color - Hex color
|
|
14
|
+
* @returns {Array<Object>} Array of command payloads
|
|
15
|
+
*/
|
|
16
|
+
function drawPolyline(points, color) {
|
|
17
|
+
const commands = [];
|
|
18
|
+
for (let i = 0; i < points.length - 1; i++) {
|
|
19
|
+
commands.push(drawLine(points[i].x, points[i].y, points[i+1].x, points[i+1].y, color));
|
|
20
|
+
}
|
|
21
|
+
return commands;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
module.exports = {
|
|
25
|
+
drawPolyline,
|
|
26
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const lessons3d = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const lessons3d = require('../lessons/3d');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const advLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const advLessons = require('../lessons/advanced');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const analysisLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const analysisLessons = require('../lessons/analysis');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* sendCommand — they do NOT create their own drawing system.
|
|
10
10
|
*/
|
|
11
11
|
const { z } = require('zod');
|
|
12
|
-
const { registerTool, sendCommand } = require('
|
|
13
|
-
const shapes = require('
|
|
14
|
-
const lessons = require('
|
|
12
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
13
|
+
const shapes = require('../shapes/basic');
|
|
14
|
+
const lessons = require('../lessons/basic');
|
|
15
15
|
|
|
16
16
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const csLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const csLessons = require('../lessons/cross_section');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const curveLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const curveLessons = require('../lessons/curve');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const ellipseLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const ellipseLessons = require('../lessons/ellipse');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const hiddenLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const hiddenLessons = require('../lessons/hidden');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* tools/index.js — Art Tree: MCP Tools Index
|
|
4
|
+
*
|
|
5
|
+
* Main entry point for registering all Art Tree MCP tools.
|
|
6
|
+
* Imports and registers all tool categories.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
const basic = require('./basic');
|
|
10
|
+
const lessons = require('./lessons');
|
|
11
|
+
const advanced = require('./advanced');
|
|
12
|
+
const curves = require('./curves');
|
|
13
|
+
const ellipses = require('./ellipses');
|
|
14
|
+
const forms3d = require('./3d');
|
|
15
|
+
const structure = require('./structure');
|
|
16
|
+
const crossSections = require('./cross-sections');
|
|
17
|
+
const transforms = require('./transforms');
|
|
18
|
+
const surfaces = require('./surfaces');
|
|
19
|
+
const perspective = require('./perspective');
|
|
20
|
+
const hidden = require('./hidden');
|
|
21
|
+
const lighting = require('./lighting');
|
|
22
|
+
const materials = require('./materials');
|
|
23
|
+
const analysis = require('./analysis');
|
|
24
|
+
const layers = require('./layers');
|
|
25
|
+
const sky = require('./sky');
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Register all Art Tree MCP tools on the server
|
|
29
|
+
* @param {McpServer} server
|
|
30
|
+
*/
|
|
31
|
+
function registerAll(server) {
|
|
32
|
+
basic.register(server);
|
|
33
|
+
lessons.register(server);
|
|
34
|
+
advanced.register(server);
|
|
35
|
+
curves.register(server);
|
|
36
|
+
ellipses.register(server);
|
|
37
|
+
forms3d.register(server);
|
|
38
|
+
structure.register(server);
|
|
39
|
+
crossSections.register(server);
|
|
40
|
+
transforms.register(server);
|
|
41
|
+
surfaces.register(server);
|
|
42
|
+
perspective.register(server);
|
|
43
|
+
hidden.register(server);
|
|
44
|
+
lighting.register(server);
|
|
45
|
+
materials.register(server);
|
|
46
|
+
analysis.register(server);
|
|
47
|
+
layers.register(server);
|
|
48
|
+
sky.register(server);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
module.exports = {
|
|
52
|
+
registerAll,
|
|
53
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const layerLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const layerLessons = require('../lessons/layer');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Register all layer tools on the MCP server.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const lightLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const lightLessons = require('../lessons/light');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Register all lighting & shading tools on the MCP server.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const materialLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const materialLessons = require('../lessons/material');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Register all material & surface rendering tools on the MCP server.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const perspLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const perspLessons = require('../lessons/perspective');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const skyLessons1 = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const skyLessons1 = require('../lessons/sky_1');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Register all sky and sun tools on the MCP server.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const structureLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const structureLessons = require('../lessons/structure');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const surfaceLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const surfaceLessons = require('../lessons/surface');
|
|
4
4
|
|
|
5
5
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const lessons1 = require('
|
|
4
|
-
const lessons2 = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const lessons1 = require('../lessons/transform_1');
|
|
4
|
+
const lessons2 = require('../lessons/transform_2');
|
|
5
5
|
|
|
6
6
|
const hexColor = z.string().regex(/^#[0-9a-fA-F]{6}$/).describe('Hex color e.g. #ff0000');
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const { z } = require('zod');
|
|
2
|
-
const { registerTool, sendCommand } = require('
|
|
3
|
-
const vocabLessons = require('
|
|
2
|
+
const { registerTool, sendCommand } = require('../../../core/server');
|
|
3
|
+
const vocabLessons = require('../lessons/vocab');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Register all visual vocabulary tools on the MCP server.
|