changedInput schema / properties / options / properties / style / anyOf
Previous value: -[
- {
- "anyOf": [
- {
- "description": "Registered Style or Palette name.",
- "type": "string"
- },
- {
- "additionalProperties": false,
- "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
- "properties": {
- "$schema": {
- "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
- "type": "string"
- },
- "backdrop": {
- "description": "Flat page furniture drawn behind the diagram.",
- "enum": [
- "plain",
- "paper-ruled",
- "grid"
- ],
- "type": "string"
- },
- "blurb": {
- "description": "Short human-readable description used by discovery surfaces.",
- "type": "string"
- },
- "bowing": {
- "description": "Rough.js line bowing.",
- "maximum": 10,
- "minimum": 0,
- "type": "number"
- },
- "colors": {
- "additionalProperties": false,
- "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
- "properties": {
- "accent": {
- "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "bg": {
- "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "border": {
- "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "fg": {
- "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "line": {
- "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "muted": {
- "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "surface": {
- "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- }
- },
- "type": "object"
- },
- "fill": {
- "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
- "enum": [
- "none",
- "hachure",
- "solid",
- "wash"
- ],
- "type": "string"
- },
- "fillWeight": {
- "description": "Hachure line weight; requires fill hachure in the final stack.",
- "exclusiveMinimum": 0,
- "maximum": 20,
- "type": "number"
- },
- "font": {
- "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
- },
- "formatVersion": {
- "const": 1,
- "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
- },
- "hachureAngle": {
- "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
- "maximum": 360,
- "minimum": -360,
- "type": "number"
- },
- "hachureGap": {
- "description": "Gap between hachure lines; requires fill hachure in the final stack.",
- "exclusiveMinimum": 0,
- "maximum": 100,
- "type": "number"
- },
- "intent": {
- "description": "Advisory intent metadata for pickers and quality tooling.",
- "enum": [
- "premium",
- "draft",
- "lofi"
- ],
- "type": "string"
- },
- "mono": {
- "description": "Advisory monochrome contract: express tone through shading and weight.",
- "type": "boolean"
- },
- "name": {
- "description": "Canonical look:name or palette:name identity; required only when registering a style.",
- "type": "string"
- },
- "passes": {
- "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
- "maximum": 8,
- "minimum": 1,
- "type": "integer"
- },
- "roughness": {
- "description": "Rough.js stroke irregularity.",
- "maximum": 10,
- "minimum": 0,
- "type": "number"
- },
- "stroke": {
- "description": "Stroke treatment; crisp is the default renderer.",
- "enum": [
- "crisp",
- "jittered",
- "freehand"
- ],
- "type": "string"
- },
- "strokeWidth": {
- "description": "Base stroke width in SVG user units.",
- "exclusiveMinimum": 0,
- "maximum": 20,
- "type": "number"
- },
- "washEdge": {
- "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "washOpacity": {
- "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- ],
- "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
- },
- {
- "description": "Style stack merged from left to right.",
- "items": {
- "anyOf": [
- {
- "description": "Registered Style or Palette name.",
- "type": "string"
- },
- {
- "additionalProperties": false,
- "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
- "properties": {
- "$schema": {
- "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
- "type": "string"
- },
- "backdrop": {
- "description": "Flat page furniture drawn behind the diagram.",
- "enum": [
- "plain",
- "paper-ruled",
- "grid"
- ],
- "type": "string"
- },
- "blurb": {
- "description": "Short human-readable description used by discovery surfaces.",
- "type": "string"
- },
- "bowing": {
- "description": "Rough.js line bowing.",
- "maximum": 10,
- "minimum": 0,
- "type": "number"
- },
- "colors": {
- "additionalProperties": false,
- "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
- "properties": {
- "accent": {
- "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "bg": {
- "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "border": {
- "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "fg": {
- "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "line": {
- "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "muted": {
- "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- },
- "surface": {
- "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssColor"
- }
- },
- "type": "object"
- },
- "fill": {
- "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
- "enum": [
- "none",
- "hachure",
- "solid",
- "wash"
- ],
- "type": "string"
- },
- "fillWeight": {
- "description": "Hachure line weight; requires fill hachure in the final stack.",
- "exclusiveMinimum": 0,
- "maximum": 20,
- "type": "number"
- },
- "font": {
- "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
- "type": "string",
- "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
- },
- "formatVersion": {
- "const": 1,
- "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
- },
- "hachureAngle": {
- "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
- "maximum": 360,
- "minimum": -360,
- "type": "number"
- },
- "hachureGap": {
- "description": "Gap between hachure lines; requires fill hachure in the final stack.",
- "exclusiveMinimum": 0,
- "maximum": 100,
- "type": "number"
- },
- "intent": {
- "description": "Advisory intent metadata for pickers and quality tooling.",
- "enum": [
- "premium",
- "draft",
- "lofi"
- ],
- "type": "string"
- },
- "mono": {
- "description": "Advisory monochrome contract: express tone through shading and weight.",
- "type": "boolean"
- },
- "name": {
- "description": "Canonical look:name or palette:name identity; required only when registering a style.",
- "type": "string"
- },
- "passes": {
- "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
- "maximum": 8,
- "minimum": 1,
- "type": "integer"
- },
- "roughness": {
- "description": "Rough.js stroke irregularity.",
- "maximum": 10,
- "minimum": 0,
- "type": "number"
- },
- "stroke": {
- "description": "Stroke treatment; crisp is the default renderer.",
- "enum": [
- "crisp",
- "jittered",
- "freehand"
- ],
- "type": "string"
- },
- "strokeWidth": {
- "description": "Base stroke width in SVG user units.",
- "exclusiveMinimum": 0,
- "maximum": 20,
- "type": "number"
- },
- "washEdge": {
- "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- },
- "washOpacity": {
- "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
- "maximum": 1,
- "minimum": 0,
- "type": "number"
- }
- },
- "type": "object"
- }
- ],
- "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
- },
- "type": "array"
- }
-]New value: +[
+ {
+ "anyOf": [
+ {
+ "description": "Registered Style or Palette name.",
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
+ "maxProperties": 24,
+ "properties": {
+ "$schema": {
+ "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
+ "type": "string"
+ },
+ "backdrop": {
+ "description": "Flat page furniture drawn behind the diagram.",
+ "enum": [
+ "plain",
+ "paper-ruled",
+ "grid"
+ ],
+ "type": "string"
+ },
+ "bindings": {
+ "description": "Ordered equality bindings from authored/domain meaning to semantic slots.",
+ "items": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "channel": {
+ "enum": [
+ "category"
+ ],
+ "type": "string"
+ },
+ "role": {
+ "enum": [
+ "group-header",
+ "actor",
+ "relationship",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "task",
+ "milestone"
+ ],
+ "type": "string"
+ },
+ "slot": {
+ "not": {
+ "enum": [
+ "__proto__",
+ "constructor",
+ "prototype"
+ ]
+ },
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$",
+ "type": "string"
+ },
+ "value": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^[^\\r\\n\\u0000]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "channel",
+ "value",
+ "slot"
+ ],
+ "type": "object"
+ },
+ "maxItems": 4096,
+ "type": "array"
+ },
+ "blurb": {
+ "description": "Short human-readable description used by discovery surfaces.",
+ "type": "string"
+ },
+ "bowing": {
+ "description": "Rough.js line bowing.",
+ "maximum": 10,
+ "minimum": 0,
+ "type": "number"
+ },
+ "colors": {
+ "additionalProperties": false,
+ "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
+ "maxProperties": 7,
+ "properties": {
+ "accent": {
+ "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "bg": {
+ "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "border": {
+ "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "fg": {
+ "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "line": {
+ "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "muted": {
+ "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "surface": {
+ "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ }
+ },
+ "type": "object"
+ },
+ "constraints": {
+ "description": "Closed inspect-only brand constraints with warn or error actions.",
+ "items": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "contrast"
+ },
+ "minimum": {
+ "maximum": 21,
+ "minimum": 1,
+ "type": "number"
+ },
+ "role": {
+ "enum": [
+ "node",
+ "edge",
+ "edge-label",
+ "group",
+ "group-header",
+ "label",
+ "actor",
+ "lifeline",
+ "activation",
+ "message",
+ "block",
+ "note",
+ "class-box",
+ "member",
+ "entity",
+ "attribute",
+ "relationship",
+ "cardinality",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "axis",
+ "grid",
+ "plate",
+ "section",
+ "task",
+ "milestone",
+ "marker-line",
+ "rail",
+ "period",
+ "event",
+ "score",
+ "actor-pill",
+ "service",
+ "junction",
+ "icon",
+ "title",
+ "defs",
+ "prelude",
+ "chrome"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "action"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "accent-area"
+ },
+ "maxFraction": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "action",
+ "maxFraction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "mono-role"
+ },
+ "role": {
+ "enum": [
+ "node",
+ "edge",
+ "edge-label",
+ "group",
+ "group-header",
+ "label",
+ "actor",
+ "lifeline",
+ "activation",
+ "message",
+ "block",
+ "note",
+ "class-box",
+ "member",
+ "entity",
+ "attribute",
+ "relationship",
+ "cardinality",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "axis",
+ "grid",
+ "plate",
+ "section",
+ "task",
+ "milestone",
+ "marker-line",
+ "rail",
+ "period",
+ "event",
+ "score",
+ "actor-pill",
+ "service",
+ "junction",
+ "icon",
+ "title",
+ "defs",
+ "prelude",
+ "chrome"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "action",
+ "role"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 4096,
+ "type": "array"
+ },
+ "fill": {
+ "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
+ "enum": [
+ "none",
+ "hachure",
+ "solid",
+ "wash"
+ ],
+ "type": "string"
+ },
+ "fillWeight": {
+ "description": "Hachure line weight; requires fill hachure in the final stack.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "font": {
+ "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "formatVersion": {
+ "const": 1,
+ "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
+ },
+ "hachureAngle": {
+ "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
+ "maximum": 360,
+ "minimum": -360,
+ "type": "number"
+ },
+ "hachureGap": {
+ "description": "Gap between hachure lines; requires fill hachure in the final stack.",
+ "exclusiveMinimum": 0,
+ "maximum": 100,
+ "type": "number"
+ },
+ "intent": {
+ "description": "Advisory intent metadata for pickers and quality tooling.",
+ "enum": [
+ "premium",
+ "draft",
+ "lofi"
+ ],
+ "type": "string"
+ },
+ "mono": {
+ "description": "Advisory monochrome contract: express tone through shading and weight.",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Canonical look:name or palette:name identity; required only when registering a style.",
+ "type": "string"
+ },
+ "passes": {
+ "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
+ "maximum": 8,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "roles": {
+ "additionalProperties": false,
+ "description": "Partial semantic SceneRole defaults. Family-authored styling remains authoritative.",
+ "properties": {
+ "actor": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "bar": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "edge": {
+ "additionalProperties": false,
+ "maxProperties": 8,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "group": {
+ "additionalProperties": false,
+ "maxProperties": 13,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "headerFillColor": {
+ "description": "Group header surface paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "group-header": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "label": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "legend": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "milestone": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "node": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "pie-slice": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "point": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "relationship": {
+ "additionalProperties": false,
+ "maxProperties": 8,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "series": {
+ "additionalProperties": false,
+ "maxProperties": 3,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "task": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "roughness": {
+ "description": "Rough.js stroke irregularity.",
+ "maximum": 10,
+ "minimum": 0,
+ "type": "number"
+ },
+ "semanticSlots": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "maxProperties": 16,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "headerFillColor": {
+ "description": "Group header surface paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "description": "Named brand-neutral role-style slots selected by semantic bindings.",
+ "maxProperties": 4096,
+ "propertyNames": {
+ "not": {
+ "enum": [
+ "__proto__",
+ "constructor",
+ "prototype"
+ ]
+ },
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$"
+ },
+ "type": "object"
+ },
+ "stroke": {
+ "description": "Stroke treatment; crisp is the default renderer.",
+ "enum": [
+ "crisp",
+ "jittered",
+ "freehand"
+ ],
+ "type": "string"
+ },
+ "strokeWidth": {
+ "description": "Base stroke width in SVG user units.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "washEdge": {
+ "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "washOpacity": {
+ "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ ],
+ "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
+ },
+ {
+ "description": "Style stack merged from left to right.",
+ "items": {
+ "anyOf": [
+ {
+ "description": "Registered Style or Palette name.",
+ "type": "string"
+ },
+ {
+ "additionalProperties": false,
+ "description": "A partial declarative style record for Agentic Mermaid rendering. All fields, including formatVersion, are optional on input; resolved and registered specs normalize formatVersion to 1.",
+ "maxProperties": 24,
+ "properties": {
+ "$schema": {
+ "description": "Optional JSON Schema pointer for file-backed styles; ignored while rendering.",
+ "type": "string"
+ },
+ "backdrop": {
+ "description": "Flat page furniture drawn behind the diagram.",
+ "enum": [
+ "plain",
+ "paper-ruled",
+ "grid"
+ ],
+ "type": "string"
+ },
+ "bindings": {
+ "description": "Ordered equality bindings from authored/domain meaning to semantic slots.",
+ "items": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "channel": {
+ "enum": [
+ "category"
+ ],
+ "type": "string"
+ },
+ "role": {
+ "enum": [
+ "group-header",
+ "actor",
+ "relationship",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "task",
+ "milestone"
+ ],
+ "type": "string"
+ },
+ "slot": {
+ "not": {
+ "enum": [
+ "__proto__",
+ "constructor",
+ "prototype"
+ ]
+ },
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$",
+ "type": "string"
+ },
+ "value": {
+ "maxLength": 256,
+ "minLength": 1,
+ "pattern": "^[^\\r\\n\\u0000]+$",
+ "type": "string"
+ }
+ },
+ "required": [
+ "channel",
+ "value",
+ "slot"
+ ],
+ "type": "object"
+ },
+ "maxItems": 4096,
+ "type": "array"
+ },
+ "blurb": {
+ "description": "Short human-readable description used by discovery surfaces.",
+ "type": "string"
+ },
+ "bowing": {
+ "description": "Rough.js line bowing.",
+ "maximum": 10,
+ "minimum": 0,
+ "type": "number"
+ },
+ "colors": {
+ "additionalProperties": false,
+ "description": "Partial palette of safe, non-fetching CSS color tokens. Runtime validation applies the stricter safe-color policy.",
+ "maxProperties": 7,
+ "properties": {
+ "accent": {
+ "description": "Accent paint for emphasis and data series. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "bg": {
+ "description": "Diagram page background. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "border": {
+ "description": "Node and group border paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "fg": {
+ "description": "Primary text and foreground paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "line": {
+ "description": "Connector and secondary line paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "muted": {
+ "description": "Muted text and secondary data paint. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ },
+ "surface": {
+ "description": "Node and group surface fill. Must be a safe, non-fetching CSS color.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssColor"
+ }
+ },
+ "type": "object"
+ },
+ "constraints": {
+ "description": "Closed inspect-only brand constraints with warn or error actions.",
+ "items": {
+ "oneOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "contrast"
+ },
+ "minimum": {
+ "maximum": 21,
+ "minimum": 1,
+ "type": "number"
+ },
+ "role": {
+ "enum": [
+ "node",
+ "edge",
+ "edge-label",
+ "group",
+ "group-header",
+ "label",
+ "actor",
+ "lifeline",
+ "activation",
+ "message",
+ "block",
+ "note",
+ "class-box",
+ "member",
+ "entity",
+ "attribute",
+ "relationship",
+ "cardinality",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "axis",
+ "grid",
+ "plate",
+ "section",
+ "task",
+ "milestone",
+ "marker-line",
+ "rail",
+ "period",
+ "event",
+ "score",
+ "actor-pill",
+ "service",
+ "junction",
+ "icon",
+ "title",
+ "defs",
+ "prelude",
+ "chrome"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "action"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "accent-area"
+ },
+ "maxFraction": {
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "required": [
+ "kind",
+ "action",
+ "maxFraction"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "action": {
+ "enum": [
+ "warn",
+ "error"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "const": "mono-role"
+ },
+ "role": {
+ "enum": [
+ "node",
+ "edge",
+ "edge-label",
+ "group",
+ "group-header",
+ "label",
+ "actor",
+ "lifeline",
+ "activation",
+ "message",
+ "block",
+ "note",
+ "class-box",
+ "member",
+ "entity",
+ "attribute",
+ "relationship",
+ "cardinality",
+ "pie-slice",
+ "legend",
+ "bar",
+ "series",
+ "point",
+ "axis",
+ "grid",
+ "plate",
+ "section",
+ "task",
+ "milestone",
+ "marker-line",
+ "rail",
+ "period",
+ "event",
+ "score",
+ "actor-pill",
+ "service",
+ "junction",
+ "icon",
+ "title",
+ "defs",
+ "prelude",
+ "chrome"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "kind",
+ "action",
+ "role"
+ ],
+ "type": "object"
+ }
+ ]
+ },
+ "maxItems": 4096,
+ "type": "array"
+ },
+ "fill": {
+ "description": "Fill policy for rough/hybrid rendering; none and solid require a final stack that activates one of those backends.",
+ "enum": [
+ "none",
+ "hachure",
+ "solid",
+ "wash"
+ ],
+ "type": "string"
+ },
+ "fillWeight": {
+ "description": "Hachure line weight; requires fill hachure in the final stack.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "font": {
+ "description": "Safe, non-fetching CSS font family or stack; the rendering environment supplies the font face.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "formatVersion": {
+ "const": 1,
+ "description": "Persisted wire-format version. Optional on input and normalized to 1 on output."
+ },
+ "hachureAngle": {
+ "description": "Hachure line angle in degrees; requires fill hachure in the final stack.",
+ "maximum": 360,
+ "minimum": -360,
+ "type": "number"
+ },
+ "hachureGap": {
+ "description": "Gap between hachure lines; requires fill hachure in the final stack.",
+ "exclusiveMinimum": 0,
+ "maximum": 100,
+ "type": "number"
+ },
+ "intent": {
+ "description": "Advisory intent metadata for pickers and quality tooling.",
+ "enum": [
+ "premium",
+ "draft",
+ "lofi"
+ ],
+ "type": "string"
+ },
+ "mono": {
+ "description": "Advisory monochrome contract: express tone through shading and weight.",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Canonical look:name or palette:name identity; required only when registering a style.",
+ "type": "string"
+ },
+ "passes": {
+ "description": "Number of sketch strokes; 1 is single-pass and 2 is the usual double stroke.",
+ "maximum": 8,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "roles": {
+ "additionalProperties": false,
+ "description": "Partial semantic SceneRole defaults. Family-authored styling remains authoritative.",
+ "properties": {
+ "actor": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "bar": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "edge": {
+ "additionalProperties": false,
+ "maxProperties": 8,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "group": {
+ "additionalProperties": false,
+ "maxProperties": 13,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "headerFillColor": {
+ "description": "Group header surface paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "group-header": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "label": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "legend": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "milestone": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "node": {
+ "additionalProperties": false,
+ "maxProperties": 11,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "pie-slice": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "point": {
+ "additionalProperties": false,
+ "maxProperties": 4,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "relationship": {
+ "additionalProperties": false,
+ "maxProperties": 8,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "series": {
+ "additionalProperties": false,
+ "maxProperties": 3,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ },
+ "task": {
+ "additionalProperties": false,
+ "maxProperties": 5,
+ "properties": {
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "roughness": {
+ "description": "Rough.js stroke irregularity.",
+ "maximum": 10,
+ "minimum": 0,
+ "type": "number"
+ },
+ "semanticSlots": {
+ "additionalProperties": {
+ "additionalProperties": false,
+ "maxProperties": 16,
+ "properties": {
+ "bendRadius": {
+ "description": "Applicable connector bend radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "borderColor": {
+ "description": "Border paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "cornerRadius": {
+ "description": "Applicable corner radius.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "cue": {
+ "description": "Non-color semantic cue on roles whose family renderer exposes a cue projection.",
+ "enum": [
+ "none",
+ "outline",
+ "double-line",
+ "pattern"
+ ],
+ "type": "string"
+ },
+ "fillColor": {
+ "description": "Surface fill paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "fontFamily": {
+ "description": "Safe font family/stack for roles whose descriptor exposes family-specific typography.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeCssFontFamily"
+ },
+ "fontSize": {
+ "description": "Font size in SVG user units.",
+ "maximum": 256,
+ "minimum": 1,
+ "type": "number"
+ },
+ "fontWeight": {
+ "description": "CSS numeric font weight.",
+ "maximum": 1000,
+ "minimum": 1,
+ "type": "number"
+ },
+ "headerFillColor": {
+ "description": "Group header surface paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "letterSpacing": {
+ "description": "Letter spacing in SVG user units.",
+ "maximum": 4,
+ "minimum": -2,
+ "type": "number"
+ },
+ "lineWidth": {
+ "description": "Border or connector width.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "paddingX": {
+ "description": "Horizontal role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "paddingY": {
+ "description": "Vertical role padding.",
+ "maximum": 256,
+ "minimum": 0,
+ "type": "number"
+ },
+ "strokeColor": {
+ "description": "Connector stroke paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textColor": {
+ "description": "Text paint.",
+ "type": "string",
+ "x-agentic-mermaid-runtime-validator": "safeStylePaint"
+ },
+ "textTransform": {
+ "description": "Text transformation.",
+ "enum": [
+ "uppercase",
+ "lowercase",
+ "capitalize"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "description": "Named brand-neutral role-style slots selected by semantic bindings.",
+ "maxProperties": 4096,
+ "propertyNames": {
+ "not": {
+ "enum": [
+ "__proto__",
+ "constructor",
+ "prototype"
+ ]
+ },
+ "pattern": "^[A-Za-z][A-Za-z0-9._-]{0,63}$"
+ },
+ "type": "object"
+ },
+ "stroke": {
+ "description": "Stroke treatment; crisp is the default renderer.",
+ "enum": [
+ "crisp",
+ "jittered",
+ "freehand"
+ ],
+ "type": "string"
+ },
+ "strokeWidth": {
+ "description": "Base stroke width in SVG user units.",
+ "exclusiveMinimum": 0,
+ "maximum": 20,
+ "type": "number"
+ },
+ "washEdge": {
+ "description": "Watercolor edge-darkening opacity; requires fill wash in the final stack.",
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ },
+ "washOpacity": {
+ "description": "Watercolor glaze opacity; requires fill wash in the final stack.",
+ "maximum": 1,
+ "minimum": 0,
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ ],
+ "x-agentic-mermaid-validation-expectation": "a registered Style name or StyleSpec"
+ },
+ "type": "array"
+ }
+]