← Files Modelica ProjectsARCHIVED FILE
skills/modelica-projects/references/canonical-v2.schema.json
8.63 KB · Oct 5, 2026 · 18:31 UTC
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://github.com/theisegoria/chatgpt-skill-plugins/schemas/modelica-projects/canonical-v2.schema.json",
"title": "Modelica Projects canonical project v2",
"type": "object",
"additionalProperties": false,
"required": ["version", "package", "description", "mslVersion", "languageVersion", "dependencies", "files"],
"properties": {
"version": {"const": 2},
"package": {"$ref": "#/$defs/id"},
"description": {"$ref": "#/$defs/text"},
"mslVersion": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+(?:\\.[0-9]+)?$"},
"languageVersion": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+$"},
"dependencies": {
"type": "array",
"maxItems": 512,
"items": {
"type": "object",
"additionalProperties": false,
"required": ["name", "version"],
"properties": {"name": {"$ref": "#/$defs/qid"}, "version": {"$ref": "#/$defs/text"}}
}
},
"files": {"type": "array", "minItems": 1, "maxItems": 512, "items": {"$ref": "#/$defs/file"}}
},
"$defs": {
"text": {"type": "string", "minLength": 1, "maxLength": 8388608},
"optionalText": {"oneOf": [{"$ref": "#/$defs/text"}, {"type": "null"}]},
"id": {"type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"},
"qid": {"type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?:\\.[A-Za-z_][A-Za-z0-9_]*)*$"},
"kind": {"type": "string", "pattern": "^(?:encapsulated )?(?:partial )?(?:class|model|(?:operator )?record|block|(?:expandable )?connector|type|package|(?:(?:pure|impure) )?(?:operator )?function|operator)$"},
"path": {"type": "string", "pattern": "^(?!/)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\)[A-Za-z_][A-Za-z0-9_]*(?:/[A-Za-z_][A-Za-z0-9_]*)*\\.mo$"},
"number": {"type": "number", "minimum": -10000, "maximum": 10000},
"point": {"type": "array", "minItems": 2, "maxItems": 2, "prefixItems": [{"$ref": "#/$defs/number"}, {"$ref": "#/$defs/number"}], "items": false},
"size": {"type": "array", "minItems": 2, "maxItems": 2, "prefixItems": [{"type": "number", "exclusiveMinimum": 0, "maximum": 10000}, {"type": "number", "exclusiveMinimum": 0, "maximum": 10000}], "items": false},
"extent": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"$ref": "#/$defs/point"}},
"textExtent": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"$ref": "#/$defs/point"}},
"rotation": {"type": "number", "minimum": -360, "maximum": 360},
"rgb": {"type": "array", "minItems": 3, "maxItems": 3, "items": {"type": "integer", "minimum": 0, "maximum": 255}},
"color": {"oneOf": [{"enum": ["black", "white", "gray", "blue", "orange", "green", "red"]}, {"$ref": "#/$defs/rgb"}]},
"component": {
"type": "object", "additionalProperties": false, "required": ["name"],
"properties": {"name": {"$ref": "#/$defs/id"}, "origin": {"$ref": "#/$defs/point"}, "size": {"$ref": "#/$defs/size"}, "rotation": {"$ref": "#/$defs/rotation"}}
},
"connector": {
"type": "object", "additionalProperties": false, "required": ["name", "side"],
"properties": {"name": {"$ref": "#/$defs/id"}, "side": {"enum": ["left", "right", "top", "bottom"]}, "offset": {"$ref": "#/$defs/number"}, "size": {"$ref": "#/$defs/size"}}
},
"endpoint": {"type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_]*(?:\\[[1-9][0-9]*(?:,[1-9][0-9]*)*\\])?(?:\\.[A-Za-z_][A-Za-z0-9_]*(?:\\[[1-9][0-9]*(?:,[1-9][0-9]*)*\\])?)*$"},
"connection": {
"type": "object", "additionalProperties": false, "required": ["from", "to"],
"properties": {
"from": {"$ref": "#/$defs/endpoint"}, "to": {"$ref": "#/$defs/endpoint"},
"points": {"type": "array", "minItems": 2, "maxItems": 16, "items": {"$ref": "#/$defs/point"}},
"color": {"$ref": "#/$defs/color"}, "pattern": {"enum": ["Solid", "Dash", "Dot", "DashDot"]},
"thickness": {"type": "number", "exclusiveMinimum": 0, "maximum": 100}
}
},
"rectangle": {
"type": "object", "additionalProperties": false, "required": ["type", "extent"],
"properties": {"type": {"const": "Rectangle"}, "visible": {"type": "boolean"}, "origin": {"$ref": "#/$defs/point"}, "rotation": {"$ref": "#/$defs/rotation"}, "lineColor": {"$ref": "#/$defs/color"}, "fillColor": {"$ref": "#/$defs/color"}, "fillPattern": {"enum": ["None", "Solid", "HorizontalCylinder", "VerticalCylinder", "Sphere"]}, "linePattern": {"enum": ["None", "Solid", "Dash", "Dot", "DashDot"]}, "thickness": {"type": "number", "exclusiveMinimum": 0, "maximum": 100}, "extent": {"$ref": "#/$defs/extent"}, "borderPattern": {"enum": ["None", "Raised", "Sunken", "Engraved"]}, "radius": {"type": "number", "minimum": 0, "maximum": 10000}}
},
"ellipse": {
"type": "object", "additionalProperties": false, "required": ["type", "extent"],
"properties": {"type": {"const": "Ellipse"}, "visible": {"type": "boolean"}, "origin": {"$ref": "#/$defs/point"}, "rotation": {"$ref": "#/$defs/rotation"}, "lineColor": {"$ref": "#/$defs/color"}, "fillColor": {"$ref": "#/$defs/color"}, "fillPattern": {"enum": ["None", "Solid", "HorizontalCylinder", "VerticalCylinder", "Sphere"]}, "linePattern": {"enum": ["None", "Solid", "Dash", "Dot", "DashDot"]}, "thickness": {"type": "number", "exclusiveMinimum": 0, "maximum": 100}, "extent": {"$ref": "#/$defs/extent"}, "startAngle": {"$ref": "#/$defs/rotation"}, "endAngle": {"$ref": "#/$defs/rotation"}, "closure": {"enum": ["None", "Chord", "Radial"]}}
},
"polygon": {
"type": "object", "additionalProperties": false, "required": ["type", "points"],
"properties": {"type": {"const": "Polygon"}, "visible": {"type": "boolean"}, "origin": {"$ref": "#/$defs/point"}, "rotation": {"$ref": "#/$defs/rotation"}, "lineColor": {"$ref": "#/$defs/color"}, "fillColor": {"$ref": "#/$defs/color"}, "fillPattern": {"enum": ["None", "Solid", "HorizontalCylinder", "VerticalCylinder", "Sphere"]}, "linePattern": {"enum": ["None", "Solid", "Dash", "Dot", "DashDot"]}, "thickness": {"type": "number", "exclusiveMinimum": 0, "maximum": 100}, "points": {"type": "array", "minItems": 3, "maxItems": 64, "items": {"$ref": "#/$defs/point"}}, "smooth": {"enum": ["None", "Bezier"]}}
},
"line": {
"type": "object", "additionalProperties": false, "required": ["type", "points"],
"properties": {"type": {"const": "Line"}, "visible": {"type": "boolean"}, "origin": {"$ref": "#/$defs/point"}, "rotation": {"$ref": "#/$defs/rotation"}, "points": {"type": "array", "minItems": 2, "maxItems": 64, "items": {"$ref": "#/$defs/point"}}, "lineColor": {"$ref": "#/$defs/color"}, "linePattern": {"enum": ["None", "Solid", "Dash", "Dot", "DashDot"]}, "thickness": {"type": "number", "exclusiveMinimum": 0, "maximum": 100}, "arrow": {"type": "array", "minItems": 2, "maxItems": 2, "items": {"enum": ["None", "Open", "Filled", "Half"]}}, "smooth": {"enum": ["None", "Bezier"]}}
},
"textPrimitive": {
"type": "object", "additionalProperties": false, "required": ["type", "extent", "text"],
"properties": {"type": {"const": "Text"}, "visible": {"type": "boolean"}, "origin": {"$ref": "#/$defs/point"}, "rotation": {"$ref": "#/$defs/rotation"}, "extent": {"$ref": "#/$defs/textExtent"}, "text": {"$ref": "#/$defs/text"}, "lineColor": {"$ref": "#/$defs/color"}, "fontSize": {"type": "number", "minimum": 0, "maximum": 512}, "fontName": {"$ref": "#/$defs/text"}, "textStyle": {"type": "array", "uniqueItems": true, "items": {"enum": ["Bold", "Italic", "Underline"]}}, "horizontalAlignment": {"enum": ["Left", "Center", "Right"]}}
},
"primitive": {"oneOf": [{"$ref": "#/$defs/rectangle"}, {"$ref": "#/$defs/ellipse"}, {"$ref": "#/$defs/polygon"}, {"$ref": "#/$defs/line"}, {"$ref": "#/$defs/textPrimitive"}]},
"visual": {
"type": "object", "additionalProperties": false,
"properties": {
"direction": {"enum": ["LR", "TB"]},
"coordinateSystem": {"$ref": "#/$defs/extent"},
"components": {"type": "array", "maxItems": 512, "items": {"$ref": "#/$defs/component"}},
"connectors": {"type": "array", "maxItems": 512, "items": {"$ref": "#/$defs/connector"}},
"connections": {"type": "array", "maxItems": 4000, "items": {"$ref": "#/$defs/connection"}},
"icon": {"type": "array", "maxItems": 512, "items": {"$ref": "#/$defs/primitive"}}
}
},
"file": {
"type": "object", "additionalProperties": false, "required": ["path", "source"],
"properties": {
"path": {"$ref": "#/$defs/path"}, "source": {"$ref": "#/$defs/text"},
"kind": {"$ref": "#/$defs/kind"},
"documentation": {"$ref": "#/$defs/optionalText"}, "example": {"type": "boolean"}, "test": {"type": "boolean"},
"visual": {"oneOf": [{"$ref": "#/$defs/visual"}, {"type": "null"}]}
}
}
}
}
SHA-256: 40fb225be6986620a5c2de775eaf6f5c1cbaff2d7b9d74ee3e7030cb717939f2